44 lines
1.4 KiB
Vue
44 lines
1.4 KiB
Vue
<script setup>
|
|
import FlightsList from "components/flights/FlightsList.vue";
|
|
import FlightsListSkeleton from "components/flights/skeletons/FlightsListSkeleton.vue";
|
|
import {useAppStore} from "stores/App";
|
|
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
|
|
import {useFlightsStore} from "stores/Flights";
|
|
import {storeToRefs} from "pinia";
|
|
import {usePagination} from "src/composables/pagination";
|
|
import PrimaryAction from "components/PrimaryAction.vue";
|
|
import ListFilters from "components/ListFilters.vue";
|
|
|
|
useAppStore().setPageTitle("Moje lety");
|
|
useAppStore().setBreadcrumbs([]);
|
|
|
|
const {loadPage, hasMoreData, handleFiltersChanged} = usePagination({fetchFunction: useFlightsStore().fetch});
|
|
const {flights, isQueryRunning} = storeToRefs(useFlightsStore());
|
|
</script>
|
|
|
|
<template>
|
|
<ListFilters @filters-changed="handleFiltersChanged">
|
|
<template #append>
|
|
<PrimaryAction mode="add" :router-link="{name: 'addFlight'}"/>
|
|
</template>
|
|
</ListFilters>
|
|
|
|
<FlightsListSkeleton v-if="isQueryRunning && flights.length === 0"/>
|
|
|
|
<BasicInfoBanner
|
|
v-else-if="!isQueryRunning && flights.length === 0"
|
|
:route-add="{name: 'addFlight'}"
|
|
label-add="Přidat let"
|
|
>
|
|
Nemáš zaznamenaný žádný let.
|
|
</BasicInfoBanner>
|
|
|
|
<FlightsList
|
|
v-else
|
|
:items="flights"
|
|
:public="false"
|
|
:has-more-data="hasMoreData"
|
|
@load-more="loadPage($event.index, $event.done)"
|
|
/>
|
|
</template>
|