From adf8af2248d41e016592083d4a31c856c3fb741b Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Fri, 10 May 2024 19:26:27 +0200
Subject: [PATCH] add: info button

---
 app/lib/widgets/main_layout.dart              |  68 +++++++++++++++++-
 .../__pycache__/add_new_lake.cpython-311.pyc  | Bin 9894 -> 9899 bytes
 2 files changed, 66 insertions(+), 2 deletions(-)

diff --git a/app/lib/widgets/main_layout.dart b/app/lib/widgets/main_layout.dart
index 1cdb9b08..5f915d0c 100644
--- a/app/lib/widgets/main_layout.dart
+++ b/app/lib/widgets/main_layout.dart
@@ -39,6 +39,8 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
   bool isSatTapped = false;        // Satellite button tap state tracker
   bool isMapTapped = false;        // OSM button tap state tracker
 
+  bool showColorMeanings = false;  // Additional color legend visibility
+
   Measurement? selectedMeasurement = selectedMeasurements[0];
 
   // Initialise lastUpdate variable from persistent storage if server fetch fails
@@ -73,6 +75,46 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
     });
   }
 
+  // _buildLegendItem renders a colored circle and text to form a legend
+  Widget _legendItem(Color color, String text) {
+    return Row(
+      children: [
+        Container(
+          width: 20,
+          height: 20,
+          decoration: BoxDecoration(
+            color: color,
+            shape: BoxShape.circle,
+          ),
+        ),
+        const SizedBox(width: 8),
+        Text(
+          text,
+          style: const TextStyle(
+            fontSize: 14,
+            color: Colors.white,
+          ),
+        ),
+      ],
+    );
+  }
+
+  /// Builds an additional legend to explain the colors
+  Widget _buildLegend() {
+    return Column(
+      children: [
+        _legendItem(const Color(0xffff0000), "Very unsafe"),
+        const SizedBox(height: 10),
+        _legendItem(const Color(0xffff6a00), "Unsafe"),
+        const SizedBox(height: 10),
+        _legendItem(const Color(0xFFb1ff00), "Safe"),
+        const SizedBox(height: 10),
+        _legendItem(const Color(0xFF00d6ff), "Very safe"),
+        const SizedBox(height: 10),
+      ],
+    );
+  }
+
   @override
   Widget build(BuildContext context) {
     // Initialise selectedMarker to first element in markerList
@@ -216,6 +258,28 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
                       ),
                     ),
                   ),
+                  Positioned( // Color info button
+                    top: 130,
+                    right: 10,
+                    child: GestureDetector(
+                      onTap: () {
+                        setState(() {
+                          showColorMeanings = !showColorMeanings; // Toggle satellite layer state on press
+                        });
+                      },
+                      child: Container(
+                        padding: const EdgeInsets.all(8),
+                        decoration: showColorMeanings ? const BoxDecoration( // Add decoration only when pressed
+                          shape: BoxShape.circle,
+                          color: Colors.grey,
+                        ) : null,
+                        child: const Icon(
+                          Icons.info,
+                          color: Colors.white54,
+                        ),
+                      ),
+                    ),
+                  ),
                 ],
               ),
             ),
@@ -246,7 +310,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
                   child: Align(
                     alignment: Alignment.topLeft,
                     child: Padding(
-                      padding: const EdgeInsets.only(top: 20, left: 30), // Updated padding
+                      padding: const EdgeInsets.only(top: 20, left: 30), // Custom padding
                       child: Column(
                         crossAxisAlignment: CrossAxisAlignment.start,
                         children: [
@@ -255,7 +319,7 @@ class _MapContainerWidgetState extends State<MapContainerWidget> {
                             style: titleStyle,
                           ),
                           const Divider(),
-                          const SizedBox(height: 10), // Reduced padding
+                          const SizedBox(height: 10),
                           Text(
                             'Tile ID: ${selectedSubDiv?.sub_div_id}',
                             style: regTextStyle,
diff --git a/server/map_handler/__pycache__/add_new_lake.cpython-311.pyc b/server/map_handler/__pycache__/add_new_lake.cpython-311.pyc
index 4275e07f2c440de66eb2bcb0143d024e5c9475cd..16eb848c6c0ecf96a3d721fd22b4de5d91527f39 100644
GIT binary patch
delta 972
zcmZ4HyV{p`IWI340|NttdWc<G#ztOCUdCUW-Ff#hGU`ue<F8}1nB2-gfiYpTm_RFg
zy*>j2LlGy4Fl1n0(Bvsf1hG{?gc^td%ZGqip&%j*M1(UiFx=uwFUm}b&&kY7ExyHA
zSrh~kW2`9VVPIfTKmtW#ARPuUqLYDvq4+EV149GD2Pp<Vp~+GbubC>CCf}A<+N>!l
z!^oAwxrS>QGXukF=E(;oC8a?w19^p^hG`ii1H)=YFo%JGp_X~FqqNv$UMUHl8ipF?
zGRC5$8s-IDlNp&sC!dotL^Vg5levZ|g*%034ew+_X-`JJ&DGL{jDkg)ATKlC;z-R)
z&QHnAOP~BkMv>8dGM}t;h#ts4Ecpegc||T@W=d&p!7Y}Y{KS+Za7eKf@q#>+29jh<
zyTy`{Sdv)G0`)z_*LENUAYvWJ*S{Gjx5%EaKOugBGw>p3;1$lm4-AZ~G8aO_?(z%w
zRL&6Wtm&!gVEMqz$SMPt0TUlVYQBI7Fc&BB<HrxIavTgCf-_hyu*+Ovm$|{g(?9u)
zoLv2h@C&@57kNXk@P>Y1VC1yD5E*rsN1(@ZLdp!s6|OrJFYwr0<gvNJV{?JW<^wY$
zr!80&nD_`%{{=*Vx%df)qmZ?O)pLPKFfqA7UO`nu)R~j{Fei&MFZ*EuMrU63BkYnc
zy39v(SzHX+kC-sJ7_uibPW~t%y7`uT4U@DMD9Cx-Q}bOCOA_6R5_3~EnTkX}VI4fV
zP|1k#=Hw+x<&5r=Wt4RowI+Ki>xuh<bg-6W=A;(iVou9UFRFs5?o(FcvIQ|g#QDj)
zlrO5~fw-U;FKPg3V#!S`$tYq5F*(yy^9vI5QWA@cv?gy<5oN5Md|V||$qFRLnwFEF
zSW=V#(hN%Lw^&j#lS_&~abILR*-llKYa#;!11Rwp8&6JE{ik5NK=}iM6r=415io^L
KI8E+UlLY{3#{8TB

delta 900
zcmZ4OyUdq&IWI340|NuYJ#)J>zm2?>yo^<w-Ff#hGU`oc<F8{hpWMnnfiZrwm_RFg
zy&eMtLlGy4FkoO{(Bvsf0I^j;gc^td%Ljv4As`|YM1(OgFx=uwFUm}b&&kY7ExyHA
zSriBoW2`9VVPIfTKmtW#ARYQJqLYDvq4+EV149GD2Pp<Vp~+GbuNezAvq{=BS}kK@
zU|7urayST^GSo7c@Pk+ooCR_um|4TTjFEw1H6xhAz`#(;GWolt9#0KJ4NDngQ9=#N
z0<Ou7%%YPoNf`=ZnmPHbq&O!_4RZ=-3fCI$$(GWdj69p0r3)D+v&t&QxPiRElwW*{
zr692+;}%<LMP_kHaS=Dj{kkAImi&U$ydq~XGo>`Q;1)|xequ@yIPh4DctPq?L6VGV
zw^-6Lb5d`yq$HLk7PB%iFihT{EW*AH6aY+2lc&j^m%7Mle}&Wj0|O(g`~j1@{K7qz
zGekP;d+Iw_CbP@=O};FrUw@I;`3kS|2L?t?2gU;>cX<SQJSU{ga9L5hBk%%`{Y4)8
zD?IiWc<etggA_oNLCB9_EnmPSM1&af$B!Q<%EWQ#pWH34psFV7%+7q6oyD1({V*S+
zGdKGYW=R)K<|CRcF1qYT3>aN>*^?P3f0Pi}{6xN%Nm>&WEIjV1`7VhiiEc%Sxv82=
zMIxX83z}S`WW;!5@_MCmMz_i8$~ugilS7pC#C<?ISW7Z<Qj2dfr)8!WRYFwHR951$
z0Wm?uxyeVBFLLLAxS&`ms-L`2MM@lO8CPy%NkLA2Nls=`5erB`&E!iep-PruW7Bf-
z6HAKXLBgQad5a|_Gr6S57R0xi?5QftHGzSF0hGpyEhiVK{!?>cT%i1cL5k6Vaf1ki
M#zHzw?o*Qm08QE6jsO4v

-- 
GitLab