import Vue from 'vue'
import Vuex from 'vuex'
import { queryCategoryGraph } from "@/api/home"

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    editCmd: '', //编辑器编辑命令
    legendObj: null, //获取的相关图例数据obj
    graphId: '',    //图 id 用于读图
    id: '',        // id  用于读图
    isPub: 0,     // 用于读图 区分读取 已发布 or 未发布
    projectId: 'Pj1101050029',  // projectId
    categoryId: '',   //类型id 用于读图
    tupoName: '',  //拓扑图名称
    version: "", //版本号
    viewBackground: '',
    equipmentItemList: [], // 图上相关的设备实例
    equipmentItemNum: 0, //图上相关的设备实例的数量
    categoryGraph: [], // 拓扑图所属分类-所有分类list
  },
  mutations: {
    // 修改编辑器命令
    SETCHOICELEHEND(state, data) {
      state.editCmd = data;
    },
    // 修改编辑器图例
    SETLEGENDOBJ(state, data) {
      state.legendObj = data;
    },
    // 设置项目id
    SETPROJECT(state, data) {
      state.graphId = data.graphId;   //图 id 用于读图
      state.id = data.id;       // id  用于读图
    },
    // 设置项目id
    SETPROJECTID(state, data) {
      state.projectId = data
    },
    // 设置项目id
    SETISPUB(state, val) {
      state.isPub = val;   // 是否发布 用于读图
    },
    // 设置类型id
    SETCATEGROY(state, val) {
      state.categoryId = val.categoryId;
      state.tupoName = val.name;  //拓扑图名称
      state.version = val.version; //版本号
    },
    SETVERSION(state, val) {
      state.version = val; //版本号
    },
    SETVBACKGROUND(state, val) {
      state.viewBackground = val; //版本号
    },
    // 增加设备实例 item
    ADDEQUIPITEM(state, item): void {
      state.equipmentItemList.push(item);
      state.equipmentItemNum = state.equipmentItemList.length;
    },
    // 删除设备实例 item
    EDITEQUIPITEM(state): void {
      // 如果设备实例数组中parent 为null 则删除该数组
      let arr1 = state.equipmentItemList;
      if (!arr1.length) return;

      for (var i = 0; i < arr1.length; i++) {
        if (!arr1[i].parent) {
          arr1.splice(i, 1);
          i--;//i需要自减，否则每次删除都会讲原数组索引发生变化
        }
      };
      state.equipmentItemList = arr1;
      state.equipmentItemNum = state.equipmentItemList.length
    },
    // 获取完成所有分类后
    SETCATEGORYGRAPH(state, val): void {
      state.categoryGraph = val;
      
    }
  },
  actions: {
    async getAllCategoryType({ commit }) {
      await queryCategoryGraph({ switch: true }).then(res => {
        commit('SETCATEGORYGRAPH', res.content)
      })
    }
  },
  modules: {
  }
})
