From f94c0b61859827f9f67a7a8f2d7cb09d67c12c91 Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Mon, 18 Mar 2024 19:48:38 +0100
Subject: [PATCH] dix: coloroed map on app

---
 app/lib/pages/widgets/cloropleth_map.dart     |  41 +++++++++++++-----
 .../__pycache__/get_relation.cpython-311.pyc  | Bin 6692 -> 5761 bytes
 server/map/get_relation.py                    |   4 +-
 3 files changed, 34 insertions(+), 11 deletions(-)

diff --git a/app/lib/pages/widgets/cloropleth_map.dart b/app/lib/pages/widgets/cloropleth_map.dart
index 55afa8df..632a504b 100644
--- a/app/lib/pages/widgets/cloropleth_map.dart
+++ b/app/lib/pages/widgets/cloropleth_map.dart
@@ -7,10 +7,11 @@ import 'dart:convert';
 
 /// A class containing thickness data for each subdivision of the map.
 class IceThicknessModel {
-  IceThicknessModel(this.subDivID, this.thickness);
+  IceThicknessModel(this.sub_div_id, this.thickness, this.color);
 
-  final String subDivID;
+  final String sub_div_id;
   final int thickness;
+  final Color color;
 }
 
 /// ChoroplethMap is a stateful widget that contains a choropleth map.
@@ -30,6 +31,7 @@ class ChoroplethMap extends StatefulWidget {
 }
 
 class _ChoroplethMapState extends State<ChoroplethMap> {
+  int selectedIndex = -1;
   late MapShapeSource mapShapeSource;
   late final MapZoomPanBehavior _zoomPanBehavior = MapZoomPanBehavior();
   List<IceThicknessModel> iceThicknessList = <IceThicknessModel>[];
@@ -39,9 +41,15 @@ class _ChoroplethMapState extends State<ChoroplethMap> {
     super.initState();
 
     final Random random = Random();
-    for (int i = 0; i <= 60; i++) {
+    for (int i = 0; i <= 120; i++) {
+      int red = random.nextInt(256);
+      int green = random.nextInt(256);
+      int blue = random.nextInt(256);
+
+      Color randomColor = Color.fromRGBO(red, green, blue, 1);
+
       int randomNumber = random.nextInt(21); // 0 -> 20, NB: temp test data
-      iceThicknessList.add(IceThicknessModel(i.toString(), randomNumber));
+      iceThicknessList.add(IceThicknessModel(i.toString(), randomNumber, randomColor));
     }
   }
 
@@ -54,14 +62,27 @@ class _ChoroplethMapState extends State<ChoroplethMap> {
             MapShapeLayer(
               source: MapShapeSource.memory( // Map polygon
                 widget.relation, // JSON coordinates from server
-                shapeDataField: 'properties.sub_div_id',
+                shapeDataField: 'sub_div_id',
                 dataCount: iceThicknessList.length,
-                primaryValueMapper: (int index) => iceThicknessList[index].subDivID,
-                shapeColorValueMapper: (int index) => iceThicknessList[index].thickness,
+                primaryValueMapper: (int index) => iceThicknessList[index].sub_div_id,
+                shapeColorValueMapper: (int index) => iceThicknessList[index].color,
+              ),
+              //color: Colors.blue.shade400, // Map color
+              //zoomPanBehavior: _zoomPanBehavior,
+              //strokeColor: Colors.black,
+              // Shape selection
+              selectedIndex: selectedIndex,
+              onSelectionChanged: (int index) {
+                setState(() {
+                  selectedIndex = index;
+                });
+                print("Selection triggered");
+              },
+              selectionSettings: MapSelectionSettings(
+                color: Colors.orange,
+                strokeColor: Colors.red[900],
+                strokeWidth: 3,
               ),
-              color: Colors.blue.shade400, // Map color
-              zoomPanBehavior: _zoomPanBehavior,
-              strokeColor: Colors.black,
             ),
           ],
         ),
diff --git a/server/map/__pycache__/get_relation.cpython-311.pyc b/server/map/__pycache__/get_relation.cpython-311.pyc
index aa9d38516dd833f6e5af95e22894dbd1ee066866..5fa72e24fbe220c417ab4c9ccf18c4749e3298ba 100644
GIT binary patch
delta 1264
zcma)5UuY9a9G=-^x5;ic*=*A$ZQ7_wYHhWJUaOH_Jvgj)8WlVc|Dv^IVo7PUx!Em<
z>|VXM!ue2`2Pxzr4@WJi=n;f_xQ9EAgL_bDG;npHD1vW31W~B>bTeC48}-2-yWe~>
z-|sj3{dQ-68ToM_cvF@|K;!OD8+oYy8cad%rMEf^pTl`Sm;#m``7F`o$H9fSmSl9Z
z)XgxZ>5$8(6_+7jhf6^d_b+n*+@kkpe8x`DN4ojw{0D`XIV(VI$wtcE3IJ0w((h-@
z55g1FXsfHfH%c2iXa$>W1V3eXzgzl2D!--Ak1d8wnf%E|3!!C5yQcSMKyZEB=y7M%
zxZJE;3KEUJExOpOn*k)1Ia8T#b8}Fj?6Jb8pFNFi@S!dUOcC){WdJPk`hQ3^{U})G
zEY$>+c2eUa?dT&<REjbwh7=TTetUE`P>C^-JQiA|cRg1+=~`QF#<c;!beGFbwb^u~
zo7HnjC3m?lGSSikTdPwoKR_O{(?AZ0=V1p~5=VuE?U^be@<cShz}j39*}h!9Xke{?
zY$2y<80ofH&<jP~m@MY<*h8yvkb>>e4NM+NmtZRy41A|xW(7x?;x!60d2%O^fV;_q
zz&K3^%k5;h9FY!DnH_w+!jY`}I_(YfzQ#_VsMiiZ3#-?%Yf8KUB7Dq&1@9XHs8P}t
z8k=8BY+v=o*QK^a^z*khDP5P+4dC_fU+YYi2kM=J4Zz7?I<P3LCwo_fmG5u+?+w+G
zd+W))_vd~)^~cx0pZy2cGTC}2ySn4(VsK4K{j2mpQu<fEswty&WpvfK*5k?5)V^9g
zQ;%mBjx_|(mUxlaAyoR8w6a$HI~3<scIx{i{0$xO7=t6^Rrt8behtjvboGcD;NW3$
zDzYt(_poK2K`(=y415gI<VK_?b%N286m*ueodpiFwOuY~)u)jmZp`LOxKK1~PSf#e
zs@X#RN<lYtoMaQPR>~Lgh(pobY^l%dB;hk`m$M`r?c;Nl&XX(A*Dyh5W9Nr$Pie-m
z1w2_q+N@KGFS6_b2JAyQ%{V@6FDm2=oFf~tZa72QI~IDf5FUb+Tmv}d)5AIPSI6Z4
D3jhZ=

delta 2153
zcma)7U2M}v96viw>LgB@kH%?QNJB$EvOz})D^jVLpkL6bXwXd>6vRT#Eh+ip>@o&6
zEfdo+DQMk{v_9~V2h>%9NlX=5A9&zxuSsR8m8D8(5)V94X>6MI(%m_@BOTgyvVZrx
z`+wf~f9IQf?;UV|?{YZ+Za?Y23*UNwbVn(ApKU2l{X$JZ_7;$>17HD*?-L!PDRyb6
z$pL`&1qw^?TWu7OT1*bWl*i<?KF-nrC=SIbJ4;@*LN|0l$96Ze9XcWR1syUyfB|ss
zw8BAG$%jn>Egf3|Fx6mk=!W$R*!g{0Jwo$46qmG>8O|nPs>$3GPZa1<kc6L+ow5sh
z9(Wfl*c89jMuFm)n$<L#lG@c!U=k>9=vL}w>l>0@RX8bbS^|J$H<_cUW`oUOgzmpr
zTEl(S^_V9A;cB}l>uX-Od77XV4^G@Gb2C#rO!u!c!b7~>{fe(9obP`p=7awp*e`oa
zHZvwrb=t|x{_Q1D9FPvFFPNrQr2+codf5XT?$UC@RM<3xfx8wZAiGO8@)h^Uf$bjT
zdT71o!nIakT!XyqhQYhE!por4LJWA=_zwe6iV#sF48f+_ji&&%+eL)x*H*u?)l8xk
z#dCp<<K`IGS)0jazBWLqo!HZ`S>3cosU1sE+YM?a`C5qrD>n7x_t#zw-{HcN!MR3-
zswv|weVLl19)Q{q-_XU-7>H3Z3OTWh7_D0-^HAr8h1@_wN(`YyMu^d<9?Nt_N~Hy_
zh|dd%M35JE$cI67)wRw<FcCX3%z`pETzwuMxIL!1b}lldD`i(##nq*`y0(Ofq<yXZ
zgLF=kQrXF_uCB<37gJ&+llUwmB`ygOF_#e{QYs^0(InQz?T`1K@5SBoJ`C6DqSt%(
z^;}gD$)_W=xw(lm%;vH}%%anYtGaz6kra}-bPnlu0Zvw_x==SxMOB*ZwRIpK8>&ZH
z`J+5aWhLE`PfI#0PG895oJ8Fr3ex$6m=}_gZkx!VOak{Pk%hU8UPpRjW5@e6CZLoc
z8r!Ec#8zj-i@8tL$85-f+&BgzSA@F3enJJ+llGINx|M9Cs9PpdlZYH8L~aV5t2#e#
z<c!+M{4O$YOA1*@K)N60rn69hSRsdS^n`??9#$*%0XB&BBDkp`M~CxcJRo<pc+{f4
z?|3<51FmBf-uLB07%JSb#tqL7K4a`<$NmZv*O+*ji9d6Di|Mbj#q7=D+5UoWjj??>
z`uXTww8HQj!<QL;!v?(k+=Y4HoN$NR0JL?Ss$zjz3r1Fh9V@|(A8ZfY4=*owRyzB&
z&i+bpKno5Oxby3*v*?<GcQO@rx5n;XWn(LBZ1L1`UwQ0wnT=K0Ga7rQY&^f&fR(*<
z?B>X=k=YR((&L*w_SEZ}9a-}<&mWyf^MjhFbp!aUjRq8$buX_boqaP;!;v!Eyv8@(
z$!PprI5Yb}0}4ay;b>`SvHRZf#mkj&w-)Yx^zJhMgnAr$a-<R;(&9tqox_C_Yh24J
z*S^BFmu^(J9*yfM8_#+$TyEK43C6Wxyujgv0^z6O&b8Lg4XdTuy#WZYAk?<h!`W#c
zsm+)ZoyHv+C2&?f=^l0LA(X(_(xRKAsd4p@r=?YQq{LKKloHvbfXFdM`v|;4fF-b3
zec@?~CJ80wFA^Q{jbEL-ZXzIXY3ZQ1o9;#XG1uvwh%OOg6RxI2Nkngx0h7xMSu|)+
zIGxGI7()rA@eInS_xv&I6-=+IEB==hum0RHegctS5IRVJ*rCf9bc-k<M9RxpjuBmF
xU@9pgVvg|535;WH+zo%SeVH7bP78<84OI*j+J-1<kSZlNfI;5eol+xw;xA0-<MRLj

diff --git a/server/map/get_relation.py b/server/map/get_relation.py
index 5a384e04..0df98873 100644
--- a/server/map/get_relation.py
+++ b/server/map/get_relation.py
@@ -28,6 +28,7 @@ def get_relation(self, body_of_water: str):  # NB: implement body_of_water
 
         divided_map.extend(combine_grid_with_poly(polygon, lines))
 
+    '''
     ####################### PLOTTIND ############################
     tiles = [gpd.GeoDataFrame(geometry=[tile]) for tile in divided_map]
 
@@ -44,6 +45,7 @@ def get_relation(self, body_of_water: str):  # NB: implement body_of_water
 
     plt.show()
     ##################### PLOTTIND END ###########################
+    '''
 
     features = []
 
@@ -62,7 +64,7 @@ def get_relation(self, body_of_water: str):  # NB: implement body_of_water
         tile_feature = {
             'type': 'Feature',
             'properties': {
-                'sub_div_id': sub_div_id,
+                'sub_div_id': str(sub_div_id),
                 'sub_div_center': center
             },
             'geometry': rounded_tile.__geo_interface__
-- 
GitLab