C-Dash: Add indexes to the list of tests
[csit.git] / csit.infra.dash / app / cdash / utils / utils.py
index 461821d..4244560 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2023 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:
@@ -346,29 +346,48 @@ def set_job_params(df: pd.DataFrame, job: str) -> dict:
     }
 
 
-def get_list_group_items(tests: list) -> list:
-    """Generate list of ListGroupItems with checkboxes with selected tests.
-
-    :param tests: List of tests to be displayed in the ListGroup.
-    :type tests: list
-    :returns: List of ListGroupItems with checkboxes with selected tests.
+def get_list_group_items(
+        items: list,
+        type: str,
+        colorize: bool=True,
+        add_index: bool=False
+    ) -> list:
+    """Generate list of ListGroupItems with checkboxes with selected items.
+
+    :param items: List of items to be displayed in the ListGroup.
+    :param type: The type part of an element ID.
+    :param colorize: If True, the color of labels is set, otherwise the default
+        color is used.
+    :param add_index: Add index to the list items.
+    :type items: list
+    :type type: str
+    :type colorize: bool
+    :type add_index: bool
+    :returns: List of ListGroupItems with checkboxes with selected items.
     :rtype: list
     """
-    return [
-        dbc.ListGroupItem(
-            children=[
-                dbc.Checkbox(
-                    id={"type": "sel-cl", "index": i},
-                    label=l["id"],
-                    value=False,
-                    label_class_name="m-0 p-0",
-                    label_style={
-                        "font-size": ".875em",
-                        "color": get_color(i)
-                    },
-                    input_class_name="border-danger bg-danger"
-                )
-            ],
-            class_name="p-0"
-        ) for i, l in enumerate(tests)
-    ]
+
+    children = list()
+    for i, l in enumerate(items):
+        idx = f"{i + 1}. " if add_index else str()
+        label = f"{idx}{l['id']}" if isinstance(l, dict) else f"{idx}{l}"
+        children.append(
+            dbc.ListGroupItem(
+                children=[
+                    dbc.Checkbox(
+                        id={"type": type, "index": i},
+                        label=label,
+                        value=False,
+                        label_class_name="m-0 p-0",
+                        label_style={
+                            "font-size": ".875em",
+                            "color": get_color(i) if colorize else "#55595c"
+                        },
+                        class_name="info"
+                    )
+                ],
+                class_name="p-0"
+            )
+        )
+
+    return children