diff --git a/src/App.vue b/src/App.vue
index efd391e..e092685 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -3,12 +3,20 @@ import { RouterView } from "vue-router";
import TitleBar from "./components/titlebar-element.vue";
import BottomNavbar from "./components/bottom-navbar.vue";
import DateSelector from "./components/date-selector.vue";
+import LoadingElement from "./components/loading-element.vue";
+import { loading } from "./store";
-
+
+
+
+
diff --git a/src/components/date-selector.vue b/src/components/date-selector.vue
index 8617f11..19f583d 100644
--- a/src/components/date-selector.vue
+++ b/src/components/date-selector.vue
@@ -4,6 +4,7 @@ import {
selectedDay,
fetchSubstitutions,
fetchHistory,
+ loading,
} from "../store";
import { dayNames } from "../definitions";
import dayjs from "dayjs";
@@ -23,8 +24,10 @@ function previousDay() {
}
async function changeDate(newDate) {
selectedDate.value = new Date(newDate.toDate().setUTCHours(0, 0, 0, 0));
+ loading.value = true;
await fetchSubstitutions();
await fetchHistory();
+ loading.value = false;
}
diff --git a/src/components/loading-element.vue b/src/components/loading-element.vue
new file mode 100644
index 0000000..699db7a
--- /dev/null
+++ b/src/components/loading-element.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/store.js b/src/store.js
index 356f09a..21e71a7 100644
--- a/src/store.js
+++ b/src/store.js
@@ -3,6 +3,7 @@ import { ref, watch } from "vue";
import router from "./router";
export const lastRoute = ref();
+export const loading = ref(false);
export const substitutionFilter = ref(
localStorage.getItem("substitutionFilter") || "all"
@@ -66,6 +67,8 @@ export const parsedTimetable = computed(() => {
const baseUrl = import.meta.env.VITE_API_ENDPOINT || "/api";
export async function fetchData() {
+ loading.value = true;
+
const checkResponse = await fetch(`${baseUrl}/check`);
if (checkResponse.status != 200) router.push("/login");
@@ -73,6 +76,8 @@ export async function fetchData() {
fetchTimetable();
fetchSubstitutions();
fetchHistory();
+
+ loading.value = false;
}
export async function fetchClassList() {