From 97e3758bc14dac52b32fe1c9372cb67a0bf2f752 Mon Sep 17 00:00:00 2001 From: Francesco Minnocci Date: Thu, 28 Aug 2025 15:19:18 +0200 Subject: [PATCH] chore: refactor JSON timetable import --- src/main.jsx | 46 ++----------------- src/scripts/update-semester-data.js | 12 ++--- .../semester-data.json | 2 +- 3 files changed, 11 insertions(+), 49 deletions(-) rename public/timetable-ids-dates.json => src/semester-data.json (89%) diff --git a/src/main.jsx b/src/main.jsx index b85a901..cf5dd37 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,6 +1,7 @@ import _ from 'lodash' import { render } from 'preact' import { useEffect, useState } from 'preact/hooks' +import semesterData from './semester-data.json' // import { ToolOverlay } from './components/ToolOverlay.jsx' // @@ -32,29 +33,7 @@ window._ = _ window.dataBuffer = {} // NOTA: magistrale *non* รจ quello con i corsi a cavallo -// These IDs will be dynamically updated from the academic data -let TIMETABLE_IDS = { - 'anno-1': '687e66d62d13e6001edd366d', - 'anno-2': '687e681301ee9300198320e6', - 'anno-3': '687e68bb01ee9300198320eb', - 'magistrale': '687e6a9f96ea080019d439d5', -} - -// Load academic data directly -async function loadAcademicData() { - try { - // Use relative path to work with Vite's base URL configuration - const response = await fetch('./timetable-ids-dates.json') - if (!response.ok) { - throw new Error(`HTTP ${response.status}: ${response.statusText}`) - } - const data = await response.json() - return data - } catch (error) { - console.error('Failed to load academic data:', error) - return null - } -} +const TIMETABLE_IDS = semesterData.timetableIds // const DEFAULT_DATE_RANGE = { // from: '2023-10-09T00:00:00.000Z', @@ -194,20 +173,6 @@ const App = ({}) => { // Use any random string of your choice // clearOldPersistentStates('e73cba02') - // Academic data loading - const [academicData, setAcademicData] = useState(null) - useEffect(() => { - loadAcademicData().then(data => { - if (data) { - setAcademicData(data) - if (data.timetableIds) { - // Update global TIMETABLE_IDS for backward compatibility - Object.assign(TIMETABLE_IDS, data.timetableIds) - } - } - }) - }, []) - const [date, setDate] = useState(new Date().toISOString()) // Data Sources @@ -298,13 +263,10 @@ const App = ({}) => {

{/*

diff --git a/src/scripts/update-semester-data.js b/src/scripts/update-semester-data.js index e745b87..70d2a44 100644 --- a/src/scripts/update-semester-data.js +++ b/src/scripts/update-semester-data.js @@ -164,7 +164,7 @@ async function updateAcademicData() { const firstMonday = getFirstMondayAfter(semesterStartDateStr); - const academicData = { + const semesterData = { timetableIds, semesterStartDateStr, firstMondayDate: firstMonday.toISOString(), @@ -172,11 +172,11 @@ async function updateAcademicData() { lastUpdated: new Date().toISOString(), academicYear: getCurrentAcademicYear() }; - - // Save to public/timetable-ids-dates.json - fs.writeFileSync('public/timetable-ids-dates.json', JSON.stringify(academicData, null, 2)); - - console.log('โœ… Academic data updated successfully'); + + // Save to src/semester-data.json + fs.writeFileSync('src/semester-data.json', JSON.stringify(semesterData, null, 2)); + + console.log('โœ… Semester data updated successfully'); } // Run the script diff --git a/public/timetable-ids-dates.json b/src/semester-data.json similarity index 89% rename from public/timetable-ids-dates.json rename to src/semester-data.json index 6c115f6..4e1b93e 100644 --- a/public/timetable-ids-dates.json +++ b/src/semester-data.json @@ -8,7 +8,7 @@ "semesterStartDateStr": "24 settembre 2025", "firstMondayDate": "2025-09-29T00:00:00.000Z", "buttonText": "Vai al 29 settembre! ๐Ÿš€", - "lastUpdated": "2025-08-28T11:47:04.874Z", + "lastUpdated": "2025-08-28T13:15:33.748Z", "academicYear": { "startYear": 2025, "endYear": 2026