diff --git a/dashboard/src/components/Table/BuildsTable.tsx b/dashboard/src/components/Table/BuildsTable.tsx
new file mode 100644
index 0000000..bc51d98
--- /dev/null
+++ b/dashboard/src/components/Table/BuildsTable.tsx
@@ -0,0 +1,28 @@
+import Accordion, { IAccordionItems } from '../Accordion/Accordion';
+
+interface IBuildsTable {
+ buildsData?: IAccordionItems[];
+}
+
+const BuildsTable = ({ buildsData }: IBuildsTable): JSX.Element => {
+ return (
+
+
+ {accordionContent && (
+
+ )}
);
};
+const ITEMS_PER_PAGE = 10;
+
export default TreeDetailsBuildTab;
diff --git a/dashboard/src/locales/messages/index.ts b/dashboard/src/locales/messages/index.ts
index 7151176..2be4132 100644
--- a/dashboard/src/locales/messages/index.ts
+++ b/dashboard/src/locales/messages/index.ts
@@ -5,6 +5,7 @@ export const messages = {
global: {
filters: 'Filters',
cleanAll: 'Clean all',
+ seconds: 'sec',
},
routes: {
deviceMonitor: 'Devices',
diff --git a/dashboard/src/routes/TreeDetails/TreeDetails.tsx b/dashboard/src/routes/TreeDetails/TreeDetails.tsx
index 6ac2e2d..340854c 100644
--- a/dashboard/src/routes/TreeDetails/TreeDetails.tsx
+++ b/dashboard/src/routes/TreeDetails/TreeDetails.tsx
@@ -13,11 +13,13 @@ import { useTreeDetails } from '@/api/TreeDetails';
import { IListingItem } from '@/components/ListingItem/ListingItem';
import { ISummaryItem } from '@/components/Summary/Summary';
import { Results } from '@/types/tree/TreeDetails';
+import { AccordionItemBuildsTrigger } from '@/components/Accordion/Accordion';
export interface ITreeDetails {
archs: ISummaryItem[];
configs: IListingItem[];
- builds: Results;
+ buildsSummary: Results;
+ builds: AccordionItemBuildsTrigger[];
}
const TreeDetails = (): JSX.Element => {
@@ -49,10 +51,22 @@ const TreeDetails = (): JSX.Element => {
null: data.summary.builds.null,
};
+ const buildsData: AccordionItemBuildsTrigger[] = Object.entries(
+ data.builds,
+ ).map(([, value]) => ({
+ config: value.config_name,
+ date: value.start_time,
+ buildTime: value.duration,
+ compiler: value.compiler,
+ buildErrors: value.test_status.error,
+ status: value.valid ? 'valid' : 'invalid',
+ }));
+
setTreeDetailsData({
archs: archData,
configs: configsData,
- builds: buildSummaryData,
+ buildsSummary: buildSummaryData,
+ builds: buildsData,
});
}
}, [data]);