feat(uti): Add constant TIME_PERIOD
[csit.git] / resources / tools / dash / app / pal / trending / layout.py
index ac866cf..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=180)
+        ).read_trending_mrr(days=self._time_period)
 
         data_ndrpdr = Data(
             data_spec_file=self._data_spec_file,
             debug=True
-        ).read_trending_ndrpdr(days=180)
+        ).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):
         """
         """
@@ -273,9 +285,13 @@ class Layout:
                                 dbc.InputGroupText("Infra"),
                                 dbc.Select(
                                     id="dd-ctrl-phy",
-                                    placeholder="Select a Physical Test Bed Topology...",
+                                    placeholder=(
+                                        "Select a Physical Test Bed "
+                                        "Topology..."
+                                    ),
                                     options=[
-                                        {"label": k, "value": k} for k in self.spec_tbs.keys()
+                                        {"label": k, "value": k} \
+                                            for k in self.spec_tbs.keys()
                                     ],
                                 ),
                             ],
@@ -431,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"
                         )