diff --git a/ui/src/components/SchedulerEntriesTable.tsx b/ui/src/components/SchedulerEntriesTable.tsx index 4ced60d..fd672e8 100644 --- a/ui/src/components/SchedulerEntriesTable.tsx +++ b/ui/src/components/SchedulerEntriesTable.tsx @@ -1,12 +1,16 @@ import React, { useState } from "react"; import clsx from "clsx"; import { makeStyles } from "@material-ui/core/styles"; +import Collapse from "@material-ui/core/Collapse"; +import IconButton from "@material-ui/core/IconButton"; import Table from "@material-ui/core/Table"; import TableBody from "@material-ui/core/TableBody"; import TableCell from "@material-ui/core/TableCell"; import TableContainer from "@material-ui/core/TableContainer"; import TableHead from "@material-ui/core/TableHead"; import TableRow from "@material-ui/core/TableRow"; +import KeyboardArrowDownIcon from "@material-ui/icons/KeyboardArrowDown"; +import KeyboardArrowUpIcon from "@material-ui/icons/KeyboardArrowUp"; import Alert from "@material-ui/lab/Alert"; import AlertTitle from "@material-ui/lab/AlertTitle"; import SyntaxHighlighter from "react-syntax-highlighter"; @@ -194,51 +198,64 @@ export default function SchedulerEntriesTable(props: Props) { - {sortEntries(props.entries, cmpFunc).map((entry, idx) => { - const isLastRow = idx === props.entries.length - 1; - return ( - - - {entry.id} - - - {entry.spec} - - - {entry.task_type} - - - - {JSON.stringify(entry.task_payload)} - - - - - {entry.options.length > 0 - ? entry.options.join(", ") - : "No options"} - - - - {durationBefore(entry.next_enqueue_at)} - - - {entry.prev_enqueue_at - ? timeAgo(entry.prev_enqueue_at) - : "N/A"} - - - ); - })} + {sortEntries(props.entries, cmpFunc).map((entry, idx) => ( + + ))} ); } + +interface RowProps { + entry: SchedulerEntry; + isLastRow: boolean; +} + +const useRowStyles = makeStyles((theme) => ({ + noBorder: { + border: "none", + }, +})); + +function Row(props: RowProps) { + const { entry, isLastRow } = props; + const classes = useRowStyles(); + return ( + + + {entry.id} + + + {entry.spec} + + + {entry.task_type} + + + + {JSON.stringify(entry.task_payload)} + + + + + {entry.options.length > 0 ? entry.options.join(", ") : "No options"} + + + + {durationBefore(entry.next_enqueue_at)} + + + {entry.prev_enqueue_at ? timeAgo(entry.prev_enqueue_at) : "N/A"} + + + ); +}