diff --git a/app/lib/data_classes.dart b/app/lib/data_classes.dart index 554953821fc25f0973eb109fcc7248c17c896029..c2eae490c3754ae00b81dd2c8a1d382fd5264e10 100644 --- a/app/lib/data_classes.dart +++ b/app/lib/data_classes.dart @@ -8,7 +8,7 @@ class Measurement { Sensor sensor; String bodyOfWater; LatLng center; - List <SubDiv> subDiv; + List <SubDiv> subDivs; List <LatLng> corners; Measurement({ @@ -17,7 +17,7 @@ class Measurement { required this.sensor, required this.bodyOfWater, required this.center, - required this.subDiv, + required this.subDivs, required this.corners, }); @@ -28,14 +28,14 @@ class Measurement { sensor: Sensor.fromJson(json['Sensor']), bodyOfWater: json['BodyOfWater'] ?? 'nil', center: LatLng(json['CenterLat'], json['CenterLon']), - subDiv: (json['Subdivisions'] as List<dynamic>).map((data) => SubDiv.fromJson(data)).toList(), + subDivs: (json['Subdivisions'] as List<dynamic>).map((data) => SubDiv.fromJson(data)).toList(), corners: (json['Corners'] as List<dynamic>).map((corner) => LatLng(corner[0], corner[1])).toList(), ); } } class SubDiv { - int sub_div_id; + String sub_div_id; int groupID; double minThickness; double avgThickness; @@ -57,7 +57,7 @@ class SubDiv { factory SubDiv.fromJson(Map<String, dynamic> json) { return SubDiv( - sub_div_id: json['SubdivID'], + sub_div_id: json['SubdivID'].toString(), groupID: json['GroupID'], minThickness: json['MinThickness'], avgThickness: json['AvgThickness'], diff --git a/app/lib/widgets/choropleth_map.dart b/app/lib/widgets/choropleth_map.dart index 1dd7b7178fedbdd757b5655aa4805cfc6d400a7a..f2e258d2292a469f421ef10b77ed4504eca44f4a 100644 --- a/app/lib/widgets/choropleth_map.dart +++ b/app/lib/widgets/choropleth_map.dart @@ -37,27 +37,18 @@ class _ChoroplethMapState extends State<ChoroplethMap> { int selectedIndex = -1; late MapShapeSource mapShapeSource; late final MapZoomPanBehavior _zoomPanBehavior = MapZoomPanBehavior(); - List<IceThicknessModel> iceThicknessList = <IceThicknessModel>[]; - List<Color> testColors = [ // NB test color - const Color(0xff8a003b), - const Color(0xff8a4300), - const Color(0xff8a7a00), - const Color(0xff538a00), - const Color(0xff007b8a), - ]; + List<SubDiv> subdivisions = <SubDiv>[]; + @override void initState() { super.initState(); - - final Random random = Random(); - for (int i = 0; i <= 120; i++) { - int ran = random.nextInt(5); // NB test color - Color randomColor = testColors[ran]; - - int randomNumber = random.nextInt(21); // 0 -> 20, NB: temp test data - iceThicknessList.add(IceThicknessModel(i.toString(), randomNumber, randomColor, randomColor)); - } + // Create list of all subdivisions + for (Measurement measurement in widget.measurements) { + for (SubDiv subdivision in measurement.subDivs) { + subdivisions.add(subdivision); + } + }; } @override @@ -70,9 +61,9 @@ class _ChoroplethMapState extends State<ChoroplethMap> { source: MapShapeSource.memory( // Map polygon widget.relation, // JSON coordinates from server shapeDataField: 'sub_div_id', - dataCount: iceThicknessList.length, - primaryValueMapper: (int index) => iceThicknessList[index].sub_div_id, - shapeColorValueMapper: (int index) => iceThicknessList[index].color, + dataCount: widget.measurements.length, + primaryValueMapper: (int index) => subdivisions[index].sub_div_id, + shapeColorValueMapper: (int index) => subdivisions[index].color, ), //color: Colors.blue.shade400, // Map color zoomPanBehavior: _zoomPanBehavior, @@ -82,8 +73,8 @@ class _ChoroplethMapState extends State<ChoroplethMap> { onSelectionChanged: (int index) { setState(() { selectedIndex = index; - for (int i = 0; i < iceThicknessList.length; i++) { - iceThicknessList[i].color = i == index ? Colors.red : iceThicknessList[i].savedColor; + for (int i = 0; i < subdivisions.length; i++) { + subdivisions[i].color = i == index ? Colors.red : subdivisions[i].savedColor; } }); widget.onSelectionChanged(selectedIndex);