Request new data on date change

This commit is contained in:
2022-06-02 21:55:28 +02:00
parent 5489e6377c
commit bb2891a968
2 changed files with 39 additions and 17 deletions

View File

@ -1,5 +1,10 @@
<script setup> <script setup>
import { selectedDate, selectedDay } from "../store"; import {
selectedDate,
selectedDay,
fetchSubstitutions,
fetchHistory,
} from "../store";
import { dayNames } from "../definitions"; import { dayNames } from "../definitions";
import dayjs from "dayjs"; import dayjs from "dayjs";
import ArrowIcon from "./icons/arrow-icon.vue"; import ArrowIcon from "./icons/arrow-icon.vue";
@ -8,23 +13,25 @@ function nextDay() {
var newDate = dayjs(selectedDate.value).add(1, "day"); var newDate = dayjs(selectedDate.value).add(1, "day");
// Skip weekend // Skip weekend
if (newDate.day() == 6) newDate = newDate.add(2, "day"); if (newDate.day() == 6) newDate = newDate.add(2, "day");
selectedDate.value = newDate.toDate(); changeDate(newDate);
} }
function previousDay() { function previousDay() {
var newDate = dayjs(selectedDate.value).subtract(1, "day"); var newDate = dayjs(selectedDate.value).subtract(1, "day");
// Skip weekend // Skip weekend
if (newDate.day() == 0) newDate = newDate.subtract(2, "day"); if (newDate.day() == 0) newDate = newDate.subtract(2, "day");
selectedDate.value = newDate.toDate(); changeDate(newDate);
}
async function changeDate(newDate) {
selectedDate.value = new Date(newDate.toDate().setUTCHours(0, 0, 0, 0));
await fetchSubstitutions();
await fetchHistory();
} }
</script> </script>
<template> <template>
<div class="selector"> <div class="selector">
<ArrowIcon @click="previousDay" /> <ArrowIcon @click="previousDay" />
<span <span class="day" @click="changeDate(dayjs())">
class="day"
@click="selectedDate = new Date(new Date().setUTCHours(0, 0, 0, 0))"
>
{{ dayNames[selectedDay + 1] }}, {{ dayNames[selectedDay + 1] }},
{{ dayjs(selectedDate).format("DD.MM.YYYY") }} {{ dayjs(selectedDate).format("DD.MM.YYYY") }}
</span> </span>

View File

@ -63,12 +63,25 @@ export const parsedTimetable = computed(() => {
}); });
}); });
export async function fetchData() { const baseUrl = import.meta.env.VITE_API_ENDPOINT || "/api";
const baseUrl = import.meta.env.VITE_API_ENDPOINT || "/api";
export async function fetchData() {
const checkResponse = await fetch(`${baseUrl}/check`); const checkResponse = await fetch(`${baseUrl}/check`);
if (checkResponse.status != 200) router.push("/login"); if (checkResponse.status != 200) router.push("/login");
fetchClassList();
fetchTimetable();
fetchSubstitutions();
fetchHistory();
}
export async function fetchClassList() {
const classListResponse = await fetch(`${baseUrl}/classes`);
const classListData = await classListResponse.json();
classList.value = classListData;
}
export async function fetchTimetable() {
const timetableResponse = await fetch( const timetableResponse = await fetch(
`${baseUrl}/timetable?class=${timetableClass.value}` `${baseUrl}/timetable?class=${timetableClass.value}`
); );
@ -77,27 +90,29 @@ export async function fetchData() {
console.warn("API Error: " + timetableData.error); console.warn("API Error: " + timetableData.error);
timetable.value = []; timetable.value = [];
} else timetable.value = timetableData; } else timetable.value = timetableData;
}
export async function fetchSubstitutions() {
const requestDate = `?date=${selectedDate.value.getTime()}`;
const substitutionResponse = await fetch( const substitutionResponse = await fetch(
substitutionFilter.value == "all" substitutionFilter.value == "all"
? `${baseUrl}/substitutions` ? `${baseUrl}/substitutions${requestDate}`
: `${baseUrl}/substitutions?class=${substitutionFilter.value}` : `${baseUrl}/substitutions${requestDate}&class=${substitutionFilter.value}`
); );
const substitutionData = await substitutionResponse.json(); const substitutionData = await substitutionResponse.json();
substitutions.value = substitutionData; substitutions.value = substitutionData;
}
export async function fetchHistory() {
const requestDate = `?date=${selectedDate.value.getTime()}`;
const historyResponse = await fetch( const historyResponse = await fetch(
substitutionFilter.value == "all" substitutionFilter.value == "all"
? `${baseUrl}/history` ? `${baseUrl}/history${requestDate}`
: `${baseUrl}/history?class=${substitutionFilter.value}` : `${baseUrl}/history${requestDate}&class=${substitutionFilter.value}`
); );
const historyData = await historyResponse.json(); const historyData = await historyResponse.json();
if (historyData.error) console.warn("API Error: " + historyData.error); if (historyData.error) console.warn("API Error: " + historyData.error);
else history.value = historyData; else history.value = historyData;
const classListResponse = await fetch(`${baseUrl}/classes`);
const classListData = await classListResponse.json();
classList.value = classListData;
} }
fetchData(); fetchData();