Spaces:
Runtime error
Runtime error
| import folium | |
| import streamlit as st | |
| import pandas as pd | |
| from streamlit_folium import st_folium | |
| import time | |
| st.set_page_config(layout="wide") | |
| if "sleep_time" not in st.session_state: | |
| st.session_state.sleep_time = 2 | |
| if "auto_refresh" not in st.session_state: | |
| st.session_state.auto_refresh = False | |
| auto_refresh = st.sidebar.checkbox("Auto Refresh?", st.session_state.auto_refresh) | |
| if auto_refresh: | |
| number = st.sidebar.number_input("Refresh rate in seconds", value=st.session_state.sleep_time) | |
| st.session_state.sleep_time = number | |
| #Logo | |
| st.markdown( | |
| """ | |
| <div style="text-align: center;"> | |
| <img src="https://storage.googleapis.com/storage-annarabic/Nt3awnou(1).png" width="200" height="200"> | |
| </div> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| st.title("Nt3awnu نتعاونو ") | |
| st.markdown("Help us report more people in need by filling this form: https://forms.gle/nZNCUVog9ka2Vdqu6 : ساعدونا نبلغو الناس ليمحتاجين فهاد الاستمارة") | |
| def parse_gg_sheet(url): | |
| url = url.replace("edit#gid=", "export?format=csv&gid=") | |
| df = pd.read_csv(url) | |
| # parse latlng (column 4) to [lat, lng] | |
| def parse_latlng(latlng): | |
| if type(latlng) == str and "," in latlng: | |
| lat, lng = latlng.split(",") | |
| return [float(lat), float(lng)] | |
| else: | |
| return None | |
| return df.assign(latlng=df.iloc[:, 4].apply(parse_latlng)) | |
| df = parse_gg_sheet( | |
| "https://docs.google.com/spreadsheets/d/1gYoBBiBo1L18IVakHkf3t1fOGvHWb23loadyFZUeHJs/edit#gid=966953708" | |
| ) | |
| headers_mapping = { | |
| "إغاثة": "Rescue/إغاثة", | |
| "مساعدة طبية": "Medical Assistance/مساعدة طبية", | |
| "مأوى": "Shelter/مأوى", | |
| "طعام وماء": "Food & Water/طعام وماء", | |
| "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "Danger/مخاطر (تسرب الغاز، تلف في الخدمات العامة...)", | |
| } | |
| colors_mapping = { | |
| "إغاثة": "red", | |
| "مساعدة طبية": "orange", | |
| "مأوى": "yellow", | |
| "طعام وماء": "blue", | |
| "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "grey", | |
| } | |
| options = ["إغاثة", "مساعدة طبية", "مأوى", "طعام وماء", "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)"] | |
| selected_options = [] | |
| st.markdown("👉 **Choose request type / اختر نوع الطلب**") | |
| cols = st.columns(len(options)) | |
| for i, option in enumerate(options): | |
| checked = cols[i].checkbox(headers_mapping[option], value=True) | |
| if checked: | |
| selected_options.append(headers_mapping[option]) | |
| arabic_options = [e.split("/")[1] for e in selected_options] | |
| df['id'] = df.index | |
| filtered_df = df[df['ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)'].isin(arabic_options)] | |
| selected_headers = [headers_mapping[request] for request in arabic_options] | |
| #st.subheader(", ".join(selected_headers)) | |
| m = folium.Map( | |
| location=[31.628674, -7.992047], | |
| zoom_start=8.5, | |
| min_zoom=8.5, | |
| max_lat=35.628674, | |
| min_lat=29.628674, | |
| max_lon=-4.992047, | |
| min_lon=-10.992047, | |
| max_bounds=True, | |
| ) | |
| for index, row in filtered_df.iterrows(): | |
| request_type = row['ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)'] | |
| #phone = row["رقم الهاتف (اختياري)"] if not pd.isna(row["رقم الهاتف (اختياري)"]) else "" | |
| # Formatted text using HTML | |
| display_text = f"<b>Request Type:</b> {request_type}<br><b>Id:</b> {row['id']}" | |
| if row["latlng"] is None: | |
| continue | |
| folium.Marker( | |
| location=row["latlng"], | |
| tooltip=row[' لأي قيادة / دوار تنتمون ؟'] if not pd.isna(row[' لأي قيادة / دوار تنتمون ؟']) else None, | |
| popup=folium.Popup(display_text, max_width=300), | |
| icon=folium.Icon(color=colors_mapping.get(request_type, "blue")) | |
| ).add_to(m) | |
| st_data = st_folium(m, use_container_width=True) | |
| # Google Sheet Table | |
| st.markdown( | |
| """ | |
| <iframe src="https://docs.google.com/spreadsheets/d/1gYoBBiBo1L18IVakHkf3t1fOGvHWb23loadyFZUeHJs/" width="100%" height="600px"></iframe> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| # Google Form | |
| # st.markdown( | |
| # """ | |
| # <iframe src="https://docs.google.com/forms/d/e/1FAIpQLSfNrFHUScot5jQyRUJmor7kWYgwkkME6WqRgQG_L4Eze4RdHA/viewform?embedded=true" width="640" height="2877" frameborder="0" marginheight="0" marginwidth="0">Loading…</iframe> | |
| # """, | |
| # unsafe_allow_html=True, | |
| # ) | |
| # Credits | |
| st.markdown( | |
| """ | |
| <hr> | |
| <div style="text-align: center;"> | |
| <p>By <b>Moroccans</b> for <b>Moroccans</b> 🤝</p> | |
| <p>Powered by <a href="https://www.annarabic.com/">Annarabic</a></p> | |
| <p>Developed by <a href="https://summerschool.morocco.ai/">AI Summer School</a> graduates</p> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |
| if auto_refresh: | |
| time.sleep(number) | |
| st.experimental_rerun() |