From e1e97656ef05517eedf32fe7c985d7d9f0f8e558 Mon Sep 17 00:00:00 2001 From: Sara <sarasdj@stud.ntnu.no> Date: Mon, 19 Feb 2024 13:43:10 +0100 Subject: [PATCH] add: sattelite layer button --- app/lib/pages/marker_handler/get_markers.dart | 12 ++++++---- app/lib/pages/marker_handler/marker_data.dart | 6 +++-- app/lib/pages/widgets/map_widget.dart | 22 +++++++++++++++++- .../__pycache__/get_weather.cpython-311.pyc | Bin 4154 -> 4154 bytes .../__pycache__/get_markers.cpython-311.pyc | Bin 4174 -> 4174 bytes 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/app/lib/pages/marker_handler/get_markers.dart b/app/lib/pages/marker_handler/get_markers.dart index ebc50274..cb448d91 100644 --- a/app/lib/pages/marker_handler/get_markers.dart +++ b/app/lib/pages/marker_handler/get_markers.dart @@ -7,12 +7,16 @@ import 'marker_data.dart'; // fetchMarkerTemplate requests all marker data from the server Future<List<Measurement>> fetchMarkerData() async { try { + // Custom HTTP client HttpClient client = HttpClient() - ..badCertificateCallback = (X509Certificate cert, String host, int port) => true; + ..badCertificateCallback = // NB: temporary disable SSL certificate validation + (X509Certificate cert, String host, int port) => true; + // Request makers from API and wait for response var request = await client.getUrl(Uri.parse(serverURI + mapEndpoint)); var response = await request.close(); + // Attempt to parse json if request is ok if (response.statusCode == 200) { var responseBody = await response.transform(utf8.decoder).join(); @@ -22,10 +26,10 @@ Future<List<Measurement>> fetchMarkerData() async { } else { print('Request failed with status: ${response.statusCode}'); - throw Exception('Failed to parse marker data'); + throw Exception('failed to parse marker data'); } } catch (e) { - print('Error: $e'); - throw Exception('failed to connect to the server. Please check your network connection'); + print('Request failed with error ${e}'); + throw Exception('failed to connect to the server. Please check your network connection: ${e}'); } } diff --git a/app/lib/pages/marker_handler/marker_data.dart b/app/lib/pages/marker_handler/marker_data.dart index fe0d4060..e6a86af1 100644 --- a/app/lib/pages/marker_handler/marker_data.dart +++ b/app/lib/pages/marker_handler/marker_data.dart @@ -1,6 +1,8 @@ +import 'dart:core'; + class Measurement { int measurementID; - int timeMeasured; + DateTime timeMeasured; Sensor sensor; List<Data> dataList; List<Corner> cornerList; @@ -18,7 +20,7 @@ class Measurement { factory Measurement.Measurement(Map<String, dynamic> json) { return Measurement( measurementID: json['MeasurementID'], - timeMeasured: json['TimeMeasured'], + timeMeasured: DateTime.parse(json['TimeMeasured']), sensor: Sensor.fromJson(json['Sensor']), dataList: (json['Data'] as List<dynamic>) .map((data) => Data.fromJson(data)) diff --git a/app/lib/pages/widgets/map_widget.dart b/app/lib/pages/widgets/map_widget.dart index dc92f6de..b8708dc6 100644 --- a/app/lib/pages/widgets/map_widget.dart +++ b/app/lib/pages/widgets/map_widget.dart @@ -20,6 +20,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { Measurement? selectedMarker; bool isMinimized = true; // Quick view box state tacker + bool satLayer = false; // Satellite layer visibility tracker @override Widget build(BuildContext context) { @@ -55,7 +56,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { polygons: widget.markerList.map((Measurement measurement) { return Polygon( points: measurement.cornerList.map((Corner corner) { - // Map corners to LatLng objects + // Map corner coordinates to LatLng objects return LatLng(corner.latitude, corner.longitude); }).toList(), /*onTap: () { @@ -112,6 +113,25 @@ class _MapContainerWidgetState extends State<MapContainerWidget> { ), ), ), + Positioned( + top: 10, + right: 10, + child: GestureDetector( + onTap: () { + setState(() { + satLayer = !satLayer; // Toggle satellite layer state on press + }); + }, + child: Container( + padding: const EdgeInsets.all(8), + decoration: satLayer ? const BoxDecoration( // Add decoration only when pressed + shape: BoxShape.circle, + color: Colors.blue, + ) : null, + child: const Icon(Icons.satellite_alt_outlined), + ), + ), + ), ], ), ), diff --git a/server/APIs/__pycache__/get_weather.cpython-311.pyc b/server/APIs/__pycache__/get_weather.cpython-311.pyc index c48ae510b8dcd144dfcf8a877ec949cbd66f1107..ab855e0b7f401aed51ed98d992a3903f0e12b059 100644 GIT binary patch delta 22 ccmdm`uuFk=IWI340}$l0pG&>Jkylp$07Z8O4gdfE delta 22 ccmdm`uuFk=IWI340}wE>o=e@jkylp$06@tFb^rhX diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc index 46facb818c457bb01157ffbd7d0c285473aad2e6..d1b483af8869c5a8987667bd35afdf5e83010ab2 100644 GIT binary patch delta 20 acmX@7a87}HIWI340}$l0pWDdoEC2vH9t8vd delta 20 acmX@7a87}HIWI340}$-`dv+tYvj6}=_y$G* -- GitLab