uprava breadcrumbs v privatni casti, nasazeni prefetche
This commit is contained in:
@@ -9,7 +9,8 @@ export const usePagination = ({fetchFunction, itemsPerPage = 10}) => {
|
|||||||
const paginationLimit = ref(itemsPerPage);
|
const paginationLimit = ref(itemsPerPage);
|
||||||
const paginationOffset = ref(0);
|
const paginationOffset = ref(0);
|
||||||
const filters = ref({});
|
const filters = ref({});
|
||||||
const loadPage = ({appendItems}) => {
|
|
||||||
|
const loadPage = (appendItems) => {
|
||||||
return fetchFunction({
|
return fetchFunction({
|
||||||
...filters.value,
|
...filters.value,
|
||||||
limit: paginationLimit.value,
|
limit: paginationLimit.value,
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import ChangePasswordForm from "components/profile/ChangePasswordForm.vue";
|
|||||||
import PublicProfileInfo from "components/profile/PublicProfileInfo.vue";
|
import PublicProfileInfo from "components/profile/PublicProfileInfo.vue";
|
||||||
|
|
||||||
useAppStore().setPageTitle("Profil");
|
useAppStore().setPageTitle("Profil");
|
||||||
|
useAppStore().setBreadcrumbs([]);
|
||||||
|
|
||||||
const loggedUser = storeToRefs(useLoggedUserStore()).user;
|
const loggedUser = storeToRefs(useLoggedUserStore()).user;
|
||||||
|
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
|
|||||||
@@ -7,8 +7,10 @@ import {useAircraftsStore} from "stores/Aircrafts";
|
|||||||
import {storeToRefs} from "pinia";
|
import {storeToRefs} from "pinia";
|
||||||
import {useAppStore} from "stores/App";
|
import {useAppStore} from "stores/App";
|
||||||
import {usePagination} from "src/composables/pagination";
|
import {usePagination} from "src/composables/pagination";
|
||||||
|
import {onMounted} from "vue";
|
||||||
|
|
||||||
useAppStore().setPageTitle("Letadla");
|
useAppStore().setPageTitle("Letadla");
|
||||||
|
useAppStore().setBreadcrumbs([])
|
||||||
|
|
||||||
const {aircrafts, totalItemsCount, isQueryRunning} = storeToRefs(useAircraftsStore());
|
const {aircrafts, totalItemsCount, isQueryRunning} = storeToRefs(useAircraftsStore());
|
||||||
const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useAircraftsStore().fetch});
|
const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useAircraftsStore().fetch});
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import {storeToRefs} from "pinia";
|
|||||||
import {onMounted} from "vue";
|
import {onMounted} from "vue";
|
||||||
|
|
||||||
useAppStore().setPageTitle("Spolucestující");
|
useAppStore().setPageTitle("Spolucestující");
|
||||||
|
useAppStore().setBreadcrumbs([])
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
useCopilotsStore().fetch();
|
useCopilotsStore().fetch();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import {useEventsStore} from "stores/Events";
|
|||||||
import {onBeforeMount} from "vue";
|
import {onBeforeMount} from "vue";
|
||||||
|
|
||||||
useAppStore().setPageTitle("Letecké události");
|
useAppStore().setPageTitle("Letecké události");
|
||||||
|
useAppStore().setBreadcrumbs([])
|
||||||
|
|
||||||
onBeforeMount(() => {
|
onBeforeMount(() => {
|
||||||
useEventsStore().fetch({});
|
useEventsStore().fetch({});
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {usePagination} from "src/composables/pagination";
|
|||||||
import {onMounted} from "vue";
|
import {onMounted} from "vue";
|
||||||
|
|
||||||
useAppStore().setPageTitle("Moje lety");
|
useAppStore().setPageTitle("Moje lety");
|
||||||
|
useAppStore().setBreadcrumbs([]);
|
||||||
|
|
||||||
const {loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetch});
|
const {loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetch});
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|||||||
@@ -1,3 +1,13 @@
|
|||||||
|
<script>
|
||||||
|
import {useOrganizationsStore} from "stores/Organizations";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
preFetch({currentRoute}) {
|
||||||
|
return useOrganizationsStore().fetchDetail(currentRoute.params.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import {useRoute} from "vue-router";
|
import {useRoute} from "vue-router";
|
||||||
import {computed, onMounted} from "vue";
|
import {computed, onMounted} from "vue";
|
||||||
@@ -8,25 +18,19 @@ import {useLoggedUserStore} from "stores/LoggedUser";
|
|||||||
import BasicListSkeleton from "components/basicSkeletons/BasicListSkeleton.vue";
|
import BasicListSkeleton from "components/basicSkeletons/BasicListSkeleton.vue";
|
||||||
import AircraftsList from "components/aircrafts/AircraftsList.vue";
|
import AircraftsList from "components/aircrafts/AircraftsList.vue";
|
||||||
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
|
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
|
||||||
import {useQuasar} from "quasar";
|
|
||||||
import AvatarFromPhoto from "components/avatars/AvatarFromPhoto.vue";
|
import AvatarFromPhoto from "components/avatars/AvatarFromPhoto.vue";
|
||||||
import {useOrganizationsStore} from "stores/Organizations";
|
|
||||||
|
|
||||||
const organizationId = parseInt(useRoute().params.id);
|
const organizationId = parseInt(useRoute().params.id);
|
||||||
|
const {isQueryRunning, organization} = storeToRefs(useOrganizationsStore());
|
||||||
const loggedUser = storeToRefs(useLoggedUserStore()).user;
|
const loggedUser = storeToRefs(useLoggedUserStore()).user;
|
||||||
|
|
||||||
onMounted(() => {
|
useAppStore().setPageTitle(organization.value.name);
|
||||||
useOrganizationsStore().fetchDetail(organizationId).then((o) => {
|
useAppStore().setBreadcrumbs([
|
||||||
useAppStore().setPageTitle(o.name);
|
{to: {name: "organizations"}, label: "Organizace"},
|
||||||
useAppStore().setBreadcrumbs([
|
{label: organization.value.name}
|
||||||
{to: {name: "organizations"}, label: "Organizace"},
|
]);
|
||||||
{label: o.name}
|
|
||||||
])
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const myOrganizationIds = computed(() => (loggedUser.value && loggedUser.value.organizations?.map(o => o.id)) || []);
|
const myOrganizationIds = computed(() => (loggedUser.value && loggedUser.value.organizations?.map(o => o.id)) || []);
|
||||||
const {isQueryRunning, organization} = storeToRefs(useOrganizationsStore());
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import {useLoggedUserStore} from "stores/LoggedUser";
|
|||||||
|
|
||||||
useOrganizationsStore().fetch();
|
useOrganizationsStore().fetch();
|
||||||
useAppStore().setPageTitle("Organizace");
|
useAppStore().setPageTitle("Organizace");
|
||||||
|
useAppStore().setBreadcrumbs([]);
|
||||||
|
|
||||||
const loggedUser = storeToRefs(useLoggedUserStore()).user;
|
const loggedUser = storeToRefs(useLoggedUserStore()).user;
|
||||||
const myOrganizationIds = computed(() => (loggedUser.value && loggedUser.value.organizations?.map(o => o.id)) || []);
|
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>
|
<script setup>
|
||||||
import POIEditSkeleton from "components/poi/skeletons/POIEditSkeleton.vue";
|
import POIEditSkeleton from "components/poi/skeletons/POIEditSkeleton.vue";
|
||||||
import {computed, onMounted} from "vue";
|
import {computed} from "vue";
|
||||||
import {useRoute, useRouter} from "vue-router";
|
import {useRoute, useRouter} from "vue-router";
|
||||||
import {usePointsOfInterestStore} from "stores/PointsOfInterest";
|
|
||||||
import {useAppStore} from "stores/App";
|
import {useAppStore} from "stores/App";
|
||||||
import {useQuasar} from "quasar";
|
import {useQuasar} from "quasar";
|
||||||
import {successObject} from "src/composables/dialog";
|
import {successObject} from "src/composables/dialog";
|
||||||
@@ -11,30 +20,25 @@ import {storeToRefs} from "pinia";
|
|||||||
import POIForm from "components/poi/POIForm.vue";
|
import POIForm from "components/poi/POIForm.vue";
|
||||||
import {useLoggedUserStore} from "stores/LoggedUser";
|
import {useLoggedUserStore} from "stores/LoggedUser";
|
||||||
import AccessDeniedBanner from "components/banners/AccessDeniedBanner.vue";
|
import AccessDeniedBanner from "components/banners/AccessDeniedBanner.vue";
|
||||||
import PhotoEditorSkeleton from "components/photos/skeletons/PhotoEditorSkeleton.vue";
|
|
||||||
import PhotosEditorList from "components/photos/PhotosEditorList.vue";
|
import PhotosEditorList from "components/photos/PhotosEditorList.vue";
|
||||||
import CommonEditSwitcher from "components/navigation/CommonEditSwitcher.vue";
|
import CommonEditSwitcher from "components/navigation/CommonEditSwitcher.vue";
|
||||||
import PhotoGallerySkeleton from "components/photos/skeletons/PhotoGallerySkeleton.vue";
|
import PhotoGallerySkeleton from "components/photos/skeletons/PhotoGallerySkeleton.vue";
|
||||||
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
|
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
|
||||||
|
|
||||||
const poiId = parseInt(useRoute().params.id);
|
const poiId = parseInt(useRoute().params.id);
|
||||||
|
const {isQueryRunning, pointOfInterest, isMutationRunning} = storeToRefs(usePointsOfInterestStore());
|
||||||
|
|
||||||
usePointsOfInterestStore().fetchDetail(poiId).then((p) => {
|
useAppStore().setPageTitle(`${pointOfInterest.value.name} - editace`);
|
||||||
if (!p) return;
|
useAppStore().setBreadcrumbs([
|
||||||
|
{to: {name: "poi"}, label: "Zajímavá místa"},
|
||||||
useAppStore().setPageTitle(`${p.name} - editace`);
|
{to: {name: "poiDetail", params: {id: poiId}}, label: pointOfInterest.value.name},
|
||||||
useAppStore().setBreadcrumbs([
|
{label: "Editace"},
|
||||||
{to: {name: "poi"}, label: "Zajímavá místa"},
|
]);
|
||||||
{to: {name: "poiDetail", params: {id: poiId}}, label: p.name},
|
|
||||||
{label: "Editace"},
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
usePointsOfInterestTypeStore().fetch();
|
usePointsOfInterestTypeStore().fetch();
|
||||||
|
|
||||||
const poiTypes = storeToRefs(usePointsOfInterestTypeStore()).types;
|
const poiTypes = storeToRefs(usePointsOfInterestTypeStore()).types;
|
||||||
const loggedUser = storeToRefs(useLoggedUserStore()).user;
|
const loggedUser = storeToRefs(useLoggedUserStore()).user;
|
||||||
const {isQueryRunning, pointOfInterest, isMutationRunning} = storeToRefs(usePointsOfInterestStore());
|
|
||||||
|
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@@ -56,8 +60,8 @@ const formStep = computed(() => useRoute().params.step || "info");
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<AccessDeniedBanner
|
<AccessDeniedBanner
|
||||||
v-if="pointOfInterest && !isQueryRunning && pointOfInterest.createdById !== loggedUser?.id"
|
v-if="pointOfInterest && !isQueryRunning && pointOfInterest.createdById !== loggedUser?.id"
|
||||||
:route-back="{name: 'poiDetail', params: {id: poiId}}"
|
:route-back="{name: 'poiDetail', params: {id: poiId}}"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<template v-else>
|
<template v-else>
|
||||||
@@ -74,11 +78,11 @@ const formStep = computed(() => useRoute().params.step || "info");
|
|||||||
Toto místo není označené na žádné fotografii.
|
Toto místo není označené na žádné fotografii.
|
||||||
</BasicInfoBanner>
|
</BasicInfoBanner>
|
||||||
<PhotosEditorList
|
<PhotosEditorList
|
||||||
v-else
|
v-else
|
||||||
:photos="pointOfInterest.photos"
|
:photos="pointOfInterest.photos"
|
||||||
:title-photo="pointOfInterest.titlePhoto"
|
:title-photo="pointOfInterest.titlePhoto"
|
||||||
:show-actions="false"
|
:show-actions="false"
|
||||||
@set-title-photo="setTitlePhoto"
|
@set-title-photo="setTitlePhoto"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import ListFilters from "components/ListFilters.vue";
|
|||||||
import {onMounted} from "vue";
|
import {onMounted} from "vue";
|
||||||
|
|
||||||
useAppStore().setPageTitle("Zajímavá místa");
|
useAppStore().setPageTitle("Zajímavá místa");
|
||||||
|
useAppStore().setBreadcrumbs([]);
|
||||||
|
|
||||||
const {filters, loadPage, paginationLimit, paginationOffset} = usePagination({
|
const {filters, loadPage, paginationLimit, paginationOffset} = usePagination({
|
||||||
fetchFunction: usePointsOfInterestStore().fetch
|
fetchFunction: usePointsOfInterestStore().fetch
|
||||||
|
|||||||
Reference in New Issue
Block a user