+++ /dev/null
-/*!
- * Ext JS Library 3.3.1
- * Copyright(c) 2006-2010 Sencha Inc.
- * licensing@sencha.com
- * http://www.sencha.com/license
- */
-/**\r
- * @class pivot.ConfigPanel\r
- * @extends Ext.Panel\r
- * A configuration panel used for modifying the properties of a PivotGrid.\r
- */\r
-pivot.ConfigPanel = Ext.extend(Ext.Panel, {\r
- title: 'Configure',\r
- layout: {\r
- type: 'vbox',\r
- align: 'stretch'\r
- },\r
- /**\r
- * @cfg {Ext.data.Record} record The Ext.data.Record to extract the field list from. Required\r
- */\r
-\r
- initComponent: function() {\r
- var fields = this.getRecordFields();\r
-\r
- /**\r
- * @property form\r
- * @type Ext.form.FormPanel\r
- * Used to set the measure and aggregation function\r
- */\r
- this.form = new Ext.Container({\r
- layout: 'form',\r
- style: 'padding: 7px',\r
- items: [{\r
- xtype: 'combo',\r
- mode: 'local',\r
- triggerAction: 'all',\r
- forceSelection: true,\r
- editable: false,\r
- anchor: "0",\r
- fieldLabel: 'Measure',\r
- ref: '/measure',\r
- name: 'measure',\r
- displayField: 'name',\r
- valueField: 'name',\r
- value: this.measure || this.measures[0],\r
- store: this.getMeasureStore()\r
- }, {\r xtype: 'combo',\r
- mode: 'local',\r
- triggerAction: 'all',\r forceSelection: true,\r editable: false,\r anchor: "0",\r fieldLabel: 'Aggregator',\r ref: '/aggregator',\r
- name: 'aggregator',\r
- displayField: 'name',\r valueField: 'value',\r value: this.aggregator,\r
- store: new Ext.data.JsonStore({\r
- fields : ['name', 'value'],\r
- data : [\r
- {name : 'Sum', value: 'sum'},\r
- {name : 'Count', value: 'count'},\r
- {name : 'Min', value: 'min'},\r
- {name : 'Max', value: 'max'},\r
- {name : 'Average', value: 'avg'}\r
- ]\r
- })\r
- }]\r
- });\r
-\r
- /**\r
- * @property leftAxisGrid\r
- * @type pivot.AxisGrid\r
- */\r
- this.leftAxisGrid = new pivot.AxisGrid({\r
- title : 'Left Axis',\r
- fields: fields,\r
- dimensionData: this.leftAxisDimensions || [],\r
- hasWidthField: true\r
- });\r
-\r
- /**\r
- * @property topAxisGrid\r
- * @type pivot.AxisGrid\r
- */\r
- this.topAxisGrid = new pivot.AxisGrid({\r
- title : 'Top Axis',\r
- fields: fields,\r
- dimensionData: this.topAxisDimensions || []\r
- });\r
-\r
- Ext.applyIf(this, {\r
- items: [\r
- this.form,\r
- this.topAxisGrid,\r
- this.leftAxisGrid\r
- ],\r
- fbar: {\r
- buttonAlign: 'left',\r
- items: [{\r
- icon : '../shared/icons/fam/accept.png',\r
- text : 'Update',\r
- scope : this,\r
- handler: this.updateGrid\r
- }]\r
- }\r
- });\r
- \r
- pivot.ConfigPanel.superclass.initComponent.apply(this, arguments);\r
- },\r
-\r
- /**\r
- * @private\r
- * Retrieves the configured axis dimensions for the top and left grids and updates the PivotGrid accordingly\r
- */\r
- updateGrid: function() {\r
- var leftDimensions = [],\r
- topDimensions = [],\r
- leftGridItems = this.leftAxisGrid.store.data.items,\r
- topGridItems = this.topAxisGrid.store.data.items,\r
- i;\r
-\r
- for (i = 0; i < leftGridItems.length; i++) {\r
- leftDimensions.push({\r
- dataIndex: leftGridItems[i].get('field'),\r
- direction: leftGridItems[i].get('direction'),\r
- width : leftGridItems[i].get('width')\r
- });\r
- }\r
-\r
- for (i = 0; i < topGridItems.length; i++) {\r
- topDimensions.push({\r
- dataIndex: topGridItems[i].get('field'),\r
- direction: topGridItems[i].get('direction')\r
- });\r
- }\r
-\r
- this.fireEvent('update', {\r
- leftDimensions: leftDimensions,\r
- topDimensions : topDimensions,\r
- aggregator : this.aggregator.getValue(),\r
- measure : this.measure.getValue()\r
- });\r
- },\r
-\r
- /**\r
- * Extracts the field names from the configured record\r
- * @return {Array} The set of Record fields\r
- */\r
- getRecordFields: function() {\r
- return Ext.pluck(this.record.prototype.fields.items, 'name');\r
- },\r
-\r
- /**\r
- * @private\r
- * @return {Ext.data.Store} The store\r
- */\r
- getMeasureStore: function() {\r
- /**\r
- * @property measureStore\r
- * @type Ext.data.JsonStore\r
- * The store bound to the combo for selecting the field\r
- */\r
- if (this.measureStore == undefined) {\r
- var fields = [],\r
- measures = this.measures,\r
- length = measures.length,\r
- i;\r
-\r
- for (i = 0; i < length; i++) {\r
- fields[i] = [measures[i]];\r
- }\r
-\r
- this.measureStore = new Ext.data.ArrayStore({\r
- fields: ['name'],\r
- data : fields\r
- });\r
- }\r
-\r
- return this.measureStore; \r
- }\r
-});\r
-\r
-Ext.reg('pivotconfig', pivot.ConfigPanel);
\ No newline at end of file