diff --git a/backend/kernelCI_app/typeModels/commonDetails.py b/backend/kernelCI_app/typeModels/commonDetails.py index be4025713..186dcee27 100644 --- a/backend/kernelCI_app/typeModels/commonDetails.py +++ b/backend/kernelCI_app/typeModels/commonDetails.py @@ -1,6 +1,6 @@ from collections import defaultdict from datetime import datetime -from typing import Dict, List, Optional, Set, Union +from typing import Dict, List, Optional, Set, Union, Tuple from kernelCI_app.typeModels.issues import Issue from pydantic import BaseModel @@ -98,7 +98,7 @@ class GlobalFilters(BaseModel): class LocalFilters(BaseModel): - issues: List[str] + issues: List[Tuple[str, Optional[int]]] class DetailsFilters(BaseModel): diff --git a/dashboard/src/types/commonDetails.ts b/dashboard/src/types/commonDetails.ts index c048ab6f4..18b8b8fd9 100644 --- a/dashboard/src/types/commonDetails.ts +++ b/dashboard/src/types/commonDetails.ts @@ -40,8 +40,10 @@ export type GlobalFilters = { compilers: string[]; }; +export type IssueFilterItem = [string, string?]; + export type LocalFilters = { - issues: string[]; + issues: IssueFilterItem[]; }; export type DetailsFilters = { diff --git a/dashboard/src/utils/utils.ts b/dashboard/src/utils/utils.ts index 186ce3b11..f15433242 100644 --- a/dashboard/src/utils/utils.ts +++ b/dashboard/src/utils/utils.ts @@ -11,6 +11,7 @@ import type { BuildsTableBuild, BuildStatus, StatusCount, + TIssue, } from '@/types/general'; import { sanitizeTableValue } from '@/components/Table/tableUtils'; import type { ISummaryItem } from '@/components/Tabs/Summary'; @@ -206,3 +207,14 @@ export const isEmptyObject = (obj: Record): boolean => { } return true; }; + +type TIssueFilter = Pick; + +export const getIssueFilterLabel = (issueFilter: TIssueFilter): string => { + const issueId = issueFilter.id; + const issueVersion = issueFilter.version; + + if (!issueVersion) return issueId; + + return `${issueId} v.${issueVersion}`; +};