Skip to content
Snippets Groups Projects
Commit b04c08e0 authored by Johanna Szepanski's avatar Johanna Szepanski
Browse files

added pagination to batch jobs table

parent 452c2c8c
No related branches found
No related tags found
2 merge requests!612Release 5.0.0,!594CE-3447: Improve batch presentation
import { useMemo } from "react"; import { useMemo, useEffect, useState } from "react";
import { import {
EllipsisText, EllipsisText,
InternalLink, InternalLink,
Table, Table,
SimpleAccordion SimpleAccordion,
usePagination
} from "@ess-ics/ce-ui-common"; } from "@ess-ics/ce-ui-common";
import { Typography, Stack } from "@mui/material"; import { Typography, Stack } from "@mui/material";
import { import {
...@@ -13,6 +14,7 @@ import { ...@@ -13,6 +14,7 @@ import {
calculateHostText calculateHostText
} from "./JobUtils"; } from "./JobUtils";
import { JobRevisionChip } from "./JobRevisionChip"; import { JobRevisionChip } from "./JobRevisionChip";
import { ROWS_PER_PAGE } from "../../constants";
const columns = [ const columns = [
{ {
...@@ -60,6 +62,14 @@ const createRow = (job, action) => { ...@@ -60,6 +62,14 @@ const createRow = (job, action) => {
}; };
export const JobDetailsBatchJob = ({ operation }) => { export const JobDetailsBatchJob = ({ operation }) => {
const [currentRows, setCurrentRows] = useState([]);
const { pagination, setPagination } = usePagination({
rowsPerPageOptions: ROWS_PER_PAGE,
initLimit: ROWS_PER_PAGE[0],
initPage: 0,
initTotalCount: operation.jobs.length
});
const noOfIOCs = useMemo(() => { const noOfIOCs = useMemo(() => {
return getNoOfIOCs(operation.jobs); return getNoOfIOCs(operation.jobs);
}, [operation]); }, [operation]);
...@@ -68,6 +78,18 @@ export const JobDetailsBatchJob = ({ operation }) => { ...@@ -68,6 +78,18 @@ export const JobDetailsBatchJob = ({ operation }) => {
return getNoOfHosts(operation.jobs); return getNoOfHosts(operation.jobs);
}, [operation]); }, [operation]);
useEffect(() => {
const { limit, page } = pagination;
const list = operation.jobs.reduce((acc, _, index) => {
if (index % limit === 0) {
acc.push(operation.jobs.slice(index, index + limit));
}
return acc;
}, []);
setCurrentRows(list[page]);
}, [pagination, setPagination, operation]);
return ( return (
<SimpleAccordion <SimpleAccordion
summary={ summary={
...@@ -98,7 +120,9 @@ export const JobDetailsBatchJob = ({ operation }) => { ...@@ -98,7 +120,9 @@ export const JobDetailsBatchJob = ({ operation }) => {
<Table <Table
columns={columns} columns={columns}
disableColumnSorting disableColumnSorting
rows={operation.jobs.map((job) => createRow(job, operation.action))} rows={currentRows.map((job) => createRow(job, operation.action))}
pagination={pagination}
onPage={setPagination}
/> />
</SimpleAccordion> </SimpleAccordion>
); );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment