Spaces:
Running
Running
import streamlit as st | |
st.set_page_config( | |
page_title="Requests", | |
page_icon="π€", | |
) | |
from dataset.data_requests import data_prep, show_new_data_view | |
st.title("Data Requests") | |
st.write("This page is ensure findability of data across the community.") | |
st.write("You can filter the metadata by longitude, latitude and date. You can select data from multiple actors, for multiple species and make a grouped request. " \ | |
"The request for the relevant data will be adressed individually to each owner. ") | |
# Initialize the default data view | |
df = data_prep() | |
if 'checkbox_states' not in st.session_state: | |
st.session_state.checkbox_states = {} | |
if 'lat_range' not in st.session_state: | |
st.session_state.lat_range = (float(df['lat'].min()), float(df['lat'].max())) | |
if 'lon_range' not in st.session_state: | |
st.session_state.lon_range = (df['lon'].min(), df['lon'].max()) | |
if 'date_range' not in st.session_state: | |
st.session_state.date_range = (df['date'].min(), df['date'].max()) | |
# Request button at the bottom | |
if st.button("REQUEST DATA", | |
type="primary", | |
icon="π"): | |
selected = [k for k, v in st.session_state.checkbox_states.items() if v] | |
if selected: | |
st.success(f"Request submitted for: the specie {', '.join(selected)}") | |
else: | |
st.warning("No selections made.") | |
# Latitude range filter | |
lat_min, lat_max = float(df['lat'].min()), float(df['lat'].max()) | |
lat_range = st.sidebar.slider( | |
"Latitude range", | |
min_value=float(df['lat'].min()), | |
max_value=float(df['lat'].max()), | |
value=st.session_state.get("lat_range", (df['lat'].min(), df['lat'].max())) | |
) | |
st.session_state.lat_range = lat_range | |
# Longitude range filter | |
lon_min, lon_max = float(df['lon'].min()), float(df['lon'].max()) | |
lon_range = st.sidebar.slider( | |
"Longitude range", | |
min_value=float(df['lon'].min()), | |
max_value=float(df['lon'].max()), | |
value=st.session_state.get("lon_range", (df['lon'].min(), df['lon'].max())) | |
) | |
st.session_state.lon_range = lon_range | |
# Date range filter | |
date_range = st.sidebar.date_input( | |
"Date range", | |
value=st.session_state.get("date_range", (df['date'].min(), df['date'].max())), | |
min_value=df['date'].min(), | |
max_value=df['date'].max() | |
) | |
st.session_state.date_range = date_range | |
# Show authors per specie | |
show_new_data_view(df) | |