diff --git a/deploy.sh b/deploy.sh index 3f42bb9..e0dd186 100755 --- a/deploy.sh +++ b/deploy.sh @@ -6,13 +6,10 @@ TAG="latest" DOCKER_REGISTRY="docker.kvacek.cz" CONTAINER_IMAGE="$DOCKER_REGISTRY/$IMAGE_NAME:$TAG" -docker login $DOCKER_REGISTRY # na Ubuntu je potreba sudo apt install gnupg2 pass - +docker login $DOCKER_REGISTRY docker build -t $CONTAINER_IMAGE . docker push $CONTAINER_IMAGE -# TODO: nahrat docker-compose.prod.yml -# TODO: spustit dc down && dc up -# TODO: nahravat i config pro apache? -# TODO: api -> alembic +scp docker-compose.prod.yml michal@kvacek.cz:/var/www/poletani.cz/app/docker-compose.yml +ssh michal@kvacek.cz "cd /var/www/poletani.cz/app && docker-compose pull && docker-compose down --remove-orphans && docker-compose up -d" diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 5903c02..5070edc 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -2,5 +2,6 @@ version: "3.3" services: poletani-app: image: "docker.kvacek.cz/poletani/app:latest" + restart: always ports: - 9000:80 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/FlightBasicInfo.vue b/src/components/flights/FlightBasicInfo.vue index 92a3d2d..88acb71 100644 --- a/src/components/flights/FlightBasicInfo.vue +++ b/src/components/flights/FlightBasicInfo.vue @@ -44,7 +44,7 @@ const props = defineProps({
- {{ flight.takeoffAirport.name }}, + {{flight.takeoffAirport.icaoCode}} ({{ flight.takeoffAirport.name }}), čas vzletu: {{ formatDatetime(flight.takeoffDatetime, FORMAT_TIME) }} @@ -67,7 +67,7 @@ const props = defineProps({
- {{ flight.landingAirport.name }}, + {{ flight.landingAirport.icaoCode }} ({{ flight.landingAirport.name }}), čas přistání: {{ formatDatetime(flight.landingDatetime, FORMAT_TIME) }}
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 316dfa0..c3c581c 100644 --- a/src/components/flights/FlightTrackMap.vue +++ b/src/components/flights/FlightTrackMap.vue @@ -36,7 +36,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/PhotoCarousel.vue b/src/components/flights/PhotoCarousel.vue index 5c22461..16c01d6 100644 --- a/src/components/flights/PhotoCarousel.vue +++ b/src/components/flights/PhotoCarousel.vue @@ -10,6 +10,10 @@ const props = defineProps({ coverPhotoUrl: { type: String, required: false + }, + defaultTitle: { + type: String, + required: false } }) @@ -36,6 +40,7 @@ watch(() => props.photos, (newVal) => { swipeable height="auto" infinite + v-bind="$attrs" > @@ -45,6 +50,7 @@ watch(() => props.photos, (newVal) => { formData.takeoffAirport, () => {