remember voting items

main
radex 2023-11-02 18:10:20 +01:00
parent 81d65deaec
commit 05491775e3
3 changed files with 29 additions and 7 deletions

View File

@ -0,0 +1,11 @@
import { getContext } from 'svelte';
import { writable } from 'svelte/store';
export function makeVotingItemsStore(): ReturnType<typeof writable<string[]>> {
const store = writable([]);
return store;
}
export function getVotingItemsStoreContext() {
return getContext<ReturnType<typeof writable<string[]>>>('voting_items');
}

View File

@ -11,6 +11,7 @@
import { setContext } from 'svelte';
import { makeStore } from '$lib/stores/members-store';
import { signOut } from '@auth/sveltekit/client';
import { makeVotingItemsStore } from '$lib/stores/voting-items-store';
export let data;
function drawerOpen(): void {
@ -21,6 +22,9 @@
const membersStore = makeStore(data.members);
setContext('members', membersStore);
const votingItemsStore = makeVotingItemsStore();
setContext('voting_items', votingItemsStore);
</script>
<!-- App Shell -->

View File

@ -3,18 +3,19 @@
import { generateSecretVotingList } from '$lib/pdf/generate-couting-list';
import { generateVotingCards } from '$lib/pdf/generate-voting-cards';
import { getMembersStoreContext } from '$lib/stores/members-store';
import { getVotingItemsStoreContext } from '$lib/stores/voting-items-store';
const membersStore = getMembersStoreContext();
const votingItemsStore = getVotingItemsStoreContext();
const candidating = $membersStore.filter((x) => x.candidating);
const nicknamesToRender = candidating.map((x) => x.nickname);
$: newVotingItem = '';
$: additionalVotingItems = [] as string[];
const addVotingItem = () => {
additionalVotingItems.push(newVotingItem);
$votingItemsStore.push(newVotingItem);
newVotingItem = '';
additionalVotingItems = additionalVotingItems;
$votingItemsStore = $votingItemsStore;
};
</script>
@ -31,13 +32,13 @@
<button class="btn variant-filled rounded-lg"> Add </button>
</form>
<ul class="space-y-2">
{#each additionalVotingItems as item}
{#each $votingItemsStore as item}
<li class="list-disc">
{item}
<button
class="btn btn-sm variant-filled rounded-lg"
on:click={() => {
additionalVotingItems = additionalVotingItems.filter((x) => x !== item);
$votingItemsStore = $votingItemsStore.filter((x) => x !== item);
}}>Delete</button
>
</li>
@ -50,11 +51,17 @@
generateMembersList($membersStore);
}}>Print presence list</button
>
<button on:click={() => generateSecretVotingList($membersStore)}>Pring counting lists</button>
<button
on:click={() =>
generateSecretVotingList({
votingItems: [...nicknamesToRender, ...$votingItemsStore],
members: $membersStore
})}>Pring counting lists</button
>
<button
on:click={() =>
generateVotingCards({
votingItems: [...nicknamesToRender, ...additionalVotingItems],
votingItems: [...nicknamesToRender, ...$votingItemsStore],
members: $membersStore
})}>Print voting cards</button
>