Commit e7c84a3e authored by chenshouchao's avatar chenshouchao

feat: 新增算子联调60%

parent f28c1e6c
...@@ -47,56 +47,61 @@ const OperatorList = (props: IProps) => { ...@@ -47,56 +47,61 @@ const OperatorList = (props: IProps) => {
// 获取算子列表 // 获取算子列表
const { run: getOperatorListRun, loading } = useMyRequest(getOperatorList, { const { run: getOperatorListRun, loading } = useMyRequest(getOperatorList, {
onSuccess: (res) => { onSuccess: (res) => {
let arr = res?.data?.content; let arr = res?.data?.content.map((item: any) => {
return {
...item,
edges: [],
};
});
setIsLastPage(res?.data?.last); setIsLastPage(res?.data?.last);
// todo 去掉parameters添加 // todo 去掉parameters添加
arr.forEach((item: any, index: number) => { // arr.forEach((item: any, index: number) => {
item.edges = []; // item.edges = [];
item.parameters.push({ // item.parameters.push({
choices: [], // choices: [],
classType: "STRING", // classType: "STRING",
classTypeName: "String", // classTypeName: "String",
defaultValue: null, // defaultValue: null,
description: "", // description: "",
domType: "dataset", // domType: "dataset",
hidden: false, // hidden: false,
isnull: false, // isnull: false,
level: null, // level: null,
linked: false, // linked: false,
many: false, // many: false,
name: `in${index + 1}`, // name: `in${index + 1}`,
order: 0, // order: 0,
parameterGroup: "in", // parameterGroup: "in",
promoted: false, // promoted: false,
promotedName: null, // promotedName: null,
required: false, // required: false,
title: null, // title: null,
validators: [], // validators: [],
}); // });
}); // });
arr.forEach((item: any, index: number) => { // arr.forEach((item: any, index: number) => {
item.parameters.push({ // item.parameters.push({
choices: [], // choices: [],
classType: "STRING", // classType: "STRING",
classTypeName: "String", // classTypeName: "String",
defaultValue: null, // defaultValue: null,
description: "", // description: "",
domType: "dataset", // domType: "dataset",
hidden: false, // hidden: false,
isnull: false, // isnull: false,
level: null, // level: null,
linked: false, // linked: false,
many: false, // many: false,
name: `out${index + 1}`, // name: `out${index + 1}`,
order: 0, // order: 0,
parameterGroup: "out", // parameterGroup: "out",
promoted: false, // promoted: false,
promotedName: null, // promotedName: null,
required: false, // required: false,
title: null, // title: null,
validators: [], // validators: [],
}); // });
}); // });
setList([...list, ...arr]); setList([...list, ...arr]);
}, },
}); });
......
...@@ -156,6 +156,555 @@ const SaveOperator = (props: IProps) => { ...@@ -156,6 +156,555 @@ const SaveOperator = (props: IProps) => {
description: description, description: description,
}, },
body: positionTransform(), body: positionTransform(),
// body: [
// {
// id: "62c7965c9bf7ba39f2dcefc0",
// title: "RecordFileReader",
// description: "这是一段RecordFileReader算子的描述",
// type: "FLOW",
// productId: "cadd",
// creator: "root",
// parameters: [
// {
// name: "raw",
// classType: "BOOLEAN",
// classTypeName: "Boolean",
// required: false,
// defaultValue: "false",
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "RADIO",
// validators: [],
// choices: [
// {
// value: "true",
// },
// {
// value: "false",
// },
// ],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "sep",
// classType: "STRING",
// classTypeName: "String",
// required: false,
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [],
// choices: [],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "contains_sep",
// classType: "BOOLEAN",
// classTypeName: "Boolean",
// required: false,
// defaultValue: "false",
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "RADIO",
// validators: [],
// choices: [
// {
// value: "true",
// },
// {
// value: "false",
// },
// ],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "encoding",
// classType: "STRING",
// classTypeName: "String",
// required: false,
// defaultValue: "UTF-8",
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [],
// choices: [],
// parameterGroup: "senior",
// linked: false,
// },
// {
// name: "chunk_size",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "1000",
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "senior",
// linked: false,
// },
// {
// name: "compression",
// classType: "STRING",
// classTypeName: "String",
// required: false,
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [],
// choices: [],
// parameterGroup: "senior",
// linked: false,
// },
// {
// name: "cpus",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "1",
// description: "",
// hidden: true,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "hardware",
// linked: false,
// },
// {
// name: "ntasks",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "1",
// description: "",
// hidden: true,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "hardware",
// linked: false,
// },
// {
// name: "partition",
// classType: "STRING",
// classTypeName: "String",
// required: false,
// defaultValue: "c-4-1",
// description: "",
// hidden: true,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// choices: [],
// parameterGroup: "hardware",
// linked: false,
// },
// {
// name: "parallelism",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "1",
// description: "",
// hidden: true,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "hardware",
// linked: false,
// },
// ],
// edges: [
// {
// id: "d3ffaf04-b3dc-4c1c-a3c0-a897536131ba",
// source: "62c7965c9bf7ba39f2dcefc0",
// target: "62c7965c9bf7ba39f2dcefc1",
// },
// ],
// version: "1.0.0",
// allVersions: ["1.0.0", "2.0.0"],
// scatter: false,
// _class: "com.cloudam.c3.domain.ActorSpec",
// },
// {
// id: "62c7965c9bf7ba39f2dcefc2",
// title: "Docking",
// description: "这是一段Docking算子的描述",
// type: "FLOW",
// productId: "cadd",
// creator: "root",
// parameters: [
// {
// name: "core_num",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "1",
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "centerX",
// classType: "INT",
// classTypeName: "Int",
// required: true,
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "centerY",
// classType: "INT",
// classTypeName: "Int",
// required: true,
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "centerZ",
// classType: "INT",
// classTypeName: "Int",
// required: true,
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "boxSizeX",
// classType: "INT",
// classTypeName: "Int",
// required: true,
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "boxSizeY",
// classType: "INT",
// classTypeName: "Int",
// required: true,
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "boxSizeZ",
// classType: "INT",
// classTypeName: "Int",
// required: true,
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "basis",
// linked: false,
// },
// {
// name: "poses_num",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "9",
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "senior",
// linked: false,
// },
// {
// name: "verbosity",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "1",
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "senior",
// linked: false,
// },
// {
// name: "exhaustiveness",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "1",
// description: "",
// hidden: false,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "senior",
// linked: false,
// },
// {
// name: "cpus",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "1",
// description: "",
// hidden: true,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "hardware",
// linked: false,
// },
// {
// name: "ntasks",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "4",
// description: "",
// hidden: true,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "hardware",
// linked: false,
// },
// {
// name: "partition",
// classType: "STRING",
// classTypeName: "String",
// required: false,
// defaultValue: "c-4-1",
// description: "",
// hidden: true,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [],
// choices: [],
// parameterGroup: "hardware",
// linked: false,
// },
// {
// name: "parallelism",
// classType: "INT",
// classTypeName: "Int",
// required: false,
// defaultValue: "6",
// description: "",
// hidden: true,
// many: false,
// isnull: false,
// promoted: false,
// order: 0,
// domType: "INPUT",
// validators: [
// {
// regex: "^[1-9]\\d*$",
// },
// ],
// choices: [],
// parameterGroup: "hardware",
// linked: false,
// },
// ],
// edges: [
// {
// id: "33f82dd3-47ed-4aae-85bc-0a9e763e0981",
// source: "62c7965c9bf7ba39f2dcefc2",
// target: "62c7965c9bf7ba39f2dcefc3",
// },
// ],
// version: "1.0.0",
// allVersions: ["1.0.0", "2.0.0"],
// scatter: false,
// _class: "com.cloudam.c3.domain.ActorSpec",
// },
// ],
}); });
// operatorList // operatorList
// if (id) { // if (id) {
......
...@@ -31,10 +31,13 @@ const CustomOperator = observer((props: IProps) => { ...@@ -31,10 +31,13 @@ const CustomOperator = observer((props: IProps) => {
// 判断 每个流算子必须至少有一条连接线。 // 判断 每个流算子必须至少有一条连接线。
const checkHasOneLine = (sourceArr: string[], targetArr: string[]) => { const checkHasOneLine = (sourceArr: string[], targetArr: string[]) => {
console.log("checkHasOneLine");
const all = _.uniq([...sourceArr, ...targetArr]); const all = _.uniq([...sourceArr, ...targetArr]);
if (all.length === operatorList.length) { if (all.length === operatorList.length) {
console.log("checkHasOneLine1");
return true; return true;
} else { } else {
console.log("checkHasOneLine2");
return false; return false;
} }
// _.uniq([2, 1, 2]); // _.uniq([2, 1, 2]);
...@@ -42,6 +45,7 @@ const CustomOperator = observer((props: IProps) => { ...@@ -42,6 +45,7 @@ const CustomOperator = observer((props: IProps) => {
// 判断 每个起始算子(可以有多个起始点)的输入必须为文件的路径输入或数据集的路径输入。 // 判断 每个起始算子(可以有多个起始点)的输入必须为文件的路径输入或数据集的路径输入。
const checkIn = (targetArr: string[]) => { const checkIn = (targetArr: string[]) => {
console.log("checkIn");
const uniqTargetArr = _.uniq(targetArr); const uniqTargetArr = _.uniq(targetArr);
if (uniqTargetArr.length === operatorList.length) { if (uniqTargetArr.length === operatorList.length) {
// 流节点连成一个圈了 // 流节点连成一个圈了
...@@ -57,7 +61,11 @@ const CustomOperator = observer((props: IProps) => { ...@@ -57,7 +61,11 @@ const CustomOperator = observer((props: IProps) => {
if (inArr.length > 0) { if (inArr.length > 0) {
if ( if (
!inArr.some((inItem) => { !inArr.some((inItem) => {
return inItem.domType === "dataset" || inItem.domType === "path"; return (
(inItem.domType || "").toLowerCase() === "dataset" ||
(inItem.domType || "").toLowerCase() === "path" ||
(inItem.domType || "").toLowerCase() === "file"
);
}) })
) { ) {
check = false; check = false;
...@@ -73,6 +81,7 @@ const CustomOperator = observer((props: IProps) => { ...@@ -73,6 +81,7 @@ const CustomOperator = observer((props: IProps) => {
// 判断 起码有一个结尾算子(可以有多个结尾点)的输出必须为文件保存或数据集保存。 // 判断 起码有一个结尾算子(可以有多个结尾点)的输出必须为文件保存或数据集保存。
const checkOut = (sourceArr: string[]) => { const checkOut = (sourceArr: string[]) => {
console.log("checkOut");
const uniqSourceArr = _.uniq(sourceArr); const uniqSourceArr = _.uniq(sourceArr);
if (uniqSourceArr.length === operatorList.length) { if (uniqSourceArr.length === operatorList.length) {
// 流节点连成一个圈了 // 流节点连成一个圈了
...@@ -82,13 +91,17 @@ const CustomOperator = observer((props: IProps) => { ...@@ -82,13 +91,17 @@ const CustomOperator = observer((props: IProps) => {
operatorList.forEach((flowNode) => { operatorList.forEach((flowNode) => {
if (uniqSourceArr.indexOf(flowNode.id) === -1) { if (uniqSourceArr.indexOf(flowNode.id) === -1) {
// 该节点的输入没有连线 也就是说这个节点是起点 // 该节点的输入没有连线 也就是说这个节点是起点
const inArr = flowNode.parameters.filter( const outArr = flowNode.parameters.filter(
(parameter) => parameter.parameterGroup === "in" (parameter) => parameter.parameterGroup === "out"
); );
if (inArr.length > 0) { if (outArr.length > 0) {
if ( if (
!inArr.some((inItem) => { !outArr.some((outItem) => {
return inItem.domType === "dataset" || inItem.domType === "file"; return (
(outItem.domType || "").toLowerCase() === "dataset" ||
(outItem.domType || "").toLowerCase() === "file" ||
(outItem.domType || "").toLowerCase() === "path"
);
}) })
) { ) {
check = false; check = false;
...@@ -168,7 +181,7 @@ const CustomOperator = observer((props: IProps) => { ...@@ -168,7 +181,7 @@ const CustomOperator = observer((props: IProps) => {
type="edit" type="edit"
onFlowNodeClick={handleNodeClick} onFlowNodeClick={handleNodeClick}
flowNodeDraggable={true} flowNodeDraggable={true}
// ListenState={!saveFormDialog} ListenState={!saveFormDialog}
showVersion={true} showVersion={true}
showControls={false} showControls={false}
/> />
......
...@@ -215,7 +215,7 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -215,7 +215,7 @@ const ConfigForm = (props: ConfigFormProps) => {
</div> </div>
<MyTooltip title={parameter.description} placement="right"> <MyTooltip title={parameter.description} placement="right">
<div className={styles.parameterContent}> <div className={styles.parameterContent}>
{parameter.domType.toLowerCase() === "file" && ( {(parameter.domType || "").toLowerCase() === "file" && (
<MyInput <MyInput
onFocus={() => setSelectedBatchNodeId(batchId || "")} onFocus={() => setSelectedBatchNodeId(batchId || "")}
onBlur={() => setSelectedBatchNodeId("")} onBlur={() => setSelectedBatchNodeId("")}
...@@ -239,7 +239,7 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -239,7 +239,7 @@ const ConfigForm = (props: ConfigFormProps) => {
size="medium" size="medium"
></MyInput> ></MyInput>
)} )}
{parameter.domType.toLowerCase() === "path" && ( {(parameter.domType || "").toLowerCase() === "path" && (
<MyInput <MyInput
onFocus={() => setSelectedBatchNodeId(batchId || "")} onFocus={() => setSelectedBatchNodeId(batchId || "")}
onBlur={() => setSelectedBatchNodeId("")} onBlur={() => setSelectedBatchNodeId("")}
...@@ -263,7 +263,7 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -263,7 +263,7 @@ const ConfigForm = (props: ConfigFormProps) => {
size="medium" size="medium"
></MyInput> ></MyInput>
)} )}
{parameter.domType.toLowerCase() === "dataset" && ( {(parameter.domType || "").toLowerCase() === "dataset" && (
<MyInput <MyInput
onFocus={() => setSelectedBatchNodeId(taskId)} onFocus={() => setSelectedBatchNodeId(taskId)}
onBlur={() => setSelectedBatchNodeId("")} onBlur={() => setSelectedBatchNodeId("")}
...@@ -287,7 +287,7 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -287,7 +287,7 @@ const ConfigForm = (props: ConfigFormProps) => {
size="medium" size="medium"
></MyInput> ></MyInput>
)} )}
{parameter.domType.toLowerCase() === "input" && ( {(parameter.domType || "").toLowerCase() === "input" && (
<MyInput <MyInput
onFocus={() => { onFocus={() => {
setSelectedBatchNodeId(batchId || ""); setSelectedBatchNodeId(batchId || "");
...@@ -304,7 +304,7 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -304,7 +304,7 @@ const ConfigForm = (props: ConfigFormProps) => {
size="medium" size="medium"
></MyInput> ></MyInput>
)} )}
{parameter.domType.toLowerCase() === "select" && ( {(parameter.domType || "").toLowerCase() === "select" && (
<MySelect <MySelect
onFocus={() => setSelectedBatchNodeId(batchId || "")} onFocus={() => setSelectedBatchNodeId(batchId || "")}
onBlur={() => setSelectedBatchNodeId("")} onBlur={() => setSelectedBatchNodeId("")}
...@@ -326,7 +326,8 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -326,7 +326,8 @@ const ConfigForm = (props: ConfigFormProps) => {
fullWidth fullWidth
></MySelect> ></MySelect>
)} )}
{parameter.domType.toLowerCase() === "multipleselect" && ( {(parameter.domType || "").toLowerCase() ===
"multipleselect" && (
<MySelect <MySelect
onFocus={() => setSelectedBatchNodeId(batchId || "")} onFocus={() => setSelectedBatchNodeId(batchId || "")}
onBlur={() => setSelectedBatchNodeId("")} onBlur={() => setSelectedBatchNodeId("")}
...@@ -349,7 +350,7 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -349,7 +350,7 @@ const ConfigForm = (props: ConfigFormProps) => {
fullWidth fullWidth
></MySelect> ></MySelect>
)} )}
{parameter.domType.toLowerCase() === "radio" && ( {(parameter.domType || "").toLowerCase() === "radio" && (
<MyRadio <MyRadio
value={parameter.value} value={parameter.value}
onChange={(e: any) => onChange={(e: any) =>
...@@ -362,7 +363,7 @@ const ConfigForm = (props: ConfigFormProps) => { ...@@ -362,7 +363,7 @@ const ConfigForm = (props: ConfigFormProps) => {
helperText={parameter.helperText} helperText={parameter.helperText}
></MyRadio> ></MyRadio>
)} )}
{parameter.domType.toLowerCase() === "checkbox" && ( {(parameter.domType || "").toLowerCase() === "checkbox" && (
<MyCheckBox <MyCheckBox
value={parameter.value} value={parameter.value}
onChange={(e: any) => onChange={(e: any) =>
......
...@@ -70,16 +70,16 @@ const ProjectSubmitWork = observer(() => { ...@@ -70,16 +70,16 @@ const ProjectSubmitWork = observer(() => {
let value: any = undefined; let value: any = undefined;
if (parameter.defaultValue) { if (parameter.defaultValue) {
if ( if (
parameter.domType.toLowerCase() === "multipleselect" || (parameter.domType || "").toLowerCase() === "multipleselect" ||
parameter.domType.toLowerCase() === "checkbox" (parameter.domType || "").toLowerCase() === "checkbox"
) { ) {
value = parameter.defaultValue.split(","); value = parameter.defaultValue.split(",");
} else { } else {
value = parameter.defaultValue; value = parameter.defaultValue;
} }
} else if ( } else if (
parameter.domType.toLowerCase() === "multipleselect" || (parameter.domType || "").toLowerCase() === "multipleselect" ||
parameter.domType.toLowerCase() === "checkbox" (parameter.domType || "").toLowerCase() === "checkbox"
) { ) {
value = []; value = [];
} else { } else {
...@@ -179,9 +179,9 @@ const ProjectSubmitWork = observer(() => { ...@@ -179,9 +179,9 @@ const ProjectSubmitWork = observer(() => {
value = parameter.value; value = parameter.value;
} }
if ( if (
parameter.domType.toLowerCase() === "path" || (parameter.domType || "").toLowerCase() === "path" ||
parameter.domType.toLowerCase() === "dataset" || (parameter.domType || "").toLowerCase() === "dataset" ||
parameter.domType.toLowerCase() === "file" (parameter.domType || "").toLowerCase() === "file"
) { ) {
value = `/${value}`; value = `/${value}`;
} }
......
...@@ -50,6 +50,7 @@ const BatchOperatorFlow = (props: IProps) => { ...@@ -50,6 +50,7 @@ const BatchOperatorFlow = (props: IProps) => {
showVersion = false, showVersion = false,
...other ...other
} = props; } = props;
console.log(tasks);
/** 自定义的节点类型 */ /** 自定义的节点类型 */
const nodeTypes = useMemo(() => { const nodeTypes = useMemo(() => {
return { batchNode: BatchNode, flowNode: FlowNode }; return { batchNode: BatchNode, flowNode: FlowNode };
...@@ -62,7 +63,7 @@ const BatchOperatorFlow = (props: IProps) => { ...@@ -62,7 +63,7 @@ const BatchOperatorFlow = (props: IProps) => {
/** 原始数据删除线 */ /** 原始数据删除线 */
const tasksDeleteLine = useCallback( const tasksDeleteLine = useCallback(
(connection: Connection | Edge) => { (connection: Connection | Edge | any) => {
const result = const result =
(tasks?.length && (tasks?.length &&
tasks.map((item) => { tasks.map((item) => {
...@@ -70,9 +71,7 @@ const BatchOperatorFlow = (props: IProps) => { ...@@ -70,9 +71,7 @@ const BatchOperatorFlow = (props: IProps) => {
if (item.id === connection.source) { if (item.id === connection.source) {
const newEdges = const newEdges =
(item.edges?.length && (item.edges?.length &&
item.edges?.filter( item.edges?.filter((every) => every.id !== connection.id)) ||
(every) => every.sourceHandle !== connection.sourceHandle
)) ||
[]; [];
return { return {
...item, ...item,
...@@ -91,6 +90,7 @@ const BatchOperatorFlow = (props: IProps) => { ...@@ -91,6 +90,7 @@ const BatchOperatorFlow = (props: IProps) => {
/** 删除流节点或者线 */ /** 删除流节点或者线 */
const deleteSelectFlowNode = useCallback( const deleteSelectFlowNode = useCallback(
(e: any) => { (e: any) => {
console.log(tasks);
if (e.keyCode === 8 && ListenState) { if (e.keyCode === 8 && ListenState) {
/** 删除流节点逻辑 */ /** 删除流节点逻辑 */
if (inSideFlowNodeId) { if (inSideFlowNodeId) {
......
...@@ -18,7 +18,7 @@ import FlowNode from "./components/FlowNode"; ...@@ -18,7 +18,7 @@ import FlowNode from "./components/FlowNode";
import { getCustomTemplateParameterCheckResult } from "@/views/WorkFlowEdit/util"; import { getCustomTemplateParameterCheckResult } from "@/views/WorkFlowEdit/util";
import { useMessage } from "@/components/MySnackbar"; import { useMessage } from "@/components/MySnackbar";
import styles from './index.module.css' import styles from "./index.module.css";
/* /*
* @Author: 吴永生#A02208 yongsheng.wu@wholion.com * @Author: 吴永生#A02208 yongsheng.wu@wholion.com
...@@ -61,6 +61,7 @@ const Flow = (props: IProps) => { ...@@ -61,6 +61,7 @@ const Flow = (props: IProps) => {
showControls = true, showControls = true,
...other ...other
} = props; } = props;
console.log(tasks);
/** 自定义的节点类型 */ /** 自定义的节点类型 */
const nodeTypes = useMemo(() => { const nodeTypes = useMemo(() => {
return { batchNode: BatchNode, flowNode: FlowNode }; return { batchNode: BatchNode, flowNode: FlowNode };
...@@ -375,7 +376,7 @@ const Flow = (props: IProps) => { ...@@ -375,7 +376,7 @@ const Flow = (props: IProps) => {
setInSideFlowNodeId(""); setInSideFlowNodeId("");
onBatchClick && onBatchClick(""); onBatchClick && onBatchClick("");
setSelectedEdge(undefined); setSelectedEdge(undefined);
onFlowNodeClick && onFlowNodeClick('') onFlowNodeClick && onFlowNodeClick("");
}; };
/** node节点 */ /** node节点 */
......
...@@ -29,7 +29,7 @@ let count = 1; ...@@ -29,7 +29,7 @@ let count = 1;
const OperatorItem = (props: IOperatorItemProps) => { const OperatorItem = (props: IOperatorItemProps) => {
const { const {
info: { title, description,tags, version }, info: { title, description, tags, version },
setTemplateConfigInfo, setTemplateConfigInfo,
templateConfigInfo, templateConfigInfo,
operatorListData, operatorListData,
...@@ -75,7 +75,7 @@ const OperatorItem = (props: IOperatorItemProps) => { ...@@ -75,7 +75,7 @@ const OperatorItem = (props: IOperatorItemProps) => {
x: item.type === "BATCH" ? x : item.position?.x, x: item.type === "BATCH" ? x : item.position?.x,
y: item.type === "BATCH" ? y : item.position?.y, y: item.type === "BATCH" ? y : item.position?.y,
}, },
edges: newEdges.length ? newEdges : item?.edges, edges: newEdges?.length ? newEdges : item?.edges,
}; };
}); });
return newVal; return newVal;
...@@ -133,7 +133,7 @@ const OperatorItem = (props: IOperatorItemProps) => { ...@@ -133,7 +133,7 @@ const OperatorItem = (props: IOperatorItemProps) => {
<h2 className={styles.operatorItemTitle}>{title}</h2> <h2 className={styles.operatorItemTitle}>{title}</h2>
<div className={styles.operatorItemText}>{description}</div> <div className={styles.operatorItemText}>{description}</div>
<div className={styles.footerBox}> <div className={styles.footerBox}>
{tags?.map((item: string) => { {tags?.map((item: string) => {
return ( return (
<span <span
key={item} key={item}
......
...@@ -395,7 +395,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -395,7 +395,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
return ( return (
<MyTooltip title={parameter.description} placement="right"> <MyTooltip title={parameter.description} placement="right">
<div> <div>
{parameter.domType.toLowerCase() === "file" && ( {(parameter.domType || "").toLowerCase() === "file" && (
<MyInput <MyInput
value={parameter.defaultValue || ""} value={parameter.defaultValue || ""}
InputProps={{ InputProps={{
...@@ -420,7 +420,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -420,7 +420,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
disabled={parameter.parameterGroup === "out"} disabled={parameter.parameterGroup === "out"}
></MyInput> ></MyInput>
)} )}
{parameter.domType.toLowerCase() === "path" && ( {(parameter.domType || "").toLowerCase() === "path" && (
<MyInput <MyInput
value={parameter.defaultValue || ""} value={parameter.defaultValue || ""}
InputProps={{ InputProps={{
...@@ -445,7 +445,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -445,7 +445,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
disabled={parameter.parameterGroup === "out"} disabled={parameter.parameterGroup === "out"}
></MyInput> ></MyInput>
)} )}
{parameter.domType.toLowerCase() === "dataset" && ( {(parameter.domType || "").toLowerCase() === "dataset" && (
<MyInput <MyInput
value={parameter.defaultValue || ""} value={parameter.defaultValue || ""}
InputProps={{ InputProps={{
...@@ -470,7 +470,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -470,7 +470,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
disabled={parameter.parameterGroup === "out"} disabled={parameter.parameterGroup === "out"}
></MyInput> ></MyInput>
)} )}
{parameter.domType.toLowerCase() === "input" && ( {(parameter.domType || "").toLowerCase() === "input" && (
<MyInput <MyInput
value={parameter.defaultValue || ""} value={parameter.defaultValue || ""}
onChange={(e: any) => onChange={(e: any) =>
...@@ -482,7 +482,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -482,7 +482,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
disabled={parameter.parameterGroup === "out"} disabled={parameter.parameterGroup === "out"}
></MyInput> ></MyInput>
)} )}
{parameter.domType.toLowerCase() === "select" && ( {(parameter.domType || "").toLowerCase() === "select" && (
<MySelect <MySelect
value={parameter.defaultValue} value={parameter.defaultValue}
onChange={(e: any) => onChange={(e: any) =>
...@@ -501,7 +501,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -501,7 +501,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
disabled={parameter.parameterGroup === "out"} disabled={parameter.parameterGroup === "out"}
></MySelect> ></MySelect>
)} )}
{parameter.domType.toLowerCase() === "multipleselect" && ( {(parameter.domType || "").toLowerCase() === "multipleselect" && (
<MySelect <MySelect
value={parameter.defaultValue} value={parameter.defaultValue}
onChange={(e: any) => onChange={(e: any) =>
...@@ -521,7 +521,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -521,7 +521,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
disabled={parameter.parameterGroup === "out"} disabled={parameter.parameterGroup === "out"}
></MySelect> ></MySelect>
)} )}
{parameter.domType.toLowerCase() === "radio" && ( {(parameter.domType || "").toLowerCase() === "radio" && (
<MyRadio <MyRadio
value={parameter.defaultValue} value={parameter.defaultValue}
onChange={(e: any) => onChange={(e: any) =>
...@@ -532,7 +532,7 @@ const ParameterSetting = (props: IParameterSettingProps) => { ...@@ -532,7 +532,7 @@ const ParameterSetting = (props: IParameterSettingProps) => {
helperText={parameter.helperText} helperText={parameter.helperText}
></MyRadio> ></MyRadio>
)} )}
{parameter.domType.toLowerCase() === "checkbox" && ( {(parameter.domType || "").toLowerCase() === "checkbox" && (
<MyCheckBox <MyCheckBox
value={parameter.defaultValue} value={parameter.defaultValue}
onChange={(e: any) => onChange={(e: any) =>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment