123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- type ModelContentConfig = {
- nodeName: string
- type: number
- local_status?: string // 填充自定义状态
- p_nodeNames?: string[] // 填充自定义状态
- childNode: ModelContentConfig | null
- lastNode_local_status?: string // 结束标记状态标记
- conditionNodes?: {
- nodeName: string
- local_status?: string // 填充自定义状态
- conditionList: any[]
- childNode: ModelContentConfig
- }[]
- }
- type RenderNodes = {
- [key: string]: 0 | 1 // 0已执行 1执行中
- }
- export const package_modelContentConfig = (data: ModelContentConfig, renderNodes: RenderNodes) => {
- /**local_status: 0: 已执行(success) 1:执行中(error) // 默认未执行(info)*/
- // 通过nodeName 作为唯一值 记录 每个key(nodeName) 对应的childNode 信息
- const nodeNameObj: { [nodeName: string]: ModelContentConfig } = {}
- const fn = (data: ModelContentConfig, p_nodeNames = []) => {
- // console.error(data, p_nodeNames, 'data, p_nodeNames')
- if (!data) return
- data.p_nodeNames = p_nodeNames
- // 记录
- nodeNameObj[data.nodeName] = data
- // const _p_nodeNames = [...p_nodeNames, data.nodeName]
- const _p_nodeNames = [...p_nodeNames, data.nodeName]
- // let has_conditionNodes = false
- if (data.conditionNodes && Array.isArray(data.conditionNodes)) {
- // has_conditionNodes = true
- // 条件分支节点
- data.conditionNodes.forEach(v => {
- fn(v.childNode, _p_nodeNames)
- // fn(v.childNode, [...p_nodeNames])
- })
- }
- if (data.childNode) {
- // _p_nodeNames.push(data.nodeName)
- // const _p_nodeNames = [...p_nodeNames, data.nodeName]
- // if (!has_conditionNodes) {
- // _p_nodeNames.push(data.nodeName)
- // }
- // 正常子节点
- fn(data.childNode, _p_nodeNames)
- }
- }
- fn(data)
- /*Object.keys(nodeNameObj).forEach(k => {
- const _o = nodeNameObj[k]
- _o.local_status = 'info'
- })
- // 给需要修改状态的*/
- console.log(nodeNameObj, 'nodeNameObj')
- const local_status_obj = {
- 0: 'success', // 已执行
- 1: 'error' // 执行中
- }
- let cur_nodeName = ''
- /**local_status: 0: 已执行(success) 1:执行中(error) // 默认未执行(info)*/
- Object.keys(renderNodes).forEach(nodeName => {
- // console.log(nodeName, 'nodeName')
- const local_status = local_status_obj[renderNodes[nodeName]] || ''
- const node = nodeNameObj[nodeName]
- if (node) {
- node.local_status = local_status
- // 执行中的key 提取出来
- if (node.local_status === 'error') {
- cur_nodeName = nodeName
- }
- }
- if (nodeName === '结束') {
- // 给顶级加结束标签状态
- data.lastNode_local_status = local_status_obj[renderNodes[nodeName]]
- }
- })
- /*const cur_actionKey = Object.keys(nodeNameObj).find(nodeName => {
- const node = nodeNameObj[nodeName]
- // 执行中的key 提取出来
- if (node?.local_status === 'error') {
- return true
- }
- })
- console.warn(cur_actionKey, '当前标红 cur_actionKey')
- */
- const curNode = nodeNameObj[cur_nodeName] as ModelContentConfig
- console.warn('当前标红 curNode', curNode)
- // 如果有执行中的 node 给父级做状态渲染
- if (curNode) {
- const p_nodeNames = curNode.p_nodeNames || []
- if (p_nodeNames.length) {
- p_nodeNames.forEach(nodeName => {
- const p_node = nodeNameObj[nodeName]
- // 父级node 设置为 已执行
- // if (!p_node.local_status) {
- if (p_node) {
- // 如果是条件节点
- if (p_node.conditionNodes && Array.isArray(p_node.conditionNodes)) {
- const idx = p_node.conditionNodes.findIndex(v => v.childNode?.nodeName === curNode.nodeName)
- p_node.conditionNodes.forEach((v, i) => {
- if (i === idx) {
- v.local_status = 'success'
- } else {
- v.local_status = 'info'
- }
- })
- } else {
- // 普通节点
- p_node.local_status = 'success'
- }
- }
- })
- }
- } /*else {
- // 若没有标红 节点 根据 标绿节点处理额外节点样式
- // 处理条件节点
- // 处理结束节点
- }*/
- // 给没有标记 local_status 的 默认填充 未处理
- Object.keys(nodeNameObj).forEach(nodeName => {
- const node = nodeNameObj[nodeName]
- if (!node.local_status) {
- node.local_status = 'info'
- }
- })
- }
|