import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore';
import { mapFun } from '@/hooks/ceshiFun.hook';
import { router } from '@/router';

const chartEditStore = useChartEditStore();
const ceshiFunction = mapFun();

// 交互事件
export const eventHandlerHook = (comonentList: any, elementList: any, params: any = null) => {
  let obj: any = {};
  let index = 0;
  for (let i = 0; i < comonentList.length; i++) {
    for (let j = 0; j < elementList.length; j++) {
      if (elementList[j].movement == 'newaddress') {
        // 打开新页面
        if (elementList[j].openNewPage) {
          if (elementList[j].skipType == 'routeLink') {
            const routeUrl = router.resolve({
              path: elementList[j].url,
            });
            window.open(routeUrl.href, '_blank');
            return;
          } else {
            window.open(elementList[j].url, '_blank');
            return;
          }
        } else {
          if (elementList[j].skipType == 'routeLink') {
            router.replace(elementList[j].url);
            return;
          } else {
            window.open(elementList[j].url, '_self');
            return;
          }
        }
      } else if (elementList[j].movement == 'reveal') {
        // 显示
        for (let k = 0; k < elementList[j].elementId.length; k++) {
          if (comonentList[i].id == elementList[j].elementId[k]) {
            obj = comonentList[i];
            index = i;
            obj.status.hide = false;
            chartEditStore.updateComponentList(index, obj);
          }
        }
      } else if (elementList[j].movement == 'hidden') {
        // 隐藏
        for (let k = 0; k < elementList[j].elementId.length; k++) {
          if (comonentList[i].id == elementList[j].elementId[k]) {
            obj = comonentList[i];
            index = i;
            obj.status.hide = true;
            chartEditStore.updateComponentList(index, obj);
          }
        }
      } else if (elementList[j].movement == 'map') {
        // 地图事件联动
        for (let k = 0; k < elementList[j].elementId.length; k++) {
          if (comonentList[i].id == elementList[j].elementId[k]) {
            if (params) {
              ceshiFunction[elementList[j].funName](params);
            } else {
              ceshiFunction[elementList[j].funName]();
            }
          }
        }
      }
    }
  }
};
