totals.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:7k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.0.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ Ext.onReady(function(){
  2.     Ext.QuickTips.init();
  3.     var xg = Ext.grid;
  4.     var reader = new Ext.data.JsonReader({
  5.         idProperty: 'taskId',
  6.         fields: [
  7.             {name: 'projectId', type: 'int'},
  8.             {name: 'project', type: 'string'},
  9.             {name: 'taskId', type: 'int'},
  10.             {name: 'description', type: 'string'},
  11.             {name: 'estimate', type: 'float'},
  12.             {name: 'rate', type: 'float'},
  13.             {name: 'cost', type: 'float'},
  14.             {name: 'due', type: 'date', dateFormat:'m/d/Y'}
  15.         ]
  16.     });
  17.     // define a custom summary function
  18.     Ext.ux.grid.GroupSummary.Calculations['totalCost'] = function(v, record, field){
  19.         return v + (record.data.estimate * record.data.rate);
  20.     };
  21. // utilize custom extension for Group Summary
  22.     var summary = new Ext.ux.grid.GroupSummary();
  23.     var grid = new xg.EditorGridPanel({
  24.         ds: new Ext.data.GroupingStore({
  25.             reader: reader,
  26. // use local data
  27.             data: app.grid.dummyData,
  28.             sortInfo: {field: 'due', direction: 'ASC'},
  29.             groupField: 'project'
  30.         }),
  31.         columns: [
  32.             {
  33.                 id: 'description',
  34.                 header: 'Task',
  35.                 width: 80,
  36.                 sortable: true,
  37.                 dataIndex: 'description',
  38.                 summaryType: 'count',
  39.                 hideable: false,
  40.                 summaryRenderer: function(v, params, data){
  41.                     return ((v === 0 || v > 1) ? '(' + v +' Tasks)' : '(1 Task)');
  42.                 },
  43.                 editor: new Ext.form.TextField({
  44.                    allowBlank: false
  45.                 })
  46.             },{
  47.                 header: 'Project',
  48.                 width: 20,
  49.                 sortable: true,
  50.                 dataIndex: 'project'
  51.             },{
  52.                 header: 'Due Date',
  53.                 width: 25,
  54.                 sortable: true,
  55.                 dataIndex: 'due',
  56.                 summaryType: 'max',
  57.                 renderer: Ext.util.Format.dateRenderer('m/d/Y'),
  58.                 editor: new Ext.form.DateField({
  59.                     format: 'm/d/Y'
  60.                 })
  61.             },{
  62.                 header: 'Estimate',
  63.                 width: 20,
  64.                 sortable: true,
  65.                 dataIndex: 'estimate',
  66.                 summaryType: 'sum',
  67.                 renderer : function(v){
  68.                     return v +' hours';
  69.                 },
  70.                 editor: new Ext.form.NumberField({
  71.                    allowBlank: false,
  72.                    allowNegative: false,
  73.                    style: 'text-align:left'
  74.                 })
  75.             },{
  76.                 header: 'Rate',
  77.                 width: 20,
  78.                 sortable: true,
  79.                 renderer: Ext.util.Format.usMoney,
  80.                 dataIndex: 'rate',
  81.                 summaryType: 'average',
  82.                 editor: new Ext.form.NumberField({
  83.                     allowBlank: false,
  84.                     allowNegative: false,
  85.                     style: 'text-align:left'
  86.                 })
  87.             },{
  88.                 id: 'cost',
  89.                 header: 'Cost',
  90.                 width: 20,
  91.                 sortable: false,
  92.                 groupable: false,
  93.                 renderer: function(v, params, record){
  94.                     return Ext.util.Format.usMoney(record.data.estimate * record.data.rate);
  95.                 },
  96.                 dataIndex: 'cost',
  97.                 summaryType: 'totalCost',
  98.                 summaryRenderer: Ext.util.Format.usMoney
  99.             }
  100.         ],
  101.         view: new Ext.grid.GroupingView({
  102.             forceFit: true,
  103.             showGroupName: false,
  104.             enableNoGroups: false,
  105. enableGroupingMenu: false,
  106.             hideGroupedColumn: true
  107.         }),
  108.         plugins: summary,
  109.         tbar : [{
  110.             text: 'Toggle',
  111.             tooltip: 'Toggle the visibility of summary row',
  112.             handler: function(){summary.toggleSummaries();}
  113.         }],
  114.         frame: true,
  115.         width: 800,
  116.         height: 450,
  117.         clicksToEdit: 1,
  118.         collapsible: true,
  119.         animCollapse: false,
  120.         trackMouseOver: false,
  121.         //enableColumnMove: false,
  122.         title: 'Sponsored Projects',
  123.         iconCls: 'icon-grid',
  124.         renderTo: document.body
  125.     });
  126. });
  127. // set up namespace for application
  128. Ext.ns('app.grid');
  129. // store dummy data in the app namespace
  130. app.grid.dummyData = [
  131.     {projectId: 100, project: 'Ext Forms: Field Anchoring', taskId: 112, description: 'Integrate 2.0 Forms with 2.0 Layouts', estimate: 6, rate: 150, due:'06/24/2007'},
  132.     {projectId: 100, project: 'Ext Forms: Field Anchoring', taskId: 113, description: 'Implement AnchorLayout', estimate: 4, rate: 150, due:'06/25/2007'},
  133.     {projectId: 100, project: 'Ext Forms: Field Anchoring', taskId: 114, description: 'Add support for multiple types of anchors', estimate: 4, rate: 150, due:'06/27/2007'},
  134.     {projectId: 100, project: 'Ext Forms: Field Anchoring', taskId: 115, description: 'Testing and debugging', estimate: 8, rate: 0, due:'06/29/2007'},
  135.     {projectId: 101, project: 'Ext Grid: Single-level Grouping', taskId: 101, description: 'Add required rendering "hooks" to GridView', estimate: 6, rate: 100, due:'07/01/2007'},
  136.     {projectId: 101, project: 'Ext Grid: Single-level Grouping', taskId: 102, description: 'Extend GridView and override rendering functions', estimate: 6, rate: 100, due:'07/03/2007'},
  137.     {projectId: 101, project: 'Ext Grid: Single-level Grouping', taskId: 103, description: 'Extend Store with grouping functionality', estimate: 4, rate: 100, due:'07/04/2007'},
  138.     {projectId: 101, project: 'Ext Grid: Single-level Grouping', taskId: 121, description: 'Default CSS Styling', estimate: 2, rate: 100, due:'07/05/2007'},
  139.     {projectId: 101, project: 'Ext Grid: Single-level Grouping', taskId: 104, description: 'Testing and debugging', estimate: 6, rate: 100, due:'07/06/2007'},
  140.     {projectId: 102, project: 'Ext Grid: Summary Rows', taskId: 105, description: 'Ext Grid plugin integration', estimate: 4, rate: 125, due:'07/01/2007'},
  141.     {projectId: 102, project: 'Ext Grid: Summary Rows', taskId: 106, description: 'Summary creation during rendering phase', estimate: 4, rate: 125, due:'07/02/2007'},
  142.     {projectId: 102, project: 'Ext Grid: Summary Rows', taskId: 107, description: 'Dynamic summary updates in editor grids', estimate: 6, rate: 125, due:'07/05/2007'},
  143.     {projectId: 102, project: 'Ext Grid: Summary Rows', taskId: 108, description: 'Remote summary integration', estimate: 4, rate: 125, due:'07/05/2007'},
  144.     {projectId: 102, project: 'Ext Grid: Summary Rows', taskId: 109, description: 'Summary renderers and calculators', estimate: 4, rate: 125, due:'07/06/2007'},
  145.     {projectId: 102, project: 'Ext Grid: Summary Rows', taskId: 110, description: 'Integrate summaries with GroupingView', estimate: 10, rate: 125, due:'07/11/2007'},
  146.     {projectId: 102, project: 'Ext Grid: Summary Rows', taskId: 111, description: 'Testing and debugging', estimate: 8, rate: 125, due:'07/15/2007'}
  147. ];