import {
  bpmnEnd,
  bpmnOutside,
  bpmnProcessing,
  bpmnSubFlow,
  bpmnTask,
  bpmnTrigger,
  typeEnd,
  typeOutside,
  typeProcessing,
  typeSubFlow,
  typeTask,
  typeTrigger,
} from '@jnpf/bpmn/config';

interface FlowNodeOption {
  wnType: string;
  wnName: string;
}

interface FlowNode {
  fullName: string;
  icon: string;
  type: string;
  option: FlowNodeOption;
}
// 自由节点节点
const freeFlowNodeList: FlowNode[] = [
  {
    fullName: '触发节点',
    icon: 'icon-ym icon-ym-flow-trigger-event',
    type: bpmnTrigger,
    option: {
      wnType: typeTrigger,
      wnName: '触发节点',
    },
  },
];
// 流程节点
const flowNodeList: FlowNode[] = [
  {
    fullName: '审批节点',
    icon: 'icon-ym icon-ym-flow-node-approve',
    type: bpmnTask,
    option: {
      wnType: typeTask,
      wnName: '审批节点',
    },
  },
  {
    fullName: '办理节点',
    icon: 'icon-ym icon-ym-generator-todo',
    type: bpmnProcessing,
    option: {
      wnType: typeProcessing,
      wnName: '办理节点',
    },
  },
  {
    fullName: '子流程',
    icon: 'icon-ym icon-ym-flow-node-subFlow',
    type: bpmnSubFlow,
    option: {
      wnType: typeSubFlow,
      wnName: '子流程',
    },
  },
  {
    fullName: '触发节点',
    icon: 'icon-ym icon-ym-flow-trigger-event',
    type: bpmnTrigger,
    option: {
      wnType: typeTrigger,
      wnName: '触发节点',
    },
  },
  {
    fullName: '外部节点',
    icon: 'icon-ym icon-ym-flow-node-external',
    type: bpmnOutside,
    option: {
      wnType: typeOutside,
      wnName: '外部节点',
    },
  },
  {
    fullName: '流程结束',
    icon: 'icon-ym icon-ym-flow-node-end',
    type: bpmnEnd,
    option: {
      wnType: typeEnd,
      wnName: '流程结束',
    },
  },
];

export { flowNodeList, freeFlowNodeList };
