diff --git a/.gitignore b/.gitignore index d570088..d93463d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules/ - +dist/ +build/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..be725bc --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM node:16 +WORKDIR /dunemask/net/cairo +# Copy dependencies +COPY package.json . +COPY package-lock.json . +RUN npm i +# Copy react build resources over +COPY public public +COPY src src +COPY lib lib +RUN npm run build:react +# Copy bin over +COPY bin bin +CMD ["npm","start"] + diff --git a/dev/views/TestCtx.jsx b/dev/views/TestCtx.jsx index 2344cea..d8cacb3 100644 --- a/dev/views/TestCtx.jsx +++ b/dev/views/TestCtx.jsx @@ -8,7 +8,7 @@ export default function Test() { state: jobState, dispatch: jobDispatch, jobUpdate, - jobCreate + jobCreate, } = useContext(JobContext); function onLog(d) { diff --git a/package.json b/package.json index 762d37a..d7f2771 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "./web-clients": "./lib/sockets/clients/web.index.js" }, "scripts": { + "build:react": "BUILD_PATH='./dist' react-scripts build", "start": "node bin/app.js", "start:dev": "nodemon bin/app.js", "start:dev:replit": "npm run start:dev & npm run start:react:replit", diff --git a/replit.nix b/replit.nix index 91a9e90..171af05 100644 --- a/replit.nix +++ b/replit.nix @@ -4,5 +4,6 @@ pkgs.nodePackages.typescript-language-server pkgs.nodePackages.yarn pkgs.replitPackages.jest - ]; -} \ No newline at end of file + pkgs.vim +]; +} diff --git a/src/Views.jsx b/src/Views.jsx index 2d4f1fc..1e70e6e 100644 --- a/src/Views.jsx +++ b/src/Views.jsx @@ -1,33 +1,39 @@ import { useContext, useState } from "react"; import ViewContext from "./ctx/ViewContext.jsx"; -import * as React from 'react'; -import AppBar from '@mui/material/AppBar'; -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 Menu from '@mui/material/Menu'; -import MenuIcon from '@mui/icons-material/Menu'; -import Container from '@mui/material/Container'; -import Avatar from '@mui/material/Avatar'; -import Button from '@mui/material/Button'; -import Tooltip from '@mui/material/Tooltip'; -import MenuItem from '@mui/material/MenuItem'; -import Drawer from '@mui/material/Drawer'; -import ListItem from '@mui/material/ListItem'; -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 ErrorIcon from '@mui/icons-material/Error'; +import * as React from "react"; +import AppBar from "@mui/material/AppBar"; +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 Menu from "@mui/material/Menu"; +import MenuIcon from "@mui/icons-material/Menu"; +import Container from "@mui/material/Container"; +import Avatar from "@mui/material/Avatar"; +import Button from "@mui/material/Button"; +import Tooltip from "@mui/material/Tooltip"; +import MenuItem from "@mui/material/MenuItem"; +import Drawer from "@mui/material/Drawer"; +import ListItem from "@mui/material/ListItem"; +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 ErrorIcon from "@mui/icons-material/Error"; const pages = ["failing", "alerting", "jobs", "tests", "settings"]; -const icons = [ErrorIcon , NotificationsIcon, WorkIcon,FormatListBulletedIcon, SettingsIcon]; +const icons = [ + ErrorIcon, + NotificationsIcon, + WorkIcon, + FormatListBulletedIcon, + SettingsIcon, +]; export default function Views() { const [view, setView] = useState(pages[0]); @@ -36,29 +42,30 @@ export default function Views() { const toggleDrawer = () => setDrawer(!drawerOpen); const closeDrawer = () => setDrawer(false); const openPage = (e) => setView(e.target.outerText.toLowerCase()); - + return ( - - - {pages.map((text, index) => ( - - - {/*icons[index]*/} - - - - ))} - - + + {" "} + + + {pages.map((text, index) => ( + + {/*icons[index]*/} + + + ))} + + + {view.charAt(0).toUpperCase() + view.slice(1)} @@ -81,7 +88,7 @@ export default function Views() { variant="h6" noWrap component="div" - sx={{ flexGrow: 1, display: { xs: 'flex', md: 'none' } }} + sx={{ flexGrow: 1, display: { xs: "flex", md: "none" } }} > {view.charAt(0).toUpperCase() + view.slice(1)}