From e8dc51a80d55aaab3db1fdf661cdf1b466a143dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Thu, 25 Jul 2024 19:51:15 +0200 Subject: [PATCH] Vykreslovat trasu na zaklade dat z z db --- src/components/event/EventFlightsMap.vue | 4 +- src/components/flights/FlightBasicInfo.vue | 2 +- src/components/flights/FlightTrackMap.vue | 37 ++++++++++++------- .../flights/form/FlightFormTrack.vue | 4 +- src/components/map/MapWithMarkers.vue | 26 ++++++------- src/composables/flight.js | 2 +- src/graphql/fragments/flight.js | 23 ++++++++---- src/graphql/fragments/flight_list.js | 2 +- src/graphql/queries/event.js | 2 +- src/pages/profile/flight/FlightDetailPage.vue | 2 +- 10 files changed, 58 insertions(+), 46 deletions(-) diff --git a/src/components/event/EventFlightsMap.vue b/src/components/event/EventFlightsMap.vue index 5732558..a81cfc2 100644 --- a/src/components/event/EventFlightsMap.vue +++ b/src/components/event/EventFlightsMap.vue @@ -36,8 +36,8 @@ useEventsStore().fetchFlightsTracks({ for (const flightTrack of data.flights) { totalTime.value += flightTrack.durationMinCalculated; - if (flightTrack.gpxTrack) { - tracks.value.push(flightTrack.gpxTrack.coordinates); + if (flightTrack.track) { + tracks.value.push(flightTrack.track.coordinates); } } }); diff --git a/src/components/flights/FlightBasicInfo.vue b/src/components/flights/FlightBasicInfo.vue index b557430..0dfa23c 100644 --- a/src/components/flights/FlightBasicInfo.vue +++ b/src/components/flights/FlightBasicInfo.vue @@ -82,7 +82,7 @@ const props = defineProps({ - + diff --git a/src/components/flights/FlightTrackMap.vue b/src/components/flights/FlightTrackMap.vue index 5d70a01..18612c1 100644 --- a/src/components/flights/FlightTrackMap.vue +++ b/src/components/flights/FlightTrackMap.vue @@ -21,7 +21,7 @@ const props = defineProps({ const mapPhotos = computed(() => props.photos.filter(photo => photo.gpsLatitude && photo.gpsLongitude)); -const poisWithGPS = computed(() => props.flight.track.map(poi => poi.pointOfInterest || poi.airport)); +const poisWithGPS = computed(() => props.flight.turnPoints.map(poi => poi.pointOfInterest || poi.airport)); const mapMarkers = [props.flight.takeoffAirport].concat(poisWithGPS.value).concat([props.flight.landingAirport]); const pointsOfInterests = computed(() => mapMarkers @@ -30,10 +30,12 @@ const pointsOfInterests = computed(() => mapMarkers marker => ({label: marker.name, position: {lat: marker.gpsLatitude, lng: marker.gpsLongitude}}) )); -const gpxTrack = props.flight.gpxTrack ? reactive(props.flight.gpxTrack) : null; +// Tuu bylo reactive() +const flightTrack = props.flight.track ? props.flight.track.points : null; + const displayMap = computed(() => { return ( - !!gpxTrack || + !!flightTrack || mapPhotos.value.length > 0 || poisWithGPS.value.length > 0 || props.flight.landingAirport.id !== props.flight.takeoffAirport.id @@ -41,8 +43,14 @@ const displayMap = computed(() => { }); let chartSpeedData, chartAltitudeData = null; -if (gpxTrack) { - const chartLabels = gpxTrack.time.map(t => { +if (flightTrack) { + + const timestamp = flightTrack.map(i => i.timestamp); + const speed = flightTrack.map(i => i.speed); + const altitude = flightTrack.map(i => i.altitude); + const terrainElevation = flightTrack.map(i => i.terrainElevation || 0); + + const chartLabels = timestamp.map(t => { const datetime = new Date(t); return datetime.getHours() + ":" + datetime.getMinutes(); }); @@ -52,7 +60,7 @@ if (gpxTrack) { backgroundColor: "#38bd3e", borderColor: "#38bd3e", label: "Rychlost (km/h)", - data: gpxTrack.speed, + data: speed, pointRadius: 1, }] }; @@ -63,18 +71,18 @@ if (gpxTrack) { backgroundColor: "#9ae3ff", borderColor: "#9ae3ff", label: "Nadmořská výška letu (m)", - data: gpxTrack.altitude, + data: altitude, pointRadius: 1, }] }; - if (gpxTrack.terrainElevation.length > 0) { + if (terrainElevation.length > 0) { chartAltitudeData.datasets.push( { backgroundColor: "rgba(148,94,40,0.7)", borderColor: "#945e28", label: "Nadmořská výška země (m)", - data: gpxTrack.terrainElevation, + data: terrainElevation, fill: true, pointRadius: 1, }); @@ -90,7 +98,7 @@ const drawCurrentPositionMarker = (e) => { return; } const idx = res[0].index; - currentPositionMarker.value = props.flight.gpxTrack.coordinates[idx]; + currentPositionMarker.value = props.flight.track.points[idx].coordinates; } const chartOptions = { @@ -108,8 +116,8 @@ const {getMarkersFrom} = useFlightPlanUtils(); const showPlanTrack = ref(true); const tracks = computed(() => { const items = []; - if (props.flight.gpxTrack) { - items.push(props.flight.gpxTrack.coordinates) + if (props.flight.track) { + items.push(props.flight.track.points.map(m => m.coordinates)) } if (showPlanTrack.value && props.flightPlan) { items.push(getMarkersFrom(props.flightPlan).map(m => ({lat: m.gpsLatitude, lng: m.gpsLongitude}))); @@ -122,6 +130,7 @@ const tracks = computed(() => { + { v-bind="$attrs" /> - - + + diff --git a/src/components/flights/form/FlightFormTrack.vue b/src/components/flights/form/FlightFormTrack.vue index da068bf..1124739 100644 --- a/src/components/flights/form/FlightFormTrack.vue +++ b/src/components/flights/form/FlightFormTrack.vue @@ -51,7 +51,7 @@ watch(poi, (newVal) => { } }); -watch(() => props.flight.track, (newVal) => { +watch(() => props.flight.turnPoints, (newVal) => { formData.track = []; for (const i in newVal) { const trackInfo = newVal[i]; @@ -76,7 +76,7 @@ watch(() => props.flight.track, (newVal) => {