remember voting items
parent
81d65deaec
commit
05491775e3
|
@ -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');
|
||||
}
|
|
@ -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 -->
|
||||
|
|
|
@ -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
|
||||
>
|
||||
|
|
Loading…
Reference in New Issue