Spaces:
Running
Running
Commit
•
4b6607c
1
Parent(s):
023bf00
update embed
Browse files- app.py +36 -4
- src/utils.py +26 -17
app.py
CHANGED
@@ -13,7 +13,7 @@ from src.text_content import (
|
|
13 |
ICON_MAPPING,
|
14 |
REVIEW_TEXT,
|
15 |
)
|
16 |
-
from src.utils import add_latlng_col, init_map, parse_gg_sheet
|
17 |
|
18 |
|
19 |
import os
|
@@ -109,12 +109,16 @@ def show_requests(filtered_df):
|
|
109 |
"""Display victim requests on the map"""
|
110 |
for index, row in filtered_df.iterrows():
|
111 |
request_type = row["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"]
|
|
|
|
|
|
|
112 |
long_lat = row[
|
113 |
"هل يمكنك تقديم الإحداثيات الدقيقة للموقع؟ (ادا كنت لا توجد بعين المكان) متلاً \n31.01837503440344, -6.781405948842175"
|
114 |
]
|
115 |
maps_url = f"https://maps.google.com/?q={long_lat}"
|
|
|
116 |
display_text = f'<b>Request Type:</b> {request_type}<br><b>Id:</b> {row["id"]}<br><a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>Google Maps</b></a>'
|
117 |
-
icon_name = ICON_MAPPING.get(
|
118 |
if row["latlng"] is None:
|
119 |
continue
|
120 |
|
@@ -125,7 +129,7 @@ def show_requests(filtered_df):
|
|
125 |
else None,
|
126 |
popup=folium.Popup(display_text, max_width=300),
|
127 |
icon=folium.Icon(
|
128 |
-
color=COLOR_MAPPING.get(
|
129 |
),
|
130 |
))
|
131 |
|
@@ -232,6 +236,12 @@ def id_review_submission():
|
|
232 |
"Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم الإرسال"
|
233 |
)
|
234 |
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
# Load data and initialize map with plugins
|
236 |
df = parse_gg_sheet(REQUESTS_URL)
|
237 |
df = add_latlng_col(df, process_column=15)
|
@@ -250,8 +260,30 @@ options = [
|
|
250 |
]
|
251 |
selected_options = []
|
252 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
253 |
df["id"] = df.index
|
254 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
|
256 |
display_interventions(interventions_df)
|
257 |
|
|
|
13 |
ICON_MAPPING,
|
14 |
REVIEW_TEXT,
|
15 |
)
|
16 |
+
from src.utils import add_latlng_col, init_map, parse_gg_sheet, is_request_in_list, marker_request
|
17 |
|
18 |
|
19 |
import os
|
|
|
109 |
"""Display victim requests on the map"""
|
110 |
for index, row in filtered_df.iterrows():
|
111 |
request_type = row["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"]
|
112 |
+
displayed_request = marker_request(request_type)
|
113 |
+
if pd.isna(request_type):
|
114 |
+
continue
|
115 |
long_lat = row[
|
116 |
"هل يمكنك تقديم الإحداثيات الدقيقة للموقع؟ (ادا كنت لا توجد بعين المكان) متلاً \n31.01837503440344, -6.781405948842175"
|
117 |
]
|
118 |
maps_url = f"https://maps.google.com/?q={long_lat}"
|
119 |
+
# we display all requests in popup text and use the first one for the icon/color
|
120 |
display_text = f'<b>Request Type:</b> {request_type}<br><b>Id:</b> {row["id"]}<br><a href="{maps_url}" target="_blank" rel="noopener noreferrer"><b>Google Maps</b></a>'
|
121 |
+
icon_name = ICON_MAPPING.get(displayed_request, None)
|
122 |
if row["latlng"] is None:
|
123 |
continue
|
124 |
|
|
|
129 |
else None,
|
130 |
popup=folium.Popup(display_text, max_width=300),
|
131 |
icon=folium.Icon(
|
132 |
+
color=COLOR_MAPPING.get(displayed_request, "blue"), icon=icon_name
|
133 |
),
|
134 |
))
|
135 |
|
|
|
236 |
"Submitted at https://huggingface.co/datasets/nt3awnou/review_requests/ تم الإرسال"
|
237 |
)
|
238 |
|
239 |
+
|
240 |
+
# # Logo and Title
|
241 |
+
# st.markdown(LOGO, unsafe_allow_html=True)
|
242 |
+
# # st.title("Nt3awnou نتعاونو")
|
243 |
+
# st.markdown(SLOGAN, unsafe_allow_html=True)
|
244 |
+
|
245 |
# Load data and initialize map with plugins
|
246 |
df = parse_gg_sheet(REQUESTS_URL)
|
247 |
df = add_latlng_col(df, process_column=15)
|
|
|
260 |
]
|
261 |
selected_options = []
|
262 |
|
263 |
+
|
264 |
+
|
265 |
+
# st.markdown(
|
266 |
+
# "👉 **Choose request type | Choissisez le type de demande | اختر نوع الطلب**"
|
267 |
+
# )
|
268 |
+
# col1, col2, col3, col4, col5 = st.columns([2, 3, 2, 3, 4])
|
269 |
+
# cols = [col1, col2, col3, col4, col5]
|
270 |
+
|
271 |
+
# for i, option in enumerate(options):
|
272 |
+
# checked = cols[i].checkbox(HEADERS_MAPPING[option], value=True)
|
273 |
+
# if checked:
|
274 |
+
# selected_options.append(option)
|
275 |
+
|
276 |
+
|
277 |
df["id"] = df.index
|
278 |
+
# keep rows with at least one request in selected_options
|
279 |
+
filtered_df = df[df["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"].apply(
|
280 |
+
lambda x: is_request_in_list(x, selected_options)
|
281 |
+
)]
|
282 |
+
|
283 |
+
# # keep rows with at least one request in selected_options
|
284 |
+
# filtered_df = df[df["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"].apply(
|
285 |
+
# lambda x: is_request_in_list(x, selected_options)
|
286 |
+
# )]
|
287 |
|
288 |
display_interventions(interventions_df)
|
289 |
|
src/utils.py
CHANGED
@@ -12,19 +12,26 @@ def parse_gg_sheet(url):
|
|
12 |
df = pd.read_csv(url, on_bad_lines="warn")
|
13 |
return df
|
14 |
|
15 |
-
|
16 |
-
|
17 |
-
#
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
def add_latlng_col(df, process_column):
|
30 |
"""Add a latlng column to the dataframe"""
|
@@ -109,19 +116,21 @@ def init_map():
|
|
109 |
max_bounds=True,
|
110 |
)
|
111 |
# Add a search bar to the map
|
112 |
-
plugins.Geocoder(
|
113 |
collapsed=False,
|
114 |
position="topright",
|
115 |
placeholder="Search | البحث",
|
116 |
-
)
|
|
|
117 |
|
118 |
# Add Fullscreen button to the map
|
119 |
-
plugins.Fullscreen(
|
120 |
position="topright",
|
121 |
title="Expand me | تكبير الخريطة",
|
122 |
title_cancel="Exit me | تصغير الخريطة",
|
123 |
force_separate_button=True,
|
124 |
-
)
|
|
|
125 |
|
126 |
# Satellite View from Mapbox
|
127 |
tileurl = "https://marocmap.ikiker.com/maroc/{z}/{x}/{y}.png"
|
|
|
12 |
df = pd.read_csv(url, on_bad_lines="warn")
|
13 |
return df
|
14 |
|
15 |
+
|
16 |
+
def is_request_in_list(request, selection_list):
|
17 |
+
if isinstance(request, float): # Check if the input is a float (like NaN)
|
18 |
+
return False
|
19 |
+
if "," in request:
|
20 |
+
all_requests = [r.strip() for r in request.split(",")]
|
21 |
+
else:
|
22 |
+
all_requests = [request]
|
23 |
+
return any([r in selection_list for r in all_requests])
|
24 |
+
|
25 |
+
|
26 |
+
def marker_request(request):
|
27 |
+
# in case of multiple requests we use the first one for the marker's icon
|
28 |
+
# requests are already sorted by priority from the form
|
29 |
+
try:
|
30 |
+
displayed_request = request.split(',')[0]
|
31 |
+
except:
|
32 |
+
displayed_request = request
|
33 |
+
return displayed_request
|
34 |
+
|
35 |
|
36 |
def add_latlng_col(df, process_column):
|
37 |
"""Add a latlng column to the dataframe"""
|
|
|
116 |
max_bounds=True,
|
117 |
)
|
118 |
# Add a search bar to the map
|
119 |
+
geocoder = plugins.Geocoder(
|
120 |
collapsed=False,
|
121 |
position="topright",
|
122 |
placeholder="Search | البحث",
|
123 |
+
)
|
124 |
+
m.add_child(geocoder)
|
125 |
|
126 |
# Add Fullscreen button to the map
|
127 |
+
fullscreen = plugins.Fullscreen(
|
128 |
position="topright",
|
129 |
title="Expand me | تكبير الخريطة",
|
130 |
title_cancel="Exit me | تصغير الخريطة",
|
131 |
force_separate_button=True,
|
132 |
+
)
|
133 |
+
m.add_child(fullscreen)
|
134 |
|
135 |
# Satellite View from Mapbox
|
136 |
tileurl = "https://marocmap.ikiker.com/maroc/{z}/{x}/{y}.png"
|