/**
 * 工作流编辑器 store
 */
import { defineStore } from 'pinia';

export const useWorkflowStore = defineStore({
  id: 'workflowStore',
  state: () => ({
    // 画布
    graph: null,
    // 节点map
    nodeMap: null,
    // 模型定义id
    definitionId: null,
    // 全局配置
    flowGlobalConfig: {
      // 绑定表单
      formDefinitionList: [],
      // 全局事件
      modelEventList: [],
      // 定时任务
      modelTimerList: [],
      // 流程变量
      modelVariableList: [],
      // 流程标题
      modelTitleConfig: {},
      // 任务事件
      taskEventList: [],
      // 摘要字段
      modelSummaryFieldList: [],
    },
    // 当前选中节点的id和可显示加号的连接桩数组
    nodeData: {
      nodeId: '',
      groupList: []
    },
    // 线的类型
    edgeType: 250,
  }),
  getters: {},
  actions: {
    // 设置线的类型
    setEdgeType(value) {
      this.edgeType = value;
    },
    // 设置当前选中节点的id和可显示加号的连接桩数组
    setNodeData(value) {
      this.nodeData = value;
    },
    // 设置画布
    setGraph(value) {
      this.graph = value;
    },

    // set definitionId
    setDefinitionId(value) {
      this.definitionId = value;
    },

    // 设置node
    setNodeMap(nodeId, node) {
      this.nodeMap[nodeId] = node;
    },
    /**
     * 设置全局配置
     * @param {*} data
     */
    setFlowGlobalConfig(data) {
      this.flowGlobalConfig = data?.flowGlobalConfig ?? {
        // 绑定表单
        formDefinitionList: [],
        // 全局事件
        modelEventList: [],
        // 定时任务
        modelTimerList: [],
        // 流程变量
        modelVariableList: [],
        // 流程标题
        modelTitleConfig: {},
        // 任务事件
        taskEventList: [],
        // 摘要字段
        modelSummaryFieldList: [],
      };
    },
    // 设置绑定表单
    setFormDefinitionList(list) {
      this.flowGlobalConfig.formDefinitionList = list;
    },
    // 设置全局事件
    setModelEventList(list) {
      this.flowGlobalConfig.modelEventList = list;
    },
    // 设置定时任务
    setModelTimerList(list) {
      this.flowGlobalConfig.modelTimerList = list;
    },
    // 设置流程变量
    setModelVariableList(list) {
      this.flowGlobalConfig.modelVariableList = list;
    },
    // 设置流程标题
    setModelTitleConfig(data) {
      this.flowGlobalConfig.modelTitleConfig = data;
    },
    // 设置任务事件
    setTaskEventList(data) {
      this.flowGlobalConfig.taskEventList = data;
    },
    // 设置摘要字段
    setModelSummaryFieldList(data) {
      this.flowGlobalConfig.modelSummaryFieldList = data;
    }
  }
});
