Sprava eventu
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
<script setup>
|
||||
import {onMounted} from "vue";
|
||||
import {loading, event, fetchEvent, isRequestPending} from "src/composables/objects/event";
|
||||
import {useAppStore} from "stores/App";
|
||||
import {useRoute, useRouter} from "vue-router";
|
||||
import {useEventsStore} from "stores/Events";
|
||||
import {successObject} from "src/composables/dialog";
|
||||
import {useQuasar} from "quasar";
|
||||
import EventEditSkeleton from "components/event/EventEditSkeleton.vue";
|
||||
import EventForm from "components/event/EventForm.vue";
|
||||
|
||||
const eventId = parseInt(useRoute().params.id);
|
||||
|
||||
onMounted(() => {
|
||||
fetchEvent(eventId).then(() => {
|
||||
useAppStore().setPageTitle(`${event.value.name} - editace`);
|
||||
useAppStore().setBreadcrumbs([
|
||||
{to: {name: "events"}, label: "Události"},
|
||||
{to: {name: "eventDetail", params: {id: eventId}}, label: event.value.name},
|
||||
{label: "Editace"}
|
||||
])
|
||||
})
|
||||
});
|
||||
|
||||
const $q = useQuasar();
|
||||
const $router = useRouter();
|
||||
|
||||
const handleSave = (formData) => {
|
||||
useEventsStore().update(eventId, formData).then(() => {
|
||||
$q.notify(successObject("Událost úspěšně upravena"));
|
||||
$router.push({name: "eventDetail", params: {id: eventId}});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<EventEditSkeleton v-if="loading"/>
|
||||
|
||||
<EventForm
|
||||
v-else
|
||||
:event="event"
|
||||
:is-request-pending="isRequestPending"
|
||||
@save="handleSave"
|
||||
/>
|
||||
</template>
|
||||
@@ -0,0 +1,38 @@
|
||||
<script setup>
|
||||
import {useRoute} from "vue-router";
|
||||
import {onMounted} from "vue";
|
||||
import {event, fetchEvent, loading} from "src/composables/objects/event";
|
||||
import EventDetailSkeleton from "components/event/EventDetailSkeleton.vue";
|
||||
import {useAppStore} from "stores/App";
|
||||
import FAB from "components/FAB.vue";
|
||||
import FlightsList from "components/flights/FlightsList.vue";
|
||||
|
||||
const eventId = parseInt(useRoute().params.id);
|
||||
onMounted(() => {
|
||||
fetchEvent(eventId).then(() => {
|
||||
useAppStore().setPageTitle(event.value.name);
|
||||
useAppStore().setBreadcrumbs([
|
||||
{to: {name: "events"}, label: "Události"},
|
||||
{label: event.value.name}
|
||||
])
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<EventDetailSkeleton v-if="loading || !event"/>
|
||||
|
||||
<template v-else>
|
||||
<article v-html="event.description" />
|
||||
|
||||
<h3>Lety</h3>
|
||||
|
||||
<q-banner v-if="event.flights.length === 0" class="bg-light-blue text-white">
|
||||
Zatím tu nemáš uložené žádné lety.
|
||||
</q-banner>
|
||||
|
||||
<FlightsList :items="event.flights" v-else/>
|
||||
|
||||
<FAB mode="edit" :router-link="{name: 'eventEdit', params: {id: eventId}}"/>
|
||||
</template>
|
||||
</template>
|
||||
@@ -0,0 +1,33 @@
|
||||
<script setup>
|
||||
import {onMounted} from "vue";
|
||||
import {useAppStore} from "stores/App";
|
||||
import FAB from "components/FAB.vue";
|
||||
import BasicListSkeleton from "components/basicSkeletons/BasicListSkeleton.vue";
|
||||
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
|
||||
import {events, fetchEvents, loading} from "src/composables/objects/event";
|
||||
import EventsList from "components/event/EventsList.vue";
|
||||
|
||||
onMounted(() => {
|
||||
fetchEvents();
|
||||
});
|
||||
|
||||
useAppStore().setPageTitle("Letecké události")
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<BasicListSkeleton :items-count-min="3" :items-count-max="8" v-if="loading"/>
|
||||
<BasicInfoBanner
|
||||
v-else-if="!loading && events.length === 0"
|
||||
:route-add="{name: 'addEvent'}"
|
||||
label-add="Přidat"
|
||||
>
|
||||
Nemáš tu uloženou žádnou událost. Události slouží ke sloučení letů z jedné akce/výletu do přehledné skupiny.
|
||||
</BasicInfoBanner>
|
||||
|
||||
<EventsList
|
||||
v-else
|
||||
:items="events"
|
||||
/>
|
||||
|
||||
<FAB :router-link="{name: 'addEvent'}" mode="add"/>
|
||||
</template>
|
||||
@@ -0,0 +1,28 @@
|
||||
<script setup>
|
||||
import {useRouter} from "vue-router";
|
||||
import {useQuasar} from "quasar";
|
||||
import {successObject} from "src/composables/dialog";
|
||||
import {useEventsStore} from "stores/Events";
|
||||
import {useAppStore} from "stores/App";
|
||||
import {isRequestPending} from "src/composables/objects/event";
|
||||
import EventForm from "components/event/EventForm.vue";
|
||||
|
||||
const $q = useQuasar();
|
||||
const router = useRouter();
|
||||
const handleSave = (formData) => {
|
||||
useEventsStore().create(formData).then(() => {
|
||||
$q.notify(successObject("Událost úspěšně vytvořena"));
|
||||
router.push({name: "events"});
|
||||
});
|
||||
};
|
||||
|
||||
useAppStore().setPageTitle("Nová událost");
|
||||
useAppStore().setBreadcrumbs([
|
||||
{to: {name: "events"}, label: "Události"},
|
||||
{label: "Nová"}
|
||||
]);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<EventForm @save="handleSave" :is-request-pending="isRequestPending"/>
|
||||
</template>
|
||||
@@ -25,6 +25,7 @@ import BatchPhotoFormDialog from "components/photos/BatchPhotoFormDialog.vue";
|
||||
import {useAppStore} from "stores/App";
|
||||
import {editBatchPhotos, handleBatchPhotoEdit, openBatchEdit, openBatchPhotoForm} from "src/composables/photos/batchEdit";
|
||||
import {editPhoto, handlePhotoUpdate, openEdit, openPhotoEdit} from "src/composables/photos/simpleEdit";
|
||||
import {fetchEvents, events} from "src/composables/objects/event";
|
||||
|
||||
const $q = useQuasar();
|
||||
const $route = useRoute();
|
||||
@@ -35,6 +36,7 @@ const locations = storeToRefs(usePointsOfInterestStore()).items;
|
||||
const airports = storeToRefs(useAirportsStore()).items;
|
||||
const copilots = storeToRefs(useCopilotsStore()).items;
|
||||
|
||||
|
||||
const formStep = ref("");
|
||||
watch(() => $route.params.step, (val) => formStep.value = val);
|
||||
|
||||
@@ -46,6 +48,8 @@ onMounted(() => {
|
||||
useAirportsStore().fetch();
|
||||
useCopilotsStore().fetch();
|
||||
|
||||
fetchEvents();
|
||||
|
||||
fetchFlight(flightId).then(() => {
|
||||
const flightNameFormatted = flightName(flight.value);
|
||||
|
||||
@@ -98,8 +102,6 @@ const deletePhoto = (id) => {
|
||||
flight.value.photos.splice(_findPhotoIndex(data.id), 1);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -164,7 +166,7 @@ const deletePhoto = (id) => {
|
||||
</q-tab-panel>
|
||||
|
||||
<q-tab-panel name="notes">
|
||||
<FlightFormNotes @save="handleFlightEdit" :flight="flight"/>
|
||||
<FlightFormNotes @save="handleFlightEdit" :events="events" :flight="flight"/>
|
||||
</q-tab-panel>
|
||||
</q-tab-panels>
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ import {storeToRefs} from "pinia";
|
||||
const $q = useQuasar();
|
||||
const $router = useRouter();
|
||||
const flightId = parseInt(useRoute().params.id);
|
||||
|
||||
const loggedUser = storeToRefs(useUserStore()).user;
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<script setup>
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
organizace
|
||||
</template>
|
||||
Reference in New Issue
Block a user