hotfix: code improvements

This commit is contained in:
2025-01-31 19:01:28 +01:00
parent 93311a130c
commit 2d7159c844
3 changed files with 51 additions and 16 deletions
+15 -2
View File
@@ -41,12 +41,17 @@
<SunIcon v-else class="text-white size-6" /> <SunIcon v-else class="text-white size-6" />
</button> </button>
<button class="bg-zinc-800 p-1 rounded-md hover:bg-zinc-700" @click="openPrintingWindow"> <button
class="bg-zinc-800 p-1 rounded-md hover:bg-zinc-700 disabled:opacity-60 disabled:hover:bg-zinc-800"
:disabled="globalStore.currentTimetableData == null"
@click="openPrintingWindow"
>
<PrinterIcon class="text-white size-6" /> <PrinterIcon class="text-white size-6" />
</button> </button>
<button <button
class="p-1 rounded-md" class="p-1 rounded-md disabled:opacity-60 disabled:hover:bg-zinc-800"
:disabled="globalStore.currentTimetableData == null"
:class="{ :class="{
'bg-green-600 hover:bg-green-700': isTimetableSaved, 'bg-green-600 hover:bg-green-700': isTimetableSaved,
'bg-zinc-800 hover:bg-zinc-700': !isTimetableSaved, 'bg-zinc-800 hover:bg-zinc-700': !isTimetableSaved,
@@ -108,6 +113,14 @@ function saveToStorage() {
try { try {
const savedTimetablesStorage = localStorage.getItem('savedTimetables'); const savedTimetablesStorage = localStorage.getItem('savedTimetables');
let savedTimetablesJSON: Record<number, TimetableData> = savedTimetablesStorage ? JSON.parse(savedTimetablesStorage) : {}; let savedTimetablesJSON: Record<number, TimetableData> = savedTimetablesStorage ? JSON.parse(savedTimetablesStorage) : {};
if (savedTimetablesJSON[globalStore.currentTimetableData.timetableId] !== undefined) {
globalStore.selectedStorageTimetable = savedTimetablesJSON[globalStore.currentTimetableData.timetableId];
globalStore.viewMode = 'storage';
return;
}
savedTimetablesJSON[globalStore.currentTimetableData.timetableId] = { ...globalStore.currentTimetableData, savedTimestamp: Date.now() }; savedTimetablesJSON[globalStore.currentTimetableData.timetableId] = { ...globalStore.currentTimetableData, savedTimestamp: Date.now() };
localStorage.setItem('savedTimetables', JSON.stringify(savedTimetablesJSON)); localStorage.setItem('savedTimetables', JSON.stringify(savedTimetablesJSON));
+11 -13
View File
@@ -9,18 +9,16 @@
<div class="font-bold text-xl p-2 bg-zinc-700 mb-3">{{ $t('storage-preview-title') }}</div> <div class="font-bold text-xl p-2 bg-zinc-700 mb-3">{{ $t('storage-preview-title') }}</div>
<div class="font-bold p-2 bg-zinc-800 mb-3" v-if="filteredTimetables.length == 0">{{ $t('storage-preview-empty') }}</div> <div class="font-bold p-2 bg-zinc-800 mb-3" v-if="filteredTimetables.length == 0">{{ $t('storage-preview-empty') }}</div>
<transition-group class="relative" tag="ul" name="list"> <li v-for="timetable in filteredTimetables" class="flex gap-1 w-full my-2">
<li v-for="timetable in filteredTimetables" class="flex gap-1 w-full my-2"> <button class="bg-zinc-900 p-2 w-full cursor-pointer hover:bg-zinc-800 text-left" @click="selectTimetable(timetable)">
<button class="bg-zinc-900 p-2 w-full cursor-pointer hover:bg-zinc-800 text-left" @click="selectTimetable(timetable)"> <div class="text-zinc-300">#{{ timetable.timetableId }} &bull; {{ new Date(timetable.savedTimestamp!).toLocaleString() }}</div>
<div class="text-zinc-300">#{{ timetable.timetableId }} &bull; {{ new Date(timetable.savedTimestamp!).toLocaleString() }}</div> <b>{{ timetable.driverName }} | {{ timetable.category }} {{ timetable.trainNo }}</b> {{ timetable.route.replace('|', ' > ') }}
<b>{{ timetable.driverName }} | {{ timetable.category }} {{ timetable.trainNo }}</b> {{ timetable.route.replace('|', ' > ') }} </button>
</button>
<button class="bg-zinc-900 p-2 hover:bg-zinc-800" @click="removeTimetable(timetable.timetableId)"> <button class="bg-zinc-900 p-2 hover:bg-zinc-800" @click="removeTimetable(timetable.timetableId)">
<TrashIcon class="size-5 text-white" /> <TrashIcon class="size-5 text-white" />
</button> </button>
</li> </li>
</transition-group>
</div> </div>
</div> </div>
</template> </template>
@@ -36,10 +34,10 @@ const globalStore = useGlobalStore();
const i18n = useI18n(); const i18n = useI18n();
const filteredTimetables = computed(() => { const filteredTimetables = computed(() => {
const timetables = Object.values(globalStore.storageTimetables); let timetables = Object.values(globalStore.storageTimetables);
if (globalStore.timetableSearch.length != 0) if (globalStore.timetableSearch.length != 0)
timetables.filter((st) => timetables = timetables.filter((st) =>
`${st.timetableId} ${st.driverName} ${st.route} ${st.category} ${st.trainNo}` `${st.timetableId} ${st.driverName} ${st.route} ${st.category} ${st.trainNo}`
.toLocaleLowerCase() .toLocaleLowerCase()
.includes(globalStore.timetableSearch.toLocaleLowerCase()) .includes(globalStore.timetableSearch.toLocaleLowerCase())
+25 -1
View File
@@ -18,6 +18,10 @@
</i18n-t> </i18n-t>
</div> </div>
<button class="font-bold bg-zinc-900 p-1 hover:bg-zinc-800" @click="removeTimetable(globalStore.currentTimetableData.timetableId)">
<TrashIcon class="text-white size-6" />
</button>
<button class="font-bold bg-zinc-900 p-1 hover:bg-zinc-800" @click="globalStore.selectedStorageTimetable = null"> <button class="font-bold bg-zinc-900 p-1 hover:bg-zinc-800" @click="globalStore.selectedStorageTimetable = null">
<ArrowUturnLeftIcon class="text-white size-6" /> <ArrowUturnLeftIcon class="text-white size-6" />
</button> </button>
@@ -26,8 +30,28 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ArrowUturnLeftIcon, InformationCircleIcon } from '@heroicons/vue/16/solid'; import { ArrowUturnLeftIcon, InformationCircleIcon, TrashIcon } from '@heroicons/vue/16/solid';
import { useGlobalStore } from '../../stores/global.store'; import { useGlobalStore } from '../../stores/global.store';
import { useI18n } from 'vue-i18n';
import type { TimetableData } from '../../types/common.types';
const globalStore = useGlobalStore(); const globalStore = useGlobalStore();
const i18n = useI18n();
function removeTimetable(timetableId: number) {
const isConfirmed = confirm(i18n.t('delete-timetable-confirm'));
if (!isConfirmed) return;
try {
const savedTimetablesStorage = localStorage.getItem('savedTimetables');
let savedTimetablesJSON: Record<number, TimetableData> = savedTimetablesStorage ? JSON.parse(savedTimetablesStorage) : {};
delete savedTimetablesJSON[timetableId];
localStorage.setItem('savedTimetables', JSON.stringify(savedTimetablesJSON));
globalStore.storageTimetables = savedTimetablesJSON;
globalStore.selectedStorageTimetable = null;
} catch (error) {}
}
</script> </script>