Mercurial > lada > lada-client
view app/view/plugin/GridRowExpander.js @ 1293:16a80ca16732
map feature visibility, selection and grid layout
messpunkt layer is now visible per default when in editing mode
on selection in map, the form is updated
ortszuordnung buttons should not render over grid anymore
author | Maximilian Krambach <mkrambach@intevation.de> |
---|---|
date | Wed, 01 Feb 2017 19:38:06 +0100 |
parents | 4a55e665f2d1 |
children |
line wrap: on
line source
Ext.define('Lada.view.plugin.GridRowExpander', { extend: 'Ext.grid.plugin.RowExpander', alias: 'plugin.gridrowexpander', rowBodyTpl: ' ', loadingMessage: '<div class="x-grid-rowbody-loading">Loading...</div>', type: null, gridConfig: null, constructor: function(config) { var me = this; var tpl = config.rowBodyTpl || me.rowBodyTpl; var cmps; me.type = config.gridType; me.gridConfig = config.gridConfig; me.callParent(arguments); cmps = me.cmps = new Ext.util.MixedCollection(null, function(o) { return o.recordId; }); cmps.on('remove', me.onCmpRemove, me); me.rowBodyTpl = new Ext.XTemplate(tpl); }, init: function(grid) { var me = this; var view = grid.getView(); view.processUIEvent = me.createProcessUIEvent(view.processUIEvent); me.callParent(arguments); }, destroy: function() { var cmps = this.cmps; cmps.removeAll(); this.callParent(); }, onCmpRemove: function(cmp) { cmp.destroy(); }, createProcessUIEvent: function(oldFn) { var grid = this.getCmp(); return function(e) { var me = this; var item = e.getTarget(me.dataRowSelector || me.itemSelector, me.getTargetEl()); var row; var eGrid; row = Ext.fly(item); if (row) { eGrid = row.up('.x-grid'); // grid el of UI event } if (eGrid && eGrid.id !== grid.el.id) { if (e.type !== 'contextmenu' && e.type !== 'keydown') { e.stopEvent(); } return null; } return oldFn.apply(me, arguments); }; }, toggleRow: function(rowIdx) { var me = this; var rowNode = me.view.getNode(rowIdx); var row = Ext.get(rowNode); var nextBd = Ext.get(row).down(this.rowBodyTrSelector); var expandDiv = nextBd.down('div.x-grid-rowbody'); var record = me.view.getRecord(rowNode); if (row.hasCls(me.rowCollapsedCls)) { row.removeCls(me.rowCollapsedCls); nextBd.removeCls(me.rowBodyHiddenCls); me.recordsExpanded[record.internalId] = true; me.showCmp(expandDiv, record); me.view.fireEvent('expandbody', rowNode, record, nextBd.dom); } else { row.addCls(me.rowCollapsedCls); nextBd.addCls(me.rowBodyHiddenCls); me.recordsExpanded[record.internalId] = false; me.collapseCmp(expandDiv, record); me.view.fireEvent('collapsebody', rowNode, record, nextBd.dom); } }, createCmp: function(record, id, config) { var me = this; var gridConfig = config.gridConfig; Ext.apply(gridConfig, { recordId: record.get('id'), cls: 'row-expander-grid' }); var grid = Ext.create(me.type, gridConfig); return grid; }, showCmp: function(row, record) { var me = this; var cmps = me.cmps; var id = record.getObservableId(); var idx = cmps.findIndex('recordId', id); var cmp = cmps.getAt(idx); var gridConfig = me.gridConfig; if (!cmp) { row.update(me.loadingMessage); cmp = me.cmps.add(me.createCmp(record, id, { gridConfig: gridConfig })); } row.update(''); cmp.render(row); }, getInnerCmp: function(record) { return this.cmps.getByKey( record.getObservableId() ); }, collapseCmp: function(row, record) { var me = this; var cmps = me.cmps; var id = record.getObservableId(); var idx = cmps.findIndex('recordId', id); var cmp = cmps.getAt(idx); cmps.remove(cmp); cmp.destroy(); } });