diff --git a/src/App.svelte b/src/App.svelte index 79ffcc8..f4fd723 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -16,7 +16,7 @@ const modal = writable(null); let calendar; - let options = { + let options = writable({ initialView: 'timeGridWeek', plugins: [timeGridPlugin, dayGridPlugin, rrulePlugin, listPlugin, adaptivePlugin], locale: frLocale, @@ -33,36 +33,44 @@ modal.set(bind(EventDetails, { event: info.event })); }, events: [] - }; + }); let selectedCalendars; + let updateTimer; - async function reloadEvents(selectedCalendars, options) { + async function reloadEvents(selectedCalendars) { const evts = await refreshEvents(selectedCalendars); return evts.flat(); } + function updateEvents(calendars) { + return reloadEvents(calendars).then(events => { + options.update(opts => ({ + ...opts, + events + })); + }); + } + onMount(async () => { - options.events = await reloadEvents(selectedCalendars, options); - options = { ...options }; + const events = await reloadEvents(selectedCalendars); + options.update(opts => ({ + ...opts, + events + })); }); - $: { - /*reloadEvents(selectedCalendars, options).then(events => { - options.events = events; - options = { ...options }; - });*/ - } + $: updateEvents(selectedCalendars);

Calendrier de la vie étudiante à l'ENS

- +
- +
diff --git a/src/FilterBar.svelte b/src/FilterBar.svelte index b979e88..65e7265 100644 --- a/src/FilterBar.svelte +++ b/src/FilterBar.svelte @@ -1,14 +1,14 @@ diff --git a/src/FilterItem.svelte b/src/FilterItem.svelte index b603df8..0e6e60a 100644 --- a/src/FilterItem.svelte +++ b/src/FilterItem.svelte @@ -11,6 +11,7 @@ export let selected = []; export let filtering = createTriState(CHECKED); let subfiltering = createTriStates(CHECKED, Object.entries(children).length); + let subselected = Array.from({length: Object.entries(children).length}, e => []); function isVal(val) { return function (other) { @@ -33,7 +34,6 @@ } subfiltering.subscribe(subvalues => { - console.log('new subvalues', subvalues); if (areAllChecked(subvalues) && $filtering !== CHECKED) { filtering.setChecked(); } else if (areAllUnchecked(subvalues) && $filtering !== UNCHECKED) { @@ -45,7 +45,6 @@ if (subfiltering.length > 0) { filtering.subscribe(value => { - console.log(item, value); switch (value) { case CHECKED: subfiltering.updateAll(_ => CHECKED); @@ -63,6 +62,7 @@ dispatch('change', { value: evt.detail.value }); } + $: selected = $filtering === CHECKED ? [item, ...subselected.flat()] : subselected.flat(); {#if item != null} @@ -72,9 +72,9 @@ diff --git a/src/TriStateCheckbox.svelte b/src/TriStateCheckbox.svelte index 002d29a..2de88fc 100644 --- a/src/TriStateCheckbox.svelte +++ b/src/TriStateCheckbox.svelte @@ -15,7 +15,7 @@ if (node) { if (state === CHECKED) { checkedValue = true; - } else if (state === UNCHECKED) { + } else { checkedValue = false; } diff --git a/src/calendar.js b/src/calendar.js index 4a6570a..e96de0b 100644 --- a/src/calendar.js +++ b/src/calendar.js @@ -29,7 +29,13 @@ export const calendarTree = { "Club réseau": {}, "hackENS": {}, }, - "COF": {}, + "COF": { + "BDA": { + "Philharmonie": {}, + }, + "AG": {}, + }, + "BDS": {}, "Délégation Générale": {}, };