This commit is contained in:
ACoolName 2024-06-02 12:43:07 +03:00
parent 27488b6b3f
commit fab4f59336

View File

@ -17,6 +17,8 @@ import MenuItem from '@mui/material/MenuItem';
import MenuList from '@mui/material/MenuList';
import { Permission } from "./actions";
import TerminalComponent from "./terminal";
import ReactDOM, { render } from "react-dom";
import { createRoot } from "react-dom/client";
export const apiAuthenticatedContext: Context<[boolean, Dispatch<boolean>]> = createContext([false, (value: boolean) => {}] as [boolean, Dispatch<boolean>])
@ -263,9 +265,18 @@ export function ActionItem(p: { action: ActionInfo, identifierSubstring?: string
function onFormChange(args: IChangeEvent<any, RJSFSchema, any>) {
setFormData(args.formData)
}
function openTerminalWindow(websocketUrl: string) {
const terminalWindow = window.open('', '', 'width=800,height=600');
if (terminalWindow) {
terminalWindow.document.write('<div id="terminal-root" style="width:100%; height:100%"></div>');
terminalWindow.document.title = "Terminal";
createRoot(terminalWindow.document.getElementById('terminal-root')!).render(<TerminalComponent websocket={websocketUrl} />);
}
}
return (<>
<Button variant={p.variant} disabled={!isUserAllowed(user, p.action)} onClick={() => { if (p.onClick) { p.onClick() } p.action.response_action == 'Terminal'?setTerminal(`ws${API_URL.slice("http".length)}${url}`):setForm(true) }} sx={p.sx}>{p.action.name}</Button >
<Button variant={p.variant} disabled={!isUserAllowed(user, p.action)} onClick={() => { if (p.onClick) { p.onClick() } p.action.response_action == 'Terminal'?openTerminalWindow(`ws${API_URL.slice("http".length)}${url}`):setForm(true) }} sx={p.sx}>{p.action.name}</Button >
<Modal
onClose={() => { setForm(false); setFormData({}); }}
open={form}