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
zcmZva&rcIU6vubEi|wwv{7?$?7e88xmIzq&poS$us)PdvltT0(E4wXCpoQ70po?&j
zL=vKyxp3rQ&;(*6y%-NB1`;`_v<U}Y!(X6>l6WAR7~gDTK;&ijGv9gd&E(C@Tk2l!
zmYz$Jz<{0TZHo=9N*5&bGt()(MW}@wDS3d-lbMovG?1w%ov}}~Kpy5P!hn#76{>?2
z4HQ<qm#Qd5A4NaF6yi9c-W*OOHQhuL_$u|Gab1M5cAw!2y5jU-%!1HA0;ZX~n<+j<
z+*RLf<2LfO#-9nfyhu>_6=8{Gm}Qo{bGbaUGRq9x5&|#$1)F3^yQhLk?kdq>4E7Gf
zw+wbsAc%F6Pww!)`viE_u&GB?aYZ6wPZuiA-1m&3G8}@vLdbMz$-$JGNXE%`Zyo9+
z#Xe7OGlWboHL4|X#FFamkx`QyPAO{PrZ_BtAIE4A#Y|3B(u&T(j2^yl>Nc7{@e+Rh
z7a|XRn^PN=S-vO7_iXV!c?K1Ev(diolH+p|3uUv$obiauv*5HM7ItXP4~jkCVQP1G
z_b_+f!8pnmxUAg^-)D#TgnX#3p4#ZoO3|DY-IAiPh?le1Z)}UDb6xZ5Li>x$uj{g6
zYffz45?et)J-lpXS%7+Y8S2^Z+lwAhg`)mT7537|bWLsWq_cx(*Lbc&vagjQ;JV!v
zX=2x#xJcN(ehvW#5!tD7X3QGH=4pi6G{sIW6@e?if|U_1WW(k3uCI|X{~7d!JoDd$
zXY>Y6p+?dbXs+z0D~i&IVdzyhmWbnfh3v-xzaUddu}R(pat%p3r7w=B0VX%1q=zu{
zBV+P$Ej6knRYk{*WVPOjCdvEysQ)636~&-2(s%&0)$7m>iNUn>_E;uuL7(sxLbQ4H
avqTI2u9X)9dB%<8SLN1l5SPeogYOS&#{8TB

delta 900
zcmaKqUr19?9LMi(_s+}i?sa0*xyjTvw;1HKC}d%6u%QSkSlUyd%X?=xHn+~bmd3RO
zAtXr%2g2U$#R8*@z4R1<_GmTpAuiZcZ@o+i+EaASE`rgYADqwmp5OWY&b|E3Ssz*(
zlAcMDz>xUTdm%IYT8c?<r!*kF1&HE0*Inqv3$A4tFEuwT@Wm+cAqPbdK}19oREH?S
z6t(@!RE<)MQCuM~g(;-U<5_iD(M*^_BQyuInn>o3BY~P}MfV{ViO_Zk?lBb~Q{RYv
zE#II}s`JL-+?tJH*2%EqEHlsQuEQ0>+@L>M3xiz);v~b0c@F>ZMn!`$xLbfG3~p7x
zz&7Ds->Jqw&%`@kkApK<*&z!roH*7x2x94e>rKFR|M9E+<Ve$&*G#UE)~}m&%B-sC
z8gh~}>Y{sGzMxE_WKGI5xq``M^J&>?o*hZlr_fEvm|RB9DkdkV^|WRuIlK{c^Dl|e
zY&QJZ|G`&w#P=NW3Iq1`%`^M1V@q=@?#1F#@d1bVwqg9Kt-Dy3l6z8;SR4u1)c3`P
zrNL!+CG~vf&B#YFUKZnfVw{KyOAVII;z6zCdyPl)|JT)O^*4j(ANBZQdq*hTl;qhh
zo=ZCUt$HBbX1%EhyB*<DUHo<r5KaO<XmOXmw$IyIBeX5zfRay<hV-L!PKnr%n<UXC
zYy?ijXZ$K~8~X8y;7N$!(O}ebkyhAs(nZZ=GwKwYv)oUD0ilmdiud?ku<XpzCA}3?
z#7{eYp4!KRTv{(=^LkdjhB&%s;N8x#K#WM!o+0<9qj8$1uan%9I;o@cblrysLw;eI
fNczUK7%qf<h7+(FtS~-Ez=qqJ|H1@*6!!lDP1)X#

-- 
GitLab