diff --git a/src/App.svelte b/src/App.svelte
index 9c8bb16..2b2216e 100644
--- a/src/App.svelte
+++ b/src/App.svelte
@@ -10,7 +10,7 @@
import frLocale from '@fullcalendar/core/locales/fr';
import EventModal from './EventModal.svelte';
import FilterBar from './FilterBar.svelte';
- import { mkSource, calendarTree } from './calendar';
+ import { mkSource, calendarTree, initialCalendars, getSubCalendars } from './calendar';
import { debounce } from 'lodash';
import Help from './Help.svelte';
@@ -30,6 +30,8 @@
return time.toLocaleTimeString();
})();
+ const params = new URL(document.location).searchParams.getAll('c');
+
let calendar;
let options = writable({
@@ -71,7 +73,28 @@
progressiveEventRendering: true
});
+ const flatten = d => {
+ let array = [];
+
+ if (!d) {
+ return [];
+ }
+
+ if (Array.isArray(d)) {
+ d.forEach(a => (array = array.concat(flatten(a))));
+ } else {
+ for (const [n, s] of Object.entries(d)) {
+ array = array.concat(n, flatten(s));
+ }
+ }
+ return array;
+ };
+
let selectedCalendars = [];
+ const initial =
+ params.length > 0
+ ? flatten(params.map(cal => getSubCalendars(cal))).concat(params)
+ : initialCalendars;
const updateEvents = debounce(calendars => {
options.update(opts => ({
@@ -88,7 +111,7 @@
-
+
diff --git a/src/FilterBar.svelte b/src/FilterBar.svelte
index 5b10482..cdcde0b 100644
--- a/src/FilterBar.svelte
+++ b/src/FilterBar.svelte
@@ -5,15 +5,17 @@
export let calendarTree = [];
export let selected = null;
+ export let initial = [];
let open = false;
+ let icon;
let generalToggle = writable(true);
const toggle = () => (open = !open);
- $: icon = () => ($generalToggle ? 'toggle-on' : 'toggle-off');
-
let subSelections = Array.from({ length: Object.keys(calendarTree).length }, _ => []);
$: selected = subSelections.flat();
+
+ generalToggle.subscribe(v => (icon = v ? 'toggle-on' : 'toggle-off'));