]
),
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="/",
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 == "lat":
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