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