123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- MWF.xDesktop.requireApp("process.Xform", "$Module", null, false);
- //COMMON.AjaxModule.load("JSONTemplate", null, false);
- /** @class SubSource 子数据源。
- * @o2cn 子数据源
- * @example
- * //可以在脚本中获取该组件
- * //方法1:
- * var subSource = this.form.get("fieldId"); //获取组件
- * //方法2
- * var subSource = this.target; //在组件本身的脚本中获取
- * @extends MWF.xApplication.process.Xform.$Module
- * @o2category FormComponents
- * @o2range {Portal}
- * @hideconstructor
- */
- MWF.xApplication.process.Xform.SubSource = MWF.APPSubSource = new Class(
- /** @lends MWF.xApplication.process.Xform.SubSource# */
- {
- Extends: MWF.APP$Module,
- options: {
- /**
- * 加载数据后执行,但这时还未加载下属组件,可以可以使用this.target.data获取数据进行修改。
- * @event MWF.xApplication.process.Xform.SubSource#postLoadData
- * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
- */
- /**
- * 加载数据、下属组件后执行。
- * @event MWF.xApplication.process.Xform.SubSource#loadData
- * @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
- */
- "moduleEvents": ["queryLoad","postLoad","load", "postLoadData", "loadData"]
- },
- load: function(){
- /**
- * @ignore
- * @member parentLine
- * @memberOf MWF.xApplication.process.Xform.SubSource#
- */
- this._loadModuleEvents();
- this._queryLoaded();
- this._loadUserInterface();
- //this._loadStyles();
- //this._loadEvents();
- // this._loadDomEvents();
- this._afterLoaded();
- },
- _loadUserInterface: function(){
- this.loopNodes = [];
- this.subSourceItems = [];
- var node = new Element("div").inject(this.node, "before");
- this.node.inject(node);
- this.loopNode = this.node.dispose();
- this.node = node;
- var id = node.get("id");
- node.set("id", "");
- this.node.set({
- "id": id,
- "mwftype": node.get("mwftype")
- });
- this.node.store("module", this);
- this._loadJsonData();
- },
- _getSource: function(){
- var parent = this.node.getParent();
- while(parent && (parent.get("MWFtype")!="source" && parent.get("MWFtype")!="subSource" && parent.get("MWFtype")!="subSourceItem")) parent = parent.getParent();
- return (parent) ? parent.retrieve("module") : null;
- },
- _getSourceData: function(sourceData){
- var data = sourceData;
- if (this.json.jsonPath!="."){
- var paths = this.json.jsonPath.split(".");
- paths.each(function(p){
- data = data[p];
- }.bind(this));
- }
- /**
- * @summary 该属性获取当前子数据源的数据,当所在上级数据源加载完成后才有值。
- * @member {Array|Object|String|Number|Boolean|Null}
- * @example
- * var field = this.form.get("fieldId").data; //获取子数据源数据
- */
- this.data = data;
- },
- _loopSub: function(dom, i){
- var _self = this;
- var moduleNodes = this.form._getModuleNodes(dom);
- moduleNodes.each(function(node){
- var json = this.form._getDomjson(node);
- var subJson = Object.clone(json);
- subJson.id = subJson.id+"_"+i;
- node.set("id", subJson.id);
- var module = this.form._loadModule(subJson, node, function(){
- if( _self.widget )this.widget = _self.widget;
- }, true);
- //this.modules.push(module);
- }.bind(this));
- },
- _loopData: function(){
- var _self = this;
- this.data.each(function(d, i){
- var node = this.loopNode.clone(true, true);
- node.inject(this.node);
- var json = Object.clone(this.json);
- json.id = json.id+"_"+i;
- json.type = "SubSourceItem";
- node.set({
- "id": json.id,
- "mwftype": "subSourceItem"
- });
- var module = this.form._loadModule(json, node, function(){
- if( _self.widget )this.widget = _self.widget;
- this.data = d;
- this.position = i;
- }, true);
- this.subSourceItems.push(module);
- this.loopNodes.push(node);
- this._loopSub(node, i);
- }.bind(this));
- },
- _initSubSource: function(){
- if (this.loopNode){
- var moduleNodes = this.form._getModuleNodes(this.node);
- moduleNodes.each(function(node){
- var module = node.retrieve("module");
- if (module){
- if (module.json.type=="SubSource"){
- module._initSubSource();
- }else{
- MWF.release(module);
- }
- }
- }.bind(this));
- this.node.empty();
- }
- this.loopNodes = [];
- this.subSourceItems = [];
- },
- _loadJsonData: function(notInit){
- if (!notInit) this._initSubSource();
- this.source = this._getSource();
- if (this.source){
- if (this.source.data){
- this._getSourceData(this.source.data);
- this.fireEvent("postLoadData");
- if (typeOf(this.data)!=="array") this.data = [this.data];
- if (typeOf(this.data)=="array"){
- this._loopData();
- this.fireEvent("loadData");
- }else{
- var _self = this;
- this.form._loadModules(this.node, function () {
- if( _self.widget )this.widget = _self.widget;
- }, true);
- }
- //this.tmpDiv = new Element("div");
- //var html = "{loop:"+this.json.jsonPath+"}"+this.node.outerHTML+"{/loop:"+this.json.jsonPath+"}";
- ////this.template = new Template();
- ////var loopHtml = this.template.substitute("{"+this.json.jsonPath+"}", this.source.data);
- //this.node.set("text", this.text);
- }
- }
- }
- });
- MWF.xApplication.process.Xform.SubSourceItem = MWF.APPSubSourceItem = new Class({
- Extends: MWF.APP$Module,
- _loadUserInterface: function(){
- this.loopNodes = [];
- this.subSourceItems = [];
- }
- });
|