Pman.Tab.MTrackTimeline.bjs
[Pman.MTrack] / Pman.Tab.MTrackTimeline.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.MTrackTimeline = new Roo.XComponent({
6     part     :  ["MTrack","Timeline"],
7     order    : '300-Pman.Tab.MTrackTimeline',
8     region   : 'center',
9     parent   : false,
10     name     : "unnamed module",
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                     // navigation..
24                     // a) record the fact we go here.. (for history)
25                     
26                     // when page loads, we have to go to this page..
27                     
28                     // at other times, we just check 
29                     //  a) project was the same as before... - do not change.
30                     //  b) 
31                     _this.project = _this.project || 0;
32                     
33                     
34                     if (typeof(MTrackWeb) != 'undefined' && !MTrackWeb.Layout) {
35                         return;
36                     }
37                     
38                     if (typeof(Pman.Tab.DocumentsTab) == 'undefined') {
39                         return;
40                     }
41                     /*
42                     if (!_this.iscroll) {  
43                     
44                         (function() {
45                  
46                             try {
47                                 _this.iscroll = new Roo.ux.Iscroll(_this.tpanel.el.dom);
48                             } catch(e) { 
49                                 Roo.log(e);
50                             }
51                         }).defer(100);    
52                 
53                     }
54                     _this.iscroll = true;    
55                     
56                     */
57                     var  chg_project =  (_this.project != Pman.Tab.DocumentsTab.panel.getProjectId());
58                     
59                    _this.project = Pman.Tab.DocumentsTab.panel.getProjectId();
60                     
61                    if (typeof(MTrackWeb) == 'undefined') {
62                         return;
63                     }
64                     try { 
65                          window.history.pushState( { url: '/Timeline' }, 'Timeline' , baseURL +  '/Timeline' );
66                     } catch (e) {}
67                     
68                     MTrack.currentURL = '/Timeline';
69                     if (chg_project) {
70                         (function() {
71                             _this.grid.ds.load({});
72                            //_this.tpanel.view.store.load({});
73                         }).defer(100);
74                     }
75                    
76                  
77                 }
78             },
79             background : true,
80             fitContainer : true,
81             fitToFrame : true,
82             region : 'center',
83             title : "Project Timeline",
84             layout : {
85                 xtype: 'BorderLayout',
86                 xns: Roo,
87                 items : [
88                     {
89                         xtype: 'ContentPanel',
90                         xns: Roo,
91                         listeners : {
92                             activate : function (_self)
93                             {
94                                 _this.tpanel = _self;
95                             }
96                         },
97                         autoScroll : true,
98                         background : true,
99                         fitContainer : true,
100                         fitToFrame : true,
101                         region : 'center',
102                         title : "Timeline",
103                         mload : function(url) {
104                         
105                           // can you actually link to this page..
106                           // perhaps a specific day..
107                         
108                             this._url = url;
109                            // this._project = MTrack.projectCombo.getValue();
110                            // MTrack.ajaxLoad(url, this);
111                            _this.grid.ds.load({});
112                             
113                         },
114                         items : [
115                             {
116                                 xtype: 'View',
117                                 xns: Roo,
118                                 listeners : {
119                                     beforeselect : function (_self, node, selections)
120                                     {
121                                        //Roo.log(node)
122                                        //Roo.log(this.indexOf(node));
123                                        var rec =  this.store.getAt(this.indexOf(node));
124                                        //Roo.log(data);
125                                        
126                                        
127                                        
128                                        
129                                     }
130                                 },
131                                 multiSelect : true,
132                                 selectedClass : 'change-log-item-expanded',
133                                 singleSelect : false,
134                                 toggleSelect : true,
135                                 tpl : {
136                                     xtype: 'XTemplate',
137                                     xns: Roo,
138                                     url : rootURL + '/Pman/MTrack/templates/timeline.html'
139                                 },
140                                 store : {
141                                     xtype: 'Store',
142                                     xns: Roo.data,
143                                     listeners : {
144                                         beforeload : function (_self, o)
145                                         {
146                                             o = o || {};
147                                             o.params = o.params || {};
148                                             
149                                             var sel = _this.grid.selModel.getSelected();
150                                             o.params.from_date = sel.data.changeday.format("Y-m-d");
151                                             o.params.person_id = sel.data.person_id;
152                                            // o.params.viewtype = 'summary';    
153                                             o.params.timeline = 1;
154                                             // project?
155                                             o.params.project_id =  sel.data.project_id;
156                                             o.params.limit = 9999;
157                                         }
158                                     },
159                                     remoteSort : true,
160                                     sortInfo : { field : 'person_name', direction: 'ASC' },
161                                     proxy : {
162                                         xtype: 'HttpProxy',
163                                         xns: Roo.data,
164                                         method : 'GET',
165                                         url : baseURL + '/Roo/mtrack_change.php'
166                                     },
167                                     reader : {
168                                         xtype: 'JsonReader',
169                                         xns: Roo.data,
170                                         id : 'id',
171                                         root : 'data',
172                                         totalProperty : 'total',
173                                         fields : [
174                                             {
175                                                 'name': 'person_id',
176                                                 'type': 'int'
177                                             },
178                                             {
179                                                 'name': 'person_name',
180                                                 'type': 'string'
181                                             },
182                                             {
183                                                 'name': 'changeday',
184                                                 'type': 'date',
185                                                 'dateFormat': 'Y-m-d'
186                                             },
187                                             {
188                                                 'name': 'nchanges',
189                                                 'type': 'int'
190                                             },
191                                             'project_code',
192                                             'project_id',
193                                             
194                                         
195                                         ]
196                                     }
197                                 }
198                             }
199                         ],
200                         toolbar : {
201                             xtype: 'Toolbar',
202                             xns: Roo,
203                             items : [
204                                 {
205                                     xtype: 'Button',
206                                     xns: Roo.Toolbar,
207                                     text : "Select a date to refresh.."
208                                 }
209                             ]
210                         }
211                     },
212                     {
213                         xtype: 'NestedLayoutPanel',
214                         xns: Roo,
215                         region : 'west',
216                         layout : {
217                             xtype: 'BorderLayout',
218                             xns: Roo,
219                             items : [
220                                 {
221                                     xtype: 'GridPanel',
222                                     xns: Roo,
223                                     listeners : {
224                                         activate : function() {
225                                             _this.gridpanel = this;
226                                         
227                                         }
228                                     },
229                                     autoScroll : true,
230                                     background : false,
231                                     fitContainer : true,
232                                     fitToframe : true,
233                                     region : 'center',
234                                     tableName : 'Events',
235                                     title : "Events",
236                                     grid : {
237                                         xtype: 'Grid',
238                                         xns: Roo.grid,
239                                         listeners : {
240                                             render : function() 
241                                             {
242                                                 _this.grid = this; 
243                                                 //_this.dialog = Pman.Dialog.FILL_IN
244                                                    this.dataSource.load({});
245                                             
246                                             }
247                                         },
248                                         autoExpandColumn : 'person_id_name',
249                                         loadMask : true,
250                                         sm : {
251                                             xtype: 'RowSelectionModel',
252                                             xns: Roo.grid,
253                                             listeners : {
254                                                 afterselectionchange : function (_self)
255                                                 {
256                                                   // select the data..
257                                                   
258                                                   var r= _this.grid.sm.getSelected();
259                                                   
260                                                   
261                                                   _this.datePicker.setValue(r.data.changeday);
262                                                    _this.tpanel.view.store.load({});
263                                                    
264                                                 }
265                                             },
266                                             singleSelect : true
267                                         },
268                                         dataSource : {
269                                             xtype: 'Store',
270                                             xns: Roo.data,
271                                             listeners : {
272                                                 beforeload : function (_self, o)
273                                                 {
274                                                     o = o || {};
275                                                     o.params = o.params || {};
276                                                     
277                                                     if (!_this.datePicker || !_this.datePicker.getValue) {
278                                                         return false;
279                                                     }
280                                                     o.params.from_date = _this.datePicker.activeDate.format("Y-m-01");
281                                                     o.params.viewtype = 'summary';    
282                                                     o.params.timeline = 1;
283                                                     // project?
284                                                     o.params.project_id =  Pman.Tab.DocumentsTab ? Pman.Tab.DocumentsTab.panel.getProjectId() : 0;
285                                                 }
286                                             },
287                                             remoteSort : true,
288                                             sortInfo : { field : 'person_name', direction: 'ASC' },
289                                             proxy : {
290                                                 xtype: 'HttpProxy',
291                                                 xns: Roo.data,
292                                                 method : 'GET',
293                                                 url : baseURL + '/Roo/mtrack_change.php'
294                                             },
295                                             reader : {
296                                                 xtype: 'JsonReader',
297                                                 xns: Roo.data,
298                                                 id : 'id',
299                                                 root : 'data',
300                                                 totalProperty : 'total',
301                                                 fields : [
302                                                     {
303                                                         'name': 'person_id',
304                                                         'type': 'int'
305                                                     },
306                                                     {
307                                                         'name': 'person_name',
308                                                         'type': 'string'
309                                                     },
310                                                     {
311                                                         'name': 'changeday',
312                                                         'type': 'date',
313                                                         'dateFormat': 'Y-m-d'
314                                                     },
315                                                     {
316                                                         'name': 'nchanges',
317                                                         'type': 'int'
318                                                     },
319                                                     'project_code',
320                                                     'project_id',
321                                                     
322                                                 
323                                                 ]
324                                             }
325                                         },
326                                         colModel : [
327                                             {
328                                                 xtype: 'ColumnModel',
329                                                 xns: Roo.grid,
330                                                 dataIndex : 'changeday',
331                                                 header : 'Date',
332                                                 width : 30,
333                                                 renderer : function(v,x,r) { 
334                                                 
335                                                     return String.format('{0}',  v ? v.format('d') : '' );
336                                                  }
337                                             },
338                                             {
339                                                 xtype: 'ColumnModel',
340                                                 xns: Roo.grid,
341                                                 dataIndex : 'project_code',
342                                                 header : 'Project',
343                                                 width : 50,
344                                                 renderer : function(v,x,r) { 
345                                                     
346                                                     Roo.log(r);
347                                                     return String.format( '{0}' ,v );
348                                                  }
349                                             },
350                                             {
351                                                 xtype: 'ColumnModel',
352                                                 xns: Roo.grid,
353                                                 dataIndex : 'person_name',
354                                                 header : 'Who',
355                                                 width : 100,
356                                                 renderer : function(v,x,r) { 
357                                                     
358                                                     return String.format( '{0}' , v);
359                                                  }
360                                             },
361                                             {
362                                                 xtype: 'ColumnModel',
363                                                 xns: Roo.grid,
364                                                 align : 'right',
365                                                 dataIndex : 'nchanges',
366                                                 header : 'Changes',
367                                                 width : 30,
368                                                 renderer : function(v,x,r) { 
369                                                     return v * 1;
370                                                  }
371                                             }
372                                         ]
373                                     }
374                                 },
375                                 {
376                                     xtype: 'ContentPanel',
377                                     xns: Roo,
378                                     region : 'north',
379                                     items : [
380                                         {
381                                             xtype: 'DatePicker',
382                                             xns: Roo,
383                                             listeners : {
384                                                 render : function (_self)
385                                                 {
386                                                   _this.datePicker = _self;
387                                                 },
388                                                 select : function (_self, date)
389                                                 {
390                                                     if (!_this.tpanel) {
391                                                         return;
392                                                     }
393                                                     _this.tpanel.view.store.load({});
394                                                 },
395                                                 monthchange : function (_self, date)
396                                                 {
397                                                   if (_this.grid) {
398                                                      _this.grid.ds.load({   });
399                                                      }
400                                                 }
401                                             }
402                                         }
403                                     ]
404                                 }
405                             ],
406                             center : {
407                                 xtype: 'LayoutRegion',
408                                 xns: Roo
409                             },
410                             north : {
411                                 xtype: 'LayoutRegion',
412                                 xns: Roo,
413                                 height : 220
414                             }
415                         }
416                     }
417                 ],
418                 center : {
419                     xtype: 'LayoutRegion',
420                     xns: Roo,
421                     tabPosition : 'top'
422                 },
423                 west : {
424                     xtype: 'LayoutRegion',
425                     xns: Roo,
426                     width : 250
427                 }
428             }
429         };
430     }
431 });