Homepage, verejna cast, vetsi sada uprav a oprav

This commit is contained in:
Michal Kváček
2023-08-21 22:45:58 +02:00
parent 8bc477a611
commit 8c3b8d19dd
54 changed files with 550 additions and 372 deletions
@@ -0,0 +1,37 @@
<script setup>
import POIEditSkeleton from "components/poi/POIEditSkeleton.vue";
import {fetchPoi, loading, poi} from "src/composables/objects/poi";
import {onMounted} from "vue";
import {useRoute} from "vue-router";
import POIEditForm from "components/poi/POIEditForm.vue";
import {usePointsOfInterestStore} from "stores/PointsOfInterest";
import {useAppStore} from "stores/App";
import {useQuasar} from "quasar";
import {successObject} from "src/composables/dialog";
const poiId = parseInt(useRoute().params.id);
onMounted(() => {
fetchPoi(poiId).then(() => {
useAppStore().setPageTitle(`${poi.value.name} - editace`);
useAppStore().setBreadcrumbs([
{to: {name: "poi"}, label: "Zajímavá místa"},
{to: {name: "poiDetail", params: {id: poiId}}, label: poi.value.name},
{label: "Editace"},
]);
});
})
const $q = useQuasar();
const handleSave = (data) => {
usePointsOfInterestStore().update(poiId, data).then(respData => {
$q.notify(successObject("Úspěšně uloženo"));
});
}
</script>
<template>
<POIEditSkeleton v-if="loading"/>
<POIEditForm :poi="poi" v-else @save="handleSave"/>
</template>
@@ -0,0 +1,25 @@
<script setup>
import AircraftForm from "components/aircrafts/AircraftForm.vue";
import {useAircraftsStore} from "stores/Aircrafts";
import {useRouter} from "vue-router";
import {useQuasar} from "quasar";
import {ref} from "vue";
let isRequestPending = ref(false);
const $q = useQuasar();
const router = useRouter();
const handleSave = (formData) => {
isRequestPending.value = true;
useAircraftsStore().create(formData).then(() => {
$q.notify({message: "Letadlo úspěšně vytvořeno", position: "top", color: "positive"});
router.push({name: "aircrafts"});
}).finally(() => {
isRequestPending.value = true;
})
}
</script>
<template>
<AircraftForm @save="handleSave" :is-request-pending="isRequestPending"/>
</template>
@@ -0,0 +1,42 @@
<script setup>
import {onMounted} from "vue";
import {useRoute} from "vue-router";
import POIDetailSkeleton from "components/poi/POIDetailSkeleton.vue";
import FAB from "components/FAB.vue";
import {fetchPoi, loading, poi} from "src/composables/objects/poi";
import PhotosList from "components/photos/PhotosList.vue";
import {useAppStore} from "stores/App";
import EmbeddedMap from "components/map/EmbeddedMap.vue";
onMounted(() => {
fetchPoi(useRoute().params.id).then(() => {
useAppStore().setPageTitle(`${poi.value.name}`);
useAppStore().setBreadcrumbs([
{to: {name: "poi"}, label: "Zajímavá místa"},
{label: poi.value.name},
])
});
})
</script>
<template>
<POIDetailSkeleton v-if="loading || !poi"/>
<template v-else>
<EmbeddedMap
v-if="poi.gpsLatitude && poi.gpsLongitude"
:gps-latitude="poi.gpsLatitude"
:gps-longitude="poi.gpsLongitude"
:zoom="13"
/>
<PhotosList
:photos="poi.photos"
:show-actions="false"
/>
<FAB :router-link="{name: 'poiEdit', params:{id: poi.id}}" mode="edit"/>
</template>
</template>
@@ -0,0 +1,38 @@
<script setup>
import {onMounted} from "vue";
import {fetchPOIList, loading, pointsOfInterest} from "src/composables/objects/poi";
import {useAppStore} from "stores/App";
import POIList from "components/poi/POIList.vue";
import FAB from "components/FAB.vue";
import BasicListSkeleton from "components/BasicListSkeleton.vue";
onMounted(() => {
fetchPOIList();
});
useAppStore().setPageTitle("Zajímavá místa")
</script>
<template>
<BasicListSkeleton :items-count-min="5" :items-count-max="10" v-if="loading"/>
<div class="q-pa-md q-gutter-sm" v-else-if="!loading && pointsOfInterest.length === 0">
<q-banner class="bg-light-blue text-white">
<template v-slot:avatar>
<q-icon name="info"/>
</template>
Nemáš tu uložené žádné zajímavé místo. Přidej si let, nastav si tam ručně trasu a jednotlivé body se zobrazí
i v tomto seznamu.
<template v-slot:action>
<q-btn flat color="white" :to="{name: 'addPoi'}" label="Přidat"/>
</template>
</q-banner>
</div>
<POIList
v-else
:items="pointsOfInterest"
/>
<FAB :router-link="{name: 'addPOI'}" mode="add"/>
</template>