Pman.Tab.MTrackMerger.js
[Pman.MTrack] / Pman.Tab.MTrackMerger.js
1 //<script type="text/javascript">
2
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
4
5
6
7 // register the module first
8 Pman.on('beforeload', function()
9 {
10     Pman.register({
11         modKey : '400-Pman.Tab.MTrackMerger',
12         module : Pman.Tab.MTrackMerger,
13         region : 'center',
14         parent : Pman.Tab.MTrack,
15         name : "Pman.Tab.MTrackMerger",
16         disabled : false, 
17         permname: '' 
18     });
19 });
20
21 Pman.Tab.MTrackMerger = new Roo.util.Observable({
22
23     panel : false,
24     disabled : false,
25     parentLayout:  false,
26
27     add : function(parentLayout, region)
28     {
29
30         var _this = this;
31         this.parentLayout = parentLayout;
32
33         this.panel = parentLayout.addxtype({
34             xtype: 'NestedLayoutPanel',
35             xns: Roo,
36             listeners : {
37                 activate : function (_self)
38                 {
39                    try {
40                         var t = _this.tree.tree;
41                         t.loader.load(t.root);
42                     } catch(e) {}
43                 }
44             },
45             background : true,
46             region : 'center',
47             title : "Merge Commits",
48             layout : {
49                 xtype: 'BorderLayout',
50                 xns: Roo,
51                 items : [
52                     {
53                         xtype: 'TreePanel',
54                         xns: Roo,
55                         listeners : {
56                             render : function (_self)
57                             {
58                               _this.tree = _self;
59                             }
60                         },
61                         autoScroll : true,
62                         fitToFrame : true,
63                         region : 'west',
64                         toolbar : {
65                             xtype: 'Toolbar',
66                             xns: Roo,
67                             items : [
68                                 {
69                                     xtype: 'Button',
70                                     xns: Roo.Toolbar,
71                                     listeners : {
72                                         click : function (_self, e)
73                                         {
74                                           var t = _this.tree.tree;
75                                           t.loader.load(t.root);
76                                         }
77                                     },
78                                     text : "Reload"
79                                 }
80                             ]
81                         },
82                         tree : {
83                             xtype: 'TreePanel',
84                             xns: Roo.tree,
85                             listeners : {
86                                 click : function (node, e)
87                                 {
88                                 
89                                    _this.grid.ds.load.defer(100, _this.grid.ds, [ {} ]);
90                                 }
91                             },
92                             loader : {
93                                 xtype: 'TreeLoader',
94                                 xns: Roo.tree,
95                                 listeners : {
96                                     beforeload : function (This, node, callback)
97                                     {
98                                        _this.tree.el.mask("Loading");
99                                     },
100                                     load : function (This, node, response)
101                                     {
102                                          _this.tree.el.unmask();
103                                          _this.tree.tree.root.expand(false,true);
104                                     },
105                                     loadexception : function (This, node, response)
106                                     {
107                                      _this.tree.el.unmask();
108                                     }
109                                 },
110                                 requestMethod : 'GET',
111                                 root : 'data',
112                                 baseParams : { _tree : 1 },
113                                 dataUrl : baseURL + '/MTrack/Merger'
114                             },
115                             root : {
116                                 xtype: 'TreeNode',
117                                 xns: Roo.tree,
118                                 text : "All Changes"
119                             }
120                         }
121                     },
122                     {
123                         xtype: 'GridPanel',
124                         xns: Roo,
125                         listeners : {
126                             activate : function() {
127                                 _this.panel = this;
128                                 if (_this.grid) {
129                                     //_this.grid.footer.onClick('first');
130                                 }
131                             }
132                         },
133                         background : true,
134                         fitContainer : true,
135                         fitToframe : true,
136                         region : 'center',
137                         tableName : 'core_enum',
138                         title : "core_enum",
139                         grid : {
140                             xtype: 'Grid',
141                             xns: Roo.grid,
142                             listeners : {
143                                 render : function() 
144                                 {
145                                     _this.grid = this; 
146                                     //_this.dialog = Pman.Dialog.FILL_IN
147                                     if (_this.panel.active) {
148                                        //this.footer.onClick('first');
149                                     }
150                                 },
151                                 rowdblclick : function (_self, rowIndex, e)
152                                 {
153                                     if (!_this.dialog) return;
154                                     _this.dialog.show( this.getDataSource().getAt(rowIndex), function() {
155                                         _this.grid.footer.onClick('first');
156                                     }); 
157                                 }
158                             },
159                             autoExpandColumn : 'etype',
160                             loadMask : true,
161                             dataSource : {
162                                 xtype: 'Store',
163                                 xns: Roo.data,
164                                 listeners : {
165                                     beforeload : function (_self, options)
166                                     {
167                                        if (!_this.tree.tree.selModel.getSelectedNode()) {
168                                            return false;
169                                        }
170                                        
171                                        options.params = {   
172                                           _changedFiles : _this.tree.tree.selModel.getSelectedNode().attributes.rev
173                                           };
174                                     },
175                                     load : function (_self, records, options)
176                                     {
177                                        // clear selections??
178                                        _this.preview.load({
179                                           method : 'POST',
180                                           url : baseURL + '/MTrack/Merger',
181                                           params : {
182                                               _preview :  _this.tree.tree.selModel.getSelectedNode().attributes.rev
183                                           }
184                                       });
185                                           
186                                     
187                                     }
188                                 },
189                                 remoteSort : false,
190                                 sortInfo : { field: 'filename', dir : 'ASC' },
191                                 proxy : {
192                                     xtype: 'HttpProxy',
193                                     xns: Roo.data,
194                                     method : 'GET',
195                                     url : baseURL + '/MTrack/Merger.php'
196                                 },
197                                 reader : {
198                                     xtype: 'JsonReader',
199                                     xns: Roo.data,
200                                     id : 'id',
201                                     root : 'data',
202                                     totalProperty : 'total',
203                                     fields : [
204                                         {
205                                             'name': 'id',
206                                             'type': 'int'
207                                         },
208                                         {
209                                             'name': 'filename',
210                                             'type': 'string'
211                                         },
212                                         {
213                                             'name': 'added',
214                                             'type': 'int'
215                                         },
216                                         {
217                                             'name': 'removed',
218                                             'type': 'int'
219                                         }
220                                     
221                                     ]
222                                 }
223                             },
224                             sm : {
225                                 xtype: 'RowSelectionModel',
226                                 xns: Roo.grid,
227                                 listeners : {
228                                     afterselectionchange : function (_self)
229                                     {
230                                        var ar = this.getSelections();
231                                        if (!ar.length) {
232                                          // show whole change.
233                                          _this.preview.load({
234                                               method : 'POST',
235                                               url : baseURL + '/MTrack/Merger',
236                                               params : {
237                                                   _preview :  _this.tree.tree.selModel.getSelectedNode().attributes.rev
238                                               }
239                                           });
240                                           return;
241                                        }
242                                        var files = []
243                                        Roo.each(ar, function(s) {
244                                             files.push(s.data.filename);
245                                        
246                                        });
247                                          _this.preview.load({
248                                               method : 'POST',
249                                               url : baseURL + '/MTrack/Merger',
250                                               params : {
251                                                   _preview :  _this.tree.tree.selModel.getSelectedNode().attributes.rev,
252                                                   files:  Roo.encode(files)
253                                               }
254                                           });   
255                                        
256                                        
257                                     }
258                                 },
259                                 singleSelect : false
260                             },
261                             toolbar : {
262                                 xtype: 'Toolbar',
263                                 xns: Roo,
264                                 items : [
265                                     {
266                                         xtype: 'Button',
267                                         xns: Roo.Toolbar,
268                                         listeners : {
269                                             click : function()
270                                             {
271                                                 // if we are just copying a simple commit accross with a valid message
272                                                 // then this could contain the original commit message..
273                                                if (! _this.tree.tree.selModel.getSelectedNode()) {
274                                                   Roo.MessageBox.alert("Error", "select a revision");
275                                                   return ;
276                                                }
277                                                var ar = _this.grid.sm.getSelections();
278                                                var files = []
279                                                Roo.each(ar, function(s) {
280                                                     files.push(s.data.filename);
281                                                
282                                                });
283                                                
284                                                if (!files.length) {
285                                                         Roo.MessageBox.alert("Error", "select some files");
286                                                   return ;
287                                                }
288                                                 
289                                             
290                                                 Roo.MessageBox.show({
291                                                    title: "Create a Commit",
292                                                    msg: "Enter commit message",
293                                                    width:300,
294                                                    buttons: Roo.MessageBox.OKCANCEL,
295                                                    multiline: true,
296                                                    fn: function(btn, msg) {
297                                             
298                                                      if (btn != 'ok') {
299                                                          return;
300                                                       }
301                                                       new Pman.Request({
302                                                             method : 'POST',
303                                                             url : baseURL + '/MTrack/Merger',
304                                                             params : { 
305                                                                 message : msg,
306                                                                 _merge : _this.tree.tree.selModel.getSelectedNode().attributes.rev,
307                                                                 files : Roo.encode(files),
308                                                             },
309                                                             success : function () {
310                                                                // reload the grid..
311                                                                _this.grid.ds.load({});
312                                                             }
313                                                        });
314                                                    },
315                                                    animEl: this.el
316                                                });
317                                             }
318                                         },
319                                         cls : 'x-btn-text-icon',
320                                         text : "Create Commit",
321                                         icon : Roo.rootURL + 'images/default/dd/drop-add.gif'
322                                     }
323                                 ]
324                             },
325                             colModel : [
326                                 {
327                                     xtype: 'ColumnModel',
328                                     xns: Roo.grid,
329                                     dataIndex : 'filename',
330                                     header : 'File',
331                                     width : 200,
332                                     renderer : function(v) { return String.format('{0}', v); }
333                                 },
334                                 {
335                                     xtype: 'ColumnModel',
336                                     xns: Roo.grid,
337                                     dataIndex : 'added',
338                                     header : 'Added',
339                                     width : 50,
340                                     renderer : function(v) { return String.format('{0}', v); }
341                                 },
342                                 {
343                                     xtype: 'ColumnModel',
344                                     xns: Roo.grid,
345                                     dataIndex : 'removed',
346                                     header : 'Removed',
347                                     width : 50,
348                                     renderer : function(v) { return String.format('{0}', v); }
349                                 }
350                             ]
351                         }
352                     },
353                     {
354                         xtype: 'ContentPanel',
355                         xns: Roo,
356                         listeners : {
357                             render : function (_self)
358                             {
359                               _this.preview = _self;
360                             }
361                         },
362                         autoScroll : true,
363                         fitToFrame : true,
364                         region : 'south',
365                         title : "Review Changes"
366                     }
367                 ],
368                 west : {
369                     xtype: 'LayoutRegion',
370                     xns: Roo,
371                     split : true,
372                     width : 200
373                 },
374                 center : {
375                     xtype: 'LayoutRegion',
376                     xns: Roo
377                 },
378                 south : {
379                     xtype: 'LayoutRegion',
380                     xns: Roo,
381                     height : 200,
382                     split : true,
383                     titlebar : true
384                 }
385             }
386         });
387         this.layout = this.panel.layout;
388
389     }
390 });