Просмотр исходного кода

Merge branch 'feature/Selector.add_script_dict' into 'develop'

Merge of feature/Selector.add_script_dict to develop

See merge request o2oa/o2oa!1238
蔡祥熠 5 лет назад
Родитель
Сommit
e5d2858d61

+ 245 - 0
o2web/source/x_component_Selector/Dictionary.js

@@ -0,0 +1,245 @@
+MWF.xApplication.Selector = MWF.xApplication.Selector || {};
+MWF.xDesktop.requireApp("Selector", "Person", null, false);
+MWF.xApplication.Selector.Dictionary = new Class({
+    Extends: MWF.xApplication.Selector.Person,
+    options: {
+        "style": "default",
+        "count": 0,
+        "title": MWF.xApplication.Selector.LP.selectDictionary,
+        "values": [],
+        "names": [],
+        "appType" : ["process","cms"],
+        "expand": false,
+        "forceSearchInItem" : true
+    },
+    loadSelectItems: function(addToNext){
+        var json = {};
+        this.options.appType.each( function (type) {
+            var container = new Element("div").inject(this.itemAreaNode);
+
+            var action;
+            if( type === "process" ){
+                action = o2.Actions.load("x_processplatform_assemble_designer").ApplicationDictAction.listPaging;
+            }else if( type === "cms" ){
+                action = o2.Actions.load("x_cms_assemble_control").AppDictDesignAction.listPaging;
+            }
+
+            var json = {};
+            var array = [];
+            action(1, 1000, {}, function( dictionaryJson ) {
+                dictionaryJson.data.each(function (dictionary) {
+                    var appName = dictionary.appName || dictionary.applicationName;
+                    var appId = dictionary.appId || dictionary.application;
+                    if (!json[appId]) {
+                        json[appId] = {
+                            name: appName,
+                            applicationName: appName,
+                            appName: appName,
+                            application: appId,
+                            appId: appId
+                        };
+                        json[appId].dictionaryList = [];
+                    }
+                    dictionary.appName = appName;
+                    dictionary.appId = appId;
+                    dictionary.appType = type;
+                    dictionary.type = "dictionary";
+                    json[appId].dictionaryList.push(dictionary)
+                }.bind(this));
+                for (var application in json) {
+                    if (json[application].dictionaryList && json[application].dictionaryList.length) {
+                        array.push(json[application]);
+                    }
+                }
+
+                if( this.options.appType.length === 1 ){
+                    array.each( function (data) {
+                        var category = this._newItemCategory(data, this, container);
+                    }.bind(this))
+                }else{
+                    var category = this._newItemCategory({
+                        name: MWF.xApplication.Selector.LP.appType[type],
+                        id: type,
+                        applicationList: array
+                    }, this, container);
+                }
+            }.bind(this))
+        }.bind(this));
+
+    },
+    _scrollEvent: function(y){
+        return true;
+    },
+    _getChildrenItemIds: function(data){
+        return data.dictionaryList || [];
+    },
+    _newItemCategory: function(data, selector, item, level){
+        return new MWF.xApplication.Selector.Dictionary.ItemCategory(data, selector, item, level)
+    },
+
+    _listItemByKey: function(callback, failure, key){
+        return false;
+    },
+    _getItem: function(callback, failure, id, async){
+        this.queryAction.getTable(function(json){
+            if (callback) callback.apply(this, [json]);
+        }.bind(this), failure, ((typeOf(id)==="string") ? id : id.id), async);
+    },
+    _newItemSelected: function(data, selector, item){
+        return new MWF.xApplication.Selector.Dictionary.ItemSelected(data, selector, item)
+    },
+    _listItemByPinyin: function(callback, failure, key){
+        return false;
+    },
+    _newItem: function(data, selector, container, level){
+        return new MWF.xApplication.Selector.Dictionary.Item(data, selector, container, level);
+    }
+});
+MWF.xApplication.Selector.Dictionary.Item = new Class({
+    Extends: MWF.xApplication.Selector.Person.Item,
+    _getShowName: function(){
+        return this.data.name;
+    },
+    _setIcon: function(){
+        this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/attr.png)");
+    },
+    loadSubItem: function(){
+        return false;
+    },
+    checkSelectedSingle: function(){
+        var selectedItem = this.selector.options.values.filter(function(item, index){
+            if (typeOf(item)==="object"){
+                if( this.data.id && item.id ){
+                    return this.data.id === item.id;
+                }
+                //return (this.data.id === item.id) || (this.data.name === item.name) ;
+            }
+            //if (typeOf(item)==="object") return (this.data.id === item.id) || (this.data.name === item.name) ;
+            if (typeOf(item)==="string") return (this.data.id === item) || (this.data.name === item);
+            return false;
+        }.bind(this));
+        if (selectedItem.length){
+            this.selectedSingle();
+        }
+    },
+    checkSelected: function(){
+
+        var selectedItem = this.selector.selectedItems.filter(function(item, index){
+            if( item.data.id && this.data.id){
+                return item.data.id === this.data.id;
+            }
+            //return (item.data.id === this.data.id) || (item.data.name === this.data.name);
+        }.bind(this));
+        if (selectedItem.length){
+            //selectedItem[0].item = this;
+            selectedItem[0].addItem(this);
+            this.selectedItem = selectedItem[0];
+            this.setSelected();
+        }
+    }
+});
+
+MWF.xApplication.Selector.Dictionary.ItemSelected = new Class({
+    Extends: MWF.xApplication.Selector.Person.ItemSelected,
+    _getShowName: function(){
+        return this.data.name;
+    },
+    _setIcon: function(){
+        this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/attr.png)");
+    },
+    check: function(){
+        if (this.selector.items.length){
+            var items = this.selector.items.filter(function(item, index){
+                //return (item.data.id === this.data.id) || (item.data.name === this.data.name);
+                if( item.data.id && this.data.id){
+                    return item.data.id === this.data.id;
+                }
+            }.bind(this));
+            this.items = items;
+            if (items.length){
+                items.each(function(item){
+                    item.selectedItem = this;
+                    item.setSelected();
+                }.bind(this));
+            }
+        }
+    }
+});
+
+MWF.xApplication.Selector.Dictionary.ItemCategory = new Class({
+    Extends: MWF.xApplication.Selector.Person.ItemCategory,
+    clickItem: function (callback) {
+        if (this._hasChild() ) {
+            var firstLoaded = !this.loaded;
+            this.loadSub(function () {
+                if (firstLoaded && this._hasChild() ) {
+                    if (!this.selector.isFlatCategory) {
+                        this.children.setStyles({"display": "block", "height": "auto"});
+                        this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand);
+                        this.isExpand = true;
+                    }
+                    // this.checkSelectAll();
+                } else {
+                    var display = this.children.getStyle("display");
+                    if (display === "none") {
+                        // this.selector.fireEvent("expand", [this] );
+                        this.children.setStyles({"display": "block", "height": "auto"});
+                        this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand);
+                        this.isExpand = true;
+                    } else {
+                        // this.selector.fireEvent("collapse", [this] );
+                        this.children.setStyles({"display": "none", "height": "0px"});
+                        this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_collapse);
+                        this.isExpand = false;
+                    }
+                }
+                if (callback) callback();
+            }.bind(this));
+        }
+    },
+    loadSub: function (callback) {
+        if (!this.loaded) {
+            if( this.data.dictionaryList ){
+                this.data.dictionaryList.each(function (subItem, index) {
+                    var item = this.selector._newItem(subItem, this.selector, this.children, this.level + 1, this);
+                    this.selector.items.push(item);
+                    if(this.subItems)this.subItems.push( item );
+                }.bind(this));
+            }
+            if ( this.data.applicationList ) {
+                this.data.applicationList.each(function (subCategory, index) {
+                    var category = this.selector._newItemCategory(subCategory, this.selector, this.children, this.level + 1, this);
+                    this.subCategorys.push( category );
+                }.bind(this));
+            }
+            this.loaded = true;
+            if (callback) callback();
+        } else {
+            if (callback) callback();
+        }
+    },
+    _getShowName: function(){
+        return this.data.name;
+    },
+    _getTtiteText: function () {
+        return this.data.name;
+    },
+    createNode: function(){
+        this.node = new Element("div", {
+            "styles": this.selector.css.selectorItemCategory_department
+        }).inject(this.container);
+    },
+    _setIcon: function(){
+        this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/applicationicon.png)");
+    },
+    _hasChild: function(){
+        return ( this.data.dictionaryList && this.data.dictionaryList.length ) ||
+            ( this.data.applicationList && this.data.applicationList.length);
+    },
+    afterLoad: function(){
+        if ( this._hasChild() ){
+            this.clickItem();
+        }
+    },
+    check: function(){}
+});

+ 56 - 26
o2web/source/x_component_Selector/FormStyle.js

@@ -34,36 +34,66 @@ MWF.xApplication.Selector.FormStyle = new Class({
                     }, this, this.itemAreaNode);
 
                     var json = {};
-                    var appJs = {};
                     var array = [];
-                    o2.Actions.load("x_processplatform_assemble_designer").ScriptAction.listNext("(0)", 500, function (scriptJson) {
-                        o2.Actions.load("x_processplatform_assemble_designer").ApplicationAction.list(function (appJson) {
-                            appJson.data.each( function (app) {
-                                appJs[ app.id ] = app;
-                            });
-                            scriptJson.data.each( function (script) {
-                                if( !json[script.application] ){
-                                    json[script.application] = appJs[ script.application ];
-                                    json[script.application].scriptList = [];
-                                }
-                                script.appName = appJs[ script.application ].name;
-                                script.appId = script.application;
-                                script.type = "script";
-                                json[script.application].scriptList.push( script )
-                            }.bind(this));
-                            for( var application in json ){
-                                if( json[application].scriptList && json[application].scriptList.length ){
-                                    array.push( json[application] );
-                                }
+                    o2.Actions.load("x_processplatform_assemble_designer").ScriptAction.listPaging(1, 1000, {}, function( scriptJson ){
+                        scriptJson.data.each(function (script) {
+                            if (!json[script.application]) {
+                                json[script.application] = {
+                                    name : script.applicationName,
+                                    applicationName: script.applicationName,
+                                    appName: script.applicationName,
+                                    application: script.application,
+                                    appId: script.application
+                                };
+                                json[script.application].scriptList = [];
+                            }
+                            script.appName = script.applicationName;
+                            script.appId = script.application;
+                            script.type = "script";
+                            json[script.application].scriptList.push(script)
+                        }.bind(this));
+                        for (var application in json) {
+                            if (json[application].scriptList && json[application].scriptList.length) {
+                                array.push(json[application]);
                             }
+                        }
+
+                        var category = this._newItemCategory({
+                            name : "自定义样式(脚本)",
+                            id : "script",
+                            applicationList : array
+                        }, this, this.itemAreaNode);
 
-                            var category = this._newItemCategory({
-                                name : "自定义样式(脚本)",
-                                id : "script",
-                                applicationList : array
-                            }, this, this.itemAreaNode);
-                        }.bind(this))
                     }.bind(this));
+
+                    // o2.Actions.load("x_processplatform_assemble_designer").ScriptAction.listNext("(0)", 500, function (scriptJson) {
+                    //     o2.Actions.load("x_processplatform_assemble_designer").ApplicationAction.list(function (appJson) {
+                    //         appJson.data.each( function (app) {
+                    //             appJs[ app.id ] = app;
+                    //         });
+                    //         scriptJson.data.each( function (script) {
+                    //             if( !json[script.application] ){
+                    //                 json[script.application] = appJs[ script.application ];
+                    //                 json[script.application].scriptList = [];
+                    //             }
+                    //             script.appName = appJs[ script.application ].name;
+                    //             script.appId = script.application;
+                    //             script.type = "script";
+                    //             json[script.application].scriptList.push( script )
+                    //         }.bind(this));
+                    //         for( var application in json ){
+                    //             if( json[application].scriptList && json[application].scriptList.length ){
+                    //                 array.push( json[application] );
+                    //             }
+                    //         }
+                    //
+                    //         var category = this._newItemCategory({
+                    //             name : "自定义样式(脚本)",
+                    //             id : "script",
+                    //             applicationList : array
+                    //         }, this, this.itemAreaNode);
+                    //     }.bind(this))
+                    // }.bind(this));
                 }.bind(this)
             }
         );

+ 110 - 41
o2web/source/x_component_Selector/Script.js

@@ -8,52 +8,66 @@ MWF.xApplication.Selector.Script = new Class({
         "title": MWF.xApplication.Selector.LP.selectScript,
         "values": [],
         "names": [],
+        "appType" : ["process","portal"],
         "expand": false,
         "forceSearchInItem" : true
     },
     loadSelectItems: function(addToNext){
         var json = {};
-        var appJs = {};
-        o2.Actions.load("x_processplatform_assemble_designer").ScriptAction.listNext("(0)", 500, function (scriptJson) {
-            o2.Actions.load("x_processplatform_assemble_designer").ApplicationAction.list(function (appJson) {
-                appJson.data.each( function (app) {
-                    appJs[ app.id ] = app;
-                });
-                scriptJson.data.each( function (script) {
-                    if( !json[script.application] ){
-                        json[script.application] = appJs[ script.application ];
-                        json[script.application].scriptList = [];
+        this.options.appType.each( function (type) {
+            var container = new Element("div").inject(this.itemAreaNode);
+
+            var action;
+            if( type === "process" ){
+                action = o2.Actions.load("x_processplatform_assemble_designer").ScriptAction.listPaging;
+            }else if( type === "portal" ){
+                action = o2.Actions.load("x_portal_assemble_designer").ScriptAction.listPaging;
+            }else if( type === "cms" ){
+                action = o2.Actions.load("x_cms_assemble_control").ScriptAction.listPaging;
+            }
+
+            var json = {};
+            var array = [];
+            action(1, 1000, {}, function( scriptJson ) {
+                scriptJson.data.each(function (script) {
+                    var appName = script.portalName || script.applicationName || script.appName;
+                    var appId = script.portal || script.application || script.appId;
+                    if (!json[appId]) {
+                        json[appId] = {
+                            name: appName,
+                            applicationName: appName,
+                            appName: appName,
+                            application: appId,
+                            appId: appId
+                        };
+                        json[appId].scriptList = [];
                     }
-                    script.appName = appJs[ script.application ].name;
-                    script.appId = script.application;
-                    json[script.application].scriptList.push( script )
+                    script.appName = appName;
+                    script.appId = appId;
+                    script.appType = type;
+                    script.type = "script";
+                    json[appId].scriptList.push(script)
                 }.bind(this));
-                for( var application in json ){
-                    var category = this._newItemCategory(json[application], this, this.itemAreaNode);
-                    json[application].scriptList.each(function(d){
-                        var item = this._newItem(d, this, category.children);
-                        this.items.push(item);
-                    }.bind(this));
+                for (var application in json) {
+                    if (json[application].scriptList && json[application].scriptList.length) {
+                        array.push(json[application]);
+                    }
+                }
+
+                if( this.options.appType.length === 1 ){
+                    array.each( function (data) {
+                        var category = this._newItemCategory(data, this, container);
+                    }.bind(this))
+                }else{
+                    var category = this._newItemCategory({
+                        name: MWF.xApplication.Selector.LP.appType[type],
+                        id: type,
+                        applicationList: array
+                    }, this, container);
                 }
             }.bind(this))
         }.bind(this));
-        // this.processAction.listApplications(function(json){
-        //     json.data.each(function(data){
-        //         if (!data.scriptList){
-        //             this.designerAction.listScript(data.id, function(scriptJson){
-        //                 data.scriptList = scriptJson.data;
-        //             }.bind(this), null, false);
-        //         }
-        //         if (data.scriptList && data.scriptList.length){
-        //             var category = this._newItemCategory(data, this, this.itemAreaNode);
-        //             data.scriptList.each(function(d){
-        //                 d.applicationName = data.name;
-        //                 var item = this._newItem(d, this, category.children);
-        //                 this.items.push(item);
-        //             }.bind(this));
-        //         }
-        //     }.bind(this));
-        // }.bind(this));
+
     },
     _scrollEvent: function(y){
         return true;
@@ -115,8 +129,6 @@ MWF.xApplication.Selector.Script.Item = new Class({
         var selectedItem = this.selector.selectedItems.filter(function(item, index){
             if( item.data.id && this.data.id){
                 return item.data.id === this.data.id;
-            }else{
-                return item.data.name === this.data.name;
             }
             //return (item.data.id === this.data.id) || (item.data.name === this.data.name);
         }.bind(this));
@@ -143,8 +155,6 @@ MWF.xApplication.Selector.Script.ItemSelected = new Class({
                 //return (item.data.id === this.data.id) || (item.data.name === this.data.name);
                 if( item.data.id && this.data.id){
                     return item.data.id === this.data.id;
-                }else{
-                    return item.data.name === this.data.name;
                 }
             }.bind(this));
             this.items = items;
@@ -160,9 +170,62 @@ MWF.xApplication.Selector.Script.ItemSelected = new Class({
 
 MWF.xApplication.Selector.Script.ItemCategory = new Class({
     Extends: MWF.xApplication.Selector.Person.ItemCategory,
+    clickItem: function (callback) {
+        if (this._hasChild() ) {
+            var firstLoaded = !this.loaded;
+            this.loadSub(function () {
+                if (firstLoaded && this._hasChild() ) {
+                    if (!this.selector.isFlatCategory) {
+                        this.children.setStyles({"display": "block", "height": "auto"});
+                        this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand);
+                        this.isExpand = true;
+                    }
+                    // this.checkSelectAll();
+                } else {
+                    var display = this.children.getStyle("display");
+                    if (display === "none") {
+                        // this.selector.fireEvent("expand", [this] );
+                        this.children.setStyles({"display": "block", "height": "auto"});
+                        this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand);
+                        this.isExpand = true;
+                    } else {
+                        // this.selector.fireEvent("collapse", [this] );
+                        this.children.setStyles({"display": "none", "height": "0px"});
+                        this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_collapse);
+                        this.isExpand = false;
+                    }
+                }
+                if (callback) callback();
+            }.bind(this));
+        }
+    },
+    loadSub: function (callback) {
+        if (!this.loaded) {
+            if( this.data.scriptList ){
+                this.data.scriptList.each(function (subItem, index) {
+                    var item = this.selector._newItem(subItem, this.selector, this.children, this.level + 1, this);
+                    this.selector.items.push(item);
+                    if(this.subItems)this.subItems.push( item );
+                }.bind(this));
+            }
+            if ( this.data.applicationList ) {
+                this.data.applicationList.each(function (subCategory, index) {
+                    var category = this.selector._newItemCategory(subCategory, this.selector, this.children, this.level + 1, this);
+                    this.subCategorys.push( category );
+                }.bind(this));
+            }
+            this.loaded = true;
+            if (callback) callback();
+        } else {
+            if (callback) callback();
+        }
+    },
     _getShowName: function(){
         return this.data.name;
     },
+    _getTtiteText: function () {
+        return this.data.name;
+    },
     createNode: function(){
         this.node = new Element("div", {
             "styles": this.selector.css.selectorItemCategory_department
@@ -172,7 +235,13 @@ MWF.xApplication.Selector.Script.ItemCategory = new Class({
         this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/applicationicon.png)");
     },
     _hasChild: function(){
-        return (this.data.scriptList && this.data.scriptList.length);
+        return ( this.data.scriptList && this.data.scriptList.length ) ||
+            ( this.data.applicationList && this.data.applicationList.length);
+    },
+    afterLoad: function(){
+        if ( this._hasChild() ){
+            this.clickItem();
+        }
     },
     check: function(){}
 });

+ 5 - 0
o2web/source/x_component_Selector/lp/en.js

@@ -29,6 +29,11 @@ MWF.xApplication.Selector.LP = MWF.SelectorLP = {
     "role" : "Role",
     "group" : "Group",
     "unit" : "Unit",
+    "appType" : {
+        "process": "Process",
+        "cms": "CMS",
+        "portal": "Portal"
+    },
 
     "cancel": "Cancel",
     "back": "Back",

+ 7 - 0
o2web/source/x_component_Selector/lp/zh-cn.js

@@ -18,6 +18,7 @@ MWF.xApplication.Selector.LP = MWF.SelectorLP = {
     "selectCMSCategory": "选择内容管理栏目",
     "noSelectableItemText" : "无待选项",
     "selectScript" : "选择脚本",
+    "selectDictionary" : "选择数据字典",
 
     "searchDescription" : "搜索内容",
 
@@ -37,6 +38,12 @@ MWF.xApplication.Selector.LP = MWF.SelectorLP = {
     "group" : "群组",
     "unit" : "组织",
 
+    "appType" : {
+        "process": "流程管理",
+        "cms": "内容管理",
+        "portal": "门户管理"
+    },
+
     "cancel": "取消",
     "back": "返回",
     "ok": "确定",