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"}
+
+
+ );
+}