"use strict";
import { util } from '../../../util/util.js'
import { fullMap } from '../../../fullMap.js';
import { khcAlert } from '../../../component/alert/khcAlert.js'
import {config} from "../../../config.js";
import {khcToastr} from "../../../component/alert/khcToastr.js";
let formComponent=null;
let functionMap=new Map();// 使用 Map 来存储多个函数。每个函数都通过 set 方法添加到 Map 中，键是函数名，值是对应的函数。
export function main(jsonConfig) {
    try {
        functionMap.get(jsonConfig.button_method).apply(jsonConfig);
    } catch (error) {
        khcAlert.showSystemError(error.message);
        console.log(error);
    }
}

function fCreate(){
    let jsonConfig=this;
    jsonConfig.formType='create'
    init.call(jsonConfig)
}
functionMap.set('fCreate', fCreate);// 将函数添加到 Map 中

function fEdit(){
    let jsonConfig=this;
    jsonConfig.formType='edit'
    init.call(jsonConfig)
}
functionMap.set('fEdit', fEdit);// 将函数添加到 Map 中

function fQueryCreate(){
    let jsonConfig=this;
    jsonConfig.formType='create'
    init.call(jsonConfig)
}
functionMap.set('fQueryCreate', fQueryCreate);// 将函数添加到 Map 中

function fQueryEdit(){
    let jsonConfig=this;
    jsonConfig.formType='edit'
    init.call(jsonConfig)
}
functionMap.set('fQueryEdit', fQueryEdit);// 将函数添加到 Map 中

function fDetail() {
    let jsonConfig=this;
    jsonConfig.formType='detail'
    init.call(jsonConfig)
}
functionMap.set('fDetail', fDetail);// 将函数添加到 Map 中

let initJsFileFunc=null;//initJsFileFunc函数
let initIsManagerFunc=null;//initIsManagerFunc函数
/**
 *
 * @param objID
 * @param formType 调用来源（undefined：页面加载调用，create：新增表单，edit：编辑表单）
 */
function init(){
    let jsonConfig=this;
    let objID = jsonConfig.objID;
    let formType = jsonConfig.formType
    if(formType==undefined||formType=='undefined'){//不是新增和编辑表单则退出
        return ;
    }
    formComponent = fullMap.getObj(objID);
    let eleMap=formComponent.getFormMap();
    if(formType=='create'){
        formComponent.initEleConfig({fieldArray:jsFileFieldArray,isDisabled:true,isClearValue:false,isShowDiv:false,isCanNull:false})
        formComponent.initEleConfig({fieldArray:isManagerFieldArray,isDisabled:true,isClearValue:false,isShowDiv:false,isCanNull:false})
    }else if(formType=='edit'){
        initForm(eleMap)//初始化表单的一些限制,或对更改内容添加标注（添加背景颜色代表该字段被更改过）
        if(eleMap.get('js_file').getValue().length>0){
            formComponent.initEleConfig({fieldArray:jsFileFieldArray,isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:false})//展示但不强制要求必填
        }else{
            formComponent.initEleConfig({fieldArray:jsFileFieldArray,isDisabled:true,isClearValue:false,isShowDiv:false,isCanNull:false})
        }
        if(eleMap.get('is_managing').getValue()=='Y'){
            formComponent.initEleConfig({fieldArray:isManagerFieldArray,isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:false})//展示但不强制要求必填
        }else{
            formComponent.initEleConfig({fieldArray:isManagerFieldArray,isDisabled:true,isClearValue:false,isShowDiv:false,isCanNull:false})
        }
    }
    if(initJsFileFunc!=null){
        document.getElementById(eleMap.get('js_file').getEleID()).removeEventListener('input', initJsFileFunc);
    }
    if(initIsManagerFunc!=null){
        document.getElementById(eleMap.get('is_managing').getEleID()).removeEventListener('change', initIsManagerFunc);
    }
    initJsFileFunc= function () {
        if(this.value.length>0){
            formComponent.initEleConfig({fieldArray:jsFileFieldArray,isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:false})//展示但不强制要求必填
        }else{
            formComponent.initEleConfig({fieldArray:jsFileFieldArray,isDisabled:true,isClearValue:false,isShowDiv:false,isCanNull:false})
        }
    }
    initIsManagerFunc= function () {
        if(this.value=='Y'){
            formComponent.initEleConfig({fieldArray:isManagerFieldArray,isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:false})//展示但不强制要求必填
        }else{
            formComponent.initEleConfig({fieldArray:isManagerFieldArray,isDisabled:true,isClearValue:false,isShowDiv:false,isCanNull:false})
        }
    }
    //验证代码函数
    document.getElementById(eleMap.get('js_file').getEleID()).addEventListener('input', initJsFileFunc);
    document.getElementById(eleMap.get('is_managing').getEleID()).addEventListener('change', initIsManagerFunc);
}
functionMap.set('init', init);// 将函数添加到 Map 中

function initForm(eleMap){
}
let jsFileFieldArray=['query_render_before','query_render_after','table_render_before','table_render_after'];
let isManagerFieldArray=['managing_show_type','managing_length','managing_button_length'];


