diff --git a/src/components/DatePicker.jsx b/src/components/DatePicker.jsx new file mode 100644 index 0000000..7242dfd --- /dev/null +++ b/src/components/DatePicker.jsx @@ -0,0 +1,26 @@ +import { useRef } from 'preact/hooks' +import { Icon } from './Icon.jsx' + +export const DatePicker = ({ date, setDate }) => { + const input = useRef() + + const [year, month, day] = date.split('T')[0].split('-') + return ( +
Una volta compiuta la selezione, è possibile vedere la tabella delle
lezioni andando nella visualizzazione Orario (
-
Per via di eventuali preferenze personali, è possibile cambiare diff --git a/src/components/OptionBar.jsx b/src/components/OptionBar.jsx index 62747cb..e62e488 100644 --- a/src/components/OptionBar.jsx +++ b/src/components/OptionBar.jsx @@ -1,7 +1,7 @@ import { CompoundButton } from './CompoundButton.jsx' import { Icon } from './Icon.jsx' -export const OptionBar = ({ source, setSource }) => { +export const OptionBar = ({ view, setView }) => { return (
Non hai ancora selezionato nessun corso.
Clicca sui corsi nelle altre visuali per selezionarli e diff --git a/src/components/view/Schedule.jsx b/src/components/view/Schedule.jsx index c820bd0..22eddc4 100644 --- a/src/components/view/Schedule.jsx +++ b/src/components/view/Schedule.jsx @@ -46,7 +46,7 @@ const TransposePopup = ({ onClose }) => { const NoCourseWarning = () => { return ( -
Non hai ancora selezionato nessun corso.
Clicca sui corsi nelle altre visuali per selezionarli e
diff --git a/src/main.jsx b/src/main.jsx
index 5b985d5..c9c2667 100644
--- a/src/main.jsx
+++ b/src/main.jsx
@@ -24,6 +24,7 @@ import {
clearOldPersistentStates,
usePersistentState,
} from './utils.jsx'
+import { SettingsBar } from './components/SettingsBar.jsx'
// Che fanno queste due righe?
window._ = _
@@ -36,17 +37,17 @@ const TIMETABLE_IDS = {
'magistrale': '64a7c7091ab813002c5d9ede',
}
-const DEFAULT_DATE_RANGE = {
- from: '2023-10-09T00:00:00.000Z',
- to: '2023-10-14T00:00:00.000Z',
-}
+// const DEFAULT_DATE_RANGE = {
+// from: '2023-10-09T00:00:00.000Z',
+// to: '2023-10-14T00:00:00.000Z',
+// }
-const DATE_RANGES = {
- '64a7c1c651f079001d52e9c8': DEFAULT_DATE_RANGE,
- '6308e2dc09352a0208fefdd9': DEFAULT_DATE_RANGE,
- '6308e42a1df5cb026699ced4': DEFAULT_DATE_RANGE,
- '64a7c7091ab813002c5d9ede': DEFAULT_DATE_RANGE,
-}
+// const DATE_RANGES = {
+// '64a7c1c651f079001d52e9c8': DEFAULT_DATE_RANGE,
+// '6308e2dc09352a0208fefdd9': DEFAULT_DATE_RANGE,
+// '6308e42a1df5cb026699ced4': DEFAULT_DATE_RANGE,
+// '64a7c7091ab813002c5d9ede': DEFAULT_DATE_RANGE,
+// }
function specialEventPatches(eventi) {
// Il laboratorio del primo anno in realtà è in due canali separati
@@ -79,7 +80,18 @@ function formatEvents(timetable) {
})
}
-async function loadCalendari() {
+async function loadCalendari(date) {
+ function getMonday(d) {
+ const day = d.getDay()
+ const diff = d.getDate() - day + (day === 0 ? -6 : 1)
+ const monday = new Date(d.setDate(diff))
+ monday.setUTCHours(0, 0, 0, 0)
+ return monday
+ }
+ const monday = getMonday(date)
+ const saturday = new Date(monday)
+ saturday.setDate(monday.getDate() + 5)
+
async function req(id) {
// Almost directly copy-pasted from Chrome Dev Tools
const req = await fetch(
@@ -97,8 +109,8 @@ async function loadCalendari() {
linkCalendarioId: id,
clienteId: '628de8b9b63679f193b87046',
pianificazioneTemplate: false,
- dataInizio: DATE_RANGES[id].from,
- dataFine: DATE_RANGES[id].to,
+ dataInizio: monday.toISOString(),
+ dataFine: saturday.toISOString(),
}),
method: 'POST',
mode: 'cors',
@@ -163,12 +175,14 @@ const App = ({}) => {
// Use any random string of your choice
// clearOldPersistentStates('e73cba02')
+ const [date, setDate] = useState(new Date().toISOString())
+
// Data Sources
const [view, setView] = usePersistentState('view', 'magistrale')
const [timetables, setTimetables] = useState(null)
useEffect(async () => {
- setTimetables(await loadCalendari())
- }, [])
+ setTimetables(await loadCalendari(new Date(date)))
+ }, [date])
// View Modes
// const [mode, setMode] = usePersistentState('orario.mode', MODE_COURSES)
@@ -202,43 +216,77 @@ const App = ({}) => {
{...{
source: view,
setSource: setView,
- onShowMenu: () => setShowMobileMenu(true),
+ date: date,
+ setDate: setDate,
+ showMobileMenu: showMobileMenu,
+ setShowMobileMenu: setShowMobileMenu,
onHelp: () => setHelpVisible(true),
theme,
setTheme,
}}
/>
-
+ Non esistono corsi per la settimana selezionata:
+ buone vacanze! 🎉
+
+ Per cambiare settimana puoi usare il widget
+ Calendario (
+
+ In versione mobile, il widget Calendario è
+ situato dentro il Menu (
+