mirror of
https://github.com/openziti/zrok.git
synced 2025-06-25 12:12:32 +02:00
everything ported to typescript (#221)
This commit is contained in:
parent
79449859de
commit
5298326159
@ -4,11 +4,13 @@ import NavBar from "./NavBar.tsx";
|
|||||||
import {AgentObject, buildOverview} from "./model/overview.ts";
|
import {AgentObject, buildOverview} from "./model/overview.ts";
|
||||||
import Overview from "./Overview.tsx";
|
import Overview from "./Overview.tsx";
|
||||||
import NewShareModal from "./NewShareModal.tsx";
|
import NewShareModal from "./NewShareModal.tsx";
|
||||||
|
import NewAccessModal from "./NewAccessModal.tsx";
|
||||||
|
|
||||||
const AgentUi = () => {
|
const AgentUi = () => {
|
||||||
const [version, setVersion] = useState("unset");
|
const [version, setVersion] = useState("unset");
|
||||||
const [overview, setOverview] = useState(new Array<AgentObject>());
|
const [overview, setOverview] = useState(new Array<AgentObject>());
|
||||||
const [newShareOpen, setNewShareOpen] = useState(false);
|
const [newShareOpen, setNewShareOpen] = useState(false);
|
||||||
|
const [newAccessOpen, setNewAccessOpen] = useState(false);
|
||||||
|
|
||||||
const openNewShare = () => {
|
const openNewShare = () => {
|
||||||
setNewShareOpen(true);
|
setNewShareOpen(true);
|
||||||
@ -17,6 +19,13 @@ const AgentUi = () => {
|
|||||||
setNewShareOpen(false);
|
setNewShareOpen(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const openNewAccess = () => {
|
||||||
|
setNewAccessOpen(true);
|
||||||
|
}
|
||||||
|
const closeNewAccess = () => {
|
||||||
|
setNewAccessOpen(false);
|
||||||
|
}
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
GetAgentApi().agentVersion()
|
GetAgentApi().agentVersion()
|
||||||
.then(r => {
|
.then(r => {
|
||||||
@ -49,9 +58,10 @@ const AgentUi = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<NavBar version={version} shareClick={openNewShare} />
|
<NavBar version={version} shareClick={openNewShare} accessClick={openNewAccess} />
|
||||||
<Overview overview={overview} />
|
<Overview overview={overview} />
|
||||||
<NewShareModal isOpen={newShareOpen} close={closeNewShare} />
|
<NewShareModal isOpen={newShareOpen} close={closeNewShare} />
|
||||||
|
<NewAccessModal isOpen={newAccessOpen} close={closeNewAccess} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,10 @@ import ShareIcon from "@mui/icons-material/Share";
|
|||||||
interface NavBarProps {
|
interface NavBarProps {
|
||||||
version: string;
|
version: string;
|
||||||
shareClick: () => void;
|
shareClick: () => void;
|
||||||
|
accessClick: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
function NavBar({ version, shareClick }: NavBarProps) {
|
function NavBar({ version, shareClick, accessClick }: NavBarProps) {
|
||||||
return (
|
return (
|
||||||
<Box ssx={{ flexGrow: 1 }}>
|
<Box ssx={{ flexGrow: 1 }}>
|
||||||
<AppBar position="static">
|
<AppBar position="static">
|
||||||
@ -24,7 +25,7 @@ function NavBar({ version, shareClick }: NavBarProps) {
|
|||||||
<Button color="inherit" onClick={shareClick}><ShareIcon /></Button>
|
<Button color="inherit" onClick={shareClick}><ShareIcon /></Button>
|
||||||
</Grid2>
|
</Grid2>
|
||||||
<Grid2 display="flex" justifyContent="right">
|
<Grid2 display="flex" justifyContent="right">
|
||||||
<Button color="inherit" ><LanIcon /></Button>
|
<Button color="inherit" onClick={accessClick}><LanIcon /></Button>
|
||||||
</Grid2>
|
</Grid2>
|
||||||
</Grid2>
|
</Grid2>
|
||||||
</Toolbar>
|
</Toolbar>
|
||||||
|
68
agent/agentUiTs/src/NewAccessModal.tsx
Normal file
68
agent/agentUiTs/src/NewAccessModal.tsx
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
import {useState} from "react";
|
||||||
|
import {useFormik} from "formik";
|
||||||
|
import {GetAgentApi} from "./model/api.ts";
|
||||||
|
import {Box, Button, Modal, TextField} from "@mui/material";
|
||||||
|
import {modalStyle} from "./model/theme.ts";
|
||||||
|
|
||||||
|
interface NewAccessModalProps {
|
||||||
|
close: () => void;
|
||||||
|
isOpen: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
function NewAccessModal({ close, isOpen }: NewAccessModalProps) {
|
||||||
|
const [errorMessage, setErrorMessage] = useState(<></>);
|
||||||
|
|
||||||
|
const newAccessForm = useFormik({
|
||||||
|
initialValues: {
|
||||||
|
token: "",
|
||||||
|
bindAddress: "",
|
||||||
|
},
|
||||||
|
onSubmit: v => {
|
||||||
|
setErrorMessage(<></>);
|
||||||
|
GetAgentApi().agentAccessPrivate(v)
|
||||||
|
.then(r => {
|
||||||
|
close();
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
e.response.json().then(ex => {
|
||||||
|
setErrorMessage(<p>{ex.message}</p>);
|
||||||
|
console.log(ex.message);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal open={isOpen} onClose={close}>
|
||||||
|
<Box sx={{...modalStyle}}>
|
||||||
|
<h2>Access...</h2>
|
||||||
|
{errorMessage}
|
||||||
|
<form onSubmit={newAccessForm.handleSubmit}>
|
||||||
|
<TextField
|
||||||
|
fullWidth
|
||||||
|
id="token"
|
||||||
|
name="token"
|
||||||
|
label="Share Token"
|
||||||
|
value={newAccessForm.values.token}
|
||||||
|
onChange={newAccessForm.handleChange}
|
||||||
|
onBlur={newAccessForm.handleBlur}
|
||||||
|
sx={{mt: 2}}
|
||||||
|
/>
|
||||||
|
<TextField
|
||||||
|
fullWidth
|
||||||
|
id="bindAddress"
|
||||||
|
name="bindAddress"
|
||||||
|
label="Bind Address"
|
||||||
|
value={newAccessForm.values.bindAddress}
|
||||||
|
onChange={newAccessForm.handleChange}
|
||||||
|
onBlur={newAccessForm.handleBlur}
|
||||||
|
sx={{mt: 2}}
|
||||||
|
/>
|
||||||
|
<Button color="primary" variant="contained" type="submit" sx={{mt: 2}}>Create Access</Button>
|
||||||
|
</form>
|
||||||
|
</Box>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default NewAccessModal;
|
Loading…
x
Reference in New Issue
Block a user