61 lines
1.9 KiB
Vue
61 lines
1.9 KiB
Vue
<script setup>
|
|
import AircraftForm from "components/aircrafts/AircraftForm.vue";
|
|
import {useAircraftsStore} from "stores/Aircrafts";
|
|
import {useRoute, useRouter} from "vue-router";
|
|
import {useQuasar} from "quasar";
|
|
import {onMounted} from "vue";
|
|
import AircraftEditSkeleton from "components/aircrafts/AircraftEditSkeleton.vue";
|
|
import {successObject} from "src/composables/dialog";
|
|
import {useAppStore} from "stores/App";
|
|
import AccessDeniedBanner from "components/banners/AccessDeniedBanner.vue";
|
|
import {storeToRefs} from "pinia";
|
|
import {useUserStore} from "stores/User";
|
|
|
|
|
|
const $router = useRouter();
|
|
const $q = useQuasar();
|
|
const aircraftId = parseInt(useRoute().params.id);
|
|
const loggedUser = storeToRefs(useUserStore()).user;
|
|
|
|
const handleSave = (formData) => {
|
|
useAircraftsStore().update(aircraftId, formData).then(() => {
|
|
$q.notify(successObject("Letadlo úspěšně upraveno"));
|
|
$router.push({name: "aircraftDetail", params: {id: aircraftId}});
|
|
})
|
|
}
|
|
const {aircraft, isMutationRunning, isQueryRunning} = storeToRefs(useAircraftsStore());
|
|
|
|
onMounted(() => {
|
|
useAircraftsStore().fetchDetail(aircraftId).then(() => {
|
|
useAppStore().setPageTitle(`${aircraft.value.callSign} - editace`);
|
|
useAppStore().setBreadcrumbs([
|
|
{to: {name: "aircraft"}, label: "Letadla"},
|
|
{to: {name: "aircraftDetail", params: {id: aircraftId}}, label: aircraft.value.callSign},
|
|
{label: "Editace"}
|
|
])
|
|
});
|
|
});
|
|
|
|
</script>
|
|
|
|
<template>
|
|
<AircraftEditSkeleton v-if="isQueryRunning || !aircraft"/>
|
|
|
|
<AccessDeniedBanner
|
|
v-else-if="aircraft.createdById !== loggedUser.id"
|
|
:route-back="{name: 'aircraftDetail', params: {id: aircraftId}}"
|
|
/>
|
|
|
|
<q-card v-else class="q-mx-md">
|
|
<q-card-section>
|
|
<AircraftForm
|
|
@save="handleSave"
|
|
:default-values="aircraft"
|
|
:organizations="loggedUser.organizations"
|
|
:is-request-pending="isMutationRunning"
|
|
/>
|
|
</q-card-section>
|
|
</q-card>
|
|
|
|
</template>
|