O2OA API

source

x_component_process_Xform/View.js

MWF.xDesktop.requireApp("process.Xform", "$Module", null, false);
//MWF.xDesktop.requireApp("process.Xform", "widget.View", null, false);
/** @class View 视图组件。
 * @o2cn 视图
 * @example
 * //可以在脚本中获取该组件
 * //方法1:
 * var view = this.form.get("fieldId"); //获取组件
 * //方法2
 * var view = this.target; //在组件本身的脚本中获取
 * @extends MWF.xApplication.process.Xform.$Module
 * @o2category FormComponents
 * @o2range {Process|CMS|Portal}
 * @hideconstructor
 */
MWF.xApplication.process.Xform.View = MWF.APPView =  new Class(
    /** @lends MWF.xApplication.process.Xform.View# */
{
	Extends: MWF.APP$Module,
    options: {
        /**
         * 视图参数(options)已经准备好,还未加载视图时执行。可以通过this.event得到视图参数,并可修改this.event修改视图的加载。
         * @event MWF.xApplication.process.Xform.View#beforeLoadView
         * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
         */
        /**
         * 视图设计已经获取,容器也已经准备好。可以通过this.event得到视图参数,并可修改this.event修改视图的加载。
         * @event MWF.xApplication.process.Xform.View#loadViewLayout
         * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
         */
        /**
         * 异步加载视图后执行。
         * @event MWF.xApplication.process.Xform.View#loadView
         * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
         */
        /**
         * 选中视图中的一条记录后执行。
         * @event MWF.xApplication.process.Xform.View#select
         * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
         */
        /**
         * 取消选中视图中的一条记录后执行。
         * @since V8.0
         * @event MWF.xApplication.process.Xform.View#unselect
         * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
         */
        /**
         * 打开视图中的一条记录后执行。
         * @event MWF.xApplication.process.Xform.View#openDocument,可以通过this.event得到打开的文档参数
         * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
         */
        "moduleEvents": ["load", "beforeLoadView", "loadViewLayout", "loadView", "queryLoad", "postLoad", "select", "unselect", "openDocument"]
    },

    _loadUserInterface: function(){
        MWF.xDesktop.requireApp("query.Query", "Viewer", null, false);
        this.node.empty();
    },
    _afterLoaded: function(){
        if (this.json.queryView){
            this.loadView();
        }else{
            if (this.json.selectViewType==="cms"){
                this.loadCMSView();
            }else if (this.json.selectViewType==="process"){
                this.loadPrcessView();
            }else{
                this.loadView();
            }
        }
    },
    /**
     * @summary 重新加载视图
     * @example
     * this.form.get("fieldId").reload()
     */
    reload: function( callback ){
        if (this.view){
            if (this.view.loadViewRes && this.view.loadViewRes.res) if (this.view.loadViewRes.res.isRunning()) this.view.loadViewRes.res.cancel();
            if (this.view.getViewRes && this.view.getViewRes.res) if (this.view.getViewRes.res.isRunning()) this.view.getViewRes.res.cancel();
        }
        this.node.empty();
        this.loadView( callback );
    },
    /**
     * @summary 当视图被设置为延迟加载(未立即载入),通过active方法激活
     * @example
     * this.form.get("fieldId").active()
     */
    active: function( callback ){
        if (this.view){
            if (!this.view.loadingAreaNode) this.view.loadView( callback );
        }else{
            this.loadView( callback );
        }
    },
    loadView: function( callback ){
        if (!this.json.queryView || !this.json.queryView.name || !this.json.queryView.appName) return "";
        var filter = null;
        if (this.json.filterList && this.json.filterList.length){
            filter = [];
            this.json.filterList.each(function(entry){
                entry.value = this.form.Macro.exec(entry.code.code, this);
                //delete entry.code;
                filter.push(entry);
            }.bind(this));
        }

        //var data = JSON.parse(this.json.data);
        var viewJson = {
            "application": (this.json.queryView) ? this.json.queryView.appName : this.json.application,
            "viewName": (this.json.queryView) ? this.json.queryView.name : this.json.viewName,
            "isTitle": this.json.isTitle || "yes",
            "select": this.json.select || "none",
            "titleStyles": this.json.titleStyles,
            "itemStyles": this.json.itemStyles,
            "isExpand": this.json.isExpand || "no",
            "showActionbar" : this.json.actionbar === "show",
            "filter": filter,
            "defaultSelectedScript" : this.json.defaultSelectedScript ? this.json.defaultSelectedScript.code : null,
            "selectedAbleScript" : this.json.selectedAbleScript ? this.json.selectedAbleScript.code : null
        };

        this.fireEvent("beforeLoadView", [viewJson]);

        //MWF.xDesktop.requireApp("query.Query", "Viewer", function(){

        /**
         * @summary view组件,平台使用该组件实现视图的功能
         * @member {MWF.xApplication.query.Query.Viewer}
         * @example
         *  //可以在脚本中获取该组件
         * var view = this.form.get("fieldId").view; //获取组件对象
         */
            this.view = new MWF.xApplication.query.Query.Viewer(this.node, viewJson, {
                "isload": (this.json.loadView!=="no"),
                "resizeNode": (this.node.getStyle("height").toString().toLowerCase()!=="auto" && this.node.getStyle("height").toInt()>0),
                "onLoadLayout": function () {
                    this.fireEvent("loadViewLayout");
                }.bind(this),
                "onLoadView": function(){
                    this.fireEvent("loadView");
                    if(callback)callback();
                }.bind(this),
                "onSelect": function(item){
                    this.fireEvent("select", [item]);
                }.bind(this),
                "onUnselect": function(item){
                    this.fireEvent("unselect", [item]);
                }.bind(this),
                "onOpenDocument": function(options, item){
                    this.openOptions = {
                        "options": options,
                        "item": item
                    };
                    this.fireEvent("openDocument", [this.openOptions]);
                    this.openOptions = null;
                }.bind(this)
            }, this.form.app, this.form.Macro);
        //}.bind(this));
    },

    loadPrcessView: function(){
        var filter = null;
        if (this.json.filterList && this.json.filterList.length){
            filter = [];
            this.json.filterList.each(function(entry){
                entry.value = this.form.Macro.exec(entry.code.code, this);
                //delete entry.code;
                filter.push(entry);
            }.bind(this));
        }
        var viewJson = {
            "application": this.json.processView.application,
            "viewName": this.json.processView.name,
            "isTitle": this.json.isTitle || "yes",
            "select": this.json.select || "none",
            "titleStyles": this.json.titleStyles,
            "itemStyles": this.json.itemStyles,
            "isExpand": this.json.isExpand || "no",
            "showActionbar" : this.json.actionbar === "show",
            "filter": filter
        };
        MWF.xDesktop.requireApp("process.Application", "Viewer", function(){
            this.view = new MWF.xApplication.process.Application.Viewer(this.node, viewJson, {
                "resizeNode": (this.node.getStyle("height").toString().toLowerCase()!=="auto" && this.node.getStyle("height").toInt()>0),
                "onSelect": function(){
                    this.fireEvent("select");
                }.bind(this)
            });
        }.bind(this));
    },
    loadCMSView: function(){
        var filter = null;
        if (this.json.filterList && this.json.filterList.length){
            filter = [];
            this.json.filterList.each(function(entry){
                entry.value = this.form.Macro.exec(entry.code.code, this);
                //delete entry.code;
                filter.push(entry);
            }.bind(this));
        }
        var viewJson = {
            "application": this.json.cmsView.appId,
            "viewName": this.json.cmsView.name,
            "isTitle": this.json.isTitle || "yes",
            "select": this.json.select || "none",
            "titleStyles": this.json.titleStyles,
            "itemStyles": this.json.itemStyles,
            "isExpand": this.json.isExpand || "no",
            "showActionbar" : this.json.actionbar === "show",
            "filter": filter
        };

        MWF.xDesktop.requireApp("process.Application", "Viewer", function(){
            this.view = new MWF.xApplication.process.Application.Viewer(this.node, viewJson, {
                "actions": {
                    "lookup": {"uri": "/jaxrs/queryview/flag/{view}/application/flag/{application}/execute", "method":"PUT"},
                    "getView": {"uri": "/jaxrs/queryview/flag/{view}/application/flag/{application}"}
                },
                "actionRoot": "x_cms_assemble_control",
                "resizeNode": (this.node.getStyle("height").toString().toLowerCase()!=="auto" && this.node.getStyle("height").toInt()>0),
                "onSelect": function(){
                    this.fireEvent("select");
                }.bind(this)
            });
        }.bind(this));
    },
    /**
     * @summary 获取视图被选中行的数据
     * @return {Object[]} 被选中行的数据
     * @example
     * var data = this.form.get("fieldId").getData();
     */
    getData: function(){
        if (this.view.selectedItems.length){
            var arr = [];
            this.view.selectedItems.each(function(item){
                arr.push(item.data);
            });
            return arr;
        }else{
            return [];
        }
    }
});

results matching

    No results matching ''