ars_noise_measurement/dash/main.py

54 lines
1.4 KiB
Python

import asyncio
import contextlib
from io import StringIO
from logging import debug
from threading import Thread
from time import sleep
from urllib.parse import urlencode
import dash
from dash.dash import html
from dash.dcc import Interval, Store
import dash_bootstrap_components as dbc
from capture import CaptureTab
from db_browser import BrowseTab
app = dash.Dash(
external_stylesheets=[dbc.themes.BOOTSTRAP]
)
app.layout = dbc.Container(
[
dbc.Row(
dbc.Col(
dbc.Tabs(
[
dbc.Tab(label="Capture", children=CaptureTab()),
dbc.Tab(label="Browse", children=BrowseTab()),
dbc.Tab(label="Analyze", id='tab_analyze', children=html.Iframe(src='http://localhost:5000/', width='100%', height=800)),
]
),
# width=12
)
),
Store(id='data_files', data=[])
],
fluid=True
)
@dash.callback(
dash.Output('tab_analyze', 'children'),
dash.Input('data_files', 'data'),
)
def update_analyzer(files):
# print('dupa')
# print(files)
if files:
return html.Iframe(src='http://localhost:5000/?'+urlencode({f'f{i}': file for i, file in enumerate(files)}), width='100%', height=800)
return dbc.Label("No measurement selected for analysis")
if __name__ == '__main__':
app.run(host='0.0.0.0')