/*
 * @Descripttion: 导入接口视图相关
 * @Author: vian
 * @Date: 2020-09-08 09:36:52
 */
const IMPORT_VIEW = (() => {

  const {
    EXPORT_KIND: { BID_INVITATION }
  } = window.commonConstants;

  /**
   * 根据接口配置文件，设置可被接受的导入文件类型，只导入招标文件
   * @param {Object} $file - 文件选择Jquery dom
   * @return {Void}
   */
  function initFileAccept($file) {
    const set = new Set();
    Object
      .values(INTERFACE_CONFIG)
      .forEach(config => {
        Object
          .entries(config.fileSuffix)
          .forEach(([type, suffix]) => {
            if (+type === BID_INVITATION) {
              set.add(suffix);
            }
          });
      });
    const accept = [...set].join(',');
    $file.prop('accept', accept);
  }

  // 导入相关事件监听器
  function importListener() {
    // 文件选择变更
    $('#interface-import-file').change(function () {
      const file = $(this)[0].files[0];
      $('#interface-import-label').text(file && file.name || '请选择导入文件');
    });
    // 导入确认事件
    $('#interface-import-confirm').click(async function () {
      try {
        if (STATE.importing) {
          return;
        }
        STATE.importing = true;
        const file = $('#interface-import-file')[0].files[0];
        if (!file) {
          throw '请选择导入文件。';
        }
        // 按照地区动态加载导入脚本
        const parentArea = $('#import-parent-area').val();
        const subArea = $('#import-sub-area').val();
        if (!parentArea || !subArea) {
          throw '请选择有效地区。';
        }
        const areaKey = `${parentArea}@${subArea}`;
        await STD_INTERFACE.loadScriptByArea(areaKey, STD_INTERFACE.ScriptType.IMPORT);
        const importData = await INTERFACE_EXPORT_BASE.extractImportData(INTERFACE_IMPORT.entry, file, areaKey);
        $('#interface-import-modal').modal('hide');
        $.bootstrapLoading.progressStart('导入文件', true);
        $("#progress_modal_body").text('正在导入接口文件，请稍候……');
        //return;
        // 转换成File实例
        const blob = new Blob([JSON.stringify(importData)], { type: 'text/plain;charset=utf-8' });
        const key = `${uuid.v1()}.json`;
        const uploadFile = new File([blob], key);
        // 上传文件
        await projTreeObj.getUploadToken();
        await UPLOAD_CDN.uploadSync(uploadFile, key, projTreeObj.uptoken);
        // 下载并处理文件
        await ajaxPost('/pm/import/importInterface', { key });
        await importProcessChecking(key, null, (projectData) => handleProjectAfterChecking(projectData));
      } catch (err) {
        console.log(err);
        alert(err);
      } finally {
        projTreeObj.uptoken = null;
        setTimeout(function () {
          STATE.importing = false;
        }, 500);
      }
    });
  }

  return {
    importListener,
    initFileAccept,
  };
})();

$(document).ready(() => {
  $('#interface-import-modal').on('show.bs.modal', () => {
    $('#interface-import-file').val('');
    $('#interface-import-label').text('请选择导入文件');
    IMPORT_VIEW.initFileAccept($('#interface-import-file'));
    STD_INTERFACE.initInterfaceAreas($('#import-parent-area'), $('#import-sub-area'));
  });
  IMPORT_VIEW.importListener();
});