+ output.set_values({
+ "graph-tput-figure": self.NO_GRAPH,
+ "graph-lat-figure": self.NO_GRAPH,
+ "div-tput-style": self.STYLE_HIDEN,
+ "div-latency-style": self.STYLE_HIDEN,
+ "div-lat-metadata-style": self.STYLE_HIDEN,
+ "div-download-style": self.STYLE_HIDEN,
+ "selected-tests-data": store_sel,
+ "cl-selected-options": _list_tests()
+ })
+
+ return output.value()
+
+ @app.callback(
+ Output("tput-metadata", "children"),
+ Input("graph-tput", "clickData")
+ )
+ def _show_tput_metadata(hover_data):
+ """
+ """
+ if not hover_data:
+ raise PreventUpdate
+
+ return hover_data["points"][0]["text"].replace("<br>", "\n")
+
+ @app.callback(
+ Output("graph-latency-hdrh", "figure"),
+ Output("graph-latency-hdrh", "style"),
+ Output("lat-metadata", "children"),
+ Input("graph-latency", "clickData")
+ )
+ def _show_latency_hdhr(hover_data):
+ """
+ """
+ if not hover_data:
+ raise PreventUpdate
+
+ graph = no_update
+ hdrh_data = hover_data["points"][0].get("customdata", None)
+ if hdrh_data:
+ graph = graph_hdrh_latency(hdrh_data, self.layout)
+
+ return (
+ graph,
+ self.STYLE_INLINE,
+ hover_data["points"][0]["text"].replace("<br>", "\n")
+ )
+
+ @app.callback(
+ Output("download-data", "data"),
+ State("selected-tests", "data"),
+ Input("btn-download-data", "n_clicks"),
+ prevent_initial_call=True
+ )
+ def _download_data(store_sel, n_clicks):
+ """
+ """
+
+ if not n_clicks:
+ raise PreventUpdate
+
+ df = pd.DataFrame()
+ for itm in store_sel:
+ sel_data = select_trending_data(self.data, itm)
+ if sel_data is None:
+ continue
+ df = pd.concat([df, sel_data], ignore_index=True)
+
+ return dcc.send_data_frame(df.to_csv, "trending_data.csv")