Spaces:
Runtime error
Runtime error
| 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_charts, show_dataframes_metrics, show_embed_code, 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 load_data | |
| import gettext | |
| gettext.install("myapplication") | |
| 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) | |
| # Localization | |
| lang_options = { | |
| "ar": "العربية", | |
| "fr": "Français", | |
| "en": "English", | |
| } | |
| # multiple option (NOT in sidebar) | |
| lang = st.selectbox("Choose language / اختر اللغة", list(lang_options.keys()), format_func=lambda x: lang_options[x]) | |
| if lang == "en": | |
| _ = gettext.gettext | |
| else: | |
| localizator = gettext.translation("messages", localedir="locales", languages=[lang]) | |
| localizator.install() | |
| # 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 = 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, lang) | |
| # Show charts | |
| show_charts() | |
| # 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(lang) | |
| # Credits | |
| st.markdown( | |
| CREDITS_TEXT, | |
| unsafe_allow_html=True, | |
| ) | |
| if auto_refresh: | |
| time.sleep(number) | |
| st.experimental_rerun() | |
| if lang == "ar": | |
| st.markdown( | |
| """ | |
| <style> | |
| body { | |
| text-align: right; | |
| } | |
| </style> | |
| """, | |
| unsafe_allow_html=True, | |
| ) | |