Skip to content

Commit ee30967

Browse files
committed
dashboard: Add filter for required tests
Added a checkbox that filters based on whether a test was required. Fixes #2 Signed-off-by: Anna Finn <[email protected]>
1 parent 9b993f0 commit ee30967

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

pages/index.js

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ export default function Home() {
99
const [jobs, setJobs] = useState([]);
1010
const [rows, setRows] = useState([]);
1111
const [expandedRows, setExpandedRows] = useState([]);
12+
const [requiredFilter, setRequiredFilter] = useState(false);
1213

1314
useEffect(() => {
1415
const fetchData = async () => {
1516
let data = {};
1617

1718
if (process.env.NODE_ENV === "development") {
18-
data = (await import("../job_stats.json")).default;
19+
data = (await import("../localData/job_stats.json")).default;
1920
} else {
2021
const response = await fetch(
2122
"https://raw.githubusercontent.com/kata-containers/kata-containers.github.io" +
@@ -43,15 +44,25 @@ export default function Home() {
4344

4445
useEffect(() => {
4546
setLoading(true);
47+
// Filter based on required tag.
48+
let filteredJobs = jobs;
49+
if (requiredFilter){
50+
filteredJobs = filteredJobs.filter((job) => job.required);
51+
}
4652

47-
// Create rows to set into table.
48-
const rows = jobs.map((job) => ({
49-
...job,
50-
weather: getWeatherIndex(job),
51-
}));
52-
setRows(rows);
53+
//Set the rows for the table.
54+
setRows(
55+
filteredJobs.map((job) => ({
56+
name : job.name,
57+
runs : job.runs,
58+
fails : job.fails,
59+
skips : job.skips,
60+
required : job.required,
61+
weather : getWeatherIndex(job),
62+
}))
63+
);
5364
setLoading(false);
54-
}, [jobs]);
65+
}, [jobs, requiredFilter]);
5566

5667
const toggleRow = (rowData) => {
5768
const isRowExpanded = expandedRows.includes(rowData);
@@ -66,6 +77,11 @@ export default function Home() {
6677
setExpandedRows(updatedExpandedRows);
6778
};
6879

80+
const buttonClass = (active) => `tab md:px-4 px-2 py-2 border-2
81+
${active ? "border-blue-500 bg-blue-500 text-white"
82+
: "border-gray-300 bg-white hover:bg-gray-100"}`;
83+
84+
6985
// Template for rendering the Name column as a clickable item
7086
const nameTemplate = (rowData) => {
7187
return (
@@ -178,9 +194,14 @@ export default function Home() {
178194
"m-0 h-full p-4 overflow-x-hidden overflow-y-auto bg-surface-ground font-normal text-text-color antialiased select-text"
179195
}
180196
>
197+
<button
198+
className={buttonClass(requiredFilter)}
199+
onClick={() => setRequiredFilter(!requiredFilter)}>
200+
Required Jobs Only
201+
</button>
181202
<div>{renderTable()}</div>
182203
<div className="mt-4 text-lg">Total Rows: {rows.length}</div>
183204
</main>
184205
</div>
185206
);
186-
}
207+
}

0 commit comments

Comments
 (0)