Skip to content
Snippets Groups Projects
Commit 40aa2528 authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

update: subdiv list in init

parent 74c57018
No related branches found
No related tags found
1 merge request!16Clhp map into main
......@@ -11,12 +11,12 @@ const String mapEndpoint = "update_map";
// Map variables
String selectedLake = 'Mjøsa'; // NB should be initialised to last selected lake
Uint8List selectedRelation = Uint8List(0);
Uint8List selectedRelation = Uint8List(0); // Initialised in init_state.dart
List<Measurement> selectedMeasurements = [];
List<SubDiv> selectedSubdivisions = [];
SubDiv? selectedSubDiv;
LatLng mapCenter = LatLng(60.8000, 10.8471); // NB may not be necessary
DateTime ?lastUpdate; // Last time data was fetched from server
List<String> lakeSearchOptions = [];
bool internetConnection = true;
......
......@@ -86,6 +86,7 @@ class _DefaultPageState extends State<DefaultPage> {
child: ListView(
children: [
MapContainerWidget(
subdivisions: selectedSubdivisions,
measurements: selectedMeasurements,
relation: selectedRelation,
serverConnection: serverConnection,
......
......@@ -26,13 +26,32 @@ Future<void> initialiseState(bool fetchSearchOptions) async {
List<Measurement> measurements = fetchResult.measurements;
selectedMeasurements = measurements;
// Extract all _subdivisions from list of measurements
for (Measurement measurement in measurements) {
for (SubDiv subdivision in measurement.subDivs) {
selectedSubdivisions.add(subdivision);
}
}
// Sort the list of SubDiv objects based on each subdivision id
selectedSubdivisions.sort((a, b) => a.sub_div_id.compareTo(b.sub_div_id));
print("Loaded from files: Meas.len: ${selectedMeasurements.length}, rel.len: ${selectedRelation.length}");
} else { // Try to fetch measurement data from server
markerListFuture = fetchMeasurements().then((fetchResult) {
List<Measurement> measurements = fetchResult.measurements;
selectedMeasurements = measurements;
// Extract all _subdivisions from list of measurements
for (Measurement measurement in measurements) {
for (SubDiv subdivision in measurement.subDivs) {
selectedSubdivisions.add(subdivision);
}
}
serverConnection = fetchResult.connected;
setLastLake();
setLastLake(); // Update persistent value for latest fetched lake
// Return measurements
return measurements;
......
......@@ -13,11 +13,13 @@ class ChoroplethMap extends StatefulWidget {
Key? key,
required this.relation,
required this.measurements,
required this.subdivisions,
required this.onSelectionChanged,
}) : super(key: key);
final Uint8List relation;
final List<Measurement> measurements;
final List<SubDiv> subdivisions;
final void Function(int selectedIndex) onSelectionChanged;
@override
......@@ -28,7 +30,6 @@ class ChoroplethMapState extends State<ChoroplethMap> {
int selectedIndex = -1; // Subdivision/map tile index
late MapShapeSource dataSource;
late final MapZoomPanBehavior _zoomPanBehavior = MapZoomPanBehavior();
final List<SubDiv> _subdivisions = <SubDiv>[];
void updateDataSource() {
_initDataSource();
......@@ -41,24 +42,12 @@ class ChoroplethMapState extends State<ChoroplethMap> {
}
void _initDataSource() {
_subdivisions.clear();
// Extract all _subdivisions from list of measurements
for (Measurement measurement in widget.measurements) {
for (SubDiv subdivision in measurement.subDivs) {
_subdivisions.add(subdivision);
}
}
// Sort the list of SubDiv objects based on each subdivision id
_subdivisions.sort((a, b) => a.sub_div_id.compareTo(b.sub_div_id));
dataSource = MapShapeSource.memory(
widget.relation,
shapeDataField: 'sub_div_id',
dataCount: _subdivisions.length,
primaryValueMapper: (int index) => _subdivisions[index].sub_div_id,
shapeColorValueMapper: (int index) => _subdivisions[index].avgThickness, // NB will later be minThickness
dataCount: widget.subdivisions.length,
primaryValueMapper: (int index) => widget.subdivisions[index].sub_div_id,
shapeColorValueMapper: (int index) => widget.subdivisions[index].avgThickness, // NB will later be minThickness
shapeColorMappers: const [
MapColorMapper(
from: -2,
......
......@@ -14,11 +14,13 @@ import '../utils/format_month.dart';
/// MapContainerWidget is the main widget that contains the map with all
/// its layers, polygons and markers.
class MapContainerWidget extends StatefulWidget {
final List<SubDiv> subdivisions;
final List<Measurement> measurements;
final Uint8List relation;
final bool serverConnection;
const MapContainerWidget({Key? key,
required this.subdivisions,
required this.measurements,
required this.relation,
required this.serverConnection,
......@@ -105,6 +107,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
child: ChoroplethMap(
relation: widget.relation,
measurements: widget.measurements,
subdivisions: widget.subdivisions,
onSelectionChanged: handleSelection,
),
),
......
File added
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment