From 232a06feeef5c51f7f7d7c7d52e99c8eb335bd90 Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Mon, 7 Mar 2022 11:29:45 +0100 Subject: [PATCH 01/92] Allow collapsing of groups --- src/FilterItem.svelte | 52 ++++++++++++++++++++++--------------- src/TriStateCheckbox.svelte | 14 ++++++++++ 2 files changed, 45 insertions(+), 21 deletions(-) diff --git a/src/FilterItem.svelte b/src/FilterItem.svelte index ec401ee..7e4a6c6 100644 --- a/src/FilterItem.svelte +++ b/src/FilterItem.svelte @@ -16,6 +16,8 @@ let subfiltering = createTriStates(UNCHECKED, Object.entries(children).length); let subselected = Array.from({ length: Object.entries(children).length }, _ => []); + let collapsed = Object.entries(children).length ? false : undefined; + function isVal(val) { return function (other) { return other === val; @@ -78,31 +80,39 @@ $: selected = $filtering === CHECKED ? [item, ...subselected.flat()] : subselected.flat(); + $: subHidden = () => (collapsed ? 'd-none' : ''); {#if item}
- +
- {#each Object.entries(children) as [toplevel, subchildren], i} - {#if subchildren} - - {:else} - - {/if} - {/each} +
+ {#each Object.entries(children) as [toplevel, subchildren], i} + {#if subchildren} + + {:else} + + {/if} + {/each} +
{/if} diff --git a/src/TriStateCheckbox.svelte b/src/TriStateCheckbox.svelte index 992bbfc..7e2c979 100644 --- a/src/TriStateCheckbox.svelte +++ b/src/TriStateCheckbox.svelte @@ -3,6 +3,7 @@ export let state; export let value; + export let collapsed = undefined; import { UNCHECKED, CHECKED, WEIRD } from './stores'; import { createEventDispatcher } from 'svelte'; @@ -18,6 +19,10 @@ dispatch('change', { value: state }); } + function handleCollapse(evt) { + collapsed = !collapsed; + } + $: icon = () => { switch (state) { case UNCHECKED: @@ -28,6 +33,10 @@ return 'check-square-fill'; } }; + + $: colIcon = () => { + return collapsed ? 'chevron-expand' : 'chevron-contract'; + }; @@ -35,6 +44,11 @@ {value} + {#if collapsed !== undefined} + + + + {/if} diff --git a/src/TriStateCheckbox.svelte b/src/TriStateCheckbox.svelte index 90ea55b..9f981ab 100644 --- a/src/TriStateCheckbox.svelte +++ b/src/TriStateCheckbox.svelte @@ -26,9 +26,7 @@ - - - + {value} {#if collapsed !== undefined} (collapsed = !collapsed)}> @@ -45,7 +43,6 @@ } .cal:hover { - /* background-color: #62a1fe; */ background-color: #6c757d; color: #fff; } -- 2.46.1 From be835ee14f65e5169e7f0f4ed3c321e68741bba5 Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Sun, 13 Mar 2022 19:14:23 +0100 Subject: [PATCH 15/92] Rajoute timeGridDay en version mobile --- src/App.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.svelte b/src/App.svelte index 47e31d8..9c8bb16 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -48,7 +48,7 @@ left: mobile ? false : 'prev,next today', center: 'title', right: mobile - ? 'prev,today,next dayGridMonth,timeGridWeek,listWeek' + ? 'prev,today,next dayGridMonth,timeGridWeek,timeGridDay,listWeek' : 'dayGridMonth,timeGridWeek,timeGridDay,listWeek' }, height: '100%', -- 2.46.1 From 2a5f56ff3764af77618506b748749e0cb54afe87 Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Sun, 13 Mar 2022 19:18:27 +0100 Subject: [PATCH 16/92] Don't open the help by default --- src/Help.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Help.svelte b/src/Help.svelte index 9b48b14..912dfbe 100644 --- a/src/Help.svelte +++ b/src/Help.svelte @@ -1,7 +1,7 @@ -- 2.46.1 From 1559e5cdd9a6c8f71beeef1b41e169d5c224fa2a Mon Sep 17 00:00:00 2001 From: tomate Date: Tue, 29 Mar 2022 20:22:05 +0200 Subject: [PATCH 17/92] =?UTF-8?q?Rajoute=20le=20t=C3=A9l=C3=A9chargement?= =?UTF-8?q?=20des=20calendriers=20(#17)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tom Hubrecht Reviewed-on: https://git.rz.ens.wtf/Klub-RZ/metis/pulls/17 Co-authored-by: tomate Co-committed-by: tomate --- src/FilterItem.svelte | 8 ++++++++ src/TriStateCheckbox.svelte | 29 ++++++++++++++++++++++++----- src/calendar.js | 7 ++++++- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/FilterItem.svelte b/src/FilterItem.svelte index 7e4a6c6..de2c632 100644 --- a/src/FilterItem.svelte +++ b/src/FilterItem.svelte @@ -6,6 +6,8 @@ import { createTriState, createTriStates, UNCHECKED, CHECKED, WEIRD } from './stores'; import { Icon } from 'sveltestrap'; + import { mkSource } from './calendar.js'; + export let item = null; export let level = 1; export let generalToggle = undefined; @@ -78,6 +80,11 @@ }); } + const url = (() => { + const source = mkSource(item); + return source ? source.export_url : undefined; + })(); + $: selected = $filtering === CHECKED ? [item, ...subselected.flat()] : subselected.flat(); $: subHidden = () => (collapsed ? 'd-none' : ''); @@ -90,6 +97,7 @@ on:change={handleChange} value={item} bind:collapsed + {url} /> diff --git a/src/TriStateCheckbox.svelte b/src/TriStateCheckbox.svelte index 9f981ab..f65b04d 100644 --- a/src/TriStateCheckbox.svelte +++ b/src/TriStateCheckbox.svelte @@ -4,6 +4,7 @@ export let state; export let value; export let collapsed = undefined; + export let url; import { UNCHECKED, CHECKED, WEIRD } from './stores'; import { createEventDispatcher } from 'svelte'; @@ -28,14 +29,32 @@ {value} - {#if collapsed !== undefined} - (collapsed = !collapsed)}> - - - {/if} + + {#if url} + + + + {/if} + + {#if collapsed !== undefined} + (collapsed = !collapsed)}> + + + {/if} + -- 2.46.1 From df1140649e5ec160da6634b88b4e310ad08a84e4 Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Tue, 26 Jul 2022 16:36:39 +0200 Subject: [PATCH 45/92] Fix date selection --- src/App.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.svelte b/src/App.svelte index 32162df..c676930 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -48,7 +48,7 @@ const search = new URL(document.location).searchParams; const params = search.getAll('c'); - const date = new Date(search.get('d')); + const date = search.has('d') ? new Date(search.get('d')) : now; const view = search.get('v'); const headers = mobile -- 2.46.1 From 117a5eb0b1b176cc2c5ce56152ac0105eaa57ad6 Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Tue, 26 Jul 2022 23:05:41 +0200 Subject: [PATCH 46/92] Move the share button (useful on mobile) --- src/Share.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Share.svelte b/src/Share.svelte index f49fddf..641aed2 100644 --- a/src/Share.svelte +++ b/src/Share.svelte @@ -51,8 +51,8 @@ -- 2.46.1 From 4e631121826c396b59f08a0f18c015f3db0ce470 Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Wed, 27 Jul 2022 00:13:16 +0200 Subject: [PATCH 47/92] Share as b64 and add toast w/ clipboard filling --- src/App.svelte | 7 ++++++- src/Share.svelte | 40 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/src/App.svelte b/src/App.svelte index c676930..8b31922 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -45,7 +45,12 @@ 'listWeek' ]; - const search = new URL(document.location).searchParams; + let search = new URL(document.location).searchParams; + + if (search.has('b64')) { + // On est dans le cas où les paramètres sont codés en base64 + search = new URLSearchParams(window.atob(search.get('b64'))); + } const params = search.getAll('c'); const date = search.has('d') ? new Date(search.get('d')) : now; diff --git a/src/Share.svelte b/src/Share.svelte index 641aed2..eefb174 100644 --- a/src/Share.svelte +++ b/src/Share.svelte @@ -1,5 +1,5 @@ + + @@ -39,7 +59,7 @@

La vue actuelle du calendrier peut être partagée avec l'URL suivante :

- {share} + {share}
@@ -55,4 +75,18 @@ right: 1em; cursor: pointer; } + + #share-url { + max-width: 100%; + display: block; + overflow-wrap: break-word; + cursor: pointer; + } + + .share-toast { + position: absolute; + top: 1.25em; + left: 1em; + z-index: 1100; + } -- 2.46.1 From 29bce486d21cf17e4ea12a18fef763dcf769126b Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Wed, 27 Jul 2022 00:17:50 +0200 Subject: [PATCH 48/92] Add user-select: all for easier copy when the clipboard is not available --- src/Share.svelte | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Share.svelte b/src/Share.svelte index eefb174..a061f50 100644 --- a/src/Share.svelte +++ b/src/Share.svelte @@ -35,7 +35,7 @@ navigator.clipboard .writeText(share) .then(() => (toastText = 'Lien de partage copié dans le presse-papier.')) - .catch(() => (toastText = 'Erreur de copie.')) + .catch(() => (toastText = 'Erreur de copie automatique.')) .finally((isToastOpen = true)); }; @@ -81,6 +81,7 @@ display: block; overflow-wrap: break-word; cursor: pointer; + user-select: all; } .share-toast { -- 2.46.1 From 4a7414cb115d279c1eead8d9af1b4d14e23d904d Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Wed, 27 Jul 2022 01:09:07 +0200 Subject: [PATCH 49/92] =?UTF-8?q?Permet=20de=20basculer=20du=20partage=20e?= =?UTF-8?q?n=20base64=20=C3=A0=20un=20partage=20normal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Share.svelte | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/Share.svelte b/src/Share.svelte index a061f50..d746673 100644 --- a/src/Share.svelte +++ b/src/Share.svelte @@ -8,12 +8,24 @@ let isOpen = false; let isToastOpen = false; + let isBinary = false; let toastText = ''; const toggle = () => { isOpen = !isOpen; + updateShareLink(); + }; + const doShare = () => { + navigator.clipboard + .writeText(share) + .then(() => (toastText = 'Lien de partage copié dans le presse-papier.')) + .catch(() => (toastText = 'Erreur de copie automatique.')) + .finally((isToastOpen = true)); + }; + + const updateShareLink = () => { const loc = document.location; const search = new URLSearchParams(); const api = calendar.getAPI(); @@ -26,18 +38,21 @@ search.append('d', api.getDate().toISOString()); } - const b64 = window.btoa(search.toString()); + if (isBinary) { + const b64 = window.btoa(search.toString()); - share = `${loc.origin}${loc.pathname}?b64=${b64}`; + share = `${loc.origin}${loc.pathname}?b64=${b64}`; + } else { + share = `${loc.origin}${loc.pathname}${search.toString()}`; + } }; - const doShare = () => { - navigator.clipboard - .writeText(share) - .then(() => (toastText = 'Lien de partage copié dans le presse-papier.')) - .catch(() => (toastText = 'Erreur de copie automatique.')) - .finally((isToastOpen = true)); + const toggleBinary = () => { + isBinary = !isBinary; + updateShareLink(); }; + + $: shareDataIcon = isBinary ? 'code-square' : 'code'; - - {#if event.allDay} + {#if event.extendedProps.simAllDay} + + {dateFormat(event.start)} ({timeFormat(event.extendedProps.realStart)}) - {dateFormat(event.end)} ({timeFormat(event.extendedProps.realEnd)}) + {:else if event.allDay} {dateFormat(event.start)} - {dateFormat(event.end)} {:else} diff --git a/src/calendar.js b/src/calendar.js index e3c0b36..ca9d2d6 100644 --- a/src/calendar.js +++ b/src/calendar.js @@ -132,13 +132,29 @@ function fcEventFromjCalEvent(cal) { return function (evt) { const start = new Date(evt.dtstart) const end = new Date(evt.dtend) + + const duration = end - start // in ms + const dayMs = 24 * 3600 * 1000 + const fcEvent = { title: `${cal.short_name ?? cal.name} : ${evt.summary}`, - start: evt.dtstart, - end: evt.dtend, + start: start, + end: end, color: cal.color, textColor: invertColor(cal.color), - duration: end - start // in ms + duration: duration + } + + if (duration > dayMs - 1) { + fcEvent.allDay = true + fcEvent.simAllDay = true + + fcEvent.realStart = new Date(start) + fcEvent.realEnd = new Date(end) + + fcEvent.start.setUTCHours(0, 0, 0) + fcEvent.end.setUTCHours(23, 59, 59) + fcEvent.duration = end - start // Update the duration } fcEvent.calendar = cal.name -- 2.46.1 From 32d9b4d60c601ef23df4444320aabfb94efb12a0 Mon Sep 17 00:00:00 2001 From: Tom Hubrecht Date: Tue, 25 Oct 2022 10:38:09 +0200 Subject: [PATCH 90/92] Fix display or real allDay events --- src/calendar.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/calendar.js b/src/calendar.js index ca9d2d6..c8ef67a 100644 --- a/src/calendar.js +++ b/src/calendar.js @@ -133,27 +133,29 @@ function fcEventFromjCalEvent(cal) { const start = new Date(evt.dtstart) const end = new Date(evt.dtend) + const allDay = !evt.dtstart.endsWith('Z') + const duration = end - start // in ms const dayMs = 24 * 3600 * 1000 const fcEvent = { title: `${cal.short_name ?? cal.name} : ${evt.summary}`, - start: start, - end: end, + start: evt.dtstart, + end: evt.dtend, color: cal.color, textColor: invertColor(cal.color), duration: duration } - if (duration > dayMs - 1) { + if (!allDay && (duration > dayMs - 1)) { fcEvent.allDay = true fcEvent.simAllDay = true fcEvent.realStart = new Date(start) fcEvent.realEnd = new Date(end) - fcEvent.start.setUTCHours(0, 0, 0) - fcEvent.end.setUTCHours(23, 59, 59) + fcEvent.start = start.setUTCHours(0, 0, 0) + fcEvent.end = end.setUTCHours(23, 59, 59) fcEvent.duration = end - start // Update the duration } -- 2.46.1 From 7c5df4e7904eb6c55a6578d4b5c47cb87c3a812f Mon Sep 17 00:00:00 2001 From: sinavir Date: Sun, 23 Jul 2023 13:27:12 +0200 Subject: [PATCH 91/92] =?UTF-8?q?Add=20rentr=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/calendars.json | 50 +++++++++++++++++++++++++++++++++++++++++++-- data/locations.json | 4 +++- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/data/calendars.json b/data/calendars.json index 5986545..0ef8aa9 100644 --- a/data/calendars.json +++ b/data/calendars.json @@ -1,6 +1,15 @@ { "tree": { + "Rentrée": { + "Amphis de rentrée": {}, + "Départements": {}, + "Visites de bibliothèque": {}, + "Masters": {}, + "Étudiants internationaux": {}, + "Conférences de recherche": {} + }, "COF": { + "Rentrée du COF": {}, "Évènements (COF)": {}, "Assemblées Générales (COF)": {}, "BdA": { @@ -24,7 +33,10 @@ "Ulmity": {}, "Club Inutile ☔": {} }, - "BDS": {}, + "BDS": { + "Évènements (BDS)": {}, + "Rentrée du BDS": {} + }, "Clubs BDS": { "Créneaux encadrés": {} }, @@ -123,7 +135,7 @@ "short_name": "Banda" }, "dSYCtdC6bgyWpKyt": { - "name": "BDS" + "name": "Évènements (BDS)" }, "goXLq2dQ8LgFAjkM": { "name": "Club Bouffe" @@ -144,6 +156,40 @@ }, "AYNpoC674yAjEmRy": { "name": "L'Hômonerie" + }, + "TcwNdrs6iyBRxFzk": { + "name": "Divers" + }, + "G5ZRyTkMifXC2iHj": { + "name": "Amphis de rentrée", + "short_name": "Amphis" + }, + "dJofECeczaGgNiKs": { + "name": "Rentrée du BDS", + "short_name": "BDS" + }, + "7Rwd8JERwBsso7XG": { + "name": "Rentrée du COF", + "short_name": "COF" + }, + "tiMsNcncqBxR4nL2": { + "name": "Départements", + "short_name": "Dpt" + }, + "RpP773D6e2ReLfcY": { + "name": "Visites de bibliothèque", + "short_name": "Bibli" + }, + "YRZ4A8imEEf8jnDE": { + "name": "Masters" + }, + "8EDHX6kiPYcSrXXL": { + "name": "Étudiants internationaux", + "short_name": "Internationaux" + }, + "TWgNxdri7zQSoiRf": { + "name": "Conférences de recherche", + "short_name": "Conf" } } } diff --git a/data/locations.json b/data/locations.json index 5e705d8..a90d540 100644 --- a/data/locations.json +++ b/data/locations.json @@ -1,10 +1,12 @@ { "nameMap": { "Amphi Jourdan": "Amphithéâtre Jourdan", + "Cour aux Ernest": "Cour aux Ernests", "R2-21 (Jourdan)": "R2-21", "Salle Jean Ibanes (Jourdan, R1-07)": "Salle Jean Ibanes (R1-07)", "Salle Madeleine Rebérioux (Jourdan, R2-02)": "Salle Madeleine Rebérioux (R2-02)", - "Salle Marcel Roncayolo (Jourdan, R2-05)": "Salle Marcel Roncayolo (R2-05)" + "Salle Marcel Roncayolo (Jourdan, R2-05)": "Salle Marcel Roncayolo (R2-05)", + "Cour des bibliothèques": "Cour du NIR" }, "rooms": { -- 2.46.1 From 85570af7afa4b618ee59b194191d9198b88e9627 Mon Sep 17 00:00:00 2001 From: sinavir Date: Wed, 20 Sep 2023 15:37:55 +0200 Subject: [PATCH 92/92] Add arts-pla' --- data/calendars.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data/calendars.json b/data/calendars.json index 0ef8aa9..d4847ea 100644 --- a/data/calendars.json +++ b/data/calendars.json @@ -31,6 +31,7 @@ "BandarrêtdurgENS": {}, "L'Hômonerie": {}, "Ulmity": {}, + "Arts pla'": {}, "Club Inutile ☔": {} }, "BDS": { @@ -190,6 +191,10 @@ "TWgNxdri7zQSoiRf": { "name": "Conférences de recherche", "short_name": "Conf" + }, + "MJf2wnQafbLc2arS": { + "name": "Arts pla'", + "color": "#ffb969" } } } -- 2.46.1