Generate extra empty slots on counting list

main
radex 2023-11-01 22:18:53 +01:00
parent ad3a54c876
commit 782f409385
1 changed files with 10 additions and 3 deletions

View File

@ -2,6 +2,8 @@ import type { Member } from '$lib/model/Member';
import jsPDF from 'jspdf';
import autoTable from 'jspdf-autotable';
const emptySlotCount = 5;
export function generateSecretVotingList(members: Member[]) {
const totalPagesExp = '{total_pages_count_string}';
@ -10,12 +12,14 @@ export function generateSecretVotingList(members: Member[]) {
const votingMembers = members.filter((x) => x.voting);
const voterPlaceholders = votingMembers.map(() => '');
const emptySlotPlaceholders = Array(emptySlotCount).fill('');
const tableBody = candidatingMembers.map((member) => [
{
content: member.nickname,
styles: { cellWidth: 30 }
},
...voterPlaceholders,
...emptySlotPlaceholders,
{ content: '', styles: { cellWidth: 8 } },
{ content: '', styles: { cellWidth: 8 } },
{ content: '', styles: { cellWidth: 8 } },
@ -73,9 +77,11 @@ export function generateSecretVotingList(members: Member[]) {
);
doc.setFontSize(9);
doc.text(
'Instrukcja: Dla każdej karty do głosowania, przepisz głosy na wszystkich kandydatów, wpisując w kolumnie odpowiednio:\nZ (Za), P (Przeciw), W (Wstrzymuje się), X (Nie głosował lub głos nieważny).\nPo przepisaniu wszystkich głosów, zsumuj głosy Z/P/W/X na danego kandydata do odpowiednich kolumn z sumami.',
'Instrukcja: Dla każdej karty do głosowania, przepisz głosy na wszystkich kandydatów, wpisując w kolumnie odpowiednio:\n' +
'Z (Za), P (Przeciw), W (Wstrzymuje się), X (Nie głosował lub głos nieważny).\n' +
'Po przepisaniu wszystkich głosów, zsumuj głosy Z/P/W/X na danego kandydata do odpowiednich kolumn z sumami.\n' +
`Wygenerowano dla ${votingMembers.length} kart do głosowania (+${emptySlotCount} dodatkowych pustych miejsc.)`,
15,
// doc.internal.pageSize.getWidth() * 0.5,
doc.internal.pageSize.getHeight() * 0.105,
{
align: 'left'
@ -94,13 +100,14 @@ export function generateSecretVotingList(members: Member[]) {
doc.setFont('NotoSansLight', 'normal'); // set font
autoTable(doc, {
startY: doc.internal.pageSize.getHeight() * 0.2 - 15 / 2,
startY: doc.internal.pageSize.getHeight() * 0.22 - 15 / 2,
pageBreak: 'auto',
body: tableBody,
head: [
[
'Kandydat',
...voterPlaceholders.map((_, i) => String(i + 1)),
...emptySlotPlaceholders.map((_, i) => `(${i + 1})`),
'ZA',
'PRZECIW',
'WSTRZYMUJE SIĘ',