"use strict";
import { util } from '../../../util/util.js'
import { fullMap } from '../../../fullMap.js';
import { khcAlert } from '../../../component/alert/khcAlert.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 fPageComponentCreate(){
    let jsonConfig=this;
    jsonConfig.formType='create'
    init.call(jsonConfig)
}
functionMap.set('fPageComponentCreate', fPageComponentCreate);// 将函数添加到 Map 中

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

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

let dataSourceFieldArray=['ds_code','query_code','form_code'];
let formFieldArray=['ds_code','form_code','form_view_mode'];
let initComponentTypeTypeFunc=null;//数据获取方式
function init(){
    let jsonConfig=this;
    let objID = jsonConfig.objID;
    let formType = jsonConfig.formType
    formComponent = fullMap.getObj(objID);
    let eleMap=formComponent.getFormMap();
    if((formType==undefined||formType=='undefined')||formType=='create'){
        formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})
        formComponent.initEleConfig({fieldArray:formFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})
        formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','component_url','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})
    }else if(formType=='edit'){
        console.log(1111)
        initForm(eleMap)//初始化表单的一些限制,或对更改内容添加标注（添加背景颜色代表该字段被更改过）
        if(eleMap.get('component_type').getValue()=='dataSource'){
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:['form_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:false})//form_code非必填项
            formComponent.initEleConfig({fieldArray:['simple_card_code','charts_code','component_url','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(eleMap.get('component_type').getValue()=='form'){
            formComponent.initEleConfig({fieldArray:formFieldArray,isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:['query_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//query_code隐藏
            formComponent.initEleConfig({fieldArray:['simple_card_code','charts_code','component_url','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            let formViewMode=eleMap.get('form_view_mode').getValue();
            if(!util.isNull(formViewMode)&&formViewMode!='create'){
                formComponent.initEleConfig({fieldArray:['form_find_one_method_name'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            }
        }else if(eleMap.get('component_type').getValue()=='charts'){
            formComponent.initEleConfig({fieldArray:['charts_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:['simple_card_code','component_url','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(eleMap.get('component_type').getValue()=='simpleCard'){
            formComponent.initEleConfig({fieldArray:['simple_card_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','component_url','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(eleMap.get('component_type').getValue()=='iframe'){
            formComponent.initEleConfig({fieldArray:['component_url'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(eleMap.get('component_type').getValue()=='openLink'){
            formComponent.initEleConfig({fieldArray:['component_url'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(eleMap.get('component_type').getValue()=='htmlView'){
            formComponent.initEleConfig({fieldArray:['html_view_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','component_url','form_view_mode','form_find_one_method_name','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(eleMap.get('component_type').getValue()=='nav'){
            formComponent.initEleConfig({fieldArray:['nav_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','component_url','form_view_mode','form_find_one_method_name','html_view_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else{
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','component_url','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }
    }
    if(initComponentTypeTypeFunc!=null){
        document.getElementById(eleMap.get('charts_code').getEleID()).removeEventListener('change', initComponentTypeTypeFunc);
    }
    initComponentTypeTypeFunc= function () {
        if(this.value=='dataSource'){
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:['form_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:false})//form_code非必填项
            formComponent.initEleConfig({fieldArray:['simple_card_code','charts_code','component_url','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(this.value=='form'){
            formComponent.initEleConfig({fieldArray:formFieldArray,isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:['query_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//query_code隐藏
            formComponent.initEleConfig({fieldArray:['simple_card_code','charts_code','component_url','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            let formViewMode=eleMap.get('form_view_mode').getValue();
            if(!util.isNull(formViewMode)){
                formComponent.initEleConfig({fieldArray:['form_find_one_method_name'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            }
        }else if(this.value=='charts'){
            formComponent.initEleConfig({fieldArray:['charts_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:['simple_card_code','component_url','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(this.value=='simpleCard'){
            formComponent.initEleConfig({fieldArray:['simple_card_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','component_url','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(this.value=='iframe'){
            formComponent.initEleConfig({fieldArray:['component_url'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(this.value=='openLink'){
            formComponent.initEleConfig({fieldArray:['component_url'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(this.value=='htmlView'){
            formComponent.initEleConfig({fieldArray:['html_view_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','component_url','form_view_mode','form_find_one_method_name','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else if(this.value=='nav'){
            formComponent.initEleConfig({fieldArray:['nav_code'],isDisabled:false,isClearValue:false,isShowDiv:true,isCanNull:true})
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','component_url','form_view_mode','form_find_one_method_name','html_view_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }else{
            formComponent.initEleConfig({fieldArray:dataSourceFieldArray,isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
            formComponent.initEleConfig({fieldArray:['charts_code','simple_card_code','component_url','form_view_mode','form_find_one_method_name','html_view_code','nav_code'],isDisabled:true,isClearValue:true,isShowDiv:false,isCanNull:false})//隐藏
        }
    }

    //验证代码函数
    document.getElementById(eleMap.get('component_type').getEleID()).addEventListener('change', initComponentTypeTypeFunc);
}
functionMap.set('init', init);// 将函数添加到 Map 中

function initForm(eleMap){
}



