Pman.Tab.BuilderDatabase.bjs
[Pman.Builder] / Pman.Tab.BuilderDatabase.js
1 //<script type="text/javascript">
2
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
4
5 Pman.Tab.BuilderDatabase = new Roo.XComponent({
6     part     :  ["Builder","Database"],
7     order    : '999-Pman.Tab.BuilderDatabase',
8     region   : 'center',
9     parent   : 'Pman.Tab.Builder',
10     name     : "Pman.Tab.BuilderDatabase",
11     disabled : false, 
12     permname : '', 
13     _tree : function()
14     {
15         var _this = this;
16         var MODULE = this;
17         return {
18             xtype: 'NestedLayoutPanel',
19             xns: Roo,
20             listeners : {
21                 activate : function (_self)
22                 {
23                  _this.treepanel.tree.root.reload();
24                 }
25             },
26             background : true,
27             region : 'center',
28             title : "Manage Database",
29             layout : {
30                 xtype: 'BorderLayout',
31                 xns: Roo,
32                 items : [
33                     {
34                         xtype: 'TreePanel',
35                         xns: Roo,
36                         listeners : {
37                             render : function (_self)
38                             {
39                                _this.treepanel = _self;
40                             }
41                         },
42                         region : 'west',
43                         toolbar : {
44                             xtype: 'Toolbar',
45                             xns: Roo,
46                             items : [
47                                 {
48                                     xtype: 'SplitButton',
49                                     xns: Roo.Toolbar,
50                                     listeners : {
51                                         click : function (_self, e)
52                                         {
53                                          _this.treepanel.tree.root.reload();
54                                         }
55                                     },
56                                     text : "Refresh/Manage Tables",
57                                     menu : {
58                                         xtype: 'Menu',
59                                         xns: Roo.menu,
60                                         items : [
61                                             {
62                                                 xtype: 'Item',
63                                                 xns: Roo.menu,
64                                                 text : "Add Table/Container"
65                                             },
66                                             {
67                                                 xtype: 'Separator',
68                                                 xns: Roo.menu
69                                             },
70                                             {
71                                                 xtype: 'Item',
72                                                 xns: Roo.menu,
73                                                 listeners : {
74                                                     click : function (_self, e)
75                                                     {
76                                                         new Pman.Request({
77                                                             method: 'GET',
78                                                             url: baseURL + '/Roo/Builder_tables.php',
79                                                             params : {
80                                                                  _sync : 1
81                                                             }
82                                                         });
83                                                             
84                                                     }
85                                                 },
86                                                 text : "Sync Tables"
87                                             },
88                                             {
89                                                 xtype: 'Separator',
90                                                 xns: Roo.menu
91                                             },
92                                             {
93                                                 xtype: 'Item',
94                                                 xns: Roo.menu,
95                                                 listeners : {
96                                                     click : function (_self, e)
97                                                     {
98                                                         var node = _this.treepanel.tree.getSelectionModel().getSelectedNode();   
99                                                         
100                                                         if(!node){
101                                                             Roo.MessageBox.alert('Error', 'Please select a table');
102                                                             return;
103                                                         } 
104                                                     }
105                                                 },
106                                                 text : "Export Data"
107                                             }
108                                         ]
109                                     }
110                                 }
111                             ]
112                         },
113                         tree : {
114                             xtype: 'TreePanel',
115                             xns: Roo.tree,
116                             listeners : {
117                                 beforeload : function (node)
118                                 {
119                                     if (!_this.panel.active) {
120                                         return false;
121                                     }
122                                 },
123                                 contextmenu : function (node, e)
124                                 {
125                                     if (!node.expanded || node.leaf) {
126                                         return;
127                                     }
128                                 
129                                    _this.treepanel.menu = Roo.factory(_this.treepanel.menu);
130                                    _this.treepanel.menu.show(node.ui.anchor,'tr');
131                                    _this.cxnode = node;
132                                 },
133                                 beforenodedrop : function (dropEvent)
134                                 {
135                                     Roo.log(dropEvent);
136                                     var node = dropEvent.dropNode;
137                                     var targ = dropEvent.target;
138                                     var parent = dropEvent.target;
139                                     switch(dropEvent.point) {
140                                         case 'below': 
141                                          case 'above':  
142                                             parent = dropEvent.target.parentNode;
143                                             break;
144                                         default:
145                                             break;
146                                     }
147                                     // technically you should not be able to drag tables into other modules..
148                                     if (parent.attributes.id < 1) {
149                                         dropEvent.cancel = 1;
150                                     }
151                                     new Pman.Request({
152                                         url : baseURL + '/Roo/Builder_tables',
153                                         params : {
154                                             id : node.attributes.id,
155                                             parent_id : parent.attributes.id
156                                         }
157                                     });
158                                     
159                                     
160                                 }
161                             },
162                             containerScroll : true,
163                             ddGroup : 'dbtree',
164                             enableDD : true,
165                             rootVisible : false,
166                             loader : {
167                                 xtype: 'TreeLoader',
168                                 xns: Roo.tree,
169                                 listeners : {
170                                     create : function (_self, attr)
171                                     {
172                                         Roo.log("CREATE");
173                                         try {
174                                             attr.text = attr.name.length ? attr.name : attr.descrip;
175                                             
176                                             attr.leaf = attr.name.length ? true : false;
177                                             attr.html = String.format('<B>{0}</B><i>{1}</i>',
178                                                 attr.name,
179                                                 attr.descrip
180                                             );
181                                         } catch(e) {
182                                             Roo.log(e);
183                                         }
184                                         Roo.log(attr);
185                                     
186                                     }
187                                 },
188                                 queryParam : 'parent_id',
189                                 requestMethod : 'GET',
190                                 root : 'data',
191                                 baseParams : { _tree: 1, 'sort': 'name', dir: 'ASC', limit : 9999 },
192                                 dataUrl : baseURL + '/Roo/Builder_tables.php'
193                             },
194                             sm : {
195                                 xtype: 'MultiSelectionModel',
196                                 xns: Roo.tree
197                             },
198                             root : {
199                                 xtype: 'AsyncTreeNode',
200                                 xns: Roo.tree,
201                                 text : "TOP LEVEL"
202                             },
203                             editor : {
204                                 xtype: 'TreeEditor',
205                                 xns: Roo.tree,
206                                 listeners : {
207                                     beforenodeedit : function (_self,node)
208                                     {
209                                         Roo.log('before start edit');
210                                         Roo.log(this.editNode);
211                                         if (node.attributes.name.length) {
212                                             return false;
213                                         }
214                                         return true;
215                                         
216                                     },
217                                     complete : function (_self, value, startValue)
218                                     {
219                                         Roo.log(this.editNode);
220                                     
221                                         var attr = this.editNode.attributes;
222                                         
223                                         var pa = this.editNode.parentNode.attributes;
224                                         Roo.log(pa);
225                                         var pr =  {
226                                      
227                                             parent_id : pa.id,
228                                             descrip : value,
229                                             name : '',
230                                             dbschema : ''
231                                         };
232                                             
233                                         if (attr.id > 0) {
234                                             pr.id = attr.id;
235                                         }
236                                         
237                                         new Pman.Request({
238                                             url : baseURL + '/Roo/Builder_tables',
239                                             method : 'POST',
240                                             params : pr
241                                         });
242                                         
243                                         
244                                         
245                                     }
246                                 }
247                             }
248                         },
249                         menu : {
250                             xtype: 'Menu',
251                             xns: Roo.menu,
252                             items : [
253                                 {
254                                     xtype: 'Item',
255                                     xns: Roo.menu,
256                                     listeners : {
257                                         click : function (_self, e)
258                                         {
259                                             _this.nIndex =     _this.nIndex || 0;
260                                             
261                                             var m = _this.cxnode.firstChild ? 'insertBefore' : 'appendChild';
262                                             var tree =  _this.treepanel.tree;
263                                             
264                                             var n = tree.loader.createNode({
265                                                 id : -1,
266                                                 descrip :'New Group ' + (++_this.nIndex), 
267                                                 name : ''
268                                             }); 
269                                             
270                                             var node = _this.cxnode[m]( n , _this.cxnode.firstChild);
271                                             setTimeout(function(){
272                                                     tree.editor.editNode = node;
273                                                     tree.editor.startEdit(node.ui.textNode);
274                                                 }, 10);
275                                         }
276                                     },
277                                     text : "Add Group"
278                                 },
279                                 {
280                                     xtype: 'Separator',
281                                     xns: Roo.menu
282                                 },
283                                 {
284                                     xtype: 'Item',
285                                     xns: Roo.menu,
286                                     listeners : {
287                                         click : function (_self, e)
288                                         {
289                                             _this.nIndex =     _this.nIndex || 0;
290                                             
291                                             _this.cxnode;
292                                             // try and delete it..
293                                             new Pman.Request({
294                                                 url : baseURL + '/Roo/Builder_tables',
295                                                 params : {
296                                                     _delete : _this.cxnode.attributes.id
297                                                 },
298                                                 success : function() {
299                                                     _this.cxnode.parentNode.removeChild(_this.cxnode);
300                                                     _this.cxnode = false;
301                                                 
302                                                 }
303                                             });
304                                             
305                                         }
306                                     },
307                                     text : "Remove Group"
308                                 }
309                             ]
310                         }
311                     },
312                     {
313                         xtype: 'GridPanel',
314                         xns: Roo,
315                         listeners : {
316                             activate : function() {
317                                 _this.panel = this;
318                                 if (_this.grid) {
319                                     _this.grid.footer.onClick('first');
320                                 }
321                             }
322                         },
323                         background : true,
324                         fitContainer : true,
325                         fitToframe : true,
326                         region : 'center',
327                         tableName : 'Tables',
328                         title : "Tables",
329                         grid : {
330                             xtype: 'Grid',
331                             xns: Roo.grid,
332                             listeners : {
333                                 render : function() 
334                                 {
335                                     _this.grid = this; 
336                                     //_this.dialog = Pman.Dialog.FILL_IN
337                                     if (_this.panel.active) {
338                                        this.footer.onClick('first');
339                                     }
340                                 },
341                                 rowdblclick : function (_self, rowIndex, e)
342                                 {
343                                     if (!_this.dialog) return;
344                                     _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {
345                                         _this.grid.footer.onClick('first');
346                                     }); 
347                                 }
348                             },
349                             autoExpandColumn : 'table',
350                             loadMask : true,
351                             dataSource : {
352                                 xtype: 'Store',
353                                 xns: Roo.data,
354                                 remoteSort : true,
355                                 sortInfo : { field : 'filename', direction: 'ASC' },
356                                 proxy : {
357                                     xtype: 'HttpProxy',
358                                     xns: Roo.data,
359                                     method : 'GET',
360                                     url : baseURL + '/Builder/ERM.php'
361                                 },
362                                 reader : {
363                                     xtype: 'JsonReader',
364                                     xns: Roo.data,
365                                     totalProperty : 'total',
366                                     root : 'data',
367                                     id : 'id',
368                                     fields : [
369                                         {
370                                             'name': 'id',
371                                             'type': 'int'
372                                         },
373                                         {
374                                             'name': 'filename',
375                                             'type': 'string'
376                                         },
377                                         {
378                                             'name': 'ontable',
379                                             'type': 'string'
380                                         },
381                                         {
382                                             'name': 'onid',
383                                             'type': 'int'
384                                         },
385                                         {
386                                             'name': 'mimetype',
387                                             'type': 'string'
388                                         },
389                                         {
390                                             'name': 'width',
391                                             'type': 'int'
392                                         },
393                                         {
394                                             'name': 'height',
395                                             'type': 'int'
396                                         },
397                                         {
398                                             'name': 'filesize',
399                                             'type': 'int'
400                                         },
401                                         {
402                                             'name': 'displayorder',
403                                             'type': 'int'
404                                         },
405                                         {
406                                             'name': 'language',
407                                             'type': 'string'
408                                         },
409                                         {
410                                             'name': 'parent_image_id',
411                                             'type': 'int'
412                                         },
413                                         {
414                                             'name': 'created',
415                                             'type': 'date',
416                                             'dateFormat': 'Y-m-d'
417                                         },
418                                         {
419                                             'name': 'imgtype',
420                                             'type': 'string'
421                                         },
422                                         {
423                                             'name': 'linkurl',
424                                             'type': 'string'
425                                         },
426                                         {
427                                             'name': 'descript',
428                                             'type': 'string'
429                                         },
430                                         {
431                                             'name': 'title',
432                                             'type': 'string'
433                                         },
434                                         {
435                                             'name': 'credit',
436                                             'type': 'string'
437                                         },
438                                         {
439                                             'name': 'source',
440                                             'type': 'string'
441                                         },
442                                         {
443                                             'name': 'parent_image_id_id',
444                                             'type': 'int'
445                                         },
446                                         {
447                                             'name': 'parent_image_id_filename',
448                                             'type': 'string'
449                                         },
450                                         {
451                                             'name': 'parent_image_id_ontable',
452                                             'type': 'string'
453                                         },
454                                         {
455                                             'name': 'parent_image_id_onid',
456                                             'type': 'int'
457                                         },
458                                         {
459                                             'name': 'parent_image_id_mimetype',
460                                             'type': 'string'
461                                         },
462                                         {
463                                             'name': 'parent_image_id_width',
464                                             'type': 'int'
465                                         },
466                                         {
467                                             'name': 'parent_image_id_height',
468                                             'type': 'int'
469                                         },
470                                         {
471                                             'name': 'parent_image_id_filesize',
472                                             'type': 'int'
473                                         },
474                                         {
475                                             'name': 'parent_image_id_displayorder',
476                                             'type': 'int'
477                                         },
478                                         {
479                                             'name': 'parent_image_id_language',
480                                             'type': 'string'
481                                         },
482                                         {
483                                             'name': 'parent_image_id_parent_image_id',
484                                             'type': 'int'
485                                         },
486                                         {
487                                             'name': 'parent_image_id_created',
488                                             'type': 'date'
489                                         },
490                                         {
491                                             'name': 'parent_image_id_imgtype',
492                                             'type': 'string'
493                                         },
494                                         {
495                                             'name': 'parent_image_id_linkurl',
496                                             'type': 'string'
497                                         },
498                                         {
499                                             'name': 'parent_image_id_descript',
500                                             'type': 'string'
501                                         },
502                                         {
503                                             'name': 'parent_image_id_title',
504                                             'type': 'string'
505                                         },
506                                         {
507                                             'name': 'parent_image_id_credit',
508                                             'type': 'string'
509                                         },
510                                         {
511                                             'name': 'parent_image_id_source',
512                                             'type': 'string'
513                                         }
514                                     ]
515                                 }
516                             },
517                             footer : {
518                                 xtype: 'PagingToolbar',
519                                 xns: Roo,
520                                 pageSize : 25,
521                                 displayInfo : true,
522                                 displayMsg : "Displaying Images{0} - {1} of {2}",
523                                 emptyMsg : "No Images found"
524                             },
525                             toolbar : {
526                                 xtype: 'Toolbar',
527                                 xns: Roo,
528                                 items : [
529                                     {
530                                         xtype: 'Button',
531                                         xns: Roo.Toolbar,
532                                         listeners : {
533                                             click : function()
534                                             {
535                                                 Roo.MessageBox.alert("Updating", "Updating the cache");
536                                                 new Pman.Request({
537                                                     url : baseURL + '/Core/RefreshDatabaseCache',
538                                                     method : 'GET',
539                                                     success : function() {
540                                                         Roo.MessageBox.hide();
541                                                     }
542                                                 });
543                                             }
544                                         },
545                                         cls : 'x-btn-text-icon',
546                                         text : "Refresh Schema",
547                                         icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
548                                     }
549                                 ]
550                             },
551                             colModel : [
552                                 {
553                                     xtype: 'ColumnModel',
554                                     xns: Roo.grid,
555                                     dataIndex : 'table',
556                                     header : 'Table',
557                                     width : 200,
558                                     renderer : function(v) { return String.format('{0}', v); }
559                                 }
560                             ]
561                         }
562                     }
563                 ],
564                 west : {
565                     xtype: 'LayoutRegion',
566                     xns: Roo,
567                     split : true,
568                     width : 150
569                 },
570                 center : {
571                     xtype: 'LayoutRegion',
572                     xns: Roo
573                 }
574             }
575         };
576     }
577 });