O2OA API

source

x_component_process_Xform/Stat.js

MWF.xDesktop.requireApp("process.Xform", "$Module", null, false);
//MWF.xDesktop.requireApp("process.Xform", "widget.View", null, false);

/** @class Stat 统计组件。
 * @o2cn 统计组件
 * @example
 * //可以在脚本中获取该组件
 * //方法1:
 * var stat = this.form.get("fieldId"); //获取组件
 * //方法2
 * var stat = this.target; //在组件本身的脚本中获取
 * @extends MWF.xApplication.process.Xform.$Module
 * @o2category FormComponents
 * @o2range {Process|CMS|Portal}
 * @hideconstructor
 */
MWF.xApplication.process.Xform.Stat = MWF.APPStat =  new Class(
    /** @lends MWF.xApplication.process.Xform.Stat# */
{
	Extends: MWF.APP$Module,
    options: {
        /**
         * 组件异步加载完成触发.
         * @event MWF.xApplication.process.Xform.Stat#loadStat
         * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
         */
        /**
         * 图表加载完成触发.
         * @event MWF.xApplication.process.Xform.Stat#afterLoadStat
         * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
         */
        "moduleEvents": ["load", "queryLoad", "postLoad", "loadStat", "loadChart"]
    },

    _loadUserInterface: function(){
        this.node.empty();
    },
    _afterLoaded: function(){
        this.node.setStyle("min-height", "100px");
        this.loadStat();
    },
    active: function(){
        if (this.stat) this.stat.loadStatData();
    },
    reload: function(){
	    this.active();
    },
    loadStat: function( json ){
        var viewJson = Object.merge(this.getDefaultJson(), json || {});
	    if ( viewJson.application && viewJson.statName ){
            MWF.xDesktop.requireApp("query.Query", "Statistician", function(){
                /**
                 * @summary Statistician组件,平台使用该组件执行统计的逻辑
                 * @member {MWF.xApplication.query.Query.Statistician}
                 * @example
                 *  //可以在脚本中获取该组件
                 * var field = this.form.get("fieldId").stat; //获取组件对象
                 */
                this.stat = new MWF.xApplication.query.Query.Statistician(this.form.app, this.node, viewJson, {
                    "resizeNode": (this.node.getStyle("height").toString().toLowerCase()!=="auto" && this.node.getStyle("height").toInt()>0),
                    "onLoaded": function(){
                        this.fireEvent("loadStat");
                    }.bind(this),
                    "onLoadChart": function(){
                        this.fireEvent("loadChart");
                    }.bind(this)
                });
            }.bind(this));
        }
    },
    getDefaultJson: function(){
	    if( this.json.queryStat ){
	        return {
                "application": this.json.queryStat.appName,
                "statName": this.json.queryStat.name,
                "isChart": (this.json.isChart!=="no"),
                "isLegend": (this.json.isLegend!=="no"),
                "isTable": (this.json.isTable!=="no"),
                "isRowToColumn": (this.json.isRowToColumn!=="no"),
                "tableNodeStyles": this.json.tableNodeStyles,
                "chartNodeStyles": this.json.chartNodeStyles
            };
        }else{
	        return {};
        }
    },

    /**
     * @summary 重新加载统计。
     *  @param json {Object} 加载选项
     *  <pre><code class='language-js'>[{
     *     "application": "",   //数据中心应用名称
     *     "statName": "",         //统计名称
     *     "isChart": true, //是否显示图表
     *     "isLegend": true, //是否显示图例
     *     "isTable": true, //是否显示表格
     *     "isRowToColumn": true, //是否显示行列转换
     * }]</code></pre>
     *  @example
     *  this.form.get("fieldId").reloadStat({
     *      "application": "数据中心应用名称",
     *      "statName": "统计名称"
     *  });
     *  @return {Boolean} 是否通过校验
     */
    reloadStat: function(json){
        var viewJson = Object.merge(this.getDefaultJson(), json || {});
	    if( viewJson.application && viewJson.statName ){
	        if( this.stat ){
                this.stat.reload(viewJson);
            }else{
                this.loadStat(viewJson);
            }
        }
    },
    /**
     * @summary 获取统计数据。
     *  @return {Ojbect} 统计数据.
     *  @example
     *  var data = this.form.get("fieldId").getData();
     *  @return {Boolean} 是否通过校验
     */
    getData: function(){
        if (!this.stat) return null;
        if (!this.stat.stat) return null;
        return this.stat.stat.data;
    }
});

results matching

    No results matching ''