6 Ext.onReady(function(){
8 extend: 'Ext.data.Model',
11 {name: 'projectId', type: 'int'},
12 {name: 'project', type: 'string'},
13 {name: 'taskId', type: 'int'},
14 {name: 'description', type: 'string'},
15 {name: 'estimate', type: 'float'},
16 {name: 'rate', type: 'float'},
17 {name: 'cost', type: 'float'},
18 {name: 'due', type: 'date', dateFormat:'m/d/Y'}
22 var store = Ext.create('Ext.data.Store', {
27 url: 'remote-group-summary-grid.json',
33 sorters: {property: 'due', direction: 'ASC'},
37 var grid = Ext.create('Ext.grid.Panel', {
40 title: 'Sponsored Projects',
41 renderTo: Ext.getBody(),
53 toggleHandler: function(btn, pressed){
54 var view = grid.getView();
55 view.getFeature('group').toggleSummaryRow(pressed);
62 ftype: 'groupingsummary',
63 groupHeaderTpl: '{name}',
64 hideGroupedHeader: true,
65 remoteRoot: 'summaryData'
72 dataIndex: 'description',
74 summaryRenderer: function(value, summaryData, dataIndex) {
75 return ((value === 0 || value > 1) ? '(' + value + ' Tasks)' : '(1 Task)');
87 renderer: Ext.util.Format.dateRenderer('m/d/Y')
92 dataIndex: 'estimate',
93 renderer: function(value, metaData, record, rowIdx, colIdx, store, view){
94 return value + ' hours';
96 summaryRenderer: function(value, summaryData, dataIndex) {
97 return value + ' hours';
103 renderer: Ext.util.Format.usMoney,
104 summaryRenderer: Ext.util.Format.usMoney,
106 summaryType: 'average'
113 renderer: function(value, metaData, record, rowIdx, colIdx, store, view) {
114 return Ext.util.Format.usMoney(record.get('estimate') * record.get('rate'));
117 summaryRenderer: Ext.util.Format.usMoney