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