diff options
Diffstat (limited to 'csit.infra.dash/app/cdash/coverage/layout.py')
-rw-r--r-- | csit.infra.dash/app/cdash/coverage/layout.py | 63 |
1 files changed, 54 insertions, 9 deletions
diff --git a/csit.infra.dash/app/cdash/coverage/layout.py b/csit.infra.dash/app/cdash/coverage/layout.py index 8ebda5e127..b8fa0236a5 100644 --- a/csit.infra.dash/app/cdash/coverage/layout.py +++ b/csit.infra.dash/app/cdash/coverage/layout.py @@ -15,6 +15,7 @@ """ +import logging import pandas as pd import dash_bootstrap_components as dbc @@ -25,11 +26,13 @@ from dash import callback_context, no_update, ALL from dash import Input, Output, State from dash.exceptions import PreventUpdate from ast import literal_eval +from yaml import load, FullLoader, YAMLError from ..utils.constants import Constants as C from ..utils.control_panel import ControlPanel from ..utils.trigger import Trigger -from ..utils.utils import label, gen_new_url, generate_options, navbar_report +from ..utils.utils import label, gen_new_url, generate_options, navbar_report, \ + show_tooltip from ..utils.url_processing import url_decode from .tables import coverage_tables, select_coverage_data @@ -61,7 +64,8 @@ class Layout: self, app: Flask, data_coverage: pd.DataFrame, - html_layout_file: str + html_layout_file: str, + tooltip_file: str ) -> None: """Initialization: - save the input parameters, @@ -71,14 +75,18 @@ class Layout: :param app: Flask application running the dash application. :param html_layout_file: Path and name of the file specifying the HTML layout of the dash application. + :param tooltip_file: Path and name of the yaml file specifying the + tooltips. :type app: Flask :type html_layout_file: str + :type tooltip_file: str """ # Inputs self._app = app - self._html_layout_file = html_layout_file self._data = data_coverage + self._html_layout_file = html_layout_file + self._tooltip_file = tooltip_file # Get structure of tests: tbs = dict() @@ -131,6 +139,19 @@ class Layout: f"Not possible to open the file {self._html_layout_file}\n{err}" ) + try: + with open(self._tooltip_file, "r") as file_read: + self._tooltips = load(file_read, Loader=FullLoader) + except IOError as err: + logging.warning( + f"Not possible to open the file {self._tooltip_file}\n{err}" + ) + except YAMLError as err: + logging.warning( + f"An error occurred while parsing the specification file " + f"{self._tooltip_file}\n{err}" + ) + # Callbacks: if self._app is not None and hasattr(self, "callbacks"): self.callbacks(self._app) @@ -250,7 +271,11 @@ class Layout: children=[ dbc.InputGroup( [ - dbc.InputGroupText("CSIT Release"), + dbc.InputGroupText(show_tooltip( + self._tooltips, + "help-release", + "CSIT Release" + )), dbc.Select( id={"type": "ctrl-dd", "index": "rls"}, placeholder="Select a Release...", @@ -272,7 +297,11 @@ class Layout: children=[ dbc.InputGroup( [ - dbc.InputGroupText("DUT"), + dbc.InputGroupText(show_tooltip( + self._tooltips, + "help-dut", + "DUT" + )), dbc.Select( id={"type": "ctrl-dd", "index": "dut"}, placeholder="Select a Device under Test..." @@ -287,7 +316,11 @@ class Layout: children=[ dbc.InputGroup( [ - dbc.InputGroupText("DUT Version"), + dbc.InputGroupText(show_tooltip( + self._tooltips, + "help-dut-ver", + "DUT Version" + )), dbc.Select( id={"type": "ctrl-dd", "index": "dutver"}, placeholder=\ @@ -303,7 +336,11 @@ class Layout: children=[ dbc.InputGroup( [ - dbc.InputGroupText("Area"), + dbc.InputGroupText(show_tooltip( + self._tooltips, + "help-area", + "Area" + )), dbc.Select( id={"type": "ctrl-dd", "index": "area"}, placeholder="Select an Area..." @@ -318,7 +355,11 @@ class Layout: children=[ dbc.InputGroup( [ - dbc.InputGroupText("Infra"), + dbc.InputGroupText(show_tooltip( + self._tooltips, + "help-infra", + "Infra" + )), dbc.Select( id={"type": "ctrl-dd", "index": "phy"}, placeholder=\ @@ -334,7 +375,11 @@ class Layout: children=[ dbc.InputGroup( [ - dbc.InputGroupText("Latency"), + dbc.InputGroupText(show_tooltip( + self._tooltips, + "help-show-latency", + "Latency" + )), dbc.Checklist( id="show-latency", options=[{ |