(function(KDApi, $){
    function ReportFormEntry (model) {
        this._setModel(model)
    }

    ReportFormEntry.prototype = {
        _setModel: function(model) {
            this.model = model
        },
        init: function(props){
            this.initFunc(this.model, props);
        },
        update: function(props){
            if(props.data && 'init' !== props.data.event){
                this.updateDom(this.model, props);
            }
        },

        initFunc: function(model, props) {
            let $this = this;
            // KDApi.loadFile可以通过路径加载js或css文件，并且在html文件头生成script或者link标签，第一个参数是路径，第二个参数是model，第三个参数是加载完成后执行的回调函数
            KDApi.loadFile(['./css/reportForm.css', './js/reportForm.js'], model, function() {
                // 通过路径去获取html字符串，第一个参数是路径，第二个参数是model，第三个参数是HTML模板中变量的值
                KDApi.getTemplateStringByFilePath('./html/reportForm.art', model, {}).then(function(result) {
                    model.dom.innerHTML = result;
                    // 初始化
                    $this.initReportForm(model, props)
                })
            })
        },

        updateDom: function(model, props) {
            this.reportForm.refreshData_query(props.data && props.data.data || []);
        },

        initReportForm: function(model, props){
            // datatype:数据类型 根据图片映射关系
            // frozen:是否冻结
            // total:是否总计
            // displaymode:展示方式 (单列：1 合并：2 计算：3)
            // alignmode:对齐方式 (自动：1 左对齐：2 居中：3 右对齐：4）-- 自动根据数据类型参考文档
            // 后端插件通过setData传给前端的数据，前端可以通过props.data去获取
            this.reportForm = new ReportForm({
                header: props.data && props.data.header || [],
                data: props.data && props.data.data || [],
                model: model,
            });
        }
    };

    KDApi.register('wtcreportform', ReportFormEntry)
})(window.KDApi, jQuery);