uprava breadcrumbs v privatni casti, nasazeni prefetche

This commit is contained in:
Michal Kváček
2024-03-13 16:16:08 +01:00
parent 9379d3bfd6
commit c0cfd7115c
10 changed files with 53 additions and 34 deletions
+2 -1
View File
@@ -9,7 +9,8 @@ export const usePagination = ({fetchFunction, itemsPerPage = 10}) => {
const paginationLimit = ref(itemsPerPage);
const paginationOffset = ref(0);
const filters = ref({});
const loadPage = ({appendItems}) => {
const loadPage = (appendItems) => {
return fetchFunction({
...filters.value,
limit: paginationLimit.value,
+2
View File
@@ -10,6 +10,8 @@ import ChangePasswordForm from "components/profile/ChangePasswordForm.vue";
import PublicProfileInfo from "components/profile/PublicProfileInfo.vue";
useAppStore().setPageTitle("Profil");
useAppStore().setBreadcrumbs([]);
const loggedUser = storeToRefs(useLoggedUserStore()).user;
const $q = useQuasar();
@@ -7,8 +7,10 @@ import {useAircraftsStore} from "stores/Aircrafts";
import {storeToRefs} from "pinia";
import {useAppStore} from "stores/App";
import {usePagination} from "src/composables/pagination";
import {onMounted} from "vue";
useAppStore().setPageTitle("Letadla");
useAppStore().setBreadcrumbs([])
const {aircrafts, totalItemsCount, isQueryRunning} = storeToRefs(useAircraftsStore());
const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useAircraftsStore().fetch});
@@ -9,6 +9,8 @@ import {storeToRefs} from "pinia";
import {onMounted} from "vue";
useAppStore().setPageTitle("Spolucestující");
useAppStore().setBreadcrumbs([])
onMounted(() => {
useCopilotsStore().fetch();
});
+1
View File
@@ -9,6 +9,7 @@ import {useEventsStore} from "stores/Events";
import {onBeforeMount} from "vue";
useAppStore().setPageTitle("Letecké události");
useAppStore().setBreadcrumbs([])
onBeforeMount(() => {
useEventsStore().fetch({});
+1
View File
@@ -10,6 +10,7 @@ import {usePagination} from "src/composables/pagination";
import {onMounted} from "vue";
useAppStore().setPageTitle("Moje lety");
useAppStore().setBreadcrumbs([]);
const {loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetch});
onMounted(() => {
@@ -1,3 +1,13 @@
<script>
import {useOrganizationsStore} from "stores/Organizations";
export default {
preFetch({currentRoute}) {
return useOrganizationsStore().fetchDetail(currentRoute.params.id);
}
}
</script>
<script setup>
import {useRoute} from "vue-router";
import {computed, onMounted} from "vue";
@@ -8,25 +18,19 @@ import {useLoggedUserStore} from "stores/LoggedUser";
import BasicListSkeleton from "components/basicSkeletons/BasicListSkeleton.vue";
import AircraftsList from "components/aircrafts/AircraftsList.vue";
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
import {useQuasar} from "quasar";
import AvatarFromPhoto from "components/avatars/AvatarFromPhoto.vue";
import {useOrganizationsStore} from "stores/Organizations";
const organizationId = parseInt(useRoute().params.id);
const {isQueryRunning, organization} = storeToRefs(useOrganizationsStore());
const loggedUser = storeToRefs(useLoggedUserStore()).user;
onMounted(() => {
useOrganizationsStore().fetchDetail(organizationId).then((o) => {
useAppStore().setPageTitle(o.name);
useAppStore().setPageTitle(organization.value.name);
useAppStore().setBreadcrumbs([
{to: {name: "organizations"}, label: "Organizace"},
{label: o.name}
])
});
});
{label: organization.value.name}
]);
const myOrganizationIds = computed(() => (loggedUser.value && loggedUser.value.organizations?.map(o => o.id)) || []);
const {isQueryRunning, organization} = storeToRefs(useOrganizationsStore());
</script>
<template>
@@ -11,6 +11,7 @@ import {useLoggedUserStore} from "stores/LoggedUser";
useOrganizationsStore().fetch();
useAppStore().setPageTitle("Organizace");
useAppStore().setBreadcrumbs([]);
const loggedUser = storeToRefs(useLoggedUserStore()).user;
const myOrganizationIds = computed(() => (loggedUser.value && loggedUser.value.organizations?.map(o => o.id)) || []);
@@ -1,8 +1,17 @@
<script>
import {usePointsOfInterestStore} from "stores/PointsOfInterest";
export default {
preFetch({currentRoute}) {
return usePointsOfInterestStore().fetchDetail(currentRoute.params.id);
}
}
</script>
<script setup>
import POIEditSkeleton from "components/poi/skeletons/POIEditSkeleton.vue";
import {computed, onMounted} from "vue";
import {computed} from "vue";
import {useRoute, useRouter} from "vue-router";
import {usePointsOfInterestStore} from "stores/PointsOfInterest";
import {useAppStore} from "stores/App";
import {useQuasar} from "quasar";
import {successObject} from "src/composables/dialog";
@@ -11,30 +20,25 @@ import {storeToRefs} from "pinia";
import POIForm from "components/poi/POIForm.vue";
import {useLoggedUserStore} from "stores/LoggedUser";
import AccessDeniedBanner from "components/banners/AccessDeniedBanner.vue";
import PhotoEditorSkeleton from "components/photos/skeletons/PhotoEditorSkeleton.vue";
import PhotosEditorList from "components/photos/PhotosEditorList.vue";
import CommonEditSwitcher from "components/navigation/CommonEditSwitcher.vue";
import PhotoGallerySkeleton from "components/photos/skeletons/PhotoGallerySkeleton.vue";
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
const poiId = parseInt(useRoute().params.id);
const {isQueryRunning, pointOfInterest, isMutationRunning} = storeToRefs(usePointsOfInterestStore());
usePointsOfInterestStore().fetchDetail(poiId).then((p) => {
if (!p) return;
useAppStore().setPageTitle(`${p.name} - editace`);
useAppStore().setPageTitle(`${pointOfInterest.value.name} - editace`);
useAppStore().setBreadcrumbs([
{to: {name: "poi"}, label: "Zajímavá místa"},
{to: {name: "poiDetail", params: {id: poiId}}, label: p.name},
{to: {name: "poiDetail", params: {id: poiId}}, label: pointOfInterest.value.name},
{label: "Editace"},
]);
});
usePointsOfInterestTypeStore().fetch();
const poiTypes = storeToRefs(usePointsOfInterestTypeStore()).types;
const loggedUser = storeToRefs(useLoggedUserStore()).user;
const {isQueryRunning, pointOfInterest, isMutationRunning} = storeToRefs(usePointsOfInterestStore());
const $q = useQuasar();
const router = useRouter();
@@ -11,6 +11,7 @@ import ListFilters from "components/ListFilters.vue";
import {onMounted} from "vue";
useAppStore().setPageTitle("Zajímavá místa");
useAppStore().setBreadcrumbs([]);
const {filters, loadPage, paginationLimit, paginationOffset} = usePagination({
fetchFunction: usePointsOfInterestStore().fetch