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()