X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=csit.infra.dash%2Fapp%2Fcdash%2Futils%2Futils.py;h=692e45efb2cf6c86295ad1fe873904c1d0ad50b1;hb=230044632667a3eb7794218a6ba3e2fa2c9b71b4;hp=3d2866fbe03186e06cf337966660668a762a1073;hpb=7d3054dede4f630e9b20ac0e69f029bea93bdf5f;p=csit.git diff --git a/csit.infra.dash/app/cdash/utils/utils.py b/csit.infra.dash/app/cdash/utils/utils.py index 3d2866fbe0..692e45efb2 100644 --- a/csit.infra.dash/app/cdash/utils/utils.py +++ b/csit.infra.dash/app/cdash/utils/utils.py @@ -631,6 +631,39 @@ def filter_table_data( return df.to_dict("records") +def sort_table_data( + store_table_data: list, + sort_by: list + ) -> list: + """Sort table data using user specified order. + + :param store_table_data: Table data represented as a list of records. + :param sort_by: User specified sorting order (multicolumn). + :type store_table_data: list + :type sort_by: list + :returns: A new table created by sorting the table data represented as + a list of records. + :rtype: list + """ + + # Checks: + if not any((sort_by, store_table_data, )): + return store_table_data + + df = pd.DataFrame.from_records(store_table_data) + if len(sort_by): + dff = df.sort_values( + [col["column_id"] for col in sort_by], + ascending=[col["direction"] == "asc" for col in sort_by], + inplace=False + ) + else: + # No sort is applied + dff = df + + return dff.to_dict("records") + + def show_trending_graph_data( trigger: Trigger, data: dict,