import pandas as pd
import dash_bootstrap_components as dbc
+from flask import Flask
from dash import dcc
from dash import html
from dash import callback_context, no_update, ALL
PLACEHOLDER = html.Nobr("")
- def __init__(self, app, html_layout_file, spec_file, graph_layout_file,
- data_spec_file):
+ def __init__(self, app: Flask, html_layout_file: str, spec_file: str,
+ graph_layout_file: str, data_spec_file: str,
+ time_period: str=None) -> None:
"""
"""
self._spec_file = spec_file
self._graph_layout_file = graph_layout_file
self._data_spec_file = data_spec_file
+ self._time_period = time_period
# Read the data:
data_mrr = Data(
data_spec_file=self._data_spec_file,
debug=True
- ).read_trending_mrr(days=5)
+ ).read_trending_mrr(days=self._time_period)
data_ndrpdr = Data(
data_spec_file=self._data_spec_file,
debug=True
- ).read_trending_ndrpdr(days=14)
+ ).read_trending_ndrpdr(days=self._time_period)
self._data = pd.concat([data_mrr, data_ndrpdr], ignore_index=True)
+ data_time_period = \
+ (datetime.utcnow() - self._data["start_time"].min()).days
+ if self._time_period > data_time_period:
+ self._time_period = data_time_period
+
# Read from files:
self._html_layout = ""
self._spec_tbs = None
def layout(self):
return self._graph_layout
+ @property
+ def time_period(self):
+ return self._time_period
+
def add_content(self):
"""
"""
dbc.InputGroupText("Infra"),
dbc.Select(
id="dd-ctrl-phy",
- placeholder="Select a Physical Test Bed Topology...",
+ placeholder=(
+ "Select a Physical Test Bed "
+ "Topology..."
+ ),
options=[
- {"label": k, "value": k} for k in self.spec_tbs.keys()
+ {"label": k, "value": k} \
+ for k in self.spec_tbs.keys()
],
),
],
]
),
dbc.Row(
- class_name="gy-1",
+ class_name="gy-1 p-0",
children=[
dbc.ButtonGroup(
[
dbc.Button(
id="btn-ctrl-add",
children="Add Selected",
- color="secondary",
+ class_name="me-1",
+ color="info"
)
],
size="md",
id="dpr-period",
className="d-flex justify-content-center",
min_date_allowed=\
- datetime.utcnow()-timedelta(days=180),
+ datetime.utcnow() - timedelta(
+ days=self.time_period),
max_date_allowed=datetime.utcnow(),
initial_visible_month=datetime.utcnow(),
- start_date=datetime.utcnow() - timedelta(days=180),
+ start_date=\
+ datetime.utcnow() - timedelta(
+ days=self.time_period),
end_date=datetime.utcnow(),
display_format="D MMMM YY"
)
style=self.STYLE_DISABLED,
children=[
dbc.ButtonGroup(
+ class_name="gy-2",
children=[
dbc.Button(
- id="btn-sel-remove-all",
- children="Remove All",
- class_name="w-100",
- color="secondary",
+ id="btn-sel-remove",
+ children="Remove Selected",
+ class_name="w-100 me-1",
+ color="info",
disabled=False
),
dbc.Button(
- id="btn-sel-remove",
- children="Remove Selected",
- class_name="w-100",
- color="secondary",
+ id="btn-sel-remove-all",
+ children="Remove All",
+ class_name="w-100 me-1",
+ color="info",
disabled=False
),
],
dcc.Loading(children=[
dbc.Button(
id="btn-download-data",
- children=["Download Data"]
+ children=["Download Data"],
+ class_name="me-1",
+ color="info"
),
dcc.Download(id="download-data")
]),