Commit aafef480 authored by chenshouchao's avatar chenshouchao

Merge branch 'feat-20220801' into 'staging'

Feat 20220801

See merge request !50
parents 84a93e67 a3af50d4
...@@ -229,6 +229,21 @@ class CloudEController { ...@@ -229,6 +229,21 @@ class CloudEController {
} }
} }
// 获取文件文本内容(字符串)
static JobFileDownloadText(url: any, filetoken: string, projectId: string) {
if (ApiUtils.getAuthorizationHeaders(headers)) {
url = url + urlToken(filetoken, projectId);
headers["Cache-Control"] = "no-cache";
headers["Content-Type"] = "multipart/form-data";
return axios.get(
APIOPTION() + "/download" + url + "&showhidden=false",
{
headers: headers,
}
);
}
}
// 获取分子列表 // 获取分子列表
static GetDatasetItemsList(params: IGetDatasetItemsListParams) { static GetDatasetItemsList(params: IGetDatasetItemsListParams) {
......
...@@ -54,54 +54,6 @@ const OperatorList = (props: IProps) => { ...@@ -54,54 +54,6 @@ const OperatorList = (props: IProps) => {
}; };
}); });
setIsLastPage(res?.data?.last); setIsLastPage(res?.data?.last);
// todo 去掉parameters添加
// arr.forEach((item: any, index: number) => {
// item.edges = [];
// item.parameters.push({
// choices: [],
// classType: "STRING",
// classTypeName: "String",
// defaultValue: null,
// description: "",
// domType: "dataset",
// hidden: false,
// isnull: false,
// level: null,
// linked: false,
// many: false,
// name: `in${index + 1}`,
// order: 0,
// parameterGroup: "in",
// promoted: false,
// promotedName: null,
// required: false,
// title: null,
// validators: [],
// });
// });
// arr.forEach((item: any, index: number) => {
// item.parameters.push({
// choices: [],
// classType: "STRING",
// classTypeName: "String",
// defaultValue: null,
// description: "",
// domType: "dataset",
// hidden: false,
// isnull: false,
// level: null,
// linked: false,
// many: false,
// name: `out${index + 1}`,
// order: 0,
// parameterGroup: "out",
// promoted: false,
// promotedName: null,
// required: false,
// title: null,
// validators: [],
// });
// });
setList([...list, ...arr]); setList([...list, ...arr]);
}, },
}); });
...@@ -113,9 +65,8 @@ const OperatorList = (props: IProps) => { ...@@ -113,9 +65,8 @@ const OperatorList = (props: IProps) => {
productId: productId as string, productId: productId as string,
keyword, keyword,
page, page,
size: 5, size: 20,
}); });
// size: 20 todo
}, },
[productId, getOperatorListRun] [productId, getOperatorListRun]
); );
......
...@@ -168,6 +168,7 @@ const CustomOperator = observer((props: IProps) => { ...@@ -168,6 +168,7 @@ const CustomOperator = observer((props: IProps) => {
saveFormDialog={saveFormDialog} saveFormDialog={saveFormDialog}
setSaveFormDialog={setSaveFormDialog} setSaveFormDialog={setSaveFormDialog}
operatorList={operatorList} operatorList={operatorList}
setShowCustomOperator={setShowCustomOperator}
></SaveOperator> ></SaveOperator>
</div> </div>
<div className={styles.coContent} id="customOperatorFlow"> <div className={styles.coContent} id="customOperatorFlow">
......
...@@ -90,7 +90,6 @@ const BatchOperatorFlow = (props: IProps) => { ...@@ -90,7 +90,6 @@ 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) {
...@@ -100,6 +99,12 @@ const BatchOperatorFlow = (props: IProps) => { ...@@ -100,6 +99,12 @@ const BatchOperatorFlow = (props: IProps) => {
return item.id !== inSideFlowNodeId; return item.id !== inSideFlowNodeId;
})) || })) ||
[]; [];
// 删除节点时同时删除相关的线
newVal?.forEach((task) => {
task.edges = task.edges.filter(
(edge) => edge.target !== inSideFlowNodeId
);
});
setTasks && setTasks(newVal); setTasks && setTasks(newVal);
} }
if (selectedEdge) { if (selectedEdge) {
...@@ -174,7 +179,7 @@ const BatchOperatorFlow = (props: IProps) => { ...@@ -174,7 +179,7 @@ const BatchOperatorFlow = (props: IProps) => {
}); });
}); });
return val; return val;
}, [tasks, inSideFlowNodeId, flowNodeDraggable]); }, [tasks, inSideFlowNodeId, flowNodeDraggable, showVersion]);
/** 生成初始化的连线节点 */ /** 生成初始化的连线节点 */
const initialEdges = useMemo(() => { const initialEdges = useMemo(() => {
...@@ -210,7 +215,6 @@ const BatchOperatorFlow = (props: IProps) => { ...@@ -210,7 +215,6 @@ const BatchOperatorFlow = (props: IProps) => {
const onNodeClick = (e: any, node: Node) => { const onNodeClick = (e: any, node: Node) => {
tasks?.forEach((item) => { tasks?.forEach((item) => {
if (item.id === node.id) { if (item.id === node.id) {
console.log("setInSideFlowNodeId", node.id);
setInSideFlowNodeId(node.id); setInSideFlowNodeId(node.id);
} }
}); });
...@@ -356,8 +360,6 @@ const BatchOperatorFlow = (props: IProps) => { ...@@ -356,8 +360,6 @@ const BatchOperatorFlow = (props: IProps) => {
/** 点击连线 */ /** 点击连线 */
const onEdgeClick = useCallback((e: any, val: Edge) => { const onEdgeClick = useCallback((e: any, val: Edge) => {
console.log(e);
console.log(val);
setSelectedEdge(val); setSelectedEdge(val);
/** 点击连线清除选中的node ID */ /** 点击连线清除选中的node ID */
setInSideFlowNodeId(""); setInSideFlowNodeId("");
......
...@@ -68,6 +68,7 @@ const FlowNode = (props: any) => { ...@@ -68,6 +68,7 @@ const FlowNode = (props: any) => {
[] []
); );
}, [parameters]); }, [parameters]);
return ( return (
<div <div
style={flowNodeStyle} style={flowNodeStyle}
...@@ -76,14 +77,14 @@ const FlowNode = (props: any) => { ...@@ -76,14 +77,14 @@ const FlowNode = (props: any) => {
[styles.selectedFlowBox]: selectedStatus, [styles.selectedFlowBox]: selectedStatus,
})} })}
> >
{dotStatus?.isInput ? ( {/* {dotStatus?.isInput ? (
<Handle <Handle
className={styles.handleBox} className={styles.handleBox}
style={inStyle} style={inStyle}
type="target" type="target"
position={Position.Top} position={Position.Top}
/> />
) : null} ) : null} */}
{inParamsArr?.length {inParamsArr?.length
? inParamsArr.map((item: any, index: number) => { ? inParamsArr.map((item: any, index: number) => {
return ( return (
...@@ -94,8 +95,8 @@ const FlowNode = (props: any) => { ...@@ -94,8 +95,8 @@ const FlowNode = (props: any) => {
style={{ style={{
background: "#fff ", background: "#fff ",
border: "1px solid #D1D6DE", border: "1px solid #D1D6DE",
left: index * 24 + 20,
...inStyle, ...inStyle,
left: index * 24 + 16,
}} }}
type="target" type="target"
position={Position.Top} position={Position.Top}
...@@ -120,14 +121,14 @@ const FlowNode = (props: any) => { ...@@ -120,14 +121,14 @@ const FlowNode = (props: any) => {
/> />
)} )}
</div> </div>
{dotStatus?.isOutput ? ( {/* {dotStatus?.isOutput ? (
<Handle <Handle
className={styles.handleBox} className={styles.handleBox}
style={outStyle} style={outStyle}
type="source" type="source"
position={Position.Bottom} position={Position.Bottom}
/> />
) : null} ) : null} */}
{outParamsArr?.length {outParamsArr?.length
? outParamsArr.map((item: any, index: number) => { ? outParamsArr.map((item: any, index: number) => {
return ( return (
...@@ -138,8 +139,8 @@ const FlowNode = (props: any) => { ...@@ -138,8 +139,8 @@ const FlowNode = (props: any) => {
style={{ style={{
background: "#fff ", background: "#fff ",
border: "1px solid #D1D6DE", border: "1px solid #D1D6DE",
left: index * 24 + 20,
...outStyle, ...outStyle,
left: index * 24 + 16,
}} }}
type="source" type="source"
position={Position.Bottom} position={Position.Bottom}
......
...@@ -143,6 +143,15 @@ const Flow = (props: IProps) => { ...@@ -143,6 +143,15 @@ const Flow = (props: IProps) => {
); );
})) || })) ||
[]; [];
// 删除节点时同时删除相关的线
newVal?.forEach((task) => {
task.edges =
(task?.edges?.length &&
task.edges.filter(
(edge) => edge.target !== inSideBatchNodeId
)) ||
[];
});
setTasks && setTasks(newVal); setTasks && setTasks(newVal);
} }
if (selectedEdge) { if (selectedEdge) {
...@@ -151,7 +160,14 @@ const Flow = (props: IProps) => { ...@@ -151,7 +160,14 @@ const Flow = (props: IProps) => {
} }
} }
}, },
[inSideBatchNodeId, selectedEdge, setTasks, tasks, tasksDeleteLine] [
inSideBatchNodeId,
selectedEdge,
setTasks,
tasks,
tasksDeleteLine,
ListenState,
]
); );
/** 监听鼠标按下事件 */ /** 监听鼠标按下事件 */
...@@ -163,25 +179,25 @@ const Flow = (props: IProps) => { ...@@ -163,25 +179,25 @@ const Flow = (props: IProps) => {
}, [deleteSelectBatchNode]); }, [deleteSelectBatchNode]);
/** 获取是否有输入节点或者是否有输出节点 */ /** 获取是否有输入节点或者是否有输出节点 */
const nodesInputAndOutputStatus = useCallback( // const nodesInputAndOutputStatus = useCallback(
(id: string) => { // (id: string) => {
/** 所有的连线 */ // /** 所有的连线 */
const lineArr: IEdge[] = []; // const lineArr: IEdge[] = [];
tasks?.length && // tasks?.length &&
tasks.forEach((item) => { // tasks.forEach((item) => {
item.edges?.length && lineArr.push(...item.edges); // item.edges?.length && lineArr.push(...item.edges);
}); // });
/** 所有的输入节点ID */ // /** 所有的输入节点ID */
const isInput = lineArr?.some((item) => item.target === id); // const isInput = lineArr?.some((item) => item.target === id);
/** 所有的输出节点ID */ // /** 所有的输出节点ID */
const isOutput = lineArr?.some((item) => item.source === id); // const isOutput = lineArr?.some((item) => item.source === id);
return { // return {
isInput, // isInput,
isOutput, // isOutput,
}; // };
}, // },
[tasks] // [tasks]
); // );
/** 获取是否有流节点 */ /** 获取是否有流节点 */
const isFlowNode = useCallback( const isFlowNode = useCallback(
...@@ -258,7 +274,7 @@ const Flow = (props: IProps) => { ...@@ -258,7 +274,7 @@ const Flow = (props: IProps) => {
} }
: { selectedStatus: inSideFlowNodeId === item.id }), : { selectedStatus: inSideFlowNodeId === item.id }),
/** 输入输出圆点状态 */ /** 输入输出圆点状态 */
dotStatus: nodesInputAndOutputStatus(item.id), // dotStatus: nodesInputAndOutputStatus(item.id),
/** 样式 */ /** 样式 */
style: { style: {
...@@ -290,7 +306,7 @@ const Flow = (props: IProps) => { ...@@ -290,7 +306,7 @@ const Flow = (props: IProps) => {
selectedBatchNodeId, selectedBatchNodeId,
inSideBatchNodeId, inSideBatchNodeId,
inSideFlowNodeId, inSideFlowNodeId,
nodesInputAndOutputStatus, // nodesInputAndOutputStatus,
getBatchStyle, getBatchStyle,
]); ]);
......
...@@ -156,7 +156,8 @@ const OperatorItem = (props: IOperatorItemProps) => { ...@@ -156,7 +156,8 @@ const OperatorItem = (props: IOperatorItemProps) => {
const OperatorList = observer((props: IOperatorListProps) => { const OperatorList = observer((props: IOperatorListProps) => {
const { currentProjectStore } = useStores(); const { currentProjectStore } = useStores();
const productId = toJS(currentProjectStore.currentProductInfo.id); const productId = toJS(currentProjectStore.currentProductInfo.id);
const { templateConfigInfo, setTemplateConfigInfo } = props; const { templateConfigInfo, setTemplateConfigInfo, showCustomOperator } =
props;
const [operatorListData, setOperatorListData] = useState<ITask[]>([]); const [operatorListData, setOperatorListData] = useState<ITask[]>([]);
const [keyword, setKeyword] = useState<string>(""); const [keyword, setKeyword] = useState<string>("");
...@@ -168,22 +169,29 @@ const OperatorList = observer((props: IOperatorListProps) => { ...@@ -168,22 +169,29 @@ const OperatorList = observer((props: IOperatorListProps) => {
}); });
useEffect(() => { useEffect(() => {
if (!showCustomOperator) {
run({ run({
owner: "root", owner: "root",
productId: "cadd" || "", productId: productId as string,
}); });
}, [productId, run]); }
}, [productId, run, showCustomOperator]);
/** 处理回车键 */ /** 处理回车键 */
const handleEnterCode = (e: React.KeyboardEvent<HTMLInputElement>) => { const handleEnterCode = (e: React.KeyboardEvent<HTMLInputElement>) => {
if (e.keyCode === 13) { if (e.keyCode === 13) {
getOperatorList();
}
};
const getOperatorList = useCallback(() => {
run({ run({
owner: "root", owner: "root",
productId: "cadd" || "", productId: productId as string,
keyword, keyword,
}); });
} }, [run, keyword, productId]);
};
return ( return (
<div className={styles.operatorListBox}> <div className={styles.operatorListBox}>
<div className={styles.searchBox}> <div className={styles.searchBox}>
......
...@@ -19,4 +19,5 @@ export interface IOperatorItemProps { ...@@ -19,4 +19,5 @@ export interface IOperatorItemProps {
export interface IOperatorListProps { export interface IOperatorListProps {
templateConfigInfo: ITask[] templateConfigInfo: ITask[]
setTemplateConfigInfo: (val: ITask[]) => void setTemplateConfigInfo: (val: ITask[]) => void
showCustomOperator: boolean
} }
\ No newline at end of file
...@@ -218,6 +218,7 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -218,6 +218,7 @@ const WorkFlowEdit = observer((props: IProps) => {
</div> </div>
{leftContentType === "list" && ( {leftContentType === "list" && (
<OperatorList <OperatorList
showCustomOperator={showCustomOperator}
templateConfigInfo={templateConfigInfo} templateConfigInfo={templateConfigInfo}
setTemplateConfigInfo={setTemplateConfigInfo} setTemplateConfigInfo={setTemplateConfigInfo}
/> />
...@@ -242,7 +243,7 @@ const WorkFlowEdit = observer((props: IProps) => { ...@@ -242,7 +243,7 @@ const WorkFlowEdit = observer((props: IProps) => {
setTasks={setTemplateConfigInfo} setTasks={setTemplateConfigInfo}
type="edit" type="edit"
onFlowNodeClick={handleNodeClick} onFlowNodeClick={handleNodeClick}
ListenState={!saveFormDialog} ListenState={!saveFormDialog && !showCustomOperator}
/> />
</div> </div>
</div> </div>
......
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