C-Dash: Add search in tests
[csit.git] / csit.infra.dash / app / cdash / coverage / layout.py
index 8c11523..8ebda5e 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2023 Cisco and/or its affiliates.
+# Copyright (c) 2024 Cisco and/or its affiliates.
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at:
@@ -29,7 +29,7 @@ from ast import literal_eval
 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
+from ..utils.utils import label, gen_new_url, generate_options, navbar_report
 from ..utils.url_processing import url_decode
 from .tables import coverage_tables, select_coverage_data
 
@@ -113,10 +113,10 @@ class Layout:
                 tbs[rls][dut] = dict()
             if tbs[rls][dut].get(d_ver, None) is None:
                 tbs[rls][dut][d_ver] = dict()
-            if tbs[rls][dut][d_ver].get(infra, None) is None:
-                tbs[rls][dut][d_ver][infra] = list()
-            if area not in tbs[rls][dut][d_ver][infra]:
-                tbs[rls][dut][d_ver][infra].append(area)
+            if tbs[rls][dut][d_ver].get(area, None) is None:
+                tbs[rls][dut][d_ver][area] = list()
+            if infra not in tbs[rls][dut][d_ver][area]:
+                tbs[rls][dut][d_ver][area].append(infra)
 
         self._spec_tbs = tbs
 
@@ -161,9 +161,7 @@ class Layout:
                     dbc.Row(
                         id="row-navbar",
                         class_name="g-0",
-                        children=[
-                            self._add_navbar()
-                        ]
+                        children=[navbar_report((False, False, True, False)), ]
                     ),
                     dbc.Row(
                         id="row-main",
@@ -203,43 +201,6 @@ class Layout:
                 ]
             )
 
-    def _add_navbar(self):
-        """Add nav element with navigation panel. It is placed on the top.
-
-        :returns: Navigation bar.
-        :rtype: dbc.NavbarSimple
-        """
-        return dbc.NavbarSimple(
-            id="navbarsimple-main",
-            children=[
-                dbc.NavItem(dbc.NavLink(
-                    C.REPORT_TITLE,
-                    external_link=True,
-                    href="/report"
-                )),
-                dbc.NavItem(dbc.NavLink(
-                    "Comparisons",
-                    external_link=True,
-                    href="/comparisons"
-                )),
-                dbc.NavItem(dbc.NavLink(
-                    "Coverage Data",
-                    active=True,
-                    external_link=True,
-                    href="/coverage"
-                )),
-                dbc.NavItem(dbc.NavLink(
-                    "Documentation",
-                    id="btn-documentation",
-                ))
-            ],
-            brand=C.BRAND,
-            brand_href="/",
-            brand_external_link=True,
-            class_name="p-2",
-            fluid=True
-        )
-
     def _add_ctrl_col(self) -> dbc.Col:
         """Add column with controls. It is placed on the left side.
 
@@ -342,11 +303,10 @@ class Layout:
                 children=[
                     dbc.InputGroup(
                         [
-                            dbc.InputGroupText("Infra"),
+                            dbc.InputGroupText("Area"),
                             dbc.Select(
-                                id={"type": "ctrl-dd", "index": "phy"},
-                                placeholder=\
-                                    "Select a Physical Test Bed Topology..."
+                                id={"type": "ctrl-dd", "index": "area"},
+                                placeholder="Select an Area..."
                             )
                         ],
                         size="sm"
@@ -358,10 +318,11 @@ class Layout:
                 children=[
                     dbc.InputGroup(
                         [
-                            dbc.InputGroupText("Area"),
+                            dbc.InputGroupText("Infra"),
                             dbc.Select(
-                                id={"type": "ctrl-dd", "index": "area"},
-                                placeholder="Select an Area..."
+                                id={"type": "ctrl-dd", "index": "phy"},
+                                placeholder=\
+                                    "Select a Physical Test Bed Topology..."
                             )
                         ],
                         size="sm"
@@ -552,21 +513,20 @@ class Layout:
                                 [selected["dut"]].keys()
                         ),
                         "dutver-dis": False,
+                        "area-val": selected["area"],
+                        "area-opt": [
+                            {"label": label(v), "value": v} \
+                                for v in sorted(self._spec_tbs[selected["rls"]]\
+                                    [selected["dut"]]\
+                                        [selected["dutver"]].keys())
+                        ],
+                        "area-dis": False,
                         "phy-val": selected["phy"],
                         "phy-opt": generate_options(
                             self._spec_tbs[selected["rls"]][selected["dut"]]\
-                                [selected["dutver"]].keys()
+                                [selected["dutver"]][selected["area"]]
                         ),
                         "phy-dis": False,
-                        "area-val": selected["area"],
-                        "area-opt": [
-                            {"label": label(v), "value": v} for v in sorted(
-                                self._spec_tbs[selected["rls"]]\
-                                    [selected["dut"]][selected["dutver"]]\
-                                        [selected["phy"]]
-                            )
-                        ],
-                        "area-dis": False,
                         "show-latency": show_latency
                     })
                     on_draw = True
@@ -623,42 +583,42 @@ class Layout:
                     try:
                         rls = ctrl_panel.get("rls-val")
                         dut = ctrl_panel.get("dut-val")
-                        dutver = self._spec_tbs[rls][dut][trigger.value]
-                        options = generate_options(dutver.keys())
+                        ver = self._spec_tbs[rls][dut][trigger.value]
+                        options = [
+                            {"label": label(v), "value": v} for v in sorted(ver)
+                        ]
                         disabled = False
                     except KeyError:
                         options = list()
                         disabled = True
                     ctrl_panel.set({
                         "dutver-val": trigger.value,
-                        "phy-val": str(),
-                        "phy-opt": options,
-                        "phy-dis": disabled,
                         "area-val": str(),
-                        "area-opt": list(),
-                        "area-dis": True
+                        "area-opt": options,
+                        "area-dis": disabled,
+                        "phy-val": str(),
+                        "phy-opt": list(),
+                        "phy-dis": True
                     })
-                elif trigger.idx == "phy":
+                elif trigger.idx == "area":
                     try:
                         rls = ctrl_panel.get("rls-val")
                         dut = ctrl_panel.get("dut-val")
-                        dutver = ctrl_panel.get("dutver-val")
-                        phy = self._spec_tbs[rls][dut][dutver][trigger.value]
-                        options = [
-                            {"label": label(v), "value": v} for v in sorted(phy)
-                        ]
+                        ver = ctrl_panel.get("dutver-val")
+                        options = generate_options(
+                            self._spec_tbs[rls][dut][ver][trigger.value])
                         disabled = False
                     except KeyError:
                         options = list()
                         disabled = True
                     ctrl_panel.set({
-                        "phy-val": trigger.value,
-                        "area-val": str(),
-                        "area-opt": options,
-                        "area-dis": disabled
+                        "area-val": trigger.value,
+                        "phy-val": str(),
+                        "phy-opt": options,
+                        "phy-dis": disabled
                     })
-                elif trigger.idx == "area":
-                    ctrl_panel.set({"area-val": trigger.value})
+                elif trigger.idx == "phy":
+                    ctrl_panel.set({"phy-val": trigger.value})
                     selected = {
                         "rls": ctrl_panel.get("rls-val"),
                         "dut": ctrl_panel.get("dut-val"),