
/*  初始化  
  options 其他配置 包括初始化数据 data:[{ celldata:[] }]
  sheetInfo 表格id相关信息 用来内容hooks变化时保存草稿
  limit 限制性数据
  callbackItems 回调函数组成的对象
*/
import * as sheetInterface from '@/api/modules/sheetApi.js';
import { Message } from 'element-ui';

export function initSheet(container,options={},sheetInfo={},limit,callbackItems) {
  const configOpt = {
    container,
    lang: 'zh', // 设定表格语言
    showinfobar: false,//顶部info
    showsheetbar:false,//底部sheet页 暂禁止添加多个表格
		showtoolbarConfig:{
			image: false,//图片
			print: false,//打印
      chart: false, // '图表'
      postil:  false, //'批注'
		},
    cellRightClickConfig: {
      copy:!limit.disabled,
      copyAs:!limit.disabled,
      chart: false, // 图表生成
      image: false, // 插入图片
      link: false, // 插入链接
    },
    allowCopy:!limit.disabled,//没效果
    hook: {
      cellEditBefore:(range)=>{
        if(limit.disabled){
          Message.warning("当前不可编辑")
          setTimeout(()=>{
            luckysheet.exitEditMode();
          },0)
        }
      },
      cellUpdateBefore:()=>{
        if(limit.disabled){
          // 不可编辑
          return false
        }
      },
      // rangeCopyBefore:(range,data)=>{
      //   // 不触发
      //   console.log(range,data,'range,data','rangeCopyBefore');
      // },
      // rangeCopyAfter:(range,data)=>{
      //   // 不触发
      //   console.log(range,data,'range,data','rangeCopyAfter');
      // },
      updated: (a,b,c,d,e)=> {
        if(limit.disabled){
          Message.warning("当前不可编辑")
          luckysheet.undo()
          return 
        }
        // console.log(callbackItems);
        callbackItems.updated()
        //草稿
        if(sheetInfo.Source&&sheetInfo.Source===1) {
          let data = luckysheet.getAllSheets()[0];
          data.luckysheet_select_save = [];
          const { ExcelInfoId,ExcelName,ExcelClassifyId } = sheetInfo;
          ExcelInfoId && sheetInterface.sheetDrafSave({
            ExcelInfoId,
            ExcelName,
            ExcelClassifyId,
            Content: JSON.stringify(data)
          })
        }
      },
    },
    ...options,
  }

  luckysheet.create(configOpt)

}

/* 保存表格关联截图 手动选区截图再清空选区 */
export const getSheetImage = (data) => {
  const { celldata } = data;

  //超过1000个就不遍历了
  let r_start,r_end,c_start,c_end;
  if(celldata.length > 1000) {
    const splitData = celldata.slice(0,1000);
    const r_arr = splitData.map(_ => _.c);
    r_start = splitData[0].r;
    r_end = splitData[splitData.length-1].r;
    c_start = Math.min(...r_arr);
    c_end = Math.max(...r_arr);

  }else {
    const r_arr = celldata.map(_ => _.c);
    r_start = celldata[0].r;
    r_end = celldata[celldata.length-1].r;
    c_start = Math.min(...r_arr);
    c_end = Math.max(...r_arr);
  }
  
  luckysheet.setRangeShow({row:[r_start,r_end],column:[c_start,c_end]},{show: false})
  let img = luckysheet.getScreenshot()
  return img;

}