Validation with multiple base classes done

This commit is contained in:
Lucas Oliveira 2023-02-17 16:59:41 -03:00
commit ddb648dcbf
8 changed files with 28 additions and 21 deletions

View file

@ -1,4 +1,4 @@
import { Bars3CenterLeftIcon, TrashIcon } from "@heroicons/react/24/outline";
import { Bars3CenterLeftIcon, CheckCircleIcon, TrashIcon } from "@heroicons/react/24/outline";
import { Input } from "@mui/material";
import { Handle, Position } from "reactflow";
import { isValidConnection, nodeColors } from "../../utils";
@ -11,9 +11,9 @@ export default function BooleanNode({ data }) {
<div className="prompt-node relative bg-white rounded-lg solid border flex flex-col justify-center">
<div className="w-full flex items-center justify-between gap-8 p-4 bg-gray-50 border-b ">
<div className="flex items-center gap-4 text-lg">
<Bars3CenterLeftIcon
className="w-10 h-10 p-1 text-white rounded"
style={{ background: nodeColors[data.type] }}
<CheckCircleIcon
className="w-10 h-10 p-1 rounded"
style={{ color: nodeColors[data.type] }}
/>
Boolean
</div>

View file

@ -16,7 +16,7 @@ export default function ChatInputNode({ data }) {
isValidConnection(data, connection)
}
className="ml-1 bg-transparent border-solid border-l-8 border-y-transparent border-y-8 border-r-0 rounded-none"
style={{ borderLeftColor: 'white' }}
style={{ borderLeftColor: nodeColors['chat'] }}
></Handle>
</Tooltip>
<Tooltip title={"Message: str"}>

View file

@ -18,6 +18,7 @@ export default function ParameterComponent({
color,
type,
name = "",
required = false,
}) {
const ref = useRef(null);
const updateNodeInternals = useUpdateNodeInternals();
@ -38,8 +39,8 @@ export default function ParameterComponent({
return (
<div ref={ref} className="w-full flex flex-wrap justify-between items-center bg-gray-50 mt-1 px-5 py-2">
<>
<div className="text-sm truncate">{title}</div>
<Tooltip title={tooltipTitle}>
<div className="text-sm truncate">{title}<span className="text-red-600">{required ? " *" : ""}</span></div>
<Tooltip title={tooltipTitle + (required ? " (required)" : "")}>
<Handle
type={left ? "source" : "target"}
position={left ? Position.Left : Position.Right}
@ -60,6 +61,7 @@ export default function ParameterComponent({
{left === true && type === "str" ? (
<div className="mt-2 w-full">
<Input
value={data.node.template[name].value ?? ""}
onChange={(t) => {
data.node.template[name].value = t;
}}

View file

@ -35,7 +35,7 @@ export default function GenericNode({ data }) {
{Object.keys(data.node.template)
.filter((t) => t.charAt(0) !== "_")
.map((t, idx) => (
<>
<div key={idx}>
{idx === 0 ? (
<div className="px-5 py-2 mt-2 text-center">Inputs:</div>
) : (
@ -43,23 +43,22 @@ export default function GenericNode({ data }) {
)}
{data.node.template[t].show ? (
<ParameterComponent
key={idx}
data={data}
color={
nodeColors[data.types[data.node.template[t].type]] ??
"black"
}
title={
snakeToNormalCase(t) +
(data.node.template[t].required ? " (required)" : "")
snakeToNormalCase(t)
}
name={t}
tooltipTitle={
"Type: " +
data.node.template[t].type +
(data.node.template[t].list ? " list" : "") +
(data.node.template[t].required ? " (required)" : "")
(data.node.template[t].list ? " list" : "")
}
required={data.node.template[t].required}
id={data.node.template[t].type + "|" + t + "|" + data.id}
left={true}
type={data.node.template[t].type}
@ -67,15 +66,15 @@ export default function GenericNode({ data }) {
) : (
<></>
)}
</>
</div>
))}
<div className="px-5 py-2 mt-2 text-center">Output:</div>
<ParameterComponent
data={data}
color={nodeColors[data.type]}
title={data.name + " | " + data.node.base_class}
title={data.name +" |" + data.node.base_classes.map((b) => (" " + b))}
tooltipTitle={"Type: str"}
id={data.name + "|" + data.node.base_class + "|" + data.id}
id={data.name + "|" + data.id + data.node.base_classes.map((b) => ("|" + b))}
type={'str'}
left={false}
/>

View file

@ -29,8 +29,8 @@ export default function InputNode({ data }) {
<div className="w-full flex items-center justify-between p-4 gap-8 bg-gray-50 border-b ">
<div className="flex items-center gap-4 text-lg">
<Bars3CenterLeftIcon
className="w-10 h-10 p-1 text-white rounded"
style={{ background: nodeColors[data.type] }}
className="w-10 h-10 p-1 rounded"
style={{ color: nodeColors[data.type] }}
/>
String
</div>
@ -44,6 +44,7 @@ export default function InputNode({ data }) {
</div>
<div className="w-full p-5 h-full">
<Input
value=""
onChange={(e) => {
data.text = e;
}}