|
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') |
|
|
|
data, geom = DataModel().get_data(edge_id, 30) |
|
visu = Visualization(data) |
|
|
|
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())}") |
|
|
|
with cols[1]: |
|
st_folium(visu.create_map(geom), returned_objects=[], |
|
key=f'Map', use_container_width=True) |
|
|
|
visu.filter_component(cols[0]) |
|
visu.aggregate_data() |
|
|
|
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__': |
|
|
|
if 'edge_id' not in st.query_params: |
|
edge_id = [] |
|
else: |
|
edge_id = st.query_params['edge_id'].split('_')[0] |
|
|
|
main(edge_id) |