X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Ftools%2Fdash%2Fapp%2Fpal%2Ftrending%2Flayout.py;h=55d0d08e83801e61d63a79adb131a521cfa7303e;hb=1b2710767a34113c266c81a18b98d71e0c8dd6ef;hp=6b68070bde137da0b7dad7e24b6217a5ddecda77;hpb=c80743e34d93cb691c66f27b8c17bfcbedada366;p=csit.git diff --git a/resources/tools/dash/app/pal/trending/layout.py b/resources/tools/dash/app/pal/trending/layout.py index 6b68070bde..55d0d08e83 100644 --- a/resources/tools/dash/app/pal/trending/layout.py +++ b/resources/tools/dash/app/pal/trending/layout.py @@ -31,15 +31,19 @@ from json import loads, JSONDecodeError from ast import literal_eval from ..data.data import Data +from ..data.url_processing import url_decode, url_encode from .graphs import graph_trending, graph_hdrh_latency, \ select_trending_data -from ..data.url_processing import url_decode, url_encode class Layout: """ """ + # If True, clear all inputs in control panel when button "ADD SELECTED" is + # pressed. + CLEAR_ALL_INPUTS = False + STYLE_DISABLED = {"display": "none"} STYLE_ENABLED = {"display": "inherit"} @@ -75,7 +79,13 @@ class Layout: "nfv_density-dcr_memif-chain": "CNF Service Chains Routing", } - def __init__(self, app: Flask, html_layout_file: str, spec_file: str, + URL_STYLE = { + "background-color": "#d2ebf5", + "border-color": "#bce1f1", + "color": "#135d7c" + } + + def __init__(self, app: Flask, html_layout_file: str, graph_layout_file: str, data_spec_file: str, tooltip_file: str, time_period: str=None) -> None: """ @@ -84,7 +94,6 @@ class Layout: # Inputs self._app = app self._html_layout_file = html_layout_file - self._spec_file = spec_file self._graph_layout_file = graph_layout_file self._data_spec_file = data_spec_file self._tooltip_file = tooltip_file @@ -235,10 +244,13 @@ class Layout: def label(self, key: str) -> str: return self.LABELS.get(key, key) - def _show_tooltip(self, id: str, title: str) -> list: + def _show_tooltip(self, id: str, title: str, + clipboard_id: str=None) -> list: """ """ return [ + dcc.Clipboard(target_id=clipboard_id, title="Copy URL") \ + if clipboard_id else str(), f"{title} ", dbc.Badge( id=id, @@ -766,7 +778,7 @@ class Layout: dbc.Button( id="btn-download-data", children=self._show_tooltip( - "help-download", "Download"), + "help-download", "Download Data"), class_name="me-1", color="info" ), @@ -777,19 +789,23 @@ class Layout: dbc.Col( # Show URL width=10, children=[ - dbc.Card( - id="card-url", - body=True, - class_name="gy-2 p-0", + dbc.InputGroup( + class_name="me-1", children=[ - dcc.Clipboard( - target_id="card-url", - title="Copy URL", - style={"display": "inline-block"} + dbc.InputGroupText( + style=self.URL_STYLE, + children=self._show_tooltip( + "help-url", "URL", "input-url") ), - url + dbc.Input( + id="input-url", + readonly=True, + type="url", + style=self.URL_STYLE, + value=url + ) ] - ), + ) ] ) ] @@ -901,11 +917,9 @@ class Layout: if trigger_id == "dd-ctrl-dut": try: + dut = self.spec_tbs[dd_dut] options = sorted( - [ - {"label": v, "value": v} - for v in self.spec_tbs[dd_dut].keys() - ], + [{"label": v, "value": v}for v in dut.keys()], key=lambda d: d["label"] ) disabled = False @@ -920,6 +934,7 @@ class Layout: "dd-ctrl-area-value": str(), "dd-ctrl-area-options": list(), "dd-ctrl-area-disabled": True, + "dd-ctrl-test-value": str(), "dd-ctrl-test-options": list(), "dd-ctrl-test-disabled": True, "cl-ctrl-core-options": list(), @@ -938,11 +953,10 @@ class Layout: elif trigger_id == "dd-ctrl-phy": try: dut = ctrl_panel.get("dd-ctrl-dut-value") + phy = self.spec_tbs[dut][dd_phy] options = sorted( - [ - {"label": self.label(v), "value": v} - for v in self.spec_tbs[dut][dd_phy].keys() - ], + [{"label": self.label(v), "value": v} + for v in phy.keys()], key=lambda d: d["label"] ) disabled = False @@ -954,6 +968,7 @@ class Layout: "dd-ctrl-area-value": str(), "dd-ctrl-area-options": options, "dd-ctrl-area-disabled": disabled, + "dd-ctrl-test-value": str(), "dd-ctrl-test-options": list(), "dd-ctrl-test-disabled": True, "cl-ctrl-core-options": list(), @@ -973,11 +988,9 @@ class Layout: try: dut = ctrl_panel.get("dd-ctrl-dut-value") phy = ctrl_panel.get("dd-ctrl-phy-value") + area = self.spec_tbs[dut][phy][dd_area] options = sorted( - [ - {"label": v, "value": v} - for v in self.spec_tbs[dut][phy][dd_area].keys() - ], + [{"label": v, "value": v} for v in area.keys()], key=lambda d: d["label"] ) disabled = False @@ -1009,19 +1022,17 @@ class Layout: dut = ctrl_panel.get("dd-ctrl-dut-value") phy = ctrl_panel.get("dd-ctrl-phy-value") area = ctrl_panel.get("dd-ctrl-area-value") - cores = self.spec_tbs[dut][phy][area][dd_test]["core"] - fsizes = self.spec_tbs[dut][phy][area][dd_test]["frame-size"] - ttypes = self.spec_tbs[dut][phy][area][dd_test]["test-type"] + test = self.spec_tbs[dut][phy][area][dd_test] + cores = test["core"] + fsizes = test["frame-size"] + ttypes = test["test-type"] if dut and phy and area and dd_test: - core_opts = [ - {"label": v, "value": v} for v in sorted(cores) - ] - framesize_opts = [ - {"label": v, "value": v} for v in sorted(fsizes) - ] - testtype_opts = [ - {"label": v, "value": v}for v in sorted(ttypes) - ] + core_opts = [{"label": v, "value": v} + for v in sorted(cores)] + framesize_opts = [{"label": v, "value": v} + for v in sorted(fsizes)] + testtype_opts = [{"label": v, "value": v} + for v in sorted(ttypes)] ctrl_panel.set({ "dd-ctrl-test-value": dd_test, "cl-ctrl-core-options": core_opts, @@ -1140,24 +1151,22 @@ class Layout: store_sel = sorted(store_sel, key=lambda d: d["id"]) row_card_sel_tests = self.STYLE_ENABLED row_btns_sel_tests = self.STYLE_ENABLED - ctrl_panel.set(ctrl_panel.defaults) + if self.CLEAR_ALL_INPUTS: + ctrl_panel.set(ctrl_panel.defaults) ctrl_panel.set({ "cl-selected-options": self._list_tests(store_sel) }) row_fig_tput, row_fig_lat, row_btn_dwnld = \ _generate_plotting_area( - graph_trending( - self.data, store_sel, self.layout, d_start, - d_end - ), + graph_trending(self.data, store_sel, self.layout, + d_start, d_end), _gen_new_url(parsed_url, store_sel, d_start, d_end) ) elif trigger_id == "dpr-period": row_fig_tput, row_fig_lat, row_btn_dwnld = \ _generate_plotting_area( - graph_trending( - self.data, store_sel, self.layout, d_start, d_end - ), + graph_trending(self.data, store_sel, self.layout, + d_start, d_end), _gen_new_url(parsed_url, store_sel, d_start, d_end) ) elif trigger_id == "btn-sel-remove-all": @@ -1168,9 +1177,7 @@ class Layout: row_card_sel_tests = self.STYLE_DISABLED row_btns_sel_tests = self.STYLE_DISABLED store_sel = list() - ctrl_panel.set({ - "cl-selected-options": list() - }) + ctrl_panel.set({"cl-selected-options": list()}) elif trigger_id == "btn-sel-remove": _ = btn_remove if list_sel: @@ -1182,10 +1189,8 @@ class Layout: if store_sel: row_fig_tput, row_fig_lat, row_btn_dwnld = \ _generate_plotting_area( - graph_trending( - self.data, store_sel, self.layout, d_start, - d_end - ), + graph_trending(self.data, store_sel, self.layout, + d_start, d_end), _gen_new_url(parsed_url, store_sel, d_start, d_end) ) ctrl_panel.set({ @@ -1198,9 +1203,7 @@ class Layout: row_card_sel_tests = self.STYLE_DISABLED row_btns_sel_tests = self.STYLE_DISABLED store_sel = list() - ctrl_panel.set({ - "cl-selected-options": list() - }) + ctrl_panel.set({"cl-selected-options": list()}) elif trigger_id == "url": # TODO: Add verification url_params = parsed_url["params"] @@ -1242,9 +1245,7 @@ class Layout: disabled = False else: disabled = True - ctrl_panel.set({ - "btn-ctrl-add-disabled": disabled - }) + ctrl_panel.set({"btn-ctrl-add-disabled": disabled}) ret_val = [ ctrl_panel.panel, store_sel,