Pman.Tab.BuilderView.bjs
[Pman.Builder] / Pman.Tab.BuilderView.js
1 //<script type="text/javascript">
2
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
4
5
6
7 // register the module first
8 Pman.on('beforeload', function()
9 {
10     Pman.register({
11         part :  ["Builder","View"],
12         modKey : '001-Pman.Tab.BuilderView',
13         module : Pman.Tab.BuilderView,
14         region : 'center',
15         parent : Pman.Tab.BuilderTab,
16         name : "Pman.Tab.BuilderView",
17         disabled : false, 
18         permname: '' 
19     });
20 });
21
22 Pman.Tab.BuilderView = new Roo.util.Observable({
23
24     panel : false,
25     disabled : false,
26     parentLayout:  false,
27
28     add : function(parentLayout, region)
29     {
30
31         var _this = this;
32         this.parentLayout = parentLayout;
33
34         this.panel = parentLayout.addxtype({
35             xtype: 'NestedLayoutPanel',
36             xns: Roo,
37             listeners : {
38                 activate : function (_self)
39                 {
40                     _this.panel = _self;
41                 }
42             },
43             region : 'center',
44             title : "View",
45             clearAll : function(isAuto) {
46             //        this.renderObj = { isBuilder : true };
47             
48                     
49                     if (this.panelroot) {
50                         this.scroll = this.panelroot.el.getScroll();
51                         this.layout.remove('center', this.panelroot);
52                         this.panelroot = false;
53                     }
54                     if (this.dialogroot) {
55                         this.dialogroot.remove();
56                         this.dialogroot = false;
57                     }
58             },
59             munge : function(cfg, keyname) {
60                 keyname = keyname || false;
61                 
62                 this.renderObj = this.renderObj || {};
63                 
64                 var xitems = false;
65                 if (cfg.items) {
66                     xitems = cfg.items;
67                     delete cfg.items;
68                 }
69                 
70                 if (typeof(cfg.background) != 'undefined') {
71                     cfg.background = false;
72                 }
73                 
74                 
75                 for(var p in cfg){
76                     // key is not string?!?!?!!?
77                     if (typeof(p) != 'string') {
78                         continue;
79                     }
80                     
81                     if (typeof(cfg[p]) == 'object') { // listeners!!!
82                         this.munge(cfg[p], p);
83                         continue;
84                     }
85                     // SPECIAL - PIPE
86                     if (p.charAt(0) == '|' || keyname=='listeners') {
87                         
88                         if (!cfg[p].length) {
89                             delete cfg[p];
90                             continue;
91                         }
92                         var str = cfg[p];
93                         if (str.match(/\s*function/)) {
94                             var btz = str.split('{');
95                             str = btz.shift()  +'{ try {' + btz.join('{') + 
96                                 ' catch (e) { Roo.log(e) } }';
97                         }
98                         try {
99                             var _tmp = false;
100                             var _this = this.renderObj; /// fake '_this' object..
101                             // stupid IE can not return objects evaluated..
102                             /**
103                              eval:var:_this  
104                              eval:var:_tmp 
105                             **/
106                             
107                             
108                             eval('_tmp =(' + str + ')');
109                             cfg[p.replace(/^\|/, '')] = _tmp;
110                             if (typeof(_tmp) == 'undefined') {
111                                 alert(cfg[p]);
112                             }
113                            
114                         } catch(e) {  console.log('Error evaluating: '  + str); };
115                         if (p.charAt(0) == '|' ) {
116                             delete cfg[p];
117                         }
118                             
119                         
120                         continue;
121                     }
122                     // skip '*'
123                     if ((p.charAt(0) == '*') || (p.charAt(0) == '+')) {
124                         delete cfg[p];
125                         continue;
126                     }
127                     // normal..
128                       
129                 }
130                 // now for all the children.. (items)
131                 if (xitems === false) {
132                     return;
133                 }
134                 cfg.items = [];
135                 for (var i = 0; i < xitems.length; i++) {
136                     // if +builderhide set !!!! drop it!!
137                     
138                     
139                     var xi = xitems[i];
140                     if (typeof(xi['*prop']) != 'undefined') {
141                         var pr = xi['*prop'];
142                         this.munge(xi);
143                         // if prop is an array - then it's items are really the value..
144                         if (pr.match(/\[\]$/)) {
145                             pr = pr.replace(/\[\]$/, '');
146                             if (typeof(cfg[pr]) == 'undefined') {
147                                 cfg[pr] = [];
148                             }
149                             cfg[pr].push(xi);
150                             continue;
151                         }
152                         if (xi.xtype && xi.xtype  == 'Array') {
153                             cfg[pr] = xi.items;
154                         } else {
155                             cfg[pr] = xi;
156                         }
157                         
158                         
159                         continue;
160                     }
161                     this.munge(xi);
162                     cfg.items.push(xi);
163                 }
164                 
165                 if (cfg.items.length == 0) {
166                     delete cfg.items;
167                 }
168                 // remove listeners if there are none..
169                 if (typeof(cfg['listeners']) != 'undefined') {
170                     var n =0;
171                     for (var i in cfg.listeners) { n++; }
172                     if (!n) {
173                         delete cfg['listeners'];
174                     }
175                     
176                 }
177                 
178                 if (typeof(cfg.id) != 'undefined') {
179                     cfg.id = 'pman-dyn-' + cfg.id;
180                 }
181                     
182                     
183             },
184             redraw : function(isAuto)
185                 {
186                     
187                     // top level is not relivant
188             
189             //          var btop =  Pman.Tab.BuilderTop2;
190               //      if (isAuto && btop.redrawBtn  && !btop.redrawBtn.auto) {
191                 //        return; /// auto redraw is turned off..
192                   //  }
193                     
194                     this.clearAll(isAuto);
195                     
196                     var cfg =  this.toJS();
197                     if (!cfg.items[0]) {
198                         return;
199                     }
200                     
201                     
202                     this.munge(cfg.items[0]);
203                     
204                     // we draw either a dialog or a tab..
205                     
206                     if (cfg.items[0].xtype == 'LayoutDialog') {
207                         
208                         cfg.items[0].modal = false;
209                         var xy  = this.el.getXY();
210                         cfg.items[0].x = xy[0];
211                         cfg.items[0].y = xy[1];
212                         cfg.items[0].constraintoviewport = false;
213                         
214                         this.dialogroot = Roo.get( document.body).createChild();
215                         try { 
216                             this.dialog = new Roo[cfg.items[0].xtype](this.dialogroot, cfg.items[0]);
217                           //  this.dialog.el.on('click', this.panelClick, this);
218                             this.dialog.show();
219                             var dlg = this.dialog;
220                             (function () {
221                                 dlg.moveTo(xy[0], xy[1]);
222                             }).defer(100);
223                         } catch(e) {
224                             Roo.log("Error rendering: " + e.toString());
225                             Roo.log(e);
226                         }
227                         return;
228                         
229                         
230                     }
231                     // should we render this into a dialog???
232                          // force center region..
233                     cfg.items[0].region = 'center';
234                     cfg.items[0].background = false;
235                     
236                     try {
237                         this.panelroot = this.layout.addxtype(cfg.items[0]);
238                     
239                     } catch(e) {
240                         Roo.log("Error rendering: " + e.toString());
241                         Roo.log(e);
242                     }
243                     //this.highlightElement(Pman.Tab.BuilderTree.currentNode);
244                     
245                     if (this.panelroot && this.panelroot.el) {
246                             this.panelroot.el.scrollTo('top', 0);
247                             this.panelroot.el.scrollTo('left', 0);
248                         
249                     }
250                 },
251             toJS : function(n) {
252              
253                 if (!n) {
254                     return Pman.Builder.Tree.toJS(Pman.Tab.BuilderTree.tree.root);
255                 }
256             
257                 var _this = this;
258                 var ret = Pman.Builder.Tree.cloneConfig(n.elConfig);
259                 
260                 // flag to prevent rendering..
261                 if ((typeof(ret['+buildershow']) != 'undefined') && !ret['+buildershow']) {
262                     return false;
263                 }
264             
265                 ret.id = typeof(ret.id) == 'undefined' ? 'builder-' + n.id : ret.id;
266             
267                 if (n.childNodes.length) {
268                     ret.items = [];
269                     n.eachChild(function(cn) {
270                         var add = _this.toJS(cn);
271                         if (add === false) {
272                             return;
273                         }
274                         
275                         
276                         ret.items.push(add);
277                     });
278                         
279                 }
280                 return ret;
281             },
282             layout : {
283                 xtype: 'BorderLayout',
284                 xns: Roo,
285                 center : {
286                     xtype: 'LayoutRegion',
287                     xns: Roo,
288                     alwaysShowTabs : true,
289                     tabPosition : 'top'
290                 }
291             }
292         });
293         this.layout = this.panel.layout;
294
295     }
296 });