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