X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=csit.infra.dash%2Fapp%2Fcdash%2Futils%2Futils.py;h=63e13ce1413e0dd263f196430a6d61c51e809fe9;hb=refs%2Fchanges%2F14%2F37514%2F48;hp=9e4eeeb892ae08cdd72e0eab9c2606fdda3bed08;hpb=af8e703eb180e46ca65ff0c165a21f2261896548;p=csit.git diff --git a/csit.infra.dash/app/cdash/utils/utils.py b/csit.infra.dash/app/cdash/utils/utils.py index 9e4eeeb892..63e13ce141 100644 --- a/csit.infra.dash/app/cdash/utils/utils.py +++ b/csit.infra.dash/app/cdash/utils/utils.py @@ -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: @@ -303,7 +303,7 @@ def get_job(df: pd.DataFrame, dut, ttype, cadence, testbed): )]["job"].item() -def generate_options(opts: list) -> list: +def generate_options(opts: list, sort: bool=True) -> list: """Return list of options for radio items in control panel. The items in the list are dictionaries with keys "label" and "value". @@ -312,6 +312,8 @@ def generate_options(opts: list) -> list: :returns: List of options (dict). :rtype: list """ + if sort: + opts = sorted(opts) return [{"label": i, "value": i} for i in opts] @@ -342,3 +344,36 @@ def set_job_params(df: pd.DataFrame, job: str) -> dict: "tbeds": generate_options( get_test_beds(df, l_job[1], l_job[3], l_job[4])) } + + +def get_list_group_items(items: list, type: str, colorize: bool=True) -> 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. + :type items: list + :type type: str + :type colorize: bool + :returns: List of ListGroupItems with checkboxes with selected items. + :rtype: list + """ + return [ + dbc.ListGroupItem( + children=[ + dbc.Checkbox( + id={"type": type, "index": i}, + label=l["id"] if isinstance(l, dict) else l, + 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" + ) for i, l in enumerate(items) + ]