import styles from './styles.module.css' import {Table, TableBody, TableCell, TableHead, TableRow, IconButton, Autocomplete, TextField} from "@mui/material"; import Command, {CommandInterface} from "./elements/command"; import {useContext, useEffect, useState} from "react"; import PlayCircleOutline from '@mui/icons-material/PlayCircleOutline'; import ConfirmDialog from "../confirm-dialog"; import TabContext from "../../../context/tab"; import {TabEnum} from "../../../pages"; import smClient from "../../../api/sm/sm-client"; export default function Commands() { const {setTab} = useContext(TabContext) const [commands, setCommands] = useState([]); const [selectedCommand, setSelectedCommand] = useState(null); const [command2data, setCommand2data] = useState>({}); const [value, setValue] = useState(''); const [open, setOpen] = useState(false); let refreshCommands = async () => { const { data: commands } = await smClient.getCommands() setCommands(commands) } useEffect(() => { refreshCommands() }, []) useEffect(() => { let command = commands.filter((command) => command.name === value) setSelectedCommand(command[0] || null) }, [value]) let variants = commands.map((command: CommandInterface, index: number) => command.name); let callback = (name: string, optionList: Record, argumentList: Record) => { let temp = { ...command2data } temp[name] = { options: optionList, arguments: argumentList, } setCommand2data(temp) } let lock = false let runCommand = async (dialogId: string) => { if (lock) { return } if (!selectedCommand) { return } lock = true let data = command2data[selectedCommand.name] || {} data['requestId'] = dialogId; await smClient.runCommand({ commandName: selectedCommand.name, ...data }) lock = false setTab(TabEnum.Processes) } return ( <>
{ setValue(newValue); }} disablePortal id="combo-box-demo" options={variants} renderInput={(params) => } />
Name Action {selectedCommand && setOpen(true)} aria-label="run"> }
setOpen(false)}/> ) }