UTI: Add URL support to "News"
[csit.git] / resources / tools / dash / app / pal / stats / layout.py
index 5c3758b..2e74fb8 100644 (file)
@@ -28,8 +28,10 @@ from yaml import load, FullLoader, YAMLError
 from datetime import datetime, timedelta
 from copy import deepcopy
 
+from ..utils.constants import Constants as C
+from ..utils.utils import show_tooltip, gen_new_url
+from ..utils.url_processing import url_decode
 from ..data.data import Data
-from ..data.url_processing import url_decode, url_encode
 from .graphs import graph_statistics, select_data
 
 
@@ -37,14 +39,6 @@ class Layout:
     """
     """
 
-    DEFAULT_JOB = "csit-vpp-perf-mrr-daily-master-2n-icx"
-
-    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: int=None) -> None:
@@ -95,7 +89,7 @@ class Layout:
             job_info["tbed"].append("-".join(lst_job[-2:]))
         self.df_job_info = pd.DataFrame.from_dict(job_info)
 
-        self._default = self._set_job_params(self.DEFAULT_JOB)
+        self._default = self._set_job_params(C.STATS_DEFAULT_JOB)
 
         tst_info = {
             "job": list(),
@@ -268,29 +262,6 @@ class Layout:
                 lst_job[1], lst_job[3], lst_job[4]))
         }
 
-    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):
         """
         """
@@ -415,7 +386,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"
@@ -431,15 +402,18 @@ class Layout:
                                     class_name="me-1",
                                     children=[
                                         dbc.InputGroupText(
-                                            style=self.URL_STYLE,
-                                            children=self._show_tooltip(
-                                                "help-url", "URL", "input-url")
+                                            style=C.URL_STYLE,
+                                            children=show_tooltip(
+                                                self._tooltips,
+                                                "help-url", "URL",
+                                                "input-url"
+                                            )
                                         ),
                                         dbc.Input(
                                             id="input-url",
                                             readonly=True,
                                             type="url",
-                                            style=self.URL_STYLE,
+                                            style=C.URL_STYLE,
                                             value=""
                                         )
                                     ]
@@ -467,7 +441,7 @@ class Layout:
                             children=[
                                 dbc.Label(
                                     class_name="p-0",
-                                    children=self._show_tooltip(
+                                    children=show_tooltip(self._tooltips,
                                         "help-dut", "Device under Test")
                                 ),
                                 dbc.Row(
@@ -485,7 +459,7 @@ class Layout:
                             children=[
                                 dbc.Label(
                                     class_name="p-0",
-                                    children=self._show_tooltip(
+                                    children=show_tooltip(self._tooltips,
                                         "help-ttype", "Test Type"),
                                 ),
                                 dbc.RadioItems(
@@ -501,7 +475,7 @@ class Layout:
                             children=[
                                 dbc.Label(
                                     class_name="p-0",
-                                    children=self._show_tooltip(
+                                    children=show_tooltip(self._tooltips,
                                         "help-cadence", "Cadence"),
                                 ),
                                 dbc.RadioItems(
@@ -517,7 +491,7 @@ class Layout:
                             children=[
                                 dbc.Label(
                                     class_name="p-0",
-                                    children=self._show_tooltip(
+                                    children=show_tooltip(self._tooltips,
                                         "help-tbed", "Test Bed"),
                                 ),
                                 dbc.Select(
@@ -543,7 +517,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(
@@ -636,7 +610,6 @@ class Layout:
             Input("dpr-period", "start_date"),
             Input("dpr-period", "end_date"),
             Input("url", "href")
-            # prevent_initial_call=True
         )
         def _update_ctrl_panel(cp_data: dict, dut:str, ttype: str, cadence:str,
                 tbed: str, start: str, end: str, href: str) -> tuple:
@@ -736,25 +709,18 @@ class Layout:
             fig_passed, fig_duration = graph_statistics(self.data, job,
                 self.layout, start, end)
 
-            if parsed_url:
-                new_url = url_encode({
-                    "scheme": parsed_url["scheme"],
-                    "netloc": parsed_url["netloc"],
-                    "path": parsed_url["path"],
-                    "params": {
-                        "job": job,
-                        "start": start,
-                        "end": end
-                    }
-                })
-            else:
-                new_url = str()
-
             ret_val = [
                 ctrl_panel.panel,
                 fig_passed,
                 fig_duration,
-                new_url
+                gen_new_url(
+                    parsed_url,
+                    {
+                        "job": job,
+                        "start": start,
+                        "end": end
+                    }
+                )
             ]
             ret_val.extend(ctrl_panel.values())
             return ret_val