Improved assignments and motions pdf.
Load all users in pdfmake function - not in state resolver of assignment list.
This commit is contained in:
parent
7069326655
commit
ff359ea629
@ -12,8 +12,7 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
var createInstance = function(assignment) {
|
var createInstance = function(assignment) {
|
||||||
|
|
||||||
//use the Predefined Functions to create the title
|
//use the Predefined Functions to create the title
|
||||||
var title = PdfPredefinedFunctions.createTitle(
|
var title = PdfPredefinedFunctions.createTitle(assignment.title);
|
||||||
gettextCatalog.getString("Election") + ": " + assignment.title);
|
|
||||||
|
|
||||||
//create the preamble
|
//create the preamble
|
||||||
var createPreamble = function() {
|
var createPreamble = function() {
|
||||||
@ -121,7 +120,7 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
text: gettextCatalog.getString("Ballot") + " " + (pollIndex+1),
|
text: gettextCatalog.getString("Ballot") + " " + (pollIndex+1),
|
||||||
bold: true,
|
bold: true,
|
||||||
style: 'textItem',
|
style: 'textItem',
|
||||||
margin: [0,15,0,0]
|
margin: [0, 15, 0, 0]
|
||||||
});
|
});
|
||||||
|
|
||||||
pollTableBody.push([
|
pollTableBody.push([
|
||||||
@ -150,17 +149,18 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
]);
|
]);
|
||||||
} else if (poll.pollmethod == 'yn') {
|
} else if (poll.pollmethod == 'yn') {
|
||||||
pollTableBody.push([
|
pollTableBody.push([
|
||||||
{
|
electedCandidateLine(candidateName, pollOption, pollTableBody),
|
||||||
text: candidateName,
|
|
||||||
style: PdfPredefinedFunctions.flipTableRowStyle(pollTableBody.length)
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: [
|
text: [
|
||||||
{
|
{
|
||||||
text: votes[0].label + ": " + votes[0].value + " " + votes[0].percentStr + "\n"
|
text: votes[0].label + ": " +
|
||||||
|
votes[0].value + " " +
|
||||||
|
votes[0].percentStr + "\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: votes[1].label + ": " + votes[1].value + " " + votes[1].percentStr
|
text: votes[1].label + ": " +
|
||||||
|
votes[1].value + " " +
|
||||||
|
votes[1].percentStr
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
style: PdfPredefinedFunctions.flipTableRowStyle(pollTableBody.length)
|
style: PdfPredefinedFunctions.flipTableRowStyle(pollTableBody.length)
|
||||||
@ -168,20 +168,23 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
]);
|
]);
|
||||||
} else if (poll.pollmethod == 'yna') {
|
} else if (poll.pollmethod == 'yna') {
|
||||||
pollTableBody.push([
|
pollTableBody.push([
|
||||||
{
|
electedCandidateLine(candidateName, pollOption, pollTableBody),
|
||||||
text: candidateName,
|
|
||||||
style: PdfPredefinedFunctions.flipTableRowStyle(pollTableBody.length)
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: [
|
text: [
|
||||||
{
|
{
|
||||||
text: votes[0].label + ": " + votes[0].value + " " + votes[0].percentStr + "\n"
|
text: votes[0].label + ": " +
|
||||||
|
votes[0].value + " " +
|
||||||
|
votes[0].percentStr + "\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: votes[1].label + ": " + votes[1].value + " " + votes[1].percentStr + "\n"
|
text: votes[1].label + ": " +
|
||||||
|
votes[1].value + " " +
|
||||||
|
votes[1].percentStr + "\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: votes[2].label + ": " + votes[2].value + " " + votes[2].percentStr
|
text: votes[2].label + ": " +
|
||||||
|
votes[2].value + " " +
|
||||||
|
votes[2].percentStr
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
style: PdfPredefinedFunctions.flipTableRowStyle(pollTableBody.length)
|
style: PdfPredefinedFunctions.flipTableRowStyle(pollTableBody.length)
|
||||||
@ -199,7 +202,7 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
style: 'tableConclude'
|
style: 'tableConclude'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: ""+voteNrValid,
|
text: "" + voteNrValid,
|
||||||
style: 'tableConclude'
|
style: 'tableConclude'
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
@ -212,7 +215,7 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
style: 'tableConclude'
|
style: 'tableConclude'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: ""+voteNrInVal,
|
text: "" + voteNrInVal,
|
||||||
style: 'tableConclude'
|
style: 'tableConclude'
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
@ -225,7 +228,7 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
style: 'tableConclude'
|
style: 'tableConclude'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: ""+voteNrTotal,
|
text: "" + voteNrTotal,
|
||||||
style: 'tableConclude'
|
style: 'tableConclude'
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
@ -244,19 +247,17 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//Add the Legend to the result body
|
//Add the legend to the result body
|
||||||
resultBody.push({
|
if (assignment.polls.length > 0) {
|
||||||
text: "* = " + gettextCatalog.getString("is elected"),
|
resultBody.push({
|
||||||
margin: [0,5,0,0],
|
text: "* = " + gettextCatalog.getString("is elected"),
|
||||||
});
|
margin: [0, 5, 0, 0],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return resultBody;
|
return resultBody;
|
||||||
};
|
};
|
||||||
|
|
||||||
var getTitle = function() {
|
|
||||||
return assignment.title;
|
|
||||||
};
|
|
||||||
|
|
||||||
var getContent = function() {
|
var getContent = function() {
|
||||||
return [
|
return [
|
||||||
title,
|
title,
|
||||||
@ -269,7 +270,7 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
getContent: getContent,
|
getContent: getContent,
|
||||||
getTitle: getTitle
|
title: assignment.title
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -288,15 +289,16 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
// use the Predefined Functions to create the title
|
// use the Predefined Functions to create the title
|
||||||
var createTitle = function() {
|
var createTitle = function() {
|
||||||
return {
|
return {
|
||||||
text: gettextCatalog.getString("Election") + ": " + scope.assignment.title,
|
text: scope.assignment.title,
|
||||||
style: 'title',
|
style: 'title',
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
//function to create the poll hint
|
//function to create the poll hint
|
||||||
var createPollHint = function() {
|
var createPollHint = function() {
|
||||||
|
var description = poll.description ? ': ' + poll.description : '';
|
||||||
return {
|
return {
|
||||||
text: gettextCatalog.getString("Ballot") + " " + pollNumber + ": " + poll.description,
|
text: gettextCatalog.getString("Ballot") + " " + pollNumber + description,
|
||||||
style: 'description',
|
style: 'description',
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -364,7 +366,7 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
columns : [
|
columns : [
|
||||||
{
|
{
|
||||||
width: 1,
|
width: 1,
|
||||||
margin: [0,marginTop],
|
margin: [0, marginTop],
|
||||||
text: ""
|
text: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -450,11 +452,14 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
.factory('AssignmentCatalogContentProvider', [
|
.factory('AssignmentCatalogContentProvider', [
|
||||||
'gettextCatalog',
|
'gettextCatalog',
|
||||||
'PdfPredefinedFunctions',
|
'PdfPredefinedFunctions',
|
||||||
function(gettextCatalog, PdfPredefinedFunctions) {
|
'Config',
|
||||||
|
function(gettextCatalog, PdfPredefinedFunctions, Config) {
|
||||||
|
|
||||||
var createInstance = function(allAssignmnets, Config) {
|
var createInstance = function(allAssignmnets) {
|
||||||
|
|
||||||
var title = PdfPredefinedFunctions.createTitle(Config.get('assignments_pdf_title').value);
|
var title = PdfPredefinedFunctions.createTitle(
|
||||||
|
gettextCatalog.getString(Config.get('assignments_pdf_title').value)
|
||||||
|
);
|
||||||
|
|
||||||
var createPreamble = function() {
|
var createPreamble = function() {
|
||||||
var preambleText = Config.get('assignments_pdf_preamble').value;
|
var preambleText = Config.get('assignments_pdf_preamble').value;
|
||||||
@ -475,10 +480,10 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
};
|
};
|
||||||
|
|
||||||
var toc = [];
|
var toc = [];
|
||||||
angular.forEach(assignmentTitles, function(title, key) {
|
angular.forEach(assignmentTitles, function(title) {
|
||||||
toc.push({
|
toc.push({
|
||||||
text: gettextCatalog.getString("Election") + " " + (key+1) + ": " + title,
|
text: title,
|
||||||
style: "tableofcontent",
|
style: "tableofcontent"
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -495,7 +500,7 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
var assignmentTitles = [];
|
var assignmentTitles = [];
|
||||||
|
|
||||||
angular.forEach(allAssignmnets, function(assignment, key) {
|
angular.forEach(allAssignmnets, function(assignment, key) {
|
||||||
assignmentTitles.push(assignment.getTitle());
|
assignmentTitles.push(assignment.title);
|
||||||
assignmentContent.push(assignment.getContent());
|
assignmentContent.push(assignment.getContent());
|
||||||
if (key < allAssignmnets.length - 1) {
|
if (key < allAssignmnets.length - 1) {
|
||||||
assignmentContent.push(PdfPredefinedFunctions.addPageBreak());
|
assignmentContent.push(PdfPredefinedFunctions.addPageBreak());
|
||||||
|
@ -40,9 +40,6 @@ angular.module('OpenSlidesApp.assignments.site', [
|
|||||||
assignments: function(Assignment) {
|
assignments: function(Assignment) {
|
||||||
return Assignment.findAll();
|
return Assignment.findAll();
|
||||||
},
|
},
|
||||||
users: function(User) { //TODO: Load only related users cause of better performance
|
|
||||||
return User.findAll();
|
|
||||||
},
|
|
||||||
tags: function(Tag) {
|
tags: function(Tag) {
|
||||||
return Tag.findAll();
|
return Tag.findAll();
|
||||||
},
|
},
|
||||||
@ -243,12 +240,12 @@ angular.module('OpenSlidesApp.assignments.site', [
|
|||||||
'Projector',
|
'Projector',
|
||||||
'ProjectionDefault',
|
'ProjectionDefault',
|
||||||
'gettextCatalog',
|
'gettextCatalog',
|
||||||
'Config',
|
|
||||||
'AssignmentContentProvider',
|
'AssignmentContentProvider',
|
||||||
'AssignmentCatalogContentProvider',
|
'AssignmentCatalogContentProvider',
|
||||||
'PdfMakeDocumentProvider',
|
'PdfMakeDocumentProvider',
|
||||||
|
'User',
|
||||||
function($scope, ngDialog, AssignmentForm, Assignment, Tag, Agenda, phases, Projector, ProjectionDefault,
|
function($scope, ngDialog, AssignmentForm, Assignment, Tag, Agenda, phases, Projector, ProjectionDefault,
|
||||||
gettextCatalog, Config, AssignmentContentProvider, AssignmentCatalogContentProvider, PdfMakeDocumentProvider) {
|
gettextCatalog, AssignmentContentProvider, AssignmentCatalogContentProvider, PdfMakeDocumentProvider, User) {
|
||||||
Assignment.bindAll({}, $scope, 'assignments');
|
Assignment.bindAll({}, $scope, 'assignments');
|
||||||
Tag.bindAll({}, $scope, 'tags');
|
Tag.bindAll({}, $scope, 'tags');
|
||||||
$scope.$watch(function () {
|
$scope.$watch(function () {
|
||||||
@ -349,17 +346,21 @@ angular.module('OpenSlidesApp.assignments.site', [
|
|||||||
};
|
};
|
||||||
// create the PDF List
|
// create the PDF List
|
||||||
$scope.makePDF_assignmentList = function () {
|
$scope.makePDF_assignmentList = function () {
|
||||||
var filename = gettextCatalog.getString("Elections") + ".pdf";
|
User.findAll().then( function(users) {
|
||||||
var assignmentContentProviderArray = [];
|
var filename = gettextCatalog.getString("Elections") + ".pdf";
|
||||||
|
var assignmentContentProviderArray = [];
|
||||||
|
|
||||||
//convert the filtered assignments to content providers
|
//convert the filtered assignments to content providers
|
||||||
angular.forEach($scope.assignmentsFiltered, function(assignment) {
|
angular.forEach($scope.assignmentsFiltered, function(assignment) {
|
||||||
assignmentContentProviderArray.push(AssignmentContentProvider.createInstance(assignment));
|
assignmentContentProviderArray.push(AssignmentContentProvider.createInstance(assignment));
|
||||||
|
});
|
||||||
|
|
||||||
|
var assignmentCatalogContentProvider =
|
||||||
|
AssignmentCatalogContentProvider.createInstance(assignmentContentProviderArray);
|
||||||
|
var documentProvider =
|
||||||
|
PdfMakeDocumentProvider.createInstance(assignmentCatalogContentProvider);
|
||||||
|
pdfMake.createPdf(documentProvider.getDocument()).download(filename);
|
||||||
});
|
});
|
||||||
|
|
||||||
var assignmentCatalogContentProvider = AssignmentCatalogContentProvider.createInstance(assignmentContentProviderArray, Config);
|
|
||||||
var documentProvider = PdfMakeDocumentProvider.createInstance(assignmentCatalogContentProvider);
|
|
||||||
pdfMake.createPdf(documentProvider.getDocument()).download(filename);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
@ -157,6 +157,7 @@ class ConfigHandler:
|
|||||||
"""
|
"""
|
||||||
return ConfigStore.get_collection_string()
|
return ConfigStore.get_collection_string()
|
||||||
|
|
||||||
|
|
||||||
config = ConfigHandler()
|
config = ConfigHandler()
|
||||||
"""
|
"""
|
||||||
Final entry point to get an set config variables. To get a config variable
|
Final entry point to get an set config variables. To get a config variable
|
||||||
|
@ -15,8 +15,9 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
|
|
||||||
var createInstance = function(converter, motion, $scope, User) {
|
var createInstance = function(converter, motion, $scope, User) {
|
||||||
|
|
||||||
var header = PdfPredefinedFunctions.createTitle(gettextCatalog.getString("Motion") + " " +
|
var identifier = motion.identifier ? ' ' + motion.identifier : '';
|
||||||
motion.identifier + ": " + motion.getTitle($scope.version));
|
var header = PdfPredefinedFunctions.createTitle(gettextCatalog.getString("Motion") + identifier +
|
||||||
|
': ' + motion.getTitle($scope.version));
|
||||||
|
|
||||||
// generates the text of the motion. Also septerates between line-numbers
|
// generates the text of the motion. Also septerates between line-numbers
|
||||||
var textContent = function() {
|
var textContent = function() {
|
||||||
@ -142,7 +143,7 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
};
|
};
|
||||||
|
|
||||||
var getIdentifier = function() {
|
var getIdentifier = function() {
|
||||||
return motion.identifier;
|
return motion.identifier ? motion.identifier : '';
|
||||||
};
|
};
|
||||||
|
|
||||||
var getCategory = function() {
|
var getCategory = function() {
|
||||||
@ -252,7 +253,8 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
.factory('MotionCatalogContentProvider', [
|
.factory('MotionCatalogContentProvider', [
|
||||||
'gettextCatalog',
|
'gettextCatalog',
|
||||||
'PdfPredefinedFunctions',
|
'PdfPredefinedFunctions',
|
||||||
function(gettextCatalog, PdfPredefinedFunctions) {
|
'Config',
|
||||||
|
function(gettextCatalog, PdfPredefinedFunctions, Config) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
@ -263,21 +265,46 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
*/
|
*/
|
||||||
var createInstance = function(allMotions, $scope, User, Category) {
|
var createInstance = function(allMotions, $scope, User, Category) {
|
||||||
|
|
||||||
var title = PdfPredefinedFunctions.createTitle("Motions");
|
var title = PdfPredefinedFunctions.createTitle(
|
||||||
|
gettextCatalog.getString(Config.get('motions_export_title').value)
|
||||||
|
);
|
||||||
|
|
||||||
var createTOContent = function(motionTitles) {
|
var createPreamble = function() {
|
||||||
|
var preambleText = Config.get('motions_export_preamble').value;
|
||||||
|
if (preambleText) {
|
||||||
|
return {
|
||||||
|
text: preambleText,
|
||||||
|
style: "preamble"
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var createTOContent = function() {
|
||||||
var heading = {
|
var heading = {
|
||||||
text: gettextCatalog.getString("Table of contents"),
|
text: gettextCatalog.getString("Table of contents"),
|
||||||
style: "heading",
|
style: "heading"
|
||||||
};
|
};
|
||||||
|
|
||||||
var toc = [];
|
var toc = [];
|
||||||
angular.forEach(motionTitles, function(title) {
|
angular.forEach(allMotions, function(motion) {
|
||||||
toc.push({
|
var identifier = motion.getIdentifier() ? motion.getIdentifier() : '';
|
||||||
text: gettextCatalog.getString("Motion") + " " + title,
|
toc.push(
|
||||||
style: "tableofcontent",
|
{
|
||||||
});
|
columns: [
|
||||||
|
{
|
||||||
|
text: identifier,
|
||||||
|
style: 'tableofcontent',
|
||||||
|
width: 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: motion.getTitle(),
|
||||||
|
style: 'tableofcontent'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
return [
|
return [
|
||||||
@ -288,7 +315,7 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
};
|
};
|
||||||
|
|
||||||
// function to create the table of catergories (if any)
|
// function to create the table of catergories (if any)
|
||||||
var createTOCatergories = function() {
|
var createTOCategories = function() {
|
||||||
if (Category.getAll().length > 0) {
|
if (Category.getAll().length > 0) {
|
||||||
var heading = {
|
var heading = {
|
||||||
text: gettextCatalog.getString("Categories"),
|
text: gettextCatalog.getString("Categories"),
|
||||||
@ -329,10 +356,7 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
// returns the pure content of the motion, parseable by makepdf
|
// returns the pure content of the motion, parseable by makepdf
|
||||||
var getContent = function() {
|
var getContent = function() {
|
||||||
var motionContent = [];
|
var motionContent = [];
|
||||||
var motionTitles = [];
|
|
||||||
var motionCategories = [];
|
|
||||||
angular.forEach(allMotions, function(motion, key) {
|
angular.forEach(allMotions, function(motion, key) {
|
||||||
motionTitles.push(motion.getIdentifier() + ": " + motion.getTitle());
|
|
||||||
motionContent.push(motion.getContent());
|
motionContent.push(motion.getContent());
|
||||||
if (key < allMotions.length - 1) {
|
if (key < allMotions.length - 1) {
|
||||||
motionContent.push(PdfPredefinedFunctions.addPageBreak());
|
motionContent.push(PdfPredefinedFunctions.addPageBreak());
|
||||||
@ -341,8 +365,9 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
title,
|
title,
|
||||||
createTOCatergories(),
|
createPreamble(),
|
||||||
createTOContent(motionTitles),
|
createTOCategories(),
|
||||||
|
createTOContent(),
|
||||||
motionContent
|
motionContent
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
@ -76,6 +76,7 @@ class Index:
|
|||||||
return open_dir(path)
|
return open_dir(path)
|
||||||
return self.create_index()
|
return self.create_index()
|
||||||
|
|
||||||
|
|
||||||
index = Index()
|
index = Index()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user