chore: move PairEditForm to legacy
This commit is contained in:
@@ -6,7 +6,7 @@ import { Socket } from "socket.io-client";
|
|||||||
import { AddButton } from "../../src/components/ui/buttons/AddButton";
|
import { AddButton } from "../../src/components/ui/buttons/AddButton";
|
||||||
import { AddPair } from "../../src/api/workflow";
|
import { AddPair } from "../../src/api/workflow";
|
||||||
import { GenericModal } from "../../src/components/ui/GenericModal";
|
import { GenericModal } from "../../src/components/ui/GenericModal";
|
||||||
import { PairEditForm } from "../../src/components/recorder/PairEditForm";
|
import { PairEditForm } from "./PairEditForm";
|
||||||
import { Tooltip } from "@mui/material";
|
import { Tooltip } from "@mui/material";
|
||||||
|
|
||||||
interface LeftSidePanelContentProps {
|
interface LeftSidePanelContentProps {
|
||||||
|
|||||||
161
legacy/src/PairEditForm.tsx
Normal file
161
legacy/src/PairEditForm.tsx
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
import { Button, TextField, Typography } from "@mui/material";
|
||||||
|
import React, { FC } from "react";
|
||||||
|
import { Preprocessor, WhereWhatPair } from "maxun-core";
|
||||||
|
|
||||||
|
interface PairProps {
|
||||||
|
index: string;
|
||||||
|
id?: string;
|
||||||
|
where: string | null;
|
||||||
|
what: string | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PairEditFormProps {
|
||||||
|
onSubmitOfPair: (value: WhereWhatPair, index: number) => void;
|
||||||
|
numberOfPairs: number;
|
||||||
|
index?: string;
|
||||||
|
where?: string;
|
||||||
|
what?: string;
|
||||||
|
id?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const PairEditForm: FC<PairEditFormProps> = (
|
||||||
|
{
|
||||||
|
onSubmitOfPair,
|
||||||
|
numberOfPairs,
|
||||||
|
index,
|
||||||
|
where,
|
||||||
|
what,
|
||||||
|
id,
|
||||||
|
}) => {
|
||||||
|
const [pairProps, setPairProps] = React.useState<PairProps>({
|
||||||
|
where: where || null,
|
||||||
|
what: what || null,
|
||||||
|
index: index || "1",
|
||||||
|
id: id || '',
|
||||||
|
});
|
||||||
|
const [errors, setErrors] = React.useState<PairProps>({
|
||||||
|
where: null,
|
||||||
|
what: null,
|
||||||
|
index: '',
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const { id, value } = event.target;
|
||||||
|
if (id === 'index') {
|
||||||
|
if (parseInt(value, 10) < 1) {
|
||||||
|
setErrors({ ...errors, index: 'Index must be greater than 0' });
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
setErrors({ ...errors, index: '' });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setPairProps({ ...pairProps, [id]: value });
|
||||||
|
};
|
||||||
|
|
||||||
|
const validateAndSubmit = (event: React.SyntheticEvent) => {
|
||||||
|
event.preventDefault();
|
||||||
|
let whereFromPair, whatFromPair;
|
||||||
|
// validate where
|
||||||
|
whereFromPair = {
|
||||||
|
where: pairProps.where && pairProps.where !== '{"url":"","selectors":[""] }'
|
||||||
|
? JSON.parse(pairProps.where)
|
||||||
|
: {},
|
||||||
|
what: [],
|
||||||
|
};
|
||||||
|
const validationError = Preprocessor.validateWorkflow({ workflow: [whereFromPair] });
|
||||||
|
setErrors({ ...errors, where: null });
|
||||||
|
if (validationError) {
|
||||||
|
setErrors({ ...errors, where: validationError.message });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// validate what
|
||||||
|
whatFromPair = {
|
||||||
|
where: {},
|
||||||
|
what: pairProps.what && pairProps.what !== '[{"action":"","args":[""] }]'
|
||||||
|
? JSON.parse(pairProps.what) : [],
|
||||||
|
};
|
||||||
|
const validationErrorWhat = Preprocessor.validateWorkflow({ workflow: [whatFromPair] });
|
||||||
|
setErrors({ ...errors, "what": null });
|
||||||
|
if (validationErrorWhat) {
|
||||||
|
setErrors({ ...errors, what: validationErrorWhat.message });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//validate index
|
||||||
|
const index = parseInt(pairProps?.index, 10);
|
||||||
|
if (index > (numberOfPairs + 1)) {
|
||||||
|
if (numberOfPairs === 0) {
|
||||||
|
setErrors(prevState => ({
|
||||||
|
...prevState,
|
||||||
|
index: 'Index of the first pair must be 1'
|
||||||
|
}));
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
setErrors(prevState => ({
|
||||||
|
...prevState,
|
||||||
|
index: `Index must be in the range 1-${numberOfPairs + 1}`
|
||||||
|
}));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setErrors({ ...errors, index: '' });
|
||||||
|
}
|
||||||
|
// submit the pair
|
||||||
|
onSubmitOfPair(pairProps.id
|
||||||
|
? {
|
||||||
|
id: pairProps.id,
|
||||||
|
where: whereFromPair?.where || {},
|
||||||
|
what: whatFromPair?.what || [],
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
where: whereFromPair?.where || {},
|
||||||
|
what: whatFromPair?.what || [],
|
||||||
|
}
|
||||||
|
, index);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<form
|
||||||
|
onSubmit={validateAndSubmit}
|
||||||
|
style={{
|
||||||
|
display: "grid",
|
||||||
|
padding: "0px 30px 0px 30px",
|
||||||
|
marginTop: "36px",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Typography sx={{ marginBottom: '30px' }} variant='h5'>Raw pair edit form:</Typography>
|
||||||
|
<TextField sx={{
|
||||||
|
display: "block",
|
||||||
|
marginBottom: "20px"
|
||||||
|
}} id="index" label="Index" type="number"
|
||||||
|
InputProps={{ inputProps: { min: 1 } }}
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}} defaultValue={pairProps.index}
|
||||||
|
onChange={handleInputChange}
|
||||||
|
error={!!errors.index} helperText={errors.index}
|
||||||
|
required
|
||||||
|
/>
|
||||||
|
<TextField sx={{
|
||||||
|
marginBottom: "20px"
|
||||||
|
}} id="id" label="Id" type="string"
|
||||||
|
defaultValue={pairProps.id}
|
||||||
|
onChange={handleInputChange}
|
||||||
|
/>
|
||||||
|
<TextField multiline sx={{ marginBottom: "20px" }}
|
||||||
|
id="where" label="Where" variant="outlined" onChange={handleInputChange}
|
||||||
|
defaultValue={where || '{"url":"","selectors":[""]}'}
|
||||||
|
error={!!errors.where} helperText={errors.where} />
|
||||||
|
<TextField multiline sx={{ marginBottom: "20px" }}
|
||||||
|
id="what" label="What" variant="outlined" onChange={handleInputChange}
|
||||||
|
defaultValue={what || '[{"action":"","args":[""]}]'}
|
||||||
|
error={!!errors.what} helperText={errors.what} />
|
||||||
|
<Button
|
||||||
|
type="submit"
|
||||||
|
variant="contained"
|
||||||
|
sx={{ padding: "8px 20px", }}
|
||||||
|
>
|
||||||
|
Save
|
||||||
|
</Button>
|
||||||
|
</form>
|
||||||
|
);
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user