feat(uti): Add constant TIME_PERIOD
[csit.git] / resources / tools / dash / app / pal / trending / layout.py
index a3b3fa8..470f72e 100644 (file)
@@ -17,6 +17,7 @@
 import pandas as pd
 import dash_bootstrap_components as dbc
 
+from flask import Flask
 from dash import dcc
 from dash import html
 from dash import callback_context, no_update, ALL
@@ -52,8 +53,9 @@ class Layout:
 
     PLACEHOLDER = html.Nobr("")
 
-    def __init__(self, app, html_layout_file, spec_file, graph_layout_file,
-        data_spec_file):
+    def __init__(self, app: Flask, html_layout_file: str, spec_file: str,
+        graph_layout_file: str, data_spec_file: str,
+        time_period: str=None) -> None:
         """
         """
 
@@ -63,20 +65,26 @@ class Layout:
         self._spec_file = spec_file
         self._graph_layout_file = graph_layout_file
         self._data_spec_file = data_spec_file
+        self._time_period = time_period
 
         # Read the data:
         data_mrr = Data(
             data_spec_file=self._data_spec_file,
             debug=True
-        ).read_trending_mrr(days=5)
+        ).read_trending_mrr(days=self._time_period)
 
         data_ndrpdr = Data(
             data_spec_file=self._data_spec_file,
             debug=True
-        ).read_trending_ndrpdr(days=14)
+        ).read_trending_ndrpdr(days=self._time_period)
 
         self._data = pd.concat([data_mrr, data_ndrpdr], ignore_index=True)
 
+        data_time_period = \
+            (datetime.utcnow() - self._data["start_time"].min()).days
+        if self._time_period > data_time_period:
+            self._time_period = data_time_period
+
         # Read from files:
         self._html_layout = ""
         self._spec_tbs = None
@@ -139,6 +147,10 @@ class Layout:
     def layout(self):
         return self._graph_layout
 
+    @property
+    def time_period(self):
+        return self._time_period
+
     def add_content(self):
         """
         """
@@ -266,48 +278,58 @@ class Layout:
             class_name="g-0 p-2",
             children=[
                 dbc.Row(
-                    class_name="gy-1",
+                    class_name="g-0",
                     children=[
-                        dbc.Label(
-                            "Physical Test Bed Topology, NIC and Driver",
-                            class_name="p-0"
-                        ),
-                        dbc.Select(
-                            id="dd-ctrl-phy",
-                            placeholder="Select a Physical Test Bed Topology...",
-                            options=[
-                                {"label": k, "value": k} for k in self.spec_tbs.keys()
+                        dbc.InputGroup(
+                            [
+                                dbc.InputGroupText("Infra"),
+                                dbc.Select(
+                                    id="dd-ctrl-phy",
+                                    placeholder=(
+                                        "Select a Physical Test Bed "
+                                        "Topology..."
+                                    ),
+                                    options=[
+                                        {"label": k, "value": k} \
+                                            for k in self.spec_tbs.keys()
+                                    ],
+                                ),
                             ],
+                            class_name="mb-3",
                             size="sm",
                         ),
                     ]
                 ),
                 dbc.Row(
-                    class_name="gy-1",
+                    class_name="g-0",
                     children=[
-                        dbc.Label(
-                            "Area",
-                            class_name="p-0"
-                        ),
-                        dbc.Select(
-                            id="dd-ctrl-area",
-                            placeholder="Select an Area...",
-                            disabled=True,
+                        dbc.InputGroup(
+                            [
+                                dbc.InputGroupText("Area"),
+                                dbc.Select(
+                                    id="dd-ctrl-area",
+                                    placeholder="Select an Area...",
+                                    disabled=True,
+                                ),
+                            ],
+                            class_name="mb-3",
                             size="sm",
                         ),
                     ]
                 ),
                 dbc.Row(
-                    class_name="gy-1",
+                    class_name="g-0",
                     children=[
-                        dbc.Label(
-                            "Test",
-                            class_name="p-0"
-                        ),
-                        dbc.Select(
-                            id="dd-ctrl-test",
-                            placeholder="Select a Test...",
-                            disabled=True,
+                        dbc.InputGroup(
+                            [
+                                dbc.InputGroupText("Test"),
+                                dbc.Select(
+                                    id="dd-ctrl-test",
+                                    placeholder="Select a Test...",
+                                    disabled=True,
+                                ),
+                            ],
+                            class_name="mb-3",
                             size="sm",
                         ),
                     ]
@@ -403,14 +425,15 @@ class Layout:
                     ]
                 ),
                 dbc.Row(
-                    class_name="gy-1",
+                    class_name="gy-1 p-0",
                     children=[
                         dbc.ButtonGroup(
                             [
                                 dbc.Button(
                                     id="btn-ctrl-add",
                                     children="Add Selected",
-                                    color="secondary",
+                                    class_name="me-1",
+                                    color="info"
                                 )
                             ],
                             size="md",
@@ -424,10 +447,13 @@ class Layout:
                             id="dpr-period",
                             className="d-flex justify-content-center",
                             min_date_allowed=\
-                                datetime.utcnow()-timedelta(days=180),
+                                datetime.utcnow() - timedelta(
+                                    days=self.time_period),
                             max_date_allowed=datetime.utcnow(),
                             initial_visible_month=datetime.utcnow(),
-                            start_date=datetime.utcnow() - timedelta(days=180),
+                            start_date=\
+                                datetime.utcnow() - timedelta(
+                                    days=self.time_period),
                             end_date=datetime.utcnow(),
                             display_format="D MMMM YY"
                         )
@@ -456,19 +482,20 @@ class Layout:
                     style=self.STYLE_DISABLED,
                     children=[
                         dbc.ButtonGroup(
+                            class_name="gy-2",
                             children=[
                                 dbc.Button(
-                                    id="btn-sel-remove-all",
-                                    children="Remove All",
-                                    class_name="w-100",
-                                    color="secondary",
+                                    id="btn-sel-remove",
+                                    children="Remove Selected",
+                                    class_name="w-100 me-1",
+                                    color="info",
                                     disabled=False
                                 ),
                                 dbc.Button(
-                                    id="btn-sel-remove",
-                                    children="Remove Selected",
-                                    class_name="w-100",
-                                    color="secondary",
+                                    id="btn-sel-remove-all",
+                                    children="Remove All",
+                                    class_name="w-100 me-1",
+                                    color="info",
                                     disabled=False
                                 ),
                             ],
@@ -586,7 +613,9 @@ class Layout:
                     dcc.Loading(children=[
                         dbc.Button(
                             id="btn-download-data",
-                            children=["Download Data"]
+                            children=["Download Data"],
+                            class_name="me-1",
+                            color="info"
                         ),
                         dcc.Download(id="download-data")
                     ]),