This commit is contained in:
Wyle.Gong-巩文昕
2025-04-23 11:21:08 +08:00
parent fc643727f3
commit 7a1aae1e2f
135 changed files with 221483 additions and 1 deletions
+159
View File
@@ -0,0 +1,159 @@
class StageAPI {
static async loadAvailableNodes(stageData, availableNodes, renderAvailableNodes, API_BASE_URL) {
let url;
// 根据stage的demand_id决定请求的URL
if (!stageData.demand_id) {
// 如果没有关联树节点,则不加载任何节点
availableNodes = [];
renderAvailableNodes();
return;
} else if (stageData.demand_id === "root") {
// 如果是虚拟根节点,获取所有树节点
url = `${API_BASE_URL}/project/demand/`;
} else {
// 获取指定树节点及其所有子孙节点
url = `${API_BASE_URL}/project/demand/${stageData.demand_id}/descendants`;
}
const response = await fetch(url);
if (!response.ok) throw new Error(`HTTP error ${response.status}`);
const result = await response.json();
if (result.code === 0) {
// 如果是descendants接口,需要合并node和descendants
if (
stageData.demand_id !== "root" &&
result.data &&
result.data.node &&
result.data.descendants
) {
let availableNodest = [result.data.node, ...result.data.descendants];
availableNodest.map((node) => {
availableNodes.push(node);
}
);
} else {
if (result.data && result.data.length > 0) {
result.data.map((node) => {
availableNodes.push(node);
})
}
}
renderAvailableNodes();
} else {
throw new Error(result.message || "获取可用节点失败");
}
return availableNodes;
}
static async loadGraphData(stageId, graphNodes, graphLinks, stageData, API_BASE_URL) {
const response = await fetch(
`${API_BASE_URL}/project/stage/graph/${stageId}/`
);
if (!response.ok) throw new Error(`HTTP error ${response.status}`);
let graphNodest = [];
let graphLinkst = [];
const result = await response.json();
if (result.code === 0 && result.data) {
graphNodest = result.data.nodes;
graphLinkst = result.data.links;
graphNodest.map((node) => {
graphNodes.push({
...node,
instanceId: node.instance_id,
_executionState: {
status: 'IDLE', // 初始状态为空闲
inputData: {}, // 初始没有输入数据
outputData: null, // 初始没有输出数据
error: null, // 初始没有错误
startTime: null, // 执行开始时间
endTime: null // 执行结束时间
}
})
}
);
console.log("nodes", graphNodes);
graphLinkst.map((link) => {
graphLinks.push({
...link,
source: graphNodes.find(
(node) => node.instance_id === link.source_id
),
target: graphNodes.find(
(node) => node.instance_id === link.target_id
),
id: link.link_id || `${link.source_id}-${link.target_id}`, // 确保有id
_conditionType: null, // 用于条件分支 (TRUE/FALSE)
_dataMapping: null
})
});
// 如果需要,也可以更新 stageData
if (result.data.stage && !stageData) {
stageData = result.data.stage;
stageName.textContent = stageData.name || "未命名";
// 更新显示关联树节点信息
if (stageData.demand_id === "root") {
stageLevel.textContent = "关联节点: 所有节点 (虚拟根节点)";
} else if (stageData.demand_id) {
stageLevel.textContent = `关联节点ID: ${stageData.demand_id}`;
} else {
stageLevel.textContent = "未关联任何树节点";
}
}
} else {
throw new Error(result);
}
return graphNodes, graphLinks, stageData;
}
static async loadStageInfo(API_BASE_URL, projectId, stageId, stageName, stageLevel) {
const response = await fetch(
`${API_BASE_URL}/project/stage/${projectId}/${stageId}/`
);
if (!response.ok) throw new Error(`HTTP error ${response.status}`);
let stageData = null;
const result = await response.json();
if (result.code === 0 && result.data) {
stageData = result.data.stage;
console.log("stageData", stageData);
stageName.textContent = stageData.name || "未命名";
// 修改显示关联树节点而不是level
if (stageData.demand_id === "root") {
stageLevel.textContent = "关联节点: 所有节点 (虚拟根节点)";
} else if (stageData.demand_id) {
stageLevel.textContent = `关联节点名称: ${stageData.name}`;
// 尝试获取树节点名称
try {
const treeResponse = await fetch(
`${API_BASE_URL}/project/demand/${stageData.demand_id}/`
);
if (treeResponse.ok) {
const treeResult = await treeResponse.json();
if (treeResult.code === 0 && treeResult.data) {
stageLevel.textContent = `关联节点: ${treeResult.data.node.name || "未命名"
}`;
// console.log("tre", treeResult.data);
}
}
} catch (error) {
console.error("获取树节点名称失败:", error);
}
} else {
stageLevel.textContent = "未关联任何树节点";
}
} else {
throw new Error(result.message || "获取Stage信息失败");
}
return stageData;
}
}
window.StageAPI = StageAPI;