/** * This class is used internally by the pivot grid component. * @private */Ext.define('Ext.pivot.cell.Cell', { extend: 'Ext.grid.cell.Cell', xtype: 'pivotgridcell', config: { eventCell: true, collapsible: null }, // outline view css classes outlineGroupHeaderCls: Ext.baseCSSPrefix + 'pivot-grid-group-header-outline', outlineCellHiddenCls: Ext.baseCSSPrefix + 'pivot-grid-outline-cell-hidden', outlineCellGroupExpandedCls: Ext.baseCSSPrefix + 'pivot-grid-outline-cell-previous-expanded', // compact view css classes compactGroupHeaderCls: Ext.baseCSSPrefix + 'pivot-grid-group-header-compact', compactLayoutPadding: 25, // tabular view css classes tabularGroupHeaderCls: Ext.baseCSSPrefix + 'pivot-grid-group-header-tabular', encodeHtml: false, onRender: function () { var me = this, dataIndex = me.dataIndex, model = me.getViewModel(), record = me.getRecord(), matrix; me.callParent(); if (model && dataIndex) { matrix = me.row.getGrid().getMatrix(); model.setData({ column: matrix.modelInfo[dataIndex] || {}, value: me.getValue(), record: record }); } }, handleEvent: function(type, e){ var me = this, row = me.row, grid = row.getGrid(), record = me.getRecord(), params = { grid: grid }, info, eventName, ret, column, leftKey, topKey, matrix, leftItem, topItem; if(!record){ return; } eventName = row.getEventName() || ''; info = row.getRecordInfo(record); matrix = grid.getMatrix(); column = me.getColumn(); leftItem = info.rendererParams[column._dataIndex]; if(!leftItem){ leftItem = info.rendererParams['topaxis']; } leftItem = leftItem ? leftItem.group : null; leftKey = leftItem ? leftItem.key : info.leftKey; Ext.apply(params, { cell: me, leftKey: leftKey, leftItem: leftItem, column: column }); if (me.getEventCell()) { eventName += 'cell'; topKey = grid.getTopAxisKey(params.column); params.topKey = topKey; if(topKey){ topItem = matrix.topAxis.findTreeElement('key', topKey); topItem = topItem ? topItem.node : null; if(topItem) { Ext.apply(params, { topItem: topItem, dimensionId: topItem.dimensionId }); } } } ret = grid.fireEvent(eventName + type, params, e); if(ret !== false && type == 'tap' && me.getCollapsible()){ if(leftItem.expanded){ leftItem.collapse(); }else{ leftItem.expand(); } } return false; }, updateRecord: function (record, oldRecord) { var model = this.getViewModel(); this.callParent([ record, oldRecord ]); if (model) { model.setData({ value: this.getValue(), record: record }); } }});