Vertikalni profil trasy, generovani bodu v planu

This commit is contained in:
Michal Kváček
2024-08-22 16:22:20 +02:00
parent 2e70f7bc2b
commit 25b0beb958
4 changed files with 17 additions and 16 deletions
@@ -2,6 +2,8 @@ import asyncio
from typing import Optional
from sqlalchemy import delete, select
from sqlalchemy.dialects.mysql import insert
from background_jobs.flight_plan_track import generate_track_for_flight_plan
from database import models
from database.models import flight_plan_has_copilot
from database.transaction import get_session
@@ -10,6 +12,7 @@ from graphql_schema.entities.resolvers.base import BaseMutationResolver, BaseQue
from graphql_schema.entities.resolvers.flight import handle_aircraft_save
from graphql_schema.entities.types.mutation_input import CreateFlightPlanInput, EditFlightPlanInput
from graphql_schema.entities.types.types import FlightPlan
from utils.list_utils import evenly_spaced_elements
from utils.str_utils import random_str
@@ -70,8 +73,6 @@ class FlightPlanMutationResolver(BaseMutationResolver):
})
position += 1
@staticmethod
async def reset_plan_markers(db, flight_plan: models.FlightPlan):
await db.execute(
@@ -118,7 +119,10 @@ class FlightPlanMutationResolver(BaseMutationResolver):
if data.markers:
markers = data.markers
else:
markers = (await db.scalars(select(models.FlightPlanMarker).filter(models.FlightPlanMarker.flight_plan_id == id))).all()
markers = (await db.scalars(
select(models.FlightPlanMarker)
.filter(models.FlightPlanMarker.flight_plan_id == id)
)).all()
used_markers = evenly_spaced_elements(markers, 5)
input_data['name'] = " - ".join(m.name for m in used_markers)
@@ -132,11 +136,7 @@ class FlightPlanMutationResolver(BaseMutationResolver):
)
flight_plan = await self._do_update(db, obj=flight_plan_model, data=input_data)
return flight_plan
await generate_track_for_flight_plan(flight_plan.id)
def evenly_spaced_elements(lst: list, count: int) -> list:
if count > len(lst):
return lst
interval = (len(lst) - 1) / (count - 1) if count > 1 else 0
return [lst[int(round(i * interval))] for i in range(count)]
return flight_plan