chore: refactor JSON timetable import

pull/23/head
Francesco Minnocci 9 months ago
parent 48445020c8
commit 97e3758bc1

@ -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 = ({}) => {
</p>
<button
onClick={() => {
const dateToSet =
academicData?.firstMondayDate ||
'2025-09-29T00:00:00.000Z'
setDate(dateToSet)
setDate(semesterData.firstMondayDate)
}}
>
{academicData?.buttonText || 'Vai al 29 settembre! 🚀'}
{semesterData.buttonText}
</button>
{/* <p>

@ -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

@ -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
Loading…
Cancel
Save