✨ Add basic handling for local timetables
This commit is contained in:
15
src/store.js
15
src/store.js
@ -14,6 +14,9 @@ export const timetableId = ref(localStorage.getItem("timetableId") || "none");
|
|||||||
export const timetableGroups = ref(
|
export const timetableGroups = ref(
|
||||||
JSON.parse(localStorage.getItem("timetableGroups") || "[]")
|
JSON.parse(localStorage.getItem("timetableGroups") || "[]")
|
||||||
);
|
);
|
||||||
|
export const localTimetables = ref(
|
||||||
|
JSON.parse(localStorage.getItem("timetables")) || []
|
||||||
|
);
|
||||||
|
|
||||||
export const theme = ref(localStorage.getItem("theme") || "auto");
|
export const theme = ref(localStorage.getItem("theme") || "auto");
|
||||||
|
|
||||||
@ -31,6 +34,9 @@ watch(
|
|||||||
},
|
},
|
||||||
{ deep: true }
|
{ deep: true }
|
||||||
);
|
);
|
||||||
|
watch(localTimetables, (newValue) => {
|
||||||
|
localStorage.setItem("timetables", JSON.stringify(newValue));
|
||||||
|
});
|
||||||
watch(theme, (newValue) => {
|
watch(theme, (newValue) => {
|
||||||
localStorage.setItem("theme", newValue);
|
localStorage.setItem("theme", newValue);
|
||||||
});
|
});
|
||||||
@ -52,10 +58,15 @@ export const changeDate = ref(new Date());
|
|||||||
|
|
||||||
/* Data store */
|
/* Data store */
|
||||||
export const timetable = computed(() => {
|
export const timetable = computed(() => {
|
||||||
const selectedTimetable = timetables.value.find(
|
const localTimetable = localTimetables.value.find(
|
||||||
(e) => e.id == timetableId.value
|
(e) => e.id == timetableId.value
|
||||||
);
|
);
|
||||||
return selectedTimetable || { trusted: true, source: "", data: [] };
|
const remoteTimetable = timetables.value.find(
|
||||||
|
(e) => e.id == timetableId.value
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
localTimetable || remoteTimetable || { trusted: true, source: "", data: [] }
|
||||||
|
);
|
||||||
});
|
});
|
||||||
export const timetables = ref([]);
|
export const timetables = ref([]);
|
||||||
export const times = ref([]);
|
export const times = ref([]);
|
||||||
|
@ -19,6 +19,7 @@ export const strings = {
|
|||||||
heading: {
|
heading: {
|
||||||
filtering: "Filtering",
|
filtering: "Filtering",
|
||||||
timetableGroups: "Timetable Groups",
|
timetableGroups: "Timetable Groups",
|
||||||
|
localTimetables: "Local Timetables",
|
||||||
remoteTimetables: "Remote Timetables",
|
remoteTimetables: "Remote Timetables",
|
||||||
language: "Language",
|
language: "Language",
|
||||||
about: "About",
|
about: "About",
|
||||||
@ -128,6 +129,7 @@ export const strings = {
|
|||||||
settings: {
|
settings: {
|
||||||
heading: {
|
heading: {
|
||||||
filtering: "Filter",
|
filtering: "Filter",
|
||||||
|
localTimetables: "Lokale Stundenpläne",
|
||||||
remoteTimetables: "Online Stundenpläne",
|
remoteTimetables: "Online Stundenpläne",
|
||||||
timetableGroups: "Stundenplan-Gruppen",
|
timetableGroups: "Stundenplan-Gruppen",
|
||||||
language: "Sprache",
|
language: "Sprache",
|
||||||
|
@ -1,9 +1,20 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import TimetableCard from "@/components/settings/timetable-card.vue";
|
import TimetableCard from "@/components/settings/timetable-card.vue";
|
||||||
import { timetables, timetableId } from "@/store";
|
import { timetables, localTimetables, timetableId } from "@/store";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
<h2>{{ $t("settings.heading.localTimetables") }}</h2>
|
||||||
|
<div class="list">
|
||||||
|
<TimetableCard
|
||||||
|
v-for="timetable in localTimetables"
|
||||||
|
:key="timetable.id"
|
||||||
|
:timetable="timetable"
|
||||||
|
:selected="timetableId == timetable.id"
|
||||||
|
:editable="true"
|
||||||
|
@click="timetableId = timetable.id"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
<h2>{{ $t("settings.heading.remoteTimetables") }}</h2>
|
<h2>{{ $t("settings.heading.remoteTimetables") }}</h2>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<TimetableCard
|
<TimetableCard
|
||||||
@ -11,7 +22,7 @@ import { timetables, timetableId } from "@/store";
|
|||||||
:key="timetable.id"
|
:key="timetable.id"
|
||||||
:timetable="timetable"
|
:timetable="timetable"
|
||||||
:selected="timetableId == timetable.id"
|
:selected="timetableId == timetable.id"
|
||||||
:editable="true"
|
:editable="false"
|
||||||
@click="timetableId = timetable.id"
|
@click="timetableId = timetable.id"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
Reference in New Issue
Block a user