Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import os | |
import time | |
from src.markers import display_interventions, display_solved, show_requests, show_verified_requests | |
from src.filters import show_requests_filters, show_interventions_filters | |
import folium | |
import streamlit as st | |
from huggingface_hub import HfApi | |
from streamlit_folium import st_folium | |
from src.components import show_dataframes_metrics, show_embed_code, id_review_submission, show_donations | |
from src.text_content import ( | |
CREDITS_TEXT, | |
LOGO, | |
SLOGAN, | |
) | |
from src.utils import init_map | |
from src.map_utils import get_legend_macro | |
from src.dataframes import display_dataframe | |
from src.dataframes import load_data, VERIFIED_REQUESTS_URL, REQUESTS_URL, INTERVENTIONS_URL | |
TOKEN = os.environ.get("HF_TOKEN", None) | |
api = HfApi(TOKEN) | |
# Initialize Streamlit Config | |
st.set_page_config( | |
layout="wide", | |
initial_sidebar_state="collapsed", | |
page_icon="🤝", | |
page_title="Nt3awnou نتعاونو", | |
) | |
# Initialize States | |
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 and Title | |
st.markdown(LOGO, unsafe_allow_html=True) | |
# st.title("Nt3awnou نتعاونو") | |
st.markdown(SLOGAN, unsafe_allow_html=True) | |
# Initialize map | |
m, emergency_fgs, intervention_fgs = init_map() | |
fg = folium.FeatureGroup(name="Markers") | |
# Selection of requests | |
selected_options, options, show_unverified, show_interventions = show_requests_filters() | |
# Load data | |
( | |
df, | |
filtered_df, | |
interventions_df, | |
verified_df, | |
filtered_verified_df, | |
solved_verified_requests, | |
douar_df, | |
len_requests, | |
len_interventions, | |
len_solved_verified_requests, | |
) = load_data(show_unverified, selected_options, options) | |
# Selection of interventions | |
( | |
selected_statuses, | |
critical_villages, | |
partially_satisfied_villages, | |
fully_satisfied_villages, | |
) = show_interventions_filters() | |
# Add interventions markers to map | |
if show_interventions: | |
display_solved(solved_verified_requests, selected_statuses, fg) | |
display_interventions(interventions_df, selected_statuses, m, intervention_fgs) | |
# Add requests markers to map | |
if show_unverified: | |
show_requests(filtered_df, fg) | |
# Add verified requests markers to map | |
show_verified_requests(filtered_verified_df, emergency_fgs) | |
# Add legend | |
legend_macro = get_legend_macro(show_unverified) | |
# delete old legend | |
for child in m.get_root()._children: | |
pass # TODO: fix this | |
# if child.startswith("macro_element"): | |
# m.get_root()._children.remove(child) | |
m.get_root().add_child(legend_macro) | |
# add_village_names(douar_df, m) | |
st_folium(m, use_container_width=True, returned_objects=[], feature_group_to_add=fg, key="map") | |
# Embed code | |
show_embed_code() | |
# Show metrics | |
show_dataframes_metrics(len_requests, len_interventions, len_solved_verified_requests) | |
# Verified Requests table | |
st.divider() | |
st.subheader("📝 **Table of verified requests / جدول الطلبات المؤكدة**") | |
drop_cols = [ | |
"Phone Number", | |
"id", | |
"Status", | |
"Intervenant ", | |
"Intervention Date", | |
"Any remarks", | |
"VerificationStatus", | |
"Automatic Extracted Coordinates", | |
] | |
display_dataframe( | |
verified_df, drop_cols, VERIFIED_REQUESTS_URL, search_id=True, for_help_requests=True, show_link=False | |
) | |
# Requests table | |
st.divider() | |
st.subheader("📝 **Table of requests / جدول الطلبات**") | |
drop_cols = [ | |
"(عند الامكان) رقم هاتف شخص موجود في عين المكان", | |
"الرجاء الضغط على الرابط التالي لمعرفة موقعك إذا كان متاحا", | |
"GeoStamp", | |
"GeoCode", | |
"GeoAddress", | |
"Status", | |
"id", | |
] | |
display_dataframe(filtered_df, drop_cols, REQUESTS_URL, search_id=True, for_help_requests=True) | |
# Interventions table | |
st.divider() | |
st.subheader("📝 **Table of interventions / جدول التدخلات**") | |
display_dataframe( | |
interventions_df, | |
[], # We show NGOs contact information | |
INTERVENTIONS_URL, | |
search_id=False, | |
status=True, | |
for_help_requests=False, | |
) | |
# Submit an id for review | |
st.divider() | |
id_review_submission(api) | |
# Donations can be made to the gouvernmental fund under the name | |
st.divider() | |
show_donations() | |
# Credits | |
st.markdown( | |
CREDITS_TEXT, | |
unsafe_allow_html=True, | |
) | |
if auto_refresh: | |
time.sleep(number) | |
st.experimental_rerun() | |