diff --git a/src/composables/breadcrumbs.js b/src/composables/breadcrumbs.js
index caefae2..c0e37e5 100644
--- a/src/composables/breadcrumbs.js
+++ b/src/composables/breadcrumbs.js
@@ -1,44 +1,70 @@
import {flightName} from "src/composables/flight";
-const homepageBreadcrumbs = () => {
- return [{to: {name: 'homepage'}, label: "Polétání.cz"}]
+export const homepageBreadcrumbs = () => {
+ return [{to: {name: 'homepage'}, label: "Polétání.cz"}];
}
+export const publicProfileBreadcrumbs = (pilot, link = true) => {
+ const profile = {label: `@${pilot.publicUsername}`}
-// TODO: dodelat
+ if (link) {
+ profile.to = {name: "publicProfileDetail", params: {username: pilot.publicUsername}};
+ }
-const publicProfileBreadcrumbs = (pilot) => {
return [
...homepageBreadcrumbs(),
- {to: {name: "publicProfileDetail", params: {username: pilot.publicUsername}}, label: `@${pilot.publicUsername}`},
+ profile,
]
}
-const publicEventBreadcrumbs = (pilot, event) => {
+export const publicEventBreadcrumbs = (pilot, event, link = true) => {
+ const eventDetail = {label: event.name}
+ if (link) {
+ eventDetail.to = {
+ name: 'publicEventDetail',
+ params: {eventSlug: event.urlSlug, username: pilot.publicUsername}
+ };
+ }
+ return [
+ ...publicProfileBreadcrumbs(pilot),
+ {
+ to: {name: 'publicEventsList', username: pilot.publicUsername},
+ label: "Události"
+ },
+ eventDetail
+ ]
}
-export const flightBreadcrumbs = (pilot, flight, event) => {
- const breadcrumbs = publicProfileBreadcrumbs(pilot)
+export const publicFlightBreadcrumbs = (pilot, flight, event, link = true) => {
+ let breadcrumbs;
if (event && event.isPublic) {
- breadcrumbs.push({to: {name: 'publicEventsList', username: pilot.publicUsername}, label: "Události"});
- breadcrumbs.push({
- to: {
- name: 'publicEventDetail',
- params: {eventSlug: event.urlSlug, username: pilot.publicUsername}
- }, label: event.name
- });
+ breadcrumbs = publicEventBreadcrumbs(pilot, event)
+ } else {
+ breadcrumbs = publicProfileBreadcrumbs(pilot)
}
- breadcrumbs.push({label: flightName(flight)})
+ const flightEntry = {label: flightName(flight)}
+ if (link) {
+ flightEntry.to = {name: "publicFlightDetail", params: {username: pilot.publicUsername, flightSlug: flight.urlSlug}}
+ }
+ breadcrumbs.push(flightEntry)
return breadcrumbs;
}
-export const copilotBreadcrumbs = (pilot, flight, event, copilot) => {
+export const publicCopilotBreadcrumbs = (pilot, flight, event, copilot) => {
return [
- ...flightBreadcrumbs(pilot, flight, event),
+ ...publicProfileBreadcrumbs(pilot),
+ {label: "Kopiloti"},
{label: copilot.name}
]
}
+
+export const publicPOIBaseBreadcrumbs = () => {
+ return [
+ ...homepageBreadcrumbs(),
+ {label: "Místa"},
+ ]
+}
diff --git a/src/composables/pagination.js b/src/composables/pagination.js
index cce2948..4be3734 100644
--- a/src/composables/pagination.js
+++ b/src/composables/pagination.js
@@ -1,12 +1,16 @@
import {ref} from "vue";
-export const usePagination = () => {
- const paginationLimit = ref(10);
+export const usePagination = ({fetchFunction, itemsPerPage = 10}) => {
+ if (typeof fetchFunction === "undefined") {
+ console.error("Set fetchFunction to usePagination!");
+ }
+
+ const paginationLimit = ref(itemsPerPage);
const paginationOffset = ref(0);
const filters = ref({});
- const loadPage = ({fetchFunc, appendItems}) => {
- return fetchFunc({
+ const loadPage = ({appendItems}) => {
+ return fetchFunction({
...filters.value,
limit: paginationLimit.value,
offset: paginationOffset.value,
@@ -16,7 +20,6 @@ export const usePagination = () => {
})
}
-
return {
paginationOffset, paginationLimit, filters, loadPage
}
diff --git a/src/pages/profile/aircraft/AircraftDetailPage.vue b/src/pages/profile/aircraft/AircraftDetailPage.vue
index 14843ed..079317c 100644
--- a/src/pages/profile/aircraft/AircraftDetailPage.vue
+++ b/src/pages/profile/aircraft/AircraftDetailPage.vue
@@ -1,3 +1,13 @@
+
+
@@ -114,7 +119,7 @@ const loggedUser = storeToRefs(useLoggedUserStore()).user;
:total-items-count="totalItemsCount"
:is-query-running="areFlightsLoading"
:items-per-page="paginationLimit"
- @load-more="loadNextFlightsPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/profile/aircraft/AircraftsPage.vue b/src/pages/profile/aircraft/AircraftsPage.vue
index d888d48..3aad23f 100644
--- a/src/pages/profile/aircraft/AircraftsPage.vue
+++ b/src/pages/profile/aircraft/AircraftsPage.vue
@@ -10,11 +10,8 @@ import {usePagination} from "src/composables/pagination";
useAppStore().setPageTitle("Letadla");
-const {filters, loadPage, paginationLimit} = usePagination();
-const loadNextAircraftsPage = (appendItems) => loadPage({
- fetchFunc: useAircraftsStore().fetch, appendItems
-});
-loadNextAircraftsPage(false);
+const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useAircraftsStore().fetch});
+loadPage(false);
const {aircrafts, totalItemsCount, isQueryRunning} = storeToRefs(useAircraftsStore());
@@ -40,7 +37,7 @@ const {aircrafts, totalItemsCount, isQueryRunning} = storeToRefs(useAircraftsSto
:items-per-page="paginationLimit"
:public="true"
class="q-mb-xl"
- @load-more="loadNextAircraftsPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/profile/copilot/CopilotDetailPage.vue b/src/pages/profile/copilot/CopilotDetailPage.vue
index 09e8ebd..90c30ad 100644
--- a/src/pages/profile/copilot/CopilotDetailPage.vue
+++ b/src/pages/profile/copilot/CopilotDetailPage.vue
@@ -30,12 +30,9 @@ const togglePublicVisibility = (variables) => toggleVisibility({
$q, store: useCopilotsStore(), object: copilot.value, variables
});
-const {filters, loadPage, paginationLimit} = usePagination();
+const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetch});
filters.value = {copilotId: copilotId};
-const loadNextFlightsPage = (appendItems) => loadPage({
- fetchFunc: useFlightsStore().fetch, appendItems
-});
-loadNextFlightsPage(false);
+loadPage(false);
const {isQueryRunning: areFlightsLoading, totalItemsCount, flights} = storeToRefs(useFlightsStore());
const {isQueryRunning, copilot} = storeToRefs(useCopilotsStore());
@@ -90,7 +87,7 @@ const loggedUser = storeToRefs(useLoggedUserStore()).user;
:total-items-count="totalItemsCount"
:is-query-running="areFlightsLoading"
:items-per-page="paginationLimit"
- @load-more="loadNextFlightsPage(true)"
+ @load-more="loadPage(true)"
/>
Zatím tu nemáš uložené žádné společné lety.
diff --git a/src/pages/profile/event/EventDetailPage.vue b/src/pages/profile/event/EventDetailPage.vue
index 29aa121..ebc2f55 100644
--- a/src/pages/profile/event/EventDetailPage.vue
+++ b/src/pages/profile/event/EventDetailPage.vue
@@ -26,7 +26,7 @@ onMounted(() => {
{label: event.value.name}
])
});
- loadNextFlightsPage(false);
+ loadPage(false);
})
@@ -37,11 +37,8 @@ const togglePublicVisibility = (variables) => toggleVisibility({
const {isQueryRunning, event} = storeToRefs(useEventsStore());
-const {filters, loadPage, paginationLimit} = usePagination();
+const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetch});
filters.value = {eventId: eventId}
-const loadNextFlightsPage = (appendItems) => loadPage({
- fetchFunc: useFlightsStore().fetch, appendItems
-});
const {isQueryRunning: areFlightsLoading, totalItemsCount, flights} = storeToRefs(useFlightsStore());
const loggedUser = storeToRefs(useLoggedUserStore()).user;
@@ -65,7 +62,7 @@ const loggedUser = storeToRefs(useLoggedUserStore()).user;
-
+
Lety
@@ -80,7 +77,7 @@ const loggedUser = storeToRefs(useLoggedUserStore()).user;
:total-items-count="totalItemsCount"
:is-query-running="areFlightsLoading"
:items-per-page="paginationLimit"
- @load-more="loadNextFlightsPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/profile/flight/FlightsPage.vue b/src/pages/profile/flight/FlightsPage.vue
index 98d8ac8..0c903c0 100644
--- a/src/pages/profile/flight/FlightsPage.vue
+++ b/src/pages/profile/flight/FlightsPage.vue
@@ -11,13 +11,9 @@ import {onMounted} from "vue";
useAppStore().setPageTitle("Moje lety");
-const {loadPage, paginationLimit} = usePagination();
-
-const loadNextPage = (appendItems) => loadPage({
- fetchFunc: useFlightsStore().fetch, appendItems
-});
+const {loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetch});
onMounted(() => {
- loadNextPage(false);
+ loadPage(false);
});
const {flights, totalItemsCount, isQueryRunning} = storeToRefs(useFlightsStore());
@@ -40,7 +36,7 @@ const {flights, totalItemsCount, isQueryRunning} = storeToRefs(useFlightsStore()
:is-query-running="isQueryRunning"
:items-per-page="paginationLimit"
:total-items-count="totalItemsCount"
- @load-more="loadNextPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/profile/organization/OrganizationDetailPage.vue b/src/pages/profile/organization/OrganizationDetailPage.vue
index b3e566e..5f38ac0 100644
--- a/src/pages/profile/organization/OrganizationDetailPage.vue
+++ b/src/pages/profile/organization/OrganizationDetailPage.vue
@@ -14,7 +14,6 @@ import {useOrganizationsStore} from "stores/Organizations";
const organizationId = parseInt(useRoute().params.id);
const loggedUser = storeToRefs(useLoggedUserStore()).user;
-const $q = useQuasar();
onMounted(() => {
useOrganizationsStore().fetchDetail(organizationId).then((o) => {
diff --git a/src/pages/profile/poi/PointOfInterestDetailPage.vue b/src/pages/profile/poi/PointOfInterestDetailPage.vue
index d020090..6985b4d 100644
--- a/src/pages/profile/poi/PointOfInterestDetailPage.vue
+++ b/src/pages/profile/poi/PointOfInterestDetailPage.vue
@@ -38,13 +38,9 @@ const togglePublicVisibility = (variables) => toggleVisibility({
$q, store: usePointsOfInterestStore(), object: pointOfInterest.value, variables
});
-const {filters, loadPage, paginationLimit} = usePagination();
+const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetch});
filters.value = {pointOfInterestId: poiId};
-const loadNextFlightsPage = (appendItems) => loadPage({
- fetchFunc: useFlightsStore().fetch,
- appendItems
-});
-loadNextFlightsPage(false);
+loadPage(false);
const {isQueryRunning: areFlightsLoading, totalItemsCount, flights} = storeToRefs(useFlightsStore());
const {isQueryRunning, pointOfInterest} = storeToRefs(usePointsOfInterestStore());
@@ -114,7 +110,7 @@ const {isQueryRunning, pointOfInterest} = storeToRefs(usePointsOfInterestStore()
:total-items-count="totalItemsCount"
:is-query-running="areFlightsLoading"
:items-per-page="paginationLimit"
- @load-more="loadNextFlightsPage(true)"
+ @load-more="loadPage(true)"
/>
Na tomto místě jsi zatím nebyl/a.
diff --git a/src/pages/profile/poi/PointsOfInterestPage.vue b/src/pages/profile/poi/PointsOfInterestPage.vue
index c0ac74c..b8f73d6 100644
--- a/src/pages/profile/poi/PointsOfInterestPage.vue
+++ b/src/pages/profile/poi/PointsOfInterestPage.vue
@@ -12,16 +12,15 @@ import ListFilters from "components/ListFilters.vue";
useAppStore().setPageTitle("Zajímavá místa");
-const {filters, loadPage, paginationLimit, paginationOffset} = usePagination();
-paginationLimit.value = 15;
-const loadNextPage = (appendItems) => loadPage({
- fetchFunc: usePointsOfInterestStore().fetch, appendItems
+const {filters, loadPage, paginationLimit, paginationOffset} = usePagination({
+ fetchFunction: usePointsOfInterestStore().fetch,
+ itemsPerPage: 1 // nefunguje
});
-loadNextPage(false);
+loadPage(false);
const handleFiltersChanged = (newFilters) => {
paginationOffset.value = 0;
filters.value = newFilters;
- loadNextPage(false);
+ loadPage(false);
}
const {isQueryRunning, totalItemsCount, pointsOfInterest} = storeToRefs(usePointsOfInterestStore());
@@ -47,7 +46,7 @@ const {isQueryRunning, totalItemsCount, pointsOfInterest} = storeToRefs(usePoint
:total-items-count="totalItemsCount"
:is-query-running="isQueryRunning"
:items-per-page="paginationLimit"
- @load-more="loadNextPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/public/AboutPage.vue b/src/pages/public/AboutPage.vue
index 3385ce2..8f986e5 100644
--- a/src/pages/public/AboutPage.vue
+++ b/src/pages/public/AboutPage.vue
@@ -3,10 +3,11 @@ import {useAppStore} from "stores/App";
import {useMeta} from "quasar";
import {metaData} from "src/composables/meta";
import ContentCard from "components/ContentCard.vue";
+import {homepageBreadcrumbs} from "src/composables/breadcrumbs";
useAppStore().setPageTitle("O projektu");
useAppStore().setBreadcrumbs([
- {to: {name: 'homepage'}, label: "Polétání.cz"},
+ ...homepageBreadcrumbs(),
{label: "O projektu"}
]);
useMeta(() => metaData({
diff --git a/src/pages/public/ContactPage.vue b/src/pages/public/ContactPage.vue
index 969280a..57fc675 100644
--- a/src/pages/public/ContactPage.vue
+++ b/src/pages/public/ContactPage.vue
@@ -6,10 +6,11 @@ import {commonProps} from "src/composables/inputs";
import {useQuasar} from "quasar";
import {errorObject, successObject} from "src/composables/dialog";
import {api, axios} from "boot/axios";
+import {homepageBreadcrumbs} from "src/composables/breadcrumbs";
useAppStore().setPageTitle("Kontakt");
useAppStore().setBreadcrumbs([
- {to: {name: 'homepage'}, label: "Polétání.cz"},
+ ...homepageBreadcrumbs(),
{label: "Kontakt"}
]);
diff --git a/src/pages/public/FeaturesPage.vue b/src/pages/public/FeaturesPage.vue
index bdae185..dfe8809 100644
--- a/src/pages/public/FeaturesPage.vue
+++ b/src/pages/public/FeaturesPage.vue
@@ -1,10 +1,11 @@
diff --git a/src/pages/public/PersonalInformationPage.vue b/src/pages/public/PersonalInformationPage.vue
index 4f743e6..6d4150b 100644
--- a/src/pages/public/PersonalInformationPage.vue
+++ b/src/pages/public/PersonalInformationPage.vue
@@ -1,10 +1,11 @@
diff --git a/src/pages/public/TermsAndConditionsPage.vue b/src/pages/public/TermsAndConditionsPage.vue
index ac3bb0f..97d02f8 100644
--- a/src/pages/public/TermsAndConditionsPage.vue
+++ b/src/pages/public/TermsAndConditionsPage.vue
@@ -1,10 +1,11 @@
diff --git a/src/pages/public/aircraft/AircraftDetailPage.vue b/src/pages/public/aircraft/AircraftDetailPage.vue
index ac71b60..e4538ed 100644
--- a/src/pages/public/aircraft/AircraftDetailPage.vue
+++ b/src/pages/public/aircraft/AircraftDetailPage.vue
@@ -8,8 +8,7 @@ export default {
}
@@ -85,7 +77,7 @@ onMounted(() => {
:total-items-count="totalItemsCount"
:is-query-running="areFlightsLoading"
:items-per-page="paginationLimit"
- @load-more="loadNextFlightsPage(true)"
+ @load-more="loadPage(true)"
:public="true"
/>
diff --git a/src/pages/public/pilotProfile/CopilotDetailPage.vue b/src/pages/public/pilotProfile/CopilotDetailPage.vue
index e67a891..0bf4166 100644
--- a/src/pages/public/pilotProfile/CopilotDetailPage.vue
+++ b/src/pages/public/pilotProfile/CopilotDetailPage.vue
@@ -25,6 +25,7 @@ import {metaData} from "src/composables/meta";
import PhotoGallerySkeleton from "components/photos/skeletons/PhotoGallerySkeleton.vue";
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
import {usePagination} from "src/composables/pagination";
+import {publicCopilotBreadcrumbs} from "src/composables/breadcrumbs";
const props = defineProps({
pilot: {
@@ -38,11 +39,7 @@ const {flights, totalItemsCount, isQueryRunning: areFlightsLoading} = storeToRef
const {photos, isQueryRunning: arePhotosLoading} = storeToRefs(usePhotosStore());
useAppStore().setPageTitle(`${props.pilot.name} + ${copilot.value.name}`);
-useAppStore().setBreadcrumbs([
- {to: {name: 'homepage'}, label: "Polétání.cz"},
- {to: {name: "publicProfileDetail", params: {username: props.pilot.publicUsername}}, label: `@${props.pilot.publicUsername}`},
- {label: copilot.value.name}
-]);
+useAppStore().setBreadcrumbs(publicCopilotBreadcrumbs(props.pilot));
useMeta(() => metaData({
title: copilot.value.name,
@@ -51,14 +48,10 @@ useMeta(() => metaData({
image: copilot.value.titleImage?.url
}));
-const {filters, loadPage, paginationLimit} = usePagination();
+const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetchPublic});
filters.value = {copilotId: copilot.value.id};
-const loadNextFlightsPage = (appendItems) => loadPage({
- fetchFunc: useFlightsStore().fetchPublic, appendItems
-});
-
onMounted(() => {
- loadNextFlightsPage(false);
+ loadPage(false);
usePhotosStore().fetchPublic({copilotId: copilot.value.id})
})
@@ -82,7 +75,7 @@ onMounted(() => {
:is-query-running="areFlightsLoading"
:items-per-page="paginationLimit"
:public="true"
- @load-more="loadNextFlightsPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/public/pilotProfile/CopilotUploadPhotoPage.vue b/src/pages/public/pilotProfile/CopilotUploadPhotoPage.vue
index e1abc77..97a9d70 100644
--- a/src/pages/public/pilotProfile/CopilotUploadPhotoPage.vue
+++ b/src/pages/public/pilotProfile/CopilotUploadPhotoPage.vue
@@ -22,13 +22,13 @@ export default {
import {storeToRefs} from "pinia";
import ContentCard from "components/ContentCard.vue";
import {useAppStore} from "stores/App";
-import {useMeta, useQuasar} from "quasar";
+import {useMeta} from "quasar";
import {metaData} from "src/composables/meta";
import {flightName} from "src/composables/flight";
import {usePhotosStore} from "stores/Photos";
-import {onMounted, ref} from "vue";
+import {onMounted} from "vue";
import PhotosEditorListSimple from "components/photos/PhotosEditorListSimple.vue";
-import {copilotBreadcrumbs} from "src/composables/breadcrumbs";
+import {publicCopilotBreadcrumbs} from "src/composables/breadcrumbs";
import FlightFormPhotos from "components/flights/form/FlightFormPhotos.vue";
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
import {useRoute} from "vue-router";
@@ -47,7 +47,7 @@ const {photos, isQueryRunning: arePhotosLoading} = storeToRefs(usePhotosStore())
useAppStore().setPageTitle(`Nahraj fotky - ${props.pilot.name} - ${flightName(flight.value)}`);
useAppStore().setBreadcrumbs([
- ...copilotBreadcrumbs(props.pilot, flight.value, flight.value.event, copilot.value),
+ ...publicCopilotBreadcrumbs(props.pilot, flight.value, flight.value.event, copilot.value),
{label: "Nahraj fotky"},
]);
diff --git a/src/pages/public/pilotProfile/EventDetailPage.vue b/src/pages/public/pilotProfile/EventDetailPage.vue
index ad6867d..3655c09 100644
--- a/src/pages/public/pilotProfile/EventDetailPage.vue
+++ b/src/pages/public/pilotProfile/EventDetailPage.vue
@@ -20,6 +20,8 @@ import {useMeta} from "quasar";
import {metaData} from "src/composables/meta";
import EventBasicInfo from "components/event/EventBasicInfo.vue";
import EventFlightsMap from "components/event/EventFlightsMap.vue";
+import {publicEventBreadcrumbs} from "src/composables/breadcrumbs";
+import {onMounted} from "vue";
const props = defineProps({
pilot: {
@@ -31,23 +33,18 @@ const props = defineProps({
const {isQueryRunning, event} = storeToRefs(useEventsStore());
useAppStore().setPageTitle(event.value.name);
-useAppStore().setBreadcrumbs([
- {to: {name: 'homepage'}, label: "Polétání.cz"},
- {to: {name: "publicProfileDetail", params: {username: props.pilot.publicUsername}}, label: `@${props.pilot.publicUsername}`},
- {to: {name: "publicEventsList", params: {username: props.pilot.publicUsername}}, label: "Události"},
- {label: event.value.name}
-]);
+useAppStore().setBreadcrumbs(publicEventBreadcrumbs(props.pilot, event.value, false));
useMeta(() => metaData({
title: event.value.name,
description: event.value.description
}))
-const {filters, loadPage, paginationLimit} = usePagination();
+const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetchPublic});
filters.value = {username: props.pilot.publicUsername, eventId: event.value.id};
-const loadNextFlightsPage = (appendItems) => loadPage({
- fetchFunc: useFlightsStore().fetchPublic, appendItems
-});
-loadNextFlightsPage(false);
+
+onMounted(() => {
+ loadPage(false);
+})
const {flights, totalItemsCount, isQueryRunning: areFlightsLoading} = storeToRefs(useFlightsStore());
@@ -80,7 +77,7 @@ const {flights, totalItemsCount, isQueryRunning: areFlightsLoading} = storeToRef
:is-query-running="areFlightsLoading"
:items-per-page="paginationLimit"
:public="true"
- @load-more="loadNextFlightsPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/public/pilotProfile/EventsListPage.vue b/src/pages/public/pilotProfile/EventsListPage.vue
index 1c600f5..b94b4f7 100644
--- a/src/pages/public/pilotProfile/EventsListPage.vue
+++ b/src/pages/public/pilotProfile/EventsListPage.vue
@@ -7,6 +7,7 @@ import {useEventsStore} from "stores/Events";
import {storeToRefs} from "pinia";
import {useMeta} from "quasar";
import {commonKeywords, metaData} from "src/composables/meta";
+import {publicProfileBreadcrumbs} from "src/composables/breadcrumbs";
const props = defineProps({
pilot: {
@@ -23,8 +24,7 @@ useMeta(() => metaData({
useAppStore().setPageTitle(`${props.pilot.publicUsername}`);
useAppStore().setBreadcrumbs([
- {to: {name: 'homepage'}, label: "Polétání.cz"},
- {to: {name: "publicProfileDetail", params: {username: props.pilot.publicUsername}}, label: `@${props.pilot.publicUsername}`},
+ ...publicProfileBreadcrumbs(props.pilot),
{label: "Události"}
]);
diff --git a/src/pages/public/pilotProfile/FlightDetailPage.vue b/src/pages/public/pilotProfile/FlightDetailPage.vue
index 8e18bc8..d5883d2 100644
--- a/src/pages/public/pilotProfile/FlightDetailPage.vue
+++ b/src/pages/public/pilotProfile/FlightDetailPage.vue
@@ -23,6 +23,7 @@ import {aircraftKeywords, flightEventKeywords, flightKeywords, metaData} from "s
import ContentCard from "components/ContentCard.vue";
import {usePhotosStore} from "stores/Photos";
import {computed} from "vue";
+import {publicFlightBreadcrumbs} from "src/composables/breadcrumbs";
const {isQueryRunning, flight} = storeToRefs(useFlightsStore());
@@ -37,24 +38,10 @@ usePhotosStore().fetchPublic({flightId: flight.value.id});
const {isQueryRunning: arePhotosLoading, photos: flightPhotos} = storeToRefs(usePhotosStore());
const flightNameFormatted = flightName(flight.value);
-useAppStore().setPageTitle(flightNameFormatted);
-
const event = computed(() => flight.value.event);
-const breadcrumbs = [
- {to: {name: 'homepage'}, label: "Polétání.cz"},
- {to: {name: "publicProfileDetail", params: {username: props.pilot.publicUsername}}, label: `@${props.pilot.publicUsername}`},
-]
-if (event.value && event.value.isPublic) {
- breadcrumbs.push({to: {name: 'publicEventsList', username: props.pilot.publicUsername}, label: "Události"});
- breadcrumbs.push({
- to: {
- name: 'publicEventDetail',
- params: {eventSlug: event.value.urlSlug, username: props.pilot.publicUsername}
- }, label: event.value.name
- });
-}
-breadcrumbs.push({label: flightNameFormatted})
-useAppStore().setBreadcrumbs(breadcrumbs);
+
+useAppStore().setPageTitle(flightNameFormatted);
+useAppStore().setBreadcrumbs(publicFlightBreadcrumbs(props.pilot, flight.value, event.value, false));
useMeta(() => metaData({
title: `${flightNameFormatted} - ${props.pilot.name}`,
diff --git a/src/pages/public/pilotProfile/FlightsListPage.vue b/src/pages/public/pilotProfile/FlightsListPage.vue
index 8b37883..83e2cef 100644
--- a/src/pages/public/pilotProfile/FlightsListPage.vue
+++ b/src/pages/public/pilotProfile/FlightsListPage.vue
@@ -8,6 +8,8 @@ import {storeToRefs} from "pinia";
import {commonKeywords, metaData} from "src/composables/meta";
import {useMeta} from "quasar";
import {usePagination} from "src/composables/pagination";
+import {publicProfileBreadcrumbs} from "src/composables/breadcrumbs";
+import {onMounted} from "vue";
const props = defineProps({
pilot: {
@@ -24,18 +26,13 @@ useMeta(() => metaData({
}));
useAppStore().setPageTitle(props.pilot.publicUsername);
-useAppStore().setBreadcrumbs([
- {to: {name: 'homepage'}, label: "Polétání.cz"},
- {label: `@${props.pilot.publicUsername}`},
-])
+useAppStore().setBreadcrumbs(publicProfileBreadcrumbs(props.pilot, false))
-const {filters, loadPage, paginationLimit} = usePagination();
+const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetchPublic});
filters.value = {username: props.pilot.publicUsername};
-const loadNextFlightsPage = (appendItems) => loadPage({
- fetchFunc: useFlightsStore().fetchPublic,
- appendItems
+onMounted(() => {
+ loadPage(false);
});
-loadNextFlightsPage(false);
const {flights, totalItemsCount, isQueryRunning: areFlightsLoading} = storeToRefs(useFlightsStore());
@@ -56,6 +53,6 @@ const {flights, totalItemsCount, isQueryRunning: areFlightsLoading} = storeToRef
:is-query-running="areFlightsLoading"
:items-per-page="paginationLimit"
:public="true"
- @load-more="loadNextFlightsPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/public/poi/PointOfInterestDetailPage.vue b/src/pages/public/poi/PointOfInterestDetailPage.vue
index 607a7a5..8e39626 100644
--- a/src/pages/public/poi/PointOfInterestDetailPage.vue
+++ b/src/pages/public/poi/PointOfInterestDetailPage.vue
@@ -24,6 +24,7 @@ import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
import {onMounted} from "vue";
import PhotoGallerySkeleton from "components/photos/skeletons/PhotoGallerySkeleton.vue";
import {usePagination} from "src/composables/pagination";
+import {publicPOIBaseBreadcrumbs} from "src/composables/breadcrumbs";
const {pointOfInterest, isQueryRunning} = storeToRefs(usePointsOfInterestStore());
const {photos, isQueryRunning: arePhotosLoading} = storeToRefs(usePhotosStore());
@@ -36,23 +37,16 @@ useMeta(() => metaData({
description: pointOfInterest.value.description,
}));
useAppStore().setBreadcrumbs([
- {to: {name: 'homepage'}, label: "Polétání.cz"},
- {to: {name: 'publicPOIs'}, label: "Místa"},
+ ...publicPOIBaseBreadcrumbs(),
{label: pointOfInterest.value.name}
]);
-const {filters, loadPage, paginationLimit} = usePagination();
+const {filters, loadPage, paginationLimit} = usePagination({fetchFunction: useFlightsStore().fetchPublic});
filters.value = {pointOfInterestId: pointOfInterest.value.id};
-const loadNextFlightsPage = (appendItems) => loadPage({
- fetchFunc: useFlightsStore().fetchPublic,
- appendItems
-});
-
onMounted(() => {
usePhotosStore().fetchPublic({pointOfInterestId: pointOfInterest.value.id});
- loadNextFlightsPage(false);
+ loadPage(false);
});
-
@@ -85,7 +79,7 @@ onMounted(() => {
:is-query-running="areFlightsLoading"
:items-per-page="paginationLimit"
:public="true"
- @load-more="loadNextFlightsPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/public/poi/PointsOfInterestPage.vue b/src/pages/public/poi/PointsOfInterestPage.vue
index 163aa28..757338c 100644
--- a/src/pages/public/poi/PointsOfInterestPage.vue
+++ b/src/pages/public/poi/PointsOfInterestPage.vue
@@ -8,26 +8,23 @@ import {useMeta} from "quasar";
import {metaData} from "src/composables/meta";
import {usePagination} from "src/composables/pagination";
import ListFilters from "components/ListFilters.vue";
+import {homepageBreadcrumbs, publicPOIBaseBreadcrumbs} from "src/composables/breadcrumbs";
useAppStore().setPageTitle("Místa");
-useAppStore().setBreadcrumbs([
- {to: {name: 'homepage'}, label: "Polétání.cz"},
- {label: "Místa"},
-]);
+useAppStore().setBreadcrumbs(publicPOIBaseBreadcrumbs());
useMeta(() => metaData({
title: "Místa"
}))
-const {filters, loadPage, paginationOffset, paginationLimit} = usePagination();
-const loadNextPage = (appendItems) => loadPage({
- fetchFunc: usePointsOfInterestStore().fetchPublic, appendItems
+const {filters, loadPage, paginationOffset, paginationLimit} = usePagination({
+ fetchFunction: usePointsOfInterestStore().fetchPublic
});
-loadNextPage(false);
+loadPage(false);
const handleFiltersChanged = (newFilters) => {
paginationOffset.value = 0;
filters.value = newFilters;
- loadNextPage(false);
+ loadPage(false);
}
const {pointsOfInterest, totalItemsCount, isQueryRunning} = storeToRefs(usePointsOfInterestStore());
@@ -45,7 +42,7 @@ const {pointsOfInterest, totalItemsCount, isQueryRunning} = storeToRefs(usePoint
:total-items-count="totalItemsCount"
:is-query-running="isQueryRunning"
:items-per-page="paginationLimit"
- @load-more="loadNextPage(true)"
+ @load-more="loadPage(true)"
/>
diff --git a/src/pages/public/user/ForgottenPasswordPage.vue b/src/pages/public/user/ForgottenPasswordPage.vue
index bb153c8..9997912 100644
--- a/src/pages/public/user/ForgottenPasswordPage.vue
+++ b/src/pages/public/user/ForgottenPasswordPage.vue
@@ -15,6 +15,7 @@ const $q = useQuasar();
useAppStore().setPageTitle("Zapomenuté heslo");
useMeta(() => metaData({
title: "Zapomenuté heslo",
+ index: false
}));
const requestPasswordChange = () => {
diff --git a/src/pages/public/user/LoginPage.vue b/src/pages/public/user/LoginPage.vue
index afaecc3..e924728 100644
--- a/src/pages/public/user/LoginPage.vue
+++ b/src/pages/public/user/LoginPage.vue
@@ -14,6 +14,7 @@ const $q = useQuasar();
useAppStore().setPageTitle("Přihlášení");
useMeta(() => metaData({
title: "Přihlášení",
+ index: false
}));
const logUser = () => {
diff --git a/src/pages/public/user/PasswordResetPage.vue b/src/pages/public/user/PasswordResetPage.vue
index 2126f36..5f3196e 100644
--- a/src/pages/public/user/PasswordResetPage.vue
+++ b/src/pages/public/user/PasswordResetPage.vue
@@ -17,6 +17,7 @@ const $q = useQuasar();
useAppStore().setPageTitle("Změna hesla");
useMeta(() => metaData({
title: "Změna hesla",
+ index: false
}));
const tokenInfo = reactive({