From 4d02f8f17496aa933d55779e341c11dc2b26ba57 Mon Sep 17 00:00:00 2001 From: Abderrahman AIT SAID Date: Fri, 14 Mar 2025 05:23:43 +0000 Subject: [PATCH 01/18] add multiple airplanes to schema context and types --- .../context-service/resources/ATM/schemas.py | 29 ++++- frontend/src/entities/ATM/CAB/Context.vue | 113 ++++++++++++------ frontend/src/entities/ATM/types.ts | 95 +++++++++------ 3 files changed, 164 insertions(+), 73 deletions(-) diff --git a/backend/context-service/resources/ATM/schemas.py b/backend/context-service/resources/ATM/schemas.py index 1dfe9489..e92a26b8 100644 --- a/backend/context-service/resources/ATM/schemas.py +++ b/backend/context-service/resources/ATM/schemas.py @@ -2,10 +2,35 @@ from api.schemas import MetadataSchema from apiflask.fields import Dict, String, Float, List, Integer -class MetadataSchemaATM(MetadataSchema): +from apiflask import Schema, fields +from marshmallow import pre_load +class PlaneMetadataSchemaATM(MetadataSchema): + id_plane = Integer() ApDest = Dict() Current_airspeed = Float() Latitude = Float() Longitude = Float() wpList = List(Dict()) - id_plane = Integer() + +class MetadataSchemaATM(MetadataSchema): + airplanes = List(fields.Nested(PlaneMetadataSchemaATM), required=True) + + # Backward compatibility: optional fields for the single airplane case + ApDest = Dict(required=False) + Current_airspeed = Float(required=False) + Latitude = Float(required=False) + Longitude = Float(required=False) + wpList = List(Dict(), required=False) + + @pre_load + def handle_backward_compatibility(self, data, **kwargs): + # If the new 'airplanes' field is not provided, assume the old format. + if 'airplanes' not in data: + airplane = {} + for field in ['ApDest', 'Current_airspeed', 'Latitude', 'Longitude', 'wpList']: + if field in data: + airplane[field] = data[field] + # Provide a default id_plane if not present. + airplane.setdefault('id_plane', 1) + data['airplanes'] = [airplane] + return data \ No newline at end of file diff --git a/frontend/src/entities/ATM/CAB/Context.vue b/frontend/src/entities/ATM/CAB/Context.vue index b030d08a..4305287a 100644 --- a/frontend/src/entities/ATM/CAB/Context.vue +++ b/frontend/src/entities/ATM/CAB/Context.vue @@ -3,18 +3,17 @@ +