aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools/dash/app/pal/trending
diff options
context:
space:
mode:
authorTibor Frank <tifrank@cisco.com>2022-07-21 13:40:50 +0200
committerTibor Frank <tifrank@cisco.com>2022-07-21 13:40:50 +0200
commitaa9f6d2b4d417b439e2953a9c82c31b0d561f632 (patch)
tree39e7ec4ed6199b332ae7ab5ac59510e677e1e144 /resources/tools/dash/app/pal/trending
parentae1fe880286d7b0414664bce2b2c7c91c3f543f3 (diff)
UTI: Move common functions to utils.
Change-Id: Ic390359afcea7855a964f8f9793f6d17a5b9b616 Signed-off-by: Tibor Frank <tifrank@cisco.com>
Diffstat (limited to 'resources/tools/dash/app/pal/trending')
-rw-r--r--resources/tools/dash/app/pal/trending/graphs.py14
-rw-r--r--resources/tools/dash/app/pal/trending/layout.py141
2 files changed, 44 insertions, 111 deletions
diff --git a/resources/tools/dash/app/pal/trending/graphs.py b/resources/tools/dash/app/pal/trending/graphs.py
index 0b4968082f..4cd8285f72 100644
--- a/resources/tools/dash/app/pal/trending/graphs.py
+++ b/resources/tools/dash/app/pal/trending/graphs.py
@@ -23,13 +23,7 @@ import hdrh.codec
from datetime import datetime
from ..utils.constants import Constants as C
-from ..utils.utils import classify_anomalies
-
-
-def _get_color(idx: int) -> str:
- """
- """
- return C.PLOT_COLORS[idx % len(C.PLOT_COLORS)]
+from ..utils.utils import classify_anomalies, get_color
def _get_hdrh_latencies(row: pd.Series, name: str) -> dict:
@@ -272,7 +266,7 @@ def graph_trending(data: pd.DataFrame, sel:dict, layout: dict,
else:
norm_factor = 1.0
traces = _generate_trending_traces(
- itm["testtype"], name, df, start, end, _get_color(idx), norm_factor
+ itm["testtype"], name, df, start, end, get_color(idx), norm_factor
)
if traces:
if not fig_tput:
@@ -281,7 +275,7 @@ def graph_trending(data: pd.DataFrame, sel:dict, layout: dict,
if itm["testtype"] == "pdr":
traces = _generate_trending_traces(
- "pdr-lat", name, df, start, end, _get_color(idx), norm_factor
+ "pdr-lat", name, df, start, end, get_color(idx), norm_factor
)
if traces:
if not fig_lat:
@@ -348,7 +342,7 @@ def graph_hdrh_latency(data: dict, layout: dict) -> go.Figure:
legendgroup=C.GRAPH_LAT_HDRH_DESC[lat_name],
showlegend=bool(idx % 2),
line=dict(
- color=_get_color(int(idx/2)),
+ color=get_color(int(idx/2)),
dash="solid",
width=1 if idx % 2 else 2
),
diff --git a/resources/tools/dash/app/pal/trending/layout.py b/resources/tools/dash/app/pal/trending/layout.py
index 48a8e5481e..0fe28ebed5 100644
--- a/resources/tools/dash/app/pal/trending/layout.py
+++ b/resources/tools/dash/app/pal/trending/layout.py
@@ -31,7 +31,9 @@ from json import loads, JSONDecodeError
from ast import literal_eval
from ..utils.constants import Constants as C
-from ..utils.url_processing import url_decode, url_encode
+from ..utils.utils import show_tooltip, label, sync_checklists, list_tests, \
+ get_date, gen_new_url
+from ..utils.url_processing import url_decode
from ..data.data import Data
from .graphs import graph_trending, graph_hdrh_latency, \
select_trending_data
@@ -197,32 +199,6 @@ class Layout:
def time_period(self):
return self._time_period
- def label(self, key: str) -> str:
- return C.LABELS.get(key, key)
-
- 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,
- children="?",
- pill=True,
- color="white",
- text_color="info",
- class_name="border ms-1",
- ),
- dbc.Tooltip(
- children=self._tooltips.get(id, str()),
- target=id,
- placement="auto"
- )
- ]
-
def add_content(self):
"""
"""
@@ -356,7 +332,7 @@ class Layout:
dbc.InputGroup(
[
dbc.InputGroupText(
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-dut", "DUT")
),
dbc.Select(
@@ -384,7 +360,7 @@ class Layout:
dbc.InputGroup(
[
dbc.InputGroupText(
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-infra", "Infra")
),
dbc.Select(
@@ -406,7 +382,7 @@ class Layout:
dbc.InputGroup(
[
dbc.InputGroupText(
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-area", "Area")
),
dbc.Select(
@@ -426,7 +402,7 @@ class Layout:
dbc.InputGroup(
[
dbc.InputGroupText(
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-test", "Test")
),
dbc.Select(
@@ -445,7 +421,7 @@ class Layout:
class_name="gy-1",
children=[
dbc.Label(
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-framesize", "Frame Size"),
class_name="p-0"
),
@@ -476,7 +452,7 @@ class Layout:
class_name="gy-1",
children=[
dbc.Label(
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-cores", "Number of Cores"),
class_name="p-0"
),
@@ -507,7 +483,7 @@ class Layout:
class_name="gy-1",
children=[
dbc.Label(
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-ttype", "Test Type"),
class_name="p-0"
),
@@ -538,7 +514,7 @@ class Layout:
class_name="gy-1",
children=[
dbc.Label(
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-normalize", "Normalize"),
class_name="p-0"
),
@@ -582,7 +558,7 @@ class Layout:
children=[
dbc.Label(
class_name="gy-1",
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-time-period", "Time Period"),
),
dcc.DatePickerRange(
@@ -706,30 +682,6 @@ class Layout:
def values(self) -> tuple:
return tuple(self._panel.values())
- @staticmethod
- def _sync_checklists(opt: list, sel: list, all: list, id: str) -> tuple:
- """
- """
- options = {v["value"] for v in opt}
- if id =="all":
- sel = list(options) if all else list()
- else:
- all = ["all", ] if set(sel) == options else list()
- return sel, all
-
- @staticmethod
- def _list_tests(selection: dict) -> list:
- """Display selected tests with checkboxes
- """
- if selection:
- return [{"label": v["id"], "value": v["id"]} for v in selection]
- else:
- return list()
-
- @staticmethod
- def _get_date(s_date: str) -> datetime:
- return datetime(int(s_date[0:4]), int(s_date[5:7]), int(s_date[8:10]))
-
def callbacks(self, app):
def _generate_plotting_area(figs: tuple, url: str) -> tuple:
@@ -756,7 +708,7 @@ class Layout:
dcc.Loading(children=[
dbc.Button(
id="btn-download-data",
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-download", "Download Data"),
class_name="me-1",
color="info"
@@ -773,7 +725,7 @@ class Layout:
children=[
dbc.InputGroupText(
style=C.URL_STYLE,
- children=self._show_tooltip(
+ children=show_tooltip(self._tooltips,
"help-url", "URL", "input-url")
),
dbc.Input(
@@ -861,29 +813,10 @@ class Layout:
"""
"""
- def _gen_new_url(parsed_url: dict, store_sel: list,
- start: datetime, end: datetime) -> str:
-
- if parsed_url:
- new_url = url_encode({
- "scheme": parsed_url["scheme"],
- "netloc": parsed_url["netloc"],
- "path": parsed_url["path"],
- "params": {
- "store_sel": store_sel,
- "start": start,
- "end": end
- }
- })
- else:
- new_url = str()
- return new_url
-
-
ctrl_panel = self.ControlPanel(cp_data)
- d_start = self._get_date(d_start)
- d_end = self._get_date(d_end)
+ d_start = get_date(d_start)
+ d_end = get_date(d_end)
# Parse the url:
parsed_url = url_decode(href)
@@ -936,8 +869,7 @@ class Layout:
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 phy.keys()],
+ [{"label": label(v), "value": v} for v in phy.keys()],
key=lambda d: d["label"]
)
disabled = False
@@ -1030,8 +962,8 @@ class Layout:
"cl-ctrl-testtype-all-options": C.CL_ALL_ENABLED,
})
elif trigger_id == "cl-ctrl-core":
- val_sel, val_all = self._sync_checklists(
- opt=ctrl_panel.get("cl-ctrl-core-options"),
+ val_sel, val_all = sync_checklists(
+ options=ctrl_panel.get("cl-ctrl-core-options"),
sel=cl_core,
all=list(),
id=""
@@ -1041,8 +973,8 @@ class Layout:
"cl-ctrl-core-all-value": val_all,
})
elif trigger_id == "cl-ctrl-core-all":
- val_sel, val_all = self._sync_checklists(
- opt = ctrl_panel.get("cl-ctrl-core-options"),
+ val_sel, val_all = sync_checklists(
+ options = ctrl_panel.get("cl-ctrl-core-options"),
sel=list(),
all=cl_core_all,
id="all"
@@ -1052,8 +984,8 @@ class Layout:
"cl-ctrl-core-all-value": val_all,
})
elif trigger_id == "cl-ctrl-framesize":
- val_sel, val_all = self._sync_checklists(
- opt = ctrl_panel.get("cl-ctrl-framesize-options"),
+ val_sel, val_all = sync_checklists(
+ options = ctrl_panel.get("cl-ctrl-framesize-options"),
sel=cl_framesize,
all=list(),
id=""
@@ -1063,8 +995,8 @@ class Layout:
"cl-ctrl-framesize-all-value": val_all,
})
elif trigger_id == "cl-ctrl-framesize-all":
- val_sel, val_all = self._sync_checklists(
- opt = ctrl_panel.get("cl-ctrl-framesize-options"),
+ val_sel, val_all = sync_checklists(
+ options = ctrl_panel.get("cl-ctrl-framesize-options"),
sel=list(),
all=cl_framesize_all,
id="all"
@@ -1074,8 +1006,8 @@ class Layout:
"cl-ctrl-framesize-all-value": val_all,
})
elif trigger_id == "cl-ctrl-testtype":
- val_sel, val_all = self._sync_checklists(
- opt = ctrl_panel.get("cl-ctrl-testtype-options"),
+ val_sel, val_all = sync_checklists(
+ options = ctrl_panel.get("cl-ctrl-testtype-options"),
sel=cl_testtype,
all=list(),
id=""
@@ -1085,8 +1017,8 @@ class Layout:
"cl-ctrl-testtype-all-value": val_all,
})
elif trigger_id == "cl-ctrl-testtype-all":
- val_sel, val_all = self._sync_checklists(
- opt = ctrl_panel.get("cl-ctrl-testtype-options"),
+ val_sel, val_all = sync_checklists(
+ options = ctrl_panel.get("cl-ctrl-testtype-options"),
sel=list(),
all=cl_testtype_all,
id="all"
@@ -1157,8 +1089,8 @@ class Layout:
if url_params:
store_sel = literal_eval(
url_params.get("store_sel", list())[0])
- d_start = self._get_date(url_params.get("start", list())[0])
- d_end = self._get_date(url_params.get("end", list())[0])
+ d_start = get_date(url_params.get("start", list())[0])
+ d_end = get_date(url_params.get("end", list())[0])
if store_sel:
row_card_sel_tests = C.STYLE_ENABLED
row_btns_sel_tests = C.STYLE_ENABLED
@@ -1170,10 +1102,17 @@ class Layout:
_generate_plotting_area(
graph_trending(self.data, store_sel, self.layout,
d_start, d_end, bool(cl_normalize)),
- _gen_new_url(parsed_url, store_sel, d_start, d_end)
+ gen_new_url(
+ parsed_url,
+ {
+ "store_sel": store_sel,
+ "start": d_start,
+ "end": d_end
+ }
+ )
)
ctrl_panel.set({
- "cl-selected-options": self._list_tests(store_sel)
+ "cl-selected-options": list_tests(store_sel)
})
else:
row_fig_tput = C.PLACEHOLDER