From dd248d44328962e6435182eff1098ca87b81ab50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Mon, 28 Aug 2023 22:02:24 +0200 Subject: [PATCH] Upravy UI, refaktoring, davkove upravy a mazani fotek --- src/components/FormWrapper.vue | 11 +- .../aircrafts/AircraftDetailCard.vue | 59 ++++++++ .../aircrafts/AircraftDetailSkeleton.vue | 22 ++- .../aircrafts/AircraftEditSkeleton.vue | 21 ++- .../{ => banners}/AccessDeniedBanner.vue | 0 .../{ => banners}/BasicInfoBanner.vue | 0 .../copilots/CopilotDetailSkeleton.vue | 8 +- src/components/copilots/CopilotForm.vue | 18 ++- .../flights/FlightDetailSkeleton.vue | 4 +- src/components/flights/FlightEditSkeleton.vue | 17 ++- src/components/flights/FlightTrackMap.vue | 2 +- .../flights/form/FlightFormBasic.vue | 33 +++-- .../flights/form/FlightFormPhotos.vue | 1 + .../BreadcrumbsNavigation.vue | 0 .../photos/BatchPhotoFormDialog.vue | 57 ++++++++ src/components/photos/PhotoDetail.vue | 112 +++++++++------ .../{PhotoForm.vue => PhotoFormDialog.vue} | 14 +- src/components/photos/PhotosList.vue | 78 +++++++++-- src/composables/dialog.js | 14 +- src/composables/objects/aircraft.js | 2 + src/composables/objects/copilot.js | 2 + src/composables/objects/flight.js | 2 + src/composables/photos/batchEdit.js | 30 +++++ src/composables/photos/simpleEdit.js | 22 +++ src/graphql/apollo.js | 16 +-- src/graphql/fragments/flight.js | 1 - src/graphql/fragments/photo.js | 5 +- src/layouts/ProfileLayout.vue | 4 +- src/layouts/PublicLayout.vue | 2 +- .../profile/aircraft/AircraftDetailPage.vue | 72 +++------- src/pages/profile/aircraft/AircraftsPage.vue | 19 ++- .../profile/aircraft/EditAircraftPage.vue | 11 +- .../profile/aircraft/NewAircraftsPage.vue | 10 +- .../profile/copilot/CopilotDetailPage.vue | 4 +- src/pages/profile/copilot/CopilotsPage.vue | 7 +- src/pages/profile/copilot/EditCopilotPage.vue | 18 ++- src/pages/profile/copilot/NewCopilotPage.vue | 10 +- src/pages/profile/flight/EditFlightPage.vue | 127 +++++++++--------- src/pages/profile/flight/FlightDetailPage.vue | 5 +- src/pages/profile/flight/FlightsPage.vue | 21 ++- src/pages/profile/flight/NewFlightPage.vue | 36 +++-- .../profile/poi/EditPointOfInterestPage.vue | 7 +- .../profile/poi/NewPointOfInterestPage.vue | 2 - .../profile/poi/PointOfInterestDetailPage.vue | 2 +- .../profile/poi/PointsOfInterestPage.vue | 23 ++-- src/pages/public/LoginPage.vue | 16 ++- src/pages/public/PilotProfilePage.vue | 1 + src/pages/public/RegisterPage.vue | 1 - src/stores/Copilots.js | 16 ++- src/stores/FlashMessages.js | 13 -- src/stores/Flights.js | 3 - src/stores/Photo.js | 11 +- src/stores/index.js | 1 - 53 files changed, 636 insertions(+), 357 deletions(-) create mode 100644 src/components/aircrafts/AircraftDetailCard.vue rename src/components/{ => banners}/AccessDeniedBanner.vue (100%) rename src/components/{ => banners}/BasicInfoBanner.vue (100%) rename src/components/{ => navigation}/BreadcrumbsNavigation.vue (100%) create mode 100644 src/components/photos/BatchPhotoFormDialog.vue rename src/components/photos/{PhotoForm.vue => PhotoFormDialog.vue} (85%) create mode 100644 src/composables/photos/batchEdit.js create mode 100644 src/composables/photos/simpleEdit.js delete mode 100644 src/stores/FlashMessages.js diff --git a/src/components/FormWrapper.vue b/src/components/FormWrapper.vue index 0054675..f2c34d8 100644 --- a/src/components/FormWrapper.vue +++ b/src/components/FormWrapper.vue @@ -7,11 +7,6 @@ const props = defineProps({ modelValue: { type: Object, }, - resetAfterSubmit: { - type: Boolean, - required: false, - default: false - }, isRequestPending, saveButton: { type: [Object, Boolean], @@ -27,10 +22,6 @@ const props = defineProps({ const emits = defineEmits(["save"]); const saveForm = () => { emits("save", props.modelValue); - - if (props.resetAfterSubmit) { - console.error("Not implemented") - } } const $q = useQuasar(); @@ -47,7 +38,7 @@ const fullwidthBtn = computed(() => $q.screen.width <= $q.screen.sizes.md); color="primary" type="submit" size="lg" - :class="{'q-my-lg': true, 'q-mx-lg': !fullwidthBtn, 'btn--fullwidth': fullwidthBtn}" + :class="{'q-my-lg': true, 'btn--fullwidth': fullwidthBtn}" v-if="saveButton" :icon="props.saveButton.icon" :loading="props.isRequestPending" diff --git a/src/components/aircrafts/AircraftDetailCard.vue b/src/components/aircrafts/AircraftDetailCard.vue new file mode 100644 index 0000000..74e752b --- /dev/null +++ b/src/components/aircrafts/AircraftDetailCard.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/aircrafts/AircraftDetailSkeleton.vue b/src/components/aircrafts/AircraftDetailSkeleton.vue index ece9caa..98ee401 100644 --- a/src/components/aircrafts/AircraftDetailSkeleton.vue +++ b/src/components/aircrafts/AircraftDetailSkeleton.vue @@ -1,5 +1,23 @@ - + diff --git a/src/components/aircrafts/AircraftEditSkeleton.vue b/src/components/aircrafts/AircraftEditSkeleton.vue index e052340..412ae2d 100644 --- a/src/components/aircrafts/AircraftEditSkeleton.vue +++ b/src/components/aircrafts/AircraftEditSkeleton.vue @@ -1,5 +1,22 @@ - + diff --git a/src/components/AccessDeniedBanner.vue b/src/components/banners/AccessDeniedBanner.vue similarity index 100% rename from src/components/AccessDeniedBanner.vue rename to src/components/banners/AccessDeniedBanner.vue diff --git a/src/components/BasicInfoBanner.vue b/src/components/banners/BasicInfoBanner.vue similarity index 100% rename from src/components/BasicInfoBanner.vue rename to src/components/banners/BasicInfoBanner.vue diff --git a/src/components/copilots/CopilotDetailSkeleton.vue b/src/components/copilots/CopilotDetailSkeleton.vue index ad40fc1..2d3855b 100644 --- a/src/components/copilots/CopilotDetailSkeleton.vue +++ b/src/components/copilots/CopilotDetailSkeleton.vue @@ -1,5 +1,9 @@ - + diff --git a/src/components/copilots/CopilotForm.vue b/src/components/copilots/CopilotForm.vue index f9625d3..3482dc0 100644 --- a/src/components/copilots/CopilotForm.vue +++ b/src/components/copilots/CopilotForm.vue @@ -4,17 +4,24 @@ import {onMounted, reactive} from "vue"; import {setDefaultData} from "src/composables/form/formHandling"; import FormWrapper from "components/FormWrapper.vue"; import {commonProps} from "src/composables/inputs"; +import {isRequestPending} from "src/composables/form/props"; +import {isRequired} from "src/composables/form/rules"; const props = defineProps({ copilot: { type: Object - } + }, + isRequestPending }) const formData = reactive({ name: null, }); +const rules = { + name: [isRequired] +} + onMounted(() => { if (props.copilot) { setDefaultData(formData, props.copilot); @@ -24,7 +31,12 @@ onMounted(() => { diff --git a/src/components/flights/FlightDetailSkeleton.vue b/src/components/flights/FlightDetailSkeleton.vue index 7940e33..7071716 100644 --- a/src/components/flights/FlightDetailSkeleton.vue +++ b/src/components/flights/FlightDetailSkeleton.vue @@ -16,7 +16,7 @@ import BasicTextSkeleton from "components/basicSkeletons/BasicTextSkeleton.vue"; - + @@ -26,7 +26,7 @@ import BasicTextSkeleton from "components/basicSkeletons/BasicTextSkeleton.vue";
- +
diff --git a/src/components/flights/FlightEditSkeleton.vue b/src/components/flights/FlightEditSkeleton.vue index bde00f0..1d8ef4e 100644 --- a/src/components/flights/FlightEditSkeleton.vue +++ b/src/components/flights/FlightEditSkeleton.vue @@ -1,7 +1,20 @@ + + + + + + + + + + + + diff --git a/src/components/flights/FlightTrackMap.vue b/src/components/flights/FlightTrackMap.vue index 6d29e64..356ede0 100644 --- a/src/components/flights/FlightTrackMap.vue +++ b/src/components/flights/FlightTrackMap.vue @@ -33,7 +33,7 @@ const pointsOfInterests = computed(() => { } path.push({ - label: flight.value.takeoffAirport.name, + label: flight.value.landingAirport.name, position: { lat: flight.value.landingAirport.gpsLatitude, lng: flight.value.landingAirport.gpsLongitude diff --git a/src/components/flights/form/FlightFormBasic.vue b/src/components/flights/form/FlightFormBasic.vue index 1b1e169..d53348b 100644 --- a/src/components/flights/form/FlightFormBasic.vue +++ b/src/components/flights/form/FlightFormBasic.vue @@ -6,22 +6,23 @@ import DatetimePicker from "components/inputs/DatetimePicker.vue"; import ComboboxInput from "components/inputs/ComboboxInput.vue"; import {commonProps} from "src/composables/inputs"; import {isRequired} from "src/composables/form/rules"; +import {isRequestPending} from "src/composables/form/props"; const props = defineProps({ - aircrafts: { - type: Array, - required: true - }, - airports: { - type: Array, - required: true - }, - flight: { - type: Object, - required: false - } - } -) + aircrafts: { + type: Array, + required: true + }, + airports: { + type: Array, + required: true + }, + flight: { + type: Object, + required: false + }, + isRequestPending, +}); const formData = reactive({ aircraft: null, @@ -69,7 +70,7 @@ watch(() => formData.takeoffAirport, () => {