✨ Fetch data from backend
This commit is contained in:
51
src/store.js
51
src/store.js
@ -13,12 +13,17 @@ watch(substitutionFilter, (newValue) => {
|
||||
newValue = prompt("Please enter a class to filter (e.g. 9C)");
|
||||
}
|
||||
localStorage.setItem("substitutionFilter", newValue);
|
||||
fetchData();
|
||||
});
|
||||
watch(timetableClass, (newValue) => {
|
||||
localStorage.setItem("timetableClass", newValue);
|
||||
fetchData();
|
||||
});
|
||||
|
||||
export const timetable = ref([]);
|
||||
export const substitutions = ref([]);
|
||||
export const history = ref([]);
|
||||
export const classList = ref([]);
|
||||
|
||||
export const historyOfDate = computed(() => {
|
||||
const dates = {};
|
||||
@ -37,7 +42,7 @@ export const substitutionsForDate = computed(() => {
|
||||
if (!dates[date]) dates[date] = [];
|
||||
dates[substitution.date].push(substitution);
|
||||
}
|
||||
return dates;
|
||||
return sortObject(dates);
|
||||
});
|
||||
|
||||
export const parsedTimetable = computed(() => {
|
||||
@ -51,3 +56,47 @@ export const parsedTimetable = computed(() => {
|
||||
return newDay;
|
||||
});
|
||||
});
|
||||
|
||||
export async function fetchData() {
|
||||
const baseUrl = "http://localhost:3000/api";
|
||||
const timetableResponse = await fetch(
|
||||
`${baseUrl}/timetable?class=${timetableClass.value}`
|
||||
);
|
||||
const timetableData = await timetableResponse.json();
|
||||
if (timetableData.error) {
|
||||
console.warn("API Error: " + timetableData.error);
|
||||
timetable.value = [];
|
||||
} else timetable.value = timetableData;
|
||||
|
||||
const substitutionResponse = await fetch(
|
||||
substitutionFilter.value == "all"
|
||||
? `${baseUrl}/substitutions`
|
||||
: `${baseUrl}/substitutions?class=${substitutionFilter.value}`
|
||||
);
|
||||
const substitutionData = await substitutionResponse.json();
|
||||
substitutions.value = substitutionData;
|
||||
|
||||
const historyResponse = await fetch(
|
||||
substitutionFilter.value == "all"
|
||||
? `${baseUrl}/history`
|
||||
: `${baseUrl}/history?class=${substitutionFilter.value}`
|
||||
);
|
||||
const historyData = await historyResponse.json();
|
||||
if (historyData.error) console.warn("API Error: " + historyData.error);
|
||||
else history.value = historyData;
|
||||
|
||||
const classListResponse = await fetch(`${baseUrl}/classes`);
|
||||
const classListData = await classListResponse.json();
|
||||
classList.value = classListData;
|
||||
}
|
||||
|
||||
fetchData();
|
||||
|
||||
function sortObject(obj) {
|
||||
return Object.keys(obj)
|
||||
.sort()
|
||||
.reduce(function (result, key) {
|
||||
result[key] = obj[key];
|
||||
return result;
|
||||
}, {});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user