C-Dash: Add hyperlinks to job/builds
[csit.git] / csit.infra.dash / app / cdash / report / graphs.py
index 2d1f4b1..cff5bb6 100644 (file)
@@ -20,7 +20,7 @@ import pandas as pd
 from copy import deepcopy
 
 from ..utils.constants import Constants as C
-from ..utils.utils import get_color
+from ..utils.utils import get_color, get_hdrh_latencies
 
 
 def select_iterative_data(data: pd.DataFrame, itm:dict) -> pd.DataFrame:
@@ -80,7 +80,7 @@ def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict,
     :param data: Data frame with iterative data.
     :param sel: Selected tests.
     :param layout: Layout of plot.ly graph.
-    :param normalize: If True, the data is normalized to CPU frquency
+    :param normalize: If True, the data is normalized to CPU frequency
         Constants.NORM_FREQUENCY.
     :param data: pandas.DataFrame
     :param sel: dict
@@ -121,18 +121,16 @@ def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict,
 
         if itm["testtype"] == "mrr":
             y_data_raw = itm_data[C.VALUE_ITER[ttype]].to_list()[0]
-            y_data = [(y * norm_factor) for y in y_data_raw]
-            if len(y_data) > 0:
-                y_tput_max = \
-                    max(y_data) if max(y_data) > y_tput_max else y_tput_max
         else:
             y_data_raw = itm_data[C.VALUE_ITER[ttype]].to_list()
-            y_data = [(y * norm_factor) for y in y_data_raw]
-            if y_data:
-                y_tput_max = \
-                    max(y_data) if max(y_data) > y_tput_max else y_tput_max
+        y_data = [(y * norm_factor) for y in y_data_raw]
+        if y_data:
+            y_tput_max = max(max(y_data), y_tput_max)
 
         nr_of_samples = len(y_data)
+        c_data = list()
+        for _, row in itm_data.iterrows():
+            c_data.append(f"{row['job']}/{row['build']}")
         tput_kwargs = dict(
             y=y_data,
             name=(
@@ -144,16 +142,26 @@ def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict,
             hoverinfo=u"y+name",
             boxpoints="all",
             jitter=0.3,
-            marker=dict(color=get_color(idx))
+            marker=dict(color=get_color(idx)),
+            customdata=c_data
         )
         tput_traces.append(go.Box(**tput_kwargs))
         show_tput = True
 
         if ttype == "pdr":
-            y_lat_row = itm_data[C.VALUE_ITER["pdr-lat"]].to_list()
+            customdata = list()
+            for _, row in itm_data.iterrows():
+                customdata.append(
+                    get_hdrh_latencies(row, f"{row['job']}/{row['build']}")
+                )
+
+            y_lat_row = itm_data[C.VALUE_ITER["latency"]].to_list()
             y_lat = [(y / norm_factor) for y in y_lat_row]
             if y_lat:
-                y_lat_max = max(y_lat) if max(y_lat) > y_lat_max else y_lat_max
+                try:
+                    y_lat_max = max(max(y_lat), y_lat_max)
+                except TypeError:
+                    continue
             nr_of_samples = len(y_lat)
             lat_kwargs = dict(
                 y=y_lat,
@@ -166,7 +174,8 @@ def graph_iterative(data: pd.DataFrame, sel:dict, layout: dict,
                 hoverinfo="all",
                 boxpoints="all",
                 jitter=0.3,
-                marker=dict(color=get_color(idx))
+                marker=dict(color=get_color(idx)),
+                customdata=customdata
             )
             x_lat.append(idx + 1)
             lat_traces.append(go.Box(**lat_kwargs))