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 st.title("Nt3awnu kamlin نتعاونو كاملين") 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" ) def display_tab(input): m = folium.Map(location=[31.628674, -7.992047], zoom_start=7.5, max_zoom=7.5, max_lat=31.628674, max_lon=-7.992047) filtered_df = df[df["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"] == input] for index, row in filtered_df.iterrows(): if row["latlng"] is None: continue folium.Marker( location=row["latlng"], tooltip=row["العنوان أو اسم القرية"] if not pd.isna(row["العنوان أو اسم القرية"]) else None, popup=row["رقم الهاتف (اختياري)"] if not pd.isna(row["رقم الهاتف (اختياري)"]) else None, ).add_to(m) st_folium(m, use_container_width=True) # request_type = st.selectbox('Choose request type/اختر نوع الطلب', ("إغاثة", "مساعدة طبية", "مأوى", "طعام وماء", "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)")) headers_mapping = { "إغاثة": "Rescue/إغاثة", "مساعدة طبية": "Medical Assistance/مساعدة طبية", "مأوى": "Shelter/مأوى", "طعام وماء": "Food & Water/طعام وماء", "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)": "Danger/مخاطر", } options = ["إغاثة", "مساعدة طبية", "مأوى", "طعام وماء", "مخاطر (تسرب الغاز، تلف في الخدمات العامة...)"] selected_options = [] st.markdown("👉 **Choose request type / اختر نوع الطلب**") cols = st.columns(len(options)) for i, option in enumerate(options): default_value = True if option == "إغاثة" else False checked = cols[i].checkbox(option, value=default_value) if checked: selected_options.append(option) filtered_df = df[df["ما هي احتياجاتك؟ (أضفها إذا لم يتم ذكرها)"].isin(selected_options)] selected_headers = [headers_mapping[request] for request in selected_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(): if row["latlng"] is None: continue folium.Marker( location=row["latlng"], tooltip=row["العنوان أو اسم القرية"] if not pd.isna(row["العنوان أو اسم القرية"]) else None, popup=row["رقم الهاتف (اختياري)"] if not pd.isna(row["رقم الهاتف (اختياري)"]) else None, ).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, # ) if auto_refresh: time.sleep(number) st.experimental_rerun()