Skip to content

Commit 90ea61b

Browse files
committed
feat: add treeDetails build lab cards
1 parent a53e01e commit 90ea61b

File tree

5 files changed

+33
-1
lines changed

5 files changed

+33
-1
lines changed

dashboard/src/locales/messages/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export const messages = {
5858
'filter.bootStatus': 'Boot Status',
5959
'filter.buildDuration': 'Build duration',
6060
'filter.buildIssue': 'Build Issue',
61+
'filter.buildLab': 'Build Lab',
6162
'filter.buildOrigin': 'Build origin',
6263
'filter.buildStatus': 'Build Status',
6364
'filter.compatiblesSubtitle': 'Please select one or more compatibles:',
@@ -77,6 +78,8 @@ export const messages = {
7778
'filter.issueCulpritSubtitle': 'Select one or more issue culprits:',
7879
'filter.issueHasIncident': 'Has incident',
7980
'filter.issueSubtitle': 'Please select one or more issues:',
81+
'filter.labs': 'Labs',
82+
'filter.labsSubtitle': 'Please select one or more labs:',
8083
'filter.max': 'Max',
8184
'filter.min': 'Min',
8285
'filter.onlySpecificTab': 'Only affects a specific tab',

dashboard/src/pages/TreeDetails/Tabs/Build/BuildTab.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ interface IBuildsTab {
6464
failedBuildsWithUnknownIssues?: number;
6565
builds: AccordionItemBuilds[];
6666
origins: Record<string, RequiredStatusCount>;
67+
labs: Record<string, RequiredStatusCount>;
6768
}
6869

6970
const BuildTab = ({
@@ -146,6 +147,7 @@ const BuildTab = ({
146147
failedBuildsWithUnknownIssues: summaryBuildsData?.unknown_issues,
147148
builds: sanitizeBuilds(fullBuildsData),
148149
origins: summaryBuildsData?.origins || {},
150+
labs: summaryBuildsData?.labs || {},
149151
}),
150152
[
151153
fullBuildsData,
@@ -155,6 +157,7 @@ const BuildTab = ({
155157
summaryBuildsData?.origins,
156158
summaryBuildsData?.status,
157159
summaryBuildsData?.unknown_issues,
160+
summaryBuildsData?.labs,
158161
],
159162
);
160163

@@ -209,6 +212,13 @@ const BuildTab = ({
209212
toggleFilterBySection={toggleFilterBySection}
210213
diffFilter={diffFilter}
211214
/>,
215+
<MemoizedFilterCard
216+
cardTitle="filter.labs"
217+
key="labs"
218+
diffFilter={diffFilter}
219+
data={treeDetailsData.labs}
220+
filterSection="buildLab"
221+
/>,
212222
<MemoizedFilterCard
213223
cardTitle="filter.origins"
214224
key="origins"

dashboard/src/pages/TreeDetails/TreeDetailsFilter.tsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ type PossibleTreeDetailsFilters = Pick<
3333
| 'buildOrigin'
3434
| 'bootOrigin'
3535
| 'testOrigin'
36+
| 'buildLab'
3637
>;
3738

3839
interface ITreeDetailsFilter {
@@ -67,6 +68,8 @@ export const createFilter = (data: TreeDetailsSummary): TFilter => {
6768
filters.bootOrigin = {};
6869
filters.testOrigin = {};
6970

71+
filters.buildLab = {};
72+
7073
// Filters affecting all tabs
7174
const allFilters = data.filters.all;
7275
for (const config of allFilters.configs) {
@@ -95,6 +98,9 @@ export const createFilter = (data: TreeDetailsSummary): TFilter => {
9598
for (const o of buildFilters.origins) {
9699
filters.buildOrigin[o] = false;
97100
}
101+
for (const l of buildFilters.labs) {
102+
filters.buildLab[l] = false;
103+
}
98104

99105
// Boot tab filters
100106
const bootFilters = data.filters.boots;
@@ -196,7 +202,15 @@ const sectionTrees: ISectionItem[] = [
196202
sectionKey: 'testOrigin',
197203
isGlobal: false,
198204
},
205+
{
206+
title: 'filter.buildLab',
207+
subtitle: 'filter.labsSubtitle',
208+
sectionKey: 'buildLab',
209+
isGlobal: false,
210+
},
199211
];
212+
213+
// TODO: some sections can be hidden if there is only 1 value for them (e.g., origins, labs)
200214
const TreeDetailsFilter = ({
201215
paramFilter,
202216
treeUrl,

dashboard/src/types/commonDetails.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type BuildSummary = {
2828
origins: Record<string, RequiredStatusCount>;
2929
architectures: Architecture;
3030
configs: Record<string, RequiredStatusCount>;
31+
labs: Record<string, RequiredStatusCount>;
3132
issues: TIssue[];
3233
unknown_issues: number;
3334
};
@@ -54,7 +55,7 @@ export type LocalFilters = {
5455

5556
export type DetailsFilters = {
5657
all: GlobalFilters;
57-
builds: LocalFilters;
58+
builds: LocalFilters & { labs: string[] };
5859
boots: LocalFilters;
5960
tests: LocalFilters;
6061
};

dashboard/src/types/general.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ export const zFilterObjectsKeys = z.enum([
163163
'buildOrigin',
164164
'bootOrigin',
165165
'testOrigin',
166+
'buildLab',
166167
]);
167168

168169
export const zFilterNumberKeys = z.enum([
@@ -208,6 +209,7 @@ export const zDiffFilter = z
208209
buildOrigin: zFilterBoolValue,
209210
bootOrigin: zFilterBoolValue,
210211
testOrigin: zFilterBoolValue,
212+
buildLab: zFilterBoolValue,
211213
} satisfies Record<TFilterKeys, unknown>),
212214
z.record(z.never()),
213215
])
@@ -278,6 +280,7 @@ const requestFilters = {
278280
'build.origin',
279281
'boot.origin',
280282
'test.origin',
283+
'build.lab',
281284
],
282285
issueListing: [
283286
'origin',
@@ -321,6 +324,7 @@ export const filterFieldMap = {
321324
'test.issue': 'testIssue',
322325
'build.status': 'buildStatus',
323326
'build.origin': 'buildOrigin',
327+
'build.lab': 'buildLab',
324328
origin: 'origins',
325329
'issue.culprit': 'issueCulprits',
326330
'issue.categories': 'issueCategories',

0 commit comments

Comments
 (0)