Zobrazeni pocasi po trase planu
This commit is contained in:
-1
@@ -18,7 +18,6 @@ const props = defineProps({
|
|||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
// name: 'from',
|
|
||||||
label: 'Z',
|
label: 'Z',
|
||||||
align: "left",
|
align: "left",
|
||||||
field: 'from'
|
field: 'from'
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
<script setup>
|
||||||
|
|
||||||
|
import {computed} from "vue";
|
||||||
|
import {textEllipsis} from "src/composables/utils";
|
||||||
|
import {minutesToHumanReadable} from "src/composables/datetimeUtils";
|
||||||
|
import {useFlightPlanUtils} from "src/composables/flightPlan";
|
||||||
|
import {useQuasar} from "quasar";
|
||||||
|
import {useUnitsConvertors} from "src/composables/units";
|
||||||
|
import CloudCoverIcon from "components/weather/CloudCoverIcon.vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
flightPlan: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const columns = [
|
||||||
|
|
||||||
|
{
|
||||||
|
label: 'Místo',
|
||||||
|
align: "left",
|
||||||
|
name: 'place',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'right',
|
||||||
|
label: 'Teplota',
|
||||||
|
name: 'temperature',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'right',
|
||||||
|
label: 'Vítr',
|
||||||
|
name: 'wind',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
align: 'right',
|
||||||
|
label: 'Oblačnost',
|
||||||
|
name: 'clouds',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const {screen} = useQuasar();
|
||||||
|
const {getMarkersFrom} = useFlightPlanUtils();
|
||||||
|
const {kmhToKnots} = useUnitsConvertors();
|
||||||
|
|
||||||
|
const markers = getMarkersFrom(props.flightPlan);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<q-table
|
||||||
|
:grid="screen.xs"
|
||||||
|
:dense="screen.lt.md"
|
||||||
|
flat bordered
|
||||||
|
hide-bottom
|
||||||
|
:title="flightPlan.name"
|
||||||
|
:rows="markers"
|
||||||
|
:columns="columns"
|
||||||
|
:rows-per-page-options="[0]"
|
||||||
|
>
|
||||||
|
<template v-slot:body-cell-place="props">
|
||||||
|
<q-td :props="props">
|
||||||
|
{{ props.row.name }}
|
||||||
|
</q-td>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template v-slot:body-cell-temperature="props">
|
||||||
|
<q-td :props="props">
|
||||||
|
{{ props.row.weatherInfo.temperatureSurface }}° C
|
||||||
|
<br>
|
||||||
|
Rosný bod {{ props.row.weatherInfo.dewpointSurface }}° C
|
||||||
|
</q-td>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template v-slot:body-cell-wind="props">
|
||||||
|
<q-td :props="props">
|
||||||
|
<q-icon name="navigation" :style="`transform: rotate(${props.row.weatherInfo.windDirectionSurface}deg)`"/>
|
||||||
|
<br>
|
||||||
|
{{ props.row.weatherInfo.windDirectionSurface }}°
|
||||||
|
<br>
|
||||||
|
{{ kmhToKnots(props.row.weatherInfo.windSpeedSurface) }} kt
|
||||||
|
</q-td>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template v-slot:body-cell-clouds="props">
|
||||||
|
<q-td :props="props">
|
||||||
|
<CloudCoverIcon :cloudcover="props.row.weatherInfo.cloudcoverTotal"/>
|
||||||
|
<br>
|
||||||
|
celkové pokrytí oblačností {{ props.row.weatherInfo.cloudcoverTotal }} %
|
||||||
|
<br>
|
||||||
|
nízké mraky {{ props.row.weatherInfo.cloudcoverLow }} %
|
||||||
|
</q-td>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
</q-table>
|
||||||
|
</template>
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import {ref} from "vue";
|
import {ref} from "vue";
|
||||||
import CloudCoverIcon from "components/weather/CloudCoverIcon.vue";
|
import CloudCoverIcon from "components/weather/CloudCoverIcon.vue";
|
||||||
|
import {useUnitsConvertors} from "src/composables/units";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
weather: {
|
weather: {
|
||||||
@@ -9,9 +10,7 @@ const props = defineProps({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const kmhToKnots = (speedKmh) => {
|
const {kmhToKnots} = useUnitsConvertors();
|
||||||
return Math.round(speedKmh * 0.53996);
|
|
||||||
}
|
|
||||||
|
|
||||||
const openDetail = ref(false);
|
const openDetail = ref(false);
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,3 +1,8 @@
|
|||||||
export const ktToKph = (speedInKt) => {
|
export const useUnitsConvertors = () => {
|
||||||
return speedInKt;
|
|
||||||
|
const kmhToKnots = (speedKmh) => {
|
||||||
|
return Math.round(speedKmh * 0.53996);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {kmhToKnots}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import gql from "graphql-tag";
|
import gql from "graphql-tag";
|
||||||
|
import {FRAGMENT_WEATHER_FULL_INFO} from "src/graphql/fragments/flight";
|
||||||
|
|
||||||
export const FRAGMENT_FLIGHT_PLAN_MARKER = gql`
|
export const FRAGMENT_FLIGHT_PLAN_MARKER = gql`
|
||||||
fragment flightPlanMarker on FlightPlanMarker {
|
fragment flightPlanMarker on FlightPlanMarker {
|
||||||
@@ -9,7 +10,13 @@ fragment flightPlanMarker on FlightPlanMarker {
|
|||||||
gpsLongitude
|
gpsLongitude
|
||||||
pointOfInterestId
|
pointOfInterestId
|
||||||
airportId
|
airportId
|
||||||
|
|
||||||
|
weatherInfo {
|
||||||
|
...weatherFullInfo
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
${FRAGMENT_WEATHER_FULL_INFO}
|
||||||
`
|
`
|
||||||
|
|
||||||
export const FRAGMENT_FLIGHT_PLAN_FULL_INFO = gql`
|
export const FRAGMENT_FLIGHT_PLAN_FULL_INFO = gql`
|
||||||
|
|||||||
@@ -22,12 +22,13 @@ import FlightPlanSideControls from "components/flightPlans/FlightPlanSideControl
|
|||||||
import {useAircraftsStore} from "stores/Aircrafts";
|
import {useAircraftsStore} from "stores/Aircrafts";
|
||||||
import {errorObject, successObject} from "src/composables/dialog";
|
import {errorObject, successObject} from "src/composables/dialog";
|
||||||
import {useQuasar} from "quasar";
|
import {useQuasar} from "quasar";
|
||||||
import FlightPlanRouteTable from "components/flightPlans/FlightPlanRouteTable.vue";
|
import FlightPlanNavLogTable from "components/flightPlans/FlightPlanNavLogTable.vue";
|
||||||
import FlightPlanForm from "components/flightPlans/FlightPlanForm.vue";
|
import FlightPlanForm from "components/flightPlans/FlightPlanForm.vue";
|
||||||
import {useFlightsStore} from "stores/Flights";
|
import {useFlightsStore} from "stores/Flights";
|
||||||
import {useRouter} from "vue-router";
|
import {useRouter} from "vue-router";
|
||||||
import FlightFromPlanForm from "components/flightPlans/FlightFromPlanForm.vue";
|
import FlightFromPlanForm from "components/flightPlans/FlightFromPlanForm.vue";
|
||||||
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
|
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
|
||||||
|
import FlightPlanWeatherInfo from "components/flightPlans/FlightPlanWeatherInfo.vue";
|
||||||
|
|
||||||
const {flightPlan} = storeToRefs(useFlightPlansStore());
|
const {flightPlan} = storeToRefs(useFlightPlansStore());
|
||||||
const flightPlanName = computed(() => flightPlan.value.name || "Nepojmenovaný plán");
|
const flightPlanName = computed(() => flightPlan.value.name || "Nepojmenovaný plán");
|
||||||
@@ -156,6 +157,11 @@ const createNewFlightFromPlan = (formData) => {
|
|||||||
Informace
|
Informace
|
||||||
</q-tab>
|
</q-tab>
|
||||||
|
|
||||||
|
<q-tab name="weather">
|
||||||
|
<q-icon name="mdi-weather-windy"/>
|
||||||
|
Počasí
|
||||||
|
</q-tab>
|
||||||
|
|
||||||
<q-tab name="navLog">
|
<q-tab name="navLog">
|
||||||
<q-icon name="navigation"/>
|
<q-icon name="navigation"/>
|
||||||
Navigační štítek
|
Navigační štítek
|
||||||
@@ -208,12 +214,16 @@ const createNewFlightFromPlan = (formData) => {
|
|||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
|
|
||||||
<q-tab-panel name="navLog">
|
<q-tab-panel name="navLog">
|
||||||
<FlightPlanRouteTable
|
<FlightPlanNavLogTable
|
||||||
:flight-plan="flightPlan"
|
:flight-plan="flightPlan"
|
||||||
:planned-speed="flightPlan.plannedSpeed"
|
:planned-speed="flightPlan.plannedSpeed"
|
||||||
/>
|
/>
|
||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
|
|
||||||
|
<q-tab-panel name="weather">
|
||||||
|
<FlightPlanWeatherInfo :flight-plan="flightPlan" />
|
||||||
|
</q-tab-panel>
|
||||||
|
|
||||||
<q-tab-panel name="flight" v-if="flightPlan.aircraft">
|
<q-tab-panel name="flight" v-if="flightPlan.aircraft">
|
||||||
<BasicInfoBanner v-if="!takeoffAirport || !landingAirport" color="error">
|
<BasicInfoBanner v-if="!takeoffAirport || !landingAirport" color="error">
|
||||||
V plánu nemáš žádné letiště vzletu nebo přistání. Pro import letu musíš nahrát trasu.
|
V plánu nemáš žádné letiště vzletu nebo přistání. Pro import letu musíš nahrát trasu.
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import {usePointsOfInterestStore} from "stores/PointsOfInterest";
|
|||||||
import {useAirportsStore} from "stores/Airports";
|
import {useAirportsStore} from "stores/Airports";
|
||||||
import {formatDatetime, minutesToHumanReadable} from "src/composables/datetimeUtils";
|
import {formatDatetime, minutesToHumanReadable} from "src/composables/datetimeUtils";
|
||||||
import {useFlightPlanCalculations, useFlightPlanUtils} from "src/composables/flightPlan";
|
import {useFlightPlanCalculations, useFlightPlanUtils} from "src/composables/flightPlan";
|
||||||
import FlightPlanRouteTable from "components/flightPlans/FlightPlanRouteTable.vue";
|
import FlightPlanRouteTable from "components/flightPlans/FlightPlanNavLogTable.vue";
|
||||||
import {useMeta} from "quasar";
|
import {useMeta} from "quasar";
|
||||||
import {metaData} from "src/composables/meta";
|
import {metaData} from "src/composables/meta";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user