ChristophS's picture
renaming fronent filter names
344c695
import streamlit as st
from DataModel import DataModel
from Visualization import Visualization
import pandas as pd
from streamlit_folium import st_folium
def main(edge_id):
"""
Streamlit Dashbaord for Quality Metric Data as time series from BIQE Monitor
:edge_id: biqe monitor edge id
"""
st.set_page_config(page_title='Straßenabschnitt Analyse', layout='wide')
# get data and setup visualization calss
data, geom = DataModel().get_data(edge_id, 30)
visu = Visualization(data)
# head metrics of the shapes
cols = st.columns([4,1])
metric_cols = cols[0].columns(5)
metric_cols[0].container(border=True).metric('Durchfahrten:', visu.int2str(data['ride_id'].sum()))
metric_cols[0].markdown(' ')
metric_cols[1].container(border=True).metric('Geschwindigkeit [km/h]', f"{visu.float2str(data['speed'].mean())}")
metric_cols[2].container(border=True).metric('Wunschgeschwindigkeit [%]', f"{visu.float2str(100*data['norm_speed'].mean())}")
metric_cols[3].container(border=True).metric('Zeitverlust [Sekunden]', f"{visu.float2str(data['time_loss'].mean())}")
metric_cols[4].container(border=True).metric('Standzeit [Sekunden]', f"{visu.float2str(100*data['waiting'].mean())}")
# show shape on map
with cols[1]:
st_folium(visu.create_map(geom), returned_objects=[],
key=f'Map', use_container_width=True)
# create user filter and aggregate data based on the filter parameter
visu.filter_component(cols[0])
visu.aggregate_data()
# timeline plot
cols[0].markdown(f"{visu.selected_metric} pro {visu.selected_time}", help=visu.helper_plot_regions())
cols[0].plotly_chart(visu.timeline_plot_plotly(), use_container_width=True)
if __name__ == '__main__':
# handle empty query parameter or processing edge/osm id
if 'edge_id' not in st.query_params:
edge_id = []
else:
edge_id = st.query_params['edge_id'].split('_')[0]
main(edge_id)