X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Ftools%2Fdash%2Fapp%2Fpal%2Ftrending%2Flayout.py;h=eac02ced6f69e6d87ee86c7575eb2a557ad03a0a;hb=d2ef7bc01df66f6a27f25d061db064cf4a463267;hp=2be19f8439f5e9d0de4be9a96af49ae4e28528f4;hpb=808797d2d913eac7581a4e4cba3fb826ddbff775;p=csit.git diff --git a/resources/tools/dash/app/pal/trending/layout.py b/resources/tools/dash/app/pal/trending/layout.py index 2be19f8439..eac02ced6f 100644 --- a/resources/tools/dash/app/pal/trending/layout.py +++ b/resources/tools/dash/app/pal/trending/layout.py @@ -25,14 +25,14 @@ from dash import callback_context, no_update, ALL from dash import Input, Output, State from dash.exceptions import PreventUpdate from yaml import load, FullLoader, YAMLError -from datetime import datetime, timedelta +from datetime import datetime from copy import deepcopy from json import loads, JSONDecodeError from ast import literal_eval from ..utils.constants import Constants as C from ..utils.utils import show_tooltip, label, sync_checklists, list_tests, \ - get_date, gen_new_url + gen_new_url, generate_options from ..utils.url_processing import url_decode from ..data.data import Data from .graphs import graph_trending, graph_hdrh_latency, \ @@ -239,6 +239,7 @@ class Layout: if self.html_layout and self.spec_tbs: return html.Div( id="div-main", + className="small", children=[ dbc.Row( id="row-navbar", @@ -594,32 +595,7 @@ class Layout: class_name="me-1", color="info" ) - ], - size="md", - ) - ] - ), - dbc.Row( - class_name="gy-1", - children=[ - dbc.Label( - class_name="gy-1", - children=show_tooltip(self._tooltips, - "help-time-period", "Time Period"), - ), - dcc.DatePickerRange( - id="dpr-period", - className="d-flex justify-content-center", - min_date_allowed=\ - datetime.utcnow() - timedelta( - days=self.time_period), - max_date_allowed=datetime.utcnow(), - initial_visible_month=datetime.utcnow(), - start_date=\ - datetime.utcnow() - timedelta( - days=self.time_period), - end_date=datetime.utcnow(), - display_format="D MMM YY" + ] ) ] ), @@ -662,8 +638,7 @@ class Layout: color="info", disabled=False ), - ], - size="md", + ] ) ] ), @@ -711,7 +686,7 @@ class Layout: "cl-ctrl-testtype-all-options": C.CL_ALL_DISABLED, "btn-ctrl-add-disabled": True, "cl-normalize-value": list(), - "cl-selected-options": list(), + "cl-selected-options": list() } self._panel = deepcopy(self._defaults) @@ -890,8 +865,6 @@ class Layout: Input("cl-ctrl-testtype-all", "value"), Input("cl-ctrl-normalize", "value"), Input("btn-ctrl-add", "n_clicks"), - Input("dpr-period", "start_date"), - Input("dpr-period", "end_date"), Input("btn-sel-remove", "n_clicks"), Input("btn-sel-remove-all", "n_clicks"), Input("url", "href") @@ -900,7 +873,7 @@ class Layout: dd_dut: str, dd_phy: str, dd_area: str, dd_test: str, cl_core: list, cl_core_all: list, cl_framesize: list, cl_framesize_all: list, cl_testtype: list, cl_testtype_all: list, cl_normalize: list, - btn_add: int, d_start: str, d_end: str, btn_remove: int, + btn_add: int, btn_remove: int, btn_remove_all: int, href: str) -> tuple: """Update the application when the event is detected. @@ -922,8 +895,6 @@ class Layout: :param cl_testtype_all: Input - All test types. :param cl_normalize: Input - Normalize the results. :param btn_add: Input - Button "Add Selected" tests. - :param d_start: Date and time where the data processing starts. - :param d_end: Date and time where the data processing ends. :param btn_remove: Input - Button "Remove selected" tests. :param btn_remove_all: Input - Button "Remove All" tests. :param href: Input - The URL provided by the browser. @@ -942,8 +913,6 @@ class Layout: :type cl_testtype_all: list :type cl_normalize: list :type btn_add: int - :type d_start: str - :type d_end: str :type btn_remove: int :type btn_remove_all: int :type href: str @@ -952,12 +921,14 @@ class Layout: """ ctrl_panel = self.ControlPanel(cp_data) - - d_start = get_date(d_start) - d_end = get_date(d_end) + norm = cl_normalize # Parse the url: parsed_url = url_decode(href) + if parsed_url: + url_params = parsed_url["params"] + else: + url_params = None row_fig_tput = no_update row_fig_lat = no_update @@ -969,11 +940,8 @@ class Layout: if trigger_id == "dd-ctrl-dut": try: - dut = self.spec_tbs[dd_dut] - options = sorted( - [{"label": v, "value": v}for v in dut.keys()], - key=lambda d: d["label"] - ) + options = \ + generate_options(sorted(self.spec_tbs[dd_dut].keys())) disabled = False except KeyError: options = list() @@ -1006,10 +974,8 @@ class Layout: try: dut = ctrl_panel.get("dd-ctrl-dut-value") phy = self.spec_tbs[dut][dd_phy] - options = sorted( - [{"label": label(v), "value": v} for v in phy.keys()], - key=lambda d: d["label"] - ) + options = [{"label": label(v), "value": v} \ + for v in sorted(phy.keys())] disabled = False except KeyError: options = list() @@ -1040,10 +1006,7 @@ class Layout: 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 area.keys()], - key=lambda d: d["label"] - ) + options = generate_options(sorted(area.keys())) disabled = False except KeyError: options = list() @@ -1067,34 +1030,25 @@ class Layout: "cl-ctrl-testtype-all-options": C.CL_ALL_DISABLED, }) elif trigger_id == "dd-ctrl-test": - core_opts = list() - framesize_opts = list() - testtype_opts = list() dut = ctrl_panel.get("dd-ctrl-dut-value") phy = ctrl_panel.get("dd-ctrl-phy-value") area = ctrl_panel.get("dd-ctrl-area-value") - 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)] + if all((dut, phy, area, dd_test, )): + test = self.spec_tbs[dut][phy][area][dd_test] ctrl_panel.set({ "dd-ctrl-test-value": dd_test, - "cl-ctrl-core-options": core_opts, + "cl-ctrl-core-options": \ + generate_options(sorted(test["core"])), "cl-ctrl-core-value": list(), "cl-ctrl-core-all-value": list(), "cl-ctrl-core-all-options": C.CL_ALL_ENABLED, - "cl-ctrl-framesize-options": framesize_opts, + "cl-ctrl-framesize-options": \ + generate_options(sorted(test["frame-size"])), "cl-ctrl-framesize-value": list(), "cl-ctrl-framesize-all-value": list(), "cl-ctrl-framesize-all-options": C.CL_ALL_ENABLED, - "cl-ctrl-testtype-options": testtype_opts, + "cl-ctrl-testtype-options": \ + generate_options(sorted(test["test-type"])), "cl-ctrl-testtype-value": list(), "cl-ctrl-testtype-all-value": list(), "cl-ctrl-testtype-all-options": C.CL_ALL_ENABLED, @@ -1222,30 +1176,70 @@ class Layout: new_store_sel.append(item) store_sel = new_store_sel elif trigger_id == "url": - # TODO: Add verification - url_params = parsed_url["params"] if url_params: - store_sel = literal_eval( - url_params.get("store_sel", list())[0]) - d_start = get_date(url_params.get("start", list())[0]) - d_end = get_date(url_params.get("end", list())[0]) + try: + store_sel = literal_eval(url_params["store_sel"][0]) + norm = literal_eval(url_params["norm"][0]) + except (KeyError, IndexError): + pass if store_sel: row_card_sel_tests = C.STYLE_ENABLED row_btns_sel_tests = C.STYLE_ENABLED - - if trigger_id in ("btn-ctrl-add", "url", "dpr-period", - "btn-sel-remove", "cl-ctrl-normalize"): + last_test = store_sel[-1] + test = self.spec_tbs[last_test["dut"]]\ + [last_test["phy"]][last_test["area"]]\ + [last_test["test"]] + ctrl_panel.set({ + "dd-ctrl-dut-value": last_test["dut"], + "dd-ctrl-phy-value": last_test["phy"], + "dd-ctrl-phy-options": generate_options(sorted( + self.spec_tbs[last_test["dut"]].keys())), + "dd-ctrl-phy-disabled": False, + "dd-ctrl-area-value": last_test["area"], + "dd-ctrl-area-options": [ + {"label": label(v), "value": v} \ + for v in sorted( + self.spec_tbs[last_test["dut"]]\ + [last_test["phy"]].keys()) + ], + "dd-ctrl-area-disabled": False, + "dd-ctrl-test-value": last_test["test"], + "dd-ctrl-test-options": generate_options(sorted( + self.spec_tbs[last_test["dut"]]\ + [last_test["phy"]]\ + [last_test["area"]].keys())), + "dd-ctrl-test-disabled": False, + "cl-ctrl-core-options": generate_options(sorted( + test["core"])), + "cl-ctrl-core-value": [last_test["core"].upper(), ], + "cl-ctrl-core-all-value": list(), + "cl-ctrl-core-all-options": C.CL_ALL_ENABLED, + "cl-ctrl-framesize-options": generate_options( + sorted(test["frame-size"])), + "cl-ctrl-framesize-value": \ + [last_test["framesize"].upper(), ], + "cl-ctrl-framesize-all-value": list(), + "cl-ctrl-framesize-all-options": C.CL_ALL_ENABLED, + "cl-ctrl-testtype-options": generate_options(sorted( + test["test-type"])), + "cl-ctrl-testtype-value": \ + [last_test["testtype"].upper(), ], + "cl-ctrl-testtype-all-value": list(), + "cl-ctrl-testtype-all-options": C.CL_ALL_ENABLED + }) + + if trigger_id in ("btn-ctrl-add", "url", "btn-sel-remove", + "cl-ctrl-normalize"): 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, bool(cl_normalize)), + bool(norm)), gen_new_url( parsed_url, { "store_sel": store_sel, - "start": d_start, - "end": d_end + "norm": norm } ) ) @@ -1269,7 +1263,7 @@ class Layout: disabled = True ctrl_panel.set({ "btn-ctrl-add-disabled": disabled, - "cl-normalize-value": cl_normalize + "cl-normalize-value": norm }) ret_val = [