dbc.Offcanvas(
class_name="w-50",
id="offcanvas-metadata",
- title="Throughput And Latency",
+ title="Detailed Information",
placement="end",
is_open=False,
children=[
]
),
delay_show=C.SPINNER_DELAY
+ ),
+ dbc.Offcanvas(
+ class_name="w-75",
+ id="offcanvas-documentation",
+ title="Documentation",
+ placement="end",
+ is_open=False,
+ children=html.Iframe(
+ src=C.URL_DOC_TRENDING,
+ width="100%",
+ height="100%"
+ )
)
]
)
:rtype: dbc.NavbarSimple
"""
return dbc.NavbarSimple(
- dbc.NavItem(
- dbc.NavLink(
+ children=[
+ dbc.NavItem(dbc.NavLink(
C.TREND_TITLE,
- disabled=True,
+ active=True,
external_link=True,
- href="#"
- )
- ),
+ href="/trending"
+ )),
+ dbc.NavItem(dbc.NavLink(
+ C.NEWS_TITLE,
+ external_link=True,
+ href="/news"
+ )),
+ dbc.NavItem(dbc.NavLink(
+ C.STATS_TITLE,
+ external_link=True,
+ href="/stats"
+ )),
+ dbc.NavItem(dbc.NavLink(
+ "Documentation",
+ id="btn-documentation",
+ ))
+ ],
id="navbarsimple-main",
brand=C.BRAND,
brand_href="/",
tab_items.append(
dbc.Tab(
children=dcc.Graph(
- id={"type": "graph", "index": "lat"},
+ id={"type": "graph", "index": "bandwidth"},
figure=graphs[1]
),
+ label="Bandwidth",
+ tab_id="tab-bandwidth"
+ )
+ )
+
+ if graphs[2]:
+ tab_items.append(
+ dbc.Tab(
+ children=dcc.Graph(
+ id={"type": "graph", "index": "lat"},
+ figure=graphs[2]
+ ),
label="Latency",
tab_id="tab-lat"
)
trigger = Trigger(callback_context.triggered)
try:
- idx = 0 if trigger.idx == "tput" else 1
+ if trigger.idx == "tput":
+ idx = 0
+ elif trigger.idx == "bandwidth":
+ idx = 1
+ elif trigger.idx == "lat":
+ idx = 2
+ else:
+ raise PreventUpdate
graph_data = graph_data[idx]["points"][0]
except (IndexError, KeyError, ValueError, TypeError):
raise PreventUpdate
metadata = no_update
graph = list()
- children = [
- dbc.ListGroupItem(
- [dbc.Badge(x.split(":")[0]), x.split(": ")[1]]
- ) for x in graph_data.get("text", "").split("<br>")
- ]
+ list_group_items = list()
+ for itm in graph_data.get("text", None).split("<br>"):
+ if not itm:
+ continue
+ lst_itm = itm.split(": ")
+ if lst_itm[0] == "csit-ref":
+ list_group_item = dbc.ListGroupItem([
+ dbc.Badge(lst_itm[0]),
+ html.A(
+ lst_itm[1],
+ href=f"{C.URL_JENKINS}{lst_itm[1]}",
+ target="_blank"
+ )
+ ])
+ else:
+ list_group_item = dbc.ListGroupItem([
+ dbc.Badge(lst_itm[0]),
+ lst_itm[1]
+ ])
+ list_group_items.append(list_group_item)
+
if trigger.idx == "tput":
title = "Throughput"
+ elif trigger.idx == "bandwidth":
+ title = "Bandwidth"
elif trigger.idx == "lat":
title = "Latency"
hdrh_data = graph_data.get("customdata", None)
class_name="gy-2 p-0",
children=[
dbc.CardHeader(hdrh_data.pop("name")),
- dbc.CardBody(children=[
+ dbc.CardBody(
dcc.Graph(
id="hdrh-latency-graph",
figure=graph_hdrh_latency(
hdrh_data, self._graph_layout
)
)
- ])
+ )
])
]
else:
title
]),
dbc.CardBody(
+ dbc.ListGroup(list_group_items, flush=True),
id="tput-lat-metadata",
class_name="p-0",
- children=[dbc.ListGroup(children, flush=True), ]
)
]
)
raise PreventUpdate
return dcc.send_data_frame(df.to_csv, file_name)
+
+ @app.callback(
+ Output("offcanvas-documentation", "is_open"),
+ Input("btn-documentation", "n_clicks"),
+ State("offcanvas-documentation", "is_open")
+ )
+ def toggle_offcanvas_documentation(n_clicks, is_open):
+ if n_clicks:
+ return not is_open
+ return is_open