Skip to content

Commit d8e2361

Browse files
committed
required filter working
1 parent 970416a commit d8e2361

File tree

1 file changed

+31
-9
lines changed

1 file changed

+31
-9
lines changed

pages/index.js

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
import { useEffect, useState } from "react";
23
import { DataTable } from "primereact/datatable";
34
import { Column } from "primereact/column";
@@ -9,13 +10,14 @@ export default function Home() {
910
const [jobs, setJobs] = useState([]);
1011
const [rows, setRows] = useState([]);
1112
const [expandedRows, setExpandedRows] = useState([]);
13+
const [requiredFilter, setRequiredFilter] = useState(false);
1214

1315
useEffect(() => {
1416
const fetchData = async () => {
1517
let data = {};
1618

1719
if (process.env.NODE_ENV === "development") {
18-
data = (await import("../job_stats.json")).default;
20+
data = (await import("../data/job_stats.json")).default;
1921
} else {
2022
const response = await fetch(
2123
"https://raw.githubusercontent.com/kata-containers/kata-containers.github.io" +
@@ -43,15 +45,25 @@ export default function Home() {
4345

4446
useEffect(() => {
4547
setLoading(true);
48+
// Filter based on required tag.
49+
let filteredJobs = jobs;
50+
if (requiredFilter){
51+
filteredJobs = filteredJobs.filter((job) => job.required);
52+
}
4653

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

5668
const toggleRow = (rowData) => {
5769
const isRowExpanded = expandedRows.includes(rowData);
@@ -66,6 +78,11 @@ export default function Home() {
6678
setExpandedRows(updatedExpandedRows);
6779
};
6880

81+
const buttonClass = (active) => `tab md:px-4 px-2 py-2 border-2
82+
${active ? "border-blue-500 bg-blue-500 text-white"
83+
: "border-gray-300 bg-white hover:bg-gray-100"}`;
84+
85+
6986
// Template for rendering the Name column as a clickable item
7087
const nameTemplate = (rowData) => {
7188
return (
@@ -178,9 +195,14 @@ export default function Home() {
178195
"m-0 h-full p-4 overflow-x-hidden overflow-y-auto bg-surface-ground font-normal text-text-color antialiased select-text"
179196
}
180197
>
198+
<button
199+
className={buttonClass(requiredFilter)}
200+
onClick={() => setRequiredFilter(!requiredFilter)}>
201+
Required Jobs Only
202+
</button>
181203
<div>{renderTable()}</div>
182204
<div className="mt-4 text-lg">Total Rows: {rows.length}</div>
183205
</main>
184206
</div>
185207
);
186-
}
208+
}

0 commit comments

Comments
 (0)