From 0760fd30b41026c970cd4560f5563f81420efc60 Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Thu, 8 Feb 2024 15:02:08 +0100
Subject: [PATCH] add: make markers interactive

---
 app/assets/icons/marker.png                   | Bin 0 -> 4815 bytes
 app/lib/main.dart                             |  29 +++++++++++-------
 app/pubspec.yaml                              |   3 ++
 server/main.py                                |   6 ++--
 .../__pycache__/get_markers.cpython-311.pyc   | Bin 1444 -> 1617 bytes
 server/map/get_markers.py                     |  22 ++++++++-----
 6 files changed, 38 insertions(+), 22 deletions(-)
 create mode 100644 app/assets/icons/marker.png

diff --git a/app/assets/icons/marker.png b/app/assets/icons/marker.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9d6980c6ba0227597af40e6235257800076f17e
GIT binary patch
literal 4815
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
GeCdCTbd_%a

literal 0
HcmV?d00001

diff --git a/app/lib/main.dart b/app/lib/main.dart
index 91f6c224..db05f28b 100644
--- a/app/lib/main.dart
+++ b/app/lib/main.dart
@@ -151,22 +151,29 @@ class _DefaultPageState extends State<DefaultPage> {
                         urlTemplate: "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
                         subdomains: const ['a', 'b', 'c'],
                       ),
-                    MarkerLayer( // Dynamically allocate markers based on a list
-                      markers: markerList
-                          .map(
-                            (MarkerData markerData) => Marker(
+                    MarkerLayer(
+                      // Dynamically allocate markers based on a list
+                      markers: markerList.map((MarkerData markerData) {
+                        return Marker(
                           width: markerData.size,
                           height: markerData.size,
                           point: markerData.location,
-                          builder: (ctx) => Icon(
-                            Icons.location_on,
-                            color: markerData.color,
-                            size: markerData.size,
+                          builder: (ctx) => GestureDetector(
+                            onTap: () {
+                              // NB: temporary print
+                              print('Icon tapped');
+                              // NB: trigger function to add contents to the next box
+                            },
+                            child: Icon(
+                              Icons.circle,
+                              color: markerData.color,
+                              size: markerData.size,
+                            ),
                           ),
-                        ),
-                      )
-                          .toList(),
+                        );
+                      }).toList(),
                     ),
+
                   ],
                 ),
               ),
diff --git a/app/pubspec.yaml b/app/pubspec.yaml
index 7d385a53..35f34689 100644
--- a/app/pubspec.yaml
+++ b/app/pubspec.yaml
@@ -22,3 +22,6 @@ dev_dependencies:
 
 flutter:
   uses-material-design: true
+  assets:
+      - assets/icons/marker.png
+
diff --git a/server/main.py b/server/main.py
index 97253949..68211701 100644
--- a/server/main.py
+++ b/server/main.py
@@ -31,13 +31,13 @@ class IceHTTP(BaseHTTPRequestHandler):
             self.end_headers()
             self.wfile.write(b"Root path hit!")
         elif self.path == '/update_map':
-            # Send the response with a status code (e.g., 200 for success)
-            self.send_response(200)
+            markers_data, resp_code = get_markers()
+
+            self.send_response(resp_code)
             self.send_header("Content-type", "application/json")
             self.end_headers()
 
             # Write the JSON data directly to the response
-            markers_data = get_markers()
             self.wfile.write(markers_data.encode('utf-8'))
 
         elif self.path == '/test_endpoint':
diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc
index 584c67ac6dd58b5d3fbcc9f35fa30569e4a48c80..eaac436b90b9b1be5369c74580ec0a458bd2a1be 100644
GIT binary patch
delta 529
zcmZ3&eUXQ6IWI340}z<qJCa(#ypb=8k^L2rJDq`ZaxUX)yA=L3reFqTh7vZAA_!1n
zDB`PStYJ(MNMlN7ieyM(sAa5U42II>jO7d!%#jS`jGBUzWtgNG?IxQuIWsYsOs-*)
zXH=Oyhv{Li2+*KnB_Pqja6!r$f;O<tFq>~T%kHAI_7!PuxbSC?oi9%SiOesI3=Enq
zMa)2U5etyG#hOx@TTpz9)3qWwwV)(3KTnhC7Dq{HafwS}N#ZTW)M6%}Duu}xnMLZQ
zfGi#$E?x>G8W=t>aj}X$<&j$8zM=d;$c4c03p^1Qc_OaxMBGIPhF#zZzsM7Qg(n<I
zFyaDF<VBvyD?E`O*jYrlIyk=aFbIhBR6!iPLjy=(lybfTB>7#g@VgvHzQFH!fg{ZG
z$5U>R4-AZ~VhG{}zrY0Lj<OD31pEO6ADDrvfON4O(5X$1;*L@b2c@_ijhGLrFgxlp
zA5>=qv2|I2<m6bE5)F{oiugbTC|HYxfW$8jo80`A(wtPgB6T1a7;X&3^Ctgf>6GQ-
MW(2wblK|@l05i9ieE<Le

delta 392
zcmcb}vxJ*(IWI340}!0Pek8S;X(L}0BkMXKclzXf#?|t{44V9Y>8y(<Suw`?Ii%mY
z-dODRMb#l4q=A9Kb8<10GgCw0<Q+`%jDC}EFg>gn1PT``0f`2N3u5*Vw8Cvd+4Q<e
zbr;3euZXL|g+GIg&}1%R22w>VK;jl_N@;FEu_og!j*`^k5|_l1#9~IExI&Q-NR~T2
zwIn__u_!yWsJKWRD8dQE#c4pIf#E5K*aG$q<_8i*PJ~_H2)W1+a)l%0E>uwDMCb*M
z;ENo=S2%(ZV&NA!LN9WJUf~G+z|JDT*5L7#kAX*^#|q-U4H-cCqL}>^Aj$1;h1=l*
zi$jqJ(5}h+tR)&C+l%->1V{+%yk8tPx%nxjIjMF<DnK!iyNef3Ud`I6#KOVo$oPQ)
II|()b0I_Otv;Y7A

diff --git a/server/map/get_markers.py b/server/map/get_markers.py
index f59ca2b4..2803a727 100644
--- a/server/map/get_markers.py
+++ b/server/map/get_markers.py
@@ -6,13 +6,19 @@ sys.path.append(parent_dir)
 from data_structs import MarkerTemplate
 from flask import json
 
-def get_markers():
-    testData = [
-        MarkerTemplate(latitude=60.7266, longitude=10.9771, size=50.0, color='blue'),
-        MarkerTemplate(latitude=60.8366, longitude=10.8171, size=70.0, color='red'),
-        MarkerTemplate(latitude=60.7366, longitude=10.8471, size=60.0, color='green'),
-    ]
 
-    # Return jsonified marker list
-    return json.dumps([marker.to_dict() for marker in testData])
+# get_markers parses a list of MarkerTemplate objects to json, and returns either a successfully
+# parsed json object with status code 200, or and error message and status code 501
+def get_markers():
+    try:
+        testData = [
+            MarkerTemplate(latitude=60.7266, longitude=10.9771, size=30.0, color='blue'),
+            MarkerTemplate(latitude=60.8366, longitude=10.8171, size=20.0, color='red'),
+            MarkerTemplate(latitude=60.7366, longitude=10.8471, size=10.0, color='green'),
+        ]
+        
+        return json.dumps([marker.to_dict() for marker in testData]), 200
+    
+    except Exception as e:
+        return e, 500
 
-- 
GitLab