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( """
""", 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[' What are your needs? / ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)'].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[' What are your needs? / ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)'] phone = row["رقم الهاتف (اختياري)"] if not pd.isna(row["رقم الهاتف (اختياري)"]) else "" display_text = f"{request_type} {phone} Id: {row['id']}" if row["latlng"] is None: continue folium.Marker( location=row["latlng"], tooltip=row[' لأي قيادة / دوار تنتمون ؟'] if not pd.isna(row[' لأي قيادة / دوار تنتمون ؟']) else None, popup=display_text, icon=folium.Icon(colors_mapping[request_type]) ).add_to(m) st_data = st_folium(m, use_container_width=True) # Google Sheet Table st.markdown( """ """, unsafe_allow_html=True, ) # Google Form # st.markdown( # """ # # """, # unsafe_allow_html=True, # ) # Credits st.markdown( """

Created by Moroccans for Moroccans 🤝

Powered by Annarabic

""", unsafe_allow_html=True, ) if auto_refresh: time.sleep(number) st.experimental_rerun()