ui
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user