diff --git a/src/runner/JobDisplay.jsx b/dev/runner/JobDisplay.jsx similarity index 100% rename from src/runner/JobDisplay.jsx rename to dev/runner/JobDisplay.jsx diff --git a/src/runner/JobView.jsx b/dev/runner/JobView.jsx similarity index 100% rename from src/runner/JobView.jsx rename to dev/runner/JobView.jsx diff --git a/src/Dashboard.jsx b/src/Dashboard.jsx index fa66f17..bbe9ee3 100644 --- a/src/Dashboard.jsx +++ b/src/Dashboard.jsx @@ -3,7 +3,7 @@ import { JobProvider } from "./ctx/JobContext.jsx"; import { StoreProvider } from "./ctx/StoreContext.jsx"; import { BrowserRouter } from "react-router-dom"; // Import Views -import Views from "./Views.jsx"; +import Views from "./views/Views.jsx"; export default function Dashboard() { return ( diff --git a/src/Views.jsx b/src/Views.jsx deleted file mode 100644 index d2e077e..0000000 --- a/src/Views.jsx +++ /dev/null @@ -1,56 +0,0 @@ -import { useContext, useState } from "react"; -import StoreContext from "./ctx/StoreContext.jsx"; -import JobContext from "./ctx/JobContext.jsx"; -import Navbar from "./Navbar.jsx"; - -import { Routes, Route, Navigate } from "react-router-dom"; -import Box from "@mui/material/Box"; -import Toolbar from "@mui/material/Toolbar"; -import IconButton from "@mui/material/IconButton"; -import Typography from "@mui/material/Typography"; -import MenuIcon from "@mui/icons-material/Menu"; -import Avatar from "@mui/material/Avatar"; -import Drawer from "@mui/material/Drawer"; -import ListItemIcon from "@mui/material/ListItemIcon"; -import ListItemText from "@mui/material/ListItemText"; -import List from "@mui/material/List"; -import ListItemButton from "@mui/material/ListItemButton"; -import NotificationsIcon from "@mui/icons-material/Notifications"; -import WorkIcon from "@mui/icons-material/Work"; -import FormatListBulletedIcon from "@mui/icons-material/FormatListBulleted"; -import SettingsIcon from "@mui/icons-material/Settings"; -import WarningIcon from "@mui/icons-material/Warning"; -import InfoIcon from "@mui/icons-material/Info"; -// Import Pages -import Failing from "./views/Failing.jsx"; -import Alerting from "./views/Alerting.jsx"; -import Jobs from "./views/Jobs.jsx"; -import Catalog from "./views/Catalog.jsx"; -import Settings from "./views/Settings.jsx"; -import About from "./views/About.jsx"; - -const drawerWidth = 240; - -export default function Views() { - const { state: jobState } = useContext(JobContext); - const { state: store } = useContext(StoreContext); - - return ( -
- - - - - - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - -
- ); -} diff --git a/src/views/Jobs.jsx b/src/views/Jobs.jsx deleted file mode 100644 index 0b78c12..0000000 --- a/src/views/Jobs.jsx +++ /dev/null @@ -1,119 +0,0 @@ -import { useState, useContext, useEffect } from "react"; -import { useLocation } from "react-router-dom"; - -import StoreContext from "../ctx/StoreContext.jsx"; -import JobContext from "../ctx/JobContext.jsx"; -import JobBox from "./components/JobBox.jsx"; -import JobTestSelector from "./components/JobTestSelector.jsx"; -import JobView from "./components/JobView.jsx"; - -import Button from "@mui/material/Button"; -import Dialog from "@mui/material/Dialog"; -import DialogActions from "@mui/material/DialogActions"; -import DialogContent from "@mui/material/DialogContent"; -import Toolbar from "@mui/material/Toolbar"; -import DialogTitle from "@mui/material/DialogTitle"; - -import ClickAwayListener from "@mui/material/ClickAwayListener"; -import SpeedDial from "@mui/material/SpeedDial"; -import SpeedDialAction from "@mui/material/SpeedDialAction"; -import SpeedDialIcon from "@mui/material/SpeedDialIcon"; - -import PageviewIcon from "@mui/icons-material/Pageview"; -import ViewColumnIcon from "@mui/icons-material/ViewColumn"; -import ViewCarouselIcon from "@mui/icons-material/ViewCarousel"; - -export default function Jobs() { - const { - state: jobState, - dispatch: jobDispatch, - jobBuilder, - } = useContext(JobContext); - const location = useLocation(); - const { state: store, updateStore } = useContext(StoreContext); - const [quickOpen, setQuickOpen] = useState(false); - const [jobDialogOpen, setJobDialogOpen] = useState(false); - - const actions = [ - { name: "Suite", icon: }, - { name: "Compound", icon: }, - { name: "Manual", icon: }, - ]; - - const quickOpenClick = (e) => { - e.preventDefault(); - e.stopPropagation(); - if (!store.simplifiedControls) return setQuickOpen(!quickOpen); - setJobDialogOpen(true); - }; - const quickOpenClose = () => setQuickOpen(false); - - const handleClickOpen = () => setJobDialogOpen(true); - - const [queued, setQueued] = useState([]); - useEffect(() => {}, [jobState.jobs, location]); - - const handleClose = (confirmed) => () => { - setJobDialogOpen(false); - if (!confirmed) return; - jobBuilder(queued); - }; - - return ( -
- {location.hash === "" && - jobState.jobs.map((v, i) => ( - - - - ))} - {jobState.jobs.find((job) => job.name === location.hash.slice(1)) && ( - job.name === location.hash.slice(1))} - /> - )} - - - - New Job - - Some Selectors - - - - - - - - - - } - onClick={quickOpenClick} - open={quickOpen} - > - {actions.map((action) => ( - - ))} - - -
- ); -} diff --git a/src/Navbar.jsx b/src/views/Navbar.jsx similarity index 88% rename from src/Navbar.jsx rename to src/views/Navbar.jsx index 2ee89ec..63147c1 100644 --- a/src/Navbar.jsx +++ b/src/views/Navbar.jsx @@ -1,13 +1,9 @@ import { useContext, useState } from "react"; -import StoreContext from "./ctx/StoreContext.jsx"; -import JobContext from "./ctx/JobContext.jsx"; +import StoreContext from "../ctx/StoreContext.jsx"; +import JobContext from "../ctx/JobContext.jsx"; import { - Routes, - Route, Link, - BrowserRouter, - Navigate, useLocation, } from "react-router-dom"; import AppBar from "@mui/material/AppBar"; @@ -30,15 +26,8 @@ import FormatListBulletedIcon from "@mui/icons-material/FormatListBulleted"; import SettingsIcon from "@mui/icons-material/Settings"; import WarningIcon from "@mui/icons-material/Warning"; import InfoIcon from "@mui/icons-material/Info"; -// Import Pages -import Failing from "./views/Failing.jsx"; -import Alerting from "./views/Alerting.jsx"; -import Jobs from "./views/Jobs.jsx"; -import Catalog from "./views/Catalog.jsx"; -import Settings from "./views/Settings.jsx"; -import About from "./views/About.jsx"; -const drawerWidth = 240; +const drawerWidth = 250; export default function Navbar(props) { const { state: jobState } = useContext(JobContext); @@ -112,7 +101,7 @@ export default function Navbar(props) { sx={{ zIndex: drawerIndex(true) }} > - + {pages.map((text, index) => ( + + + + + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + + ); +} diff --git a/src/views/About.jsx b/src/views/about/About.jsx similarity index 100% rename from src/views/About.jsx rename to src/views/about/About.jsx diff --git a/src/views/Alerting.jsx b/src/views/alerting/Alerting.jsx similarity index 94% rename from src/views/Alerting.jsx rename to src/views/alerting/Alerting.jsx index 431b03f..d2de54a 100644 --- a/src/views/Alerting.jsx +++ b/src/views/alerting/Alerting.jsx @@ -1,7 +1,7 @@ import { useState, useContext } from "react"; -import StoreContext from "../ctx/StoreContext.jsx"; -import SilencedBox from "./components/SilencedBox.jsx"; -import SilenceDialog from "./components/SilenceDialog.jsx"; +import StoreContext from "../../ctx/StoreContext.jsx"; +import SilencedBox from "./SilencedBox.jsx"; +import SilenceDialog from "./SilenceDialog.jsx"; import SpeedDial from "@mui/material/SpeedDial"; import SpeedDialAction from "@mui/material/SpeedDialAction"; diff --git a/src/views/components/SilenceDialog.jsx b/src/views/alerting/SilenceDialog.jsx similarity index 100% rename from src/views/components/SilenceDialog.jsx rename to src/views/alerting/SilenceDialog.jsx diff --git a/src/views/components/SilencedBox.jsx b/src/views/alerting/SilencedBox.jsx similarity index 100% rename from src/views/components/SilencedBox.jsx rename to src/views/alerting/SilencedBox.jsx diff --git a/src/views/alt-comps/JobManualSelector.jsx b/src/views/alt-comps/JobManualSelector.jsx deleted file mode 100644 index d2c17af..0000000 --- a/src/views/alt-comps/JobManualSelector.jsx +++ /dev/null @@ -1,50 +0,0 @@ -import { useState, useEffect } from "react"; -import Box from "@mui/material/Box"; -import List from "@mui/material/List"; -import ListItem from "@mui/material/ListItem"; -import ListItemButton from "@mui/material/ListItemButton"; -import ListItemText from "@mui/material/ListItemText"; -import ListItemAvatar from "@mui/material/ListItemAvatar"; -import Checkbox from "@mui/material/Checkbox"; - -export default function JobManualSelector(props) { - const { availableTests } = props; - const [queued, setQueued] = useState([]); - useEffect(() => {}, [availableTests]); - - const queueTest = (test) => () => { - const q = [...queued]; - const testIndex = q.indexOf(test); - if (testIndex === -1) q.push(test); - else q.splice(testIndex, 1); - setQueued(q); - }; - - return ( - - - {availableTests.map((v, i) => ( - - } - disablePadding - onClick={queueTest(v)} - > - - - {v.class}#{v.name} - - } - style={{ wordBreak: "break-word" }} - /> - - - ))} - - - ); -} diff --git a/src/views/alt-comps/JobTestSelector.jsx b/src/views/alt-comps/JobTestSelector.jsx deleted file mode 100644 index 05a3408..0000000 --- a/src/views/alt-comps/JobTestSelector.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import { useState, useEffect } from "react"; - -import Button from "@mui/material/Button"; -import Dialog from "@mui/material/Dialog"; -import DialogActions from "@mui/material/DialogActions"; -import DialogContent from "@mui/material/DialogContent"; -import DialogTitle from "@mui/material/DialogTitle"; - -export default function JobTestSelector(props) { - const { jobDialogOpen, handleClose, dialogTitle, testSelector } = props; - return ( - - {dialogTitle} - {testSelector} - - - - - - ); -} diff --git a/src/views/Catalog.jsx b/src/views/catalog/Catalog.jsx similarity index 80% rename from src/views/Catalog.jsx rename to src/views/catalog/Catalog.jsx index 8c7aa1b..1edf101 100644 --- a/src/views/Catalog.jsx +++ b/src/views/catalog/Catalog.jsx @@ -1,11 +1,12 @@ import { useEffect, useContext } from "react"; -import StoreContext from "../ctx/StoreContext.jsx"; -import JobContext from "../ctx/JobContext.jsx"; -import CatalogBox from "./components/CatalogBox.jsx"; +import StoreContext from "../../ctx/StoreContext.jsx"; +import JobContext from "../../ctx/JobContext.jsx"; +import CatalogBox from "./CatalogBox.jsx"; +import CatalogSearch from "./CatalogSearch.jsx"; import TextField from "@mui/material/TextField"; -import CatalogSearch from "./components/CatalogSearch.jsx"; + export default function Catalog() { const { diff --git a/src/views/components/CatalogBox.jsx b/src/views/catalog/CatalogBox.jsx similarity index 100% rename from src/views/components/CatalogBox.jsx rename to src/views/catalog/CatalogBox.jsx diff --git a/src/views/components/CatalogSearch.jsx b/src/views/catalog/CatalogSearch.jsx similarity index 100% rename from src/views/components/CatalogSearch.jsx rename to src/views/catalog/CatalogSearch.jsx diff --git a/src/views/components/JobBox.jsx b/src/views/components/JobBox.jsx deleted file mode 100644 index bb97db4..0000000 --- a/src/views/components/JobBox.jsx +++ /dev/null @@ -1,67 +0,0 @@ -import React, { useState, useContext } from "react"; -import StoreContext from "../../ctx/StoreContext.jsx"; -import JobContext, { jobStatus } from "../../ctx/JobContext.jsx"; - -import Accordion from "@mui/material/Accordion"; -import AccordionDetails from "@mui/material/AccordionDetails"; -import AccordionSummary from "@mui/material/AccordionSummary"; -import Typography from "@mui/material/Typography"; - -import IconButton from "@mui/material/IconButton"; -import CheckIcon from "@mui/icons-material/Check"; -import ClearIcon from "@mui/icons-material/Clear"; -import ViewColumnIcon from "@mui/icons-material/ViewColumn"; -import PendingIcon from "@mui/icons-material/Pending"; -import VisibilityIcon from "@mui/icons-material/Visibility"; -import DoNotDisturbIcon from "@mui/icons-material/DoNotDisturb"; - -import Box from "@mui/material/Box"; -import Stack from "@mui/material/Stack"; - -export default function JobBox(props) { - const { job } = props; - - const { name, status } = job; - - function jobIcon() { - switch (status) { - case jobStatus.OK: - return ; - case jobStatus.ERROR: - return ; - case jobStatus.PENDING: - return ; - case jobStatus.ACTIVE: - return ; - case jobStatus.CANCELED: - return ; - case jobStatus.QUEUED: - return ; - default: - return ; - } - } - - return ( - - - - {name} - - - - {jobIcon()} - - - - - ); -} diff --git a/src/views/components/JobLogView.jsx b/src/views/components/JobLogView.jsx deleted file mode 100644 index 65b4d5c..0000000 --- a/src/views/components/JobLogView.jsx +++ /dev/null @@ -1,67 +0,0 @@ -import { useContext, useState, useEffect } from "react"; -import JobContext from "../../ctx/JobContext.jsx"; - -import Box from "@mui/material/Box"; -import Typography from "@mui/material/Typography"; -import Skeleton from "@mui/material/Skeleton"; -import Stack from "@mui/material/Stack"; - -export default function JobLogView(props) { - const { log } = props; - - const LoadingDot = () => ( - - ); - - return ( - - {log.map((l, i) => ( - - - - {i + 1} - - - {" "} - {l} - - - - ))} - - - - - - - ); -} diff --git a/src/views/components/JobTestSelector.jsx b/src/views/components/JobTestSelector.jsx deleted file mode 100644 index cf6dbce..0000000 --- a/src/views/components/JobTestSelector.jsx +++ /dev/null @@ -1,49 +0,0 @@ -import { useState, useEffect } from "react"; -import Box from "@mui/material/Box"; -import List from "@mui/material/List"; -import ListItem from "@mui/material/ListItem"; -import ListItemButton from "@mui/material/ListItemButton"; -import ListItemText from "@mui/material/ListItemText"; -import Checkbox from "@mui/material/Checkbox"; - -export default function JobTestSelector(props) { - const { availableTests, queued, setQueued } = props; - - useEffect(() => {}, [availableTests]); - - const queueTest = (test) => () => { - const q = [...queued]; - const testIndex = q.indexOf(test); - if (testIndex === -1) q.push(test); - else q.splice(testIndex, 1); - setQueued(q); - }; - - return ( - - - {availableTests.map((v, i) => ( - - } - disablePadding - onClick={queueTest(v)} - > - - - {v.class}#{v.name} - - } - style={{ wordBreak: "break-word" }} - /> - - - ))} - - - ); -} diff --git a/src/views/components/JobView.jsx b/src/views/components/JobView.jsx deleted file mode 100644 index 18030c8..0000000 --- a/src/views/components/JobView.jsx +++ /dev/null @@ -1,69 +0,0 @@ -import React, { useContext, useState, useEffect } from "react"; -import { useNavigate } from "react-router-dom"; -import JobContext from "../../ctx/JobContext.jsx"; -import Box from "@mui/material/Box"; -import AppBar from "@mui/material/AppBar"; -import Toolbar from "@mui/material/Toolbar"; -import Button from "@mui/material/Button"; -import Typography from "@mui/material/Typography"; - -import JobLogView from "./JobLogView.jsx"; - -export default function JobView(props) { - const navigate = useNavigate(); - const { state: jobState } = useContext(JobContext); - const { job: initJob } = props; - const [job, setJob] = useState({ log: [initJob.name] }); - - function retryJob() {} - - function downloadLog() {} - - function navigateToJobs() { - navigate("/jobs"); - } - - function onLog(d) { - const j = { ...job }; - j.log.push(d); - setJob(j); - } - - return ( - - - - - - - - {initJob.name} - - - - - - - - - - - - ); -} diff --git a/src/views/Failing.jsx b/src/views/failing/Failing.jsx similarity index 92% rename from src/views/Failing.jsx rename to src/views/failing/Failing.jsx index 3c299e3..0786385 100644 --- a/src/views/Failing.jsx +++ b/src/views/failing/Failing.jsx @@ -1,7 +1,8 @@ import { useState, useContext } from "react"; -import StoreContext from "../ctx/StoreContext.jsx"; -import JobContext from "../ctx/JobContext.jsx"; -import SilenceDialog from "./components/SilenceDialog.jsx"; +import StoreContext from "../../ctx/StoreContext.jsx"; +import JobContext from "../../ctx/JobContext.jsx"; +import SilenceDialog from "../alerting/SilenceDialog.jsx"; +import FailingBox from "./FailingBox.jsx"; import SpeedDial from "@mui/material/SpeedDial"; import SpeedDialAction from "@mui/material/SpeedDialAction"; @@ -16,7 +17,6 @@ import DialogTitle from "@mui/material/DialogTitle"; import ReplayIcon from "@mui/icons-material/Replay"; -import FailingBox from "./components/FailingBox.jsx"; export default function Failing() { const { state: jobState, retryAll, activeJobStates } = useContext(JobContext); diff --git a/src/views/components/FailingBox.jsx b/src/views/failing/FailingBox.jsx similarity index 100% rename from src/views/components/FailingBox.jsx rename to src/views/failing/FailingBox.jsx diff --git a/src/views/components/MultiOptionDialog.jsx b/src/views/settings/MultiOptionDialog.jsx similarity index 100% rename from src/views/components/MultiOptionDialog.jsx rename to src/views/settings/MultiOptionDialog.jsx diff --git a/src/views/Settings.jsx b/src/views/settings/Settings.jsx similarity index 97% rename from src/views/Settings.jsx rename to src/views/settings/Settings.jsx index fde36bc..9713af6 100644 --- a/src/views/Settings.jsx +++ b/src/views/settings/Settings.jsx @@ -1,7 +1,7 @@ import React, { useContext, useState, useEffect } from "react"; -import StoreContext from "../ctx/StoreContext.jsx"; +import StoreContext from "../../ctx/StoreContext.jsx"; -import MultiOptionDialog from "./components/MultiOptionDialog.jsx"; +import MultiOptionDialog from "./MultiOptionDialog.jsx"; import Box from "@mui/material/Box"; import Button from "@mui/material/Button";