/** * The Controller for the BigData view. * * Provides logic which is referenced by listeners, handlers and renderers in the view which are configured * as strings. They are resolved to members of this class. * */ Ext.define('uas.view.grid.bigData.PanelController', { extend: 'Ext.app.ViewController', alias: 'controller.bigdata', init: function() { // RowEditing not appropriate for touch devices if (!Ext.supports.Touch) { // Plugins are instantiated at this time, we must add an instantiated Plugin, not a config this.getView().getPlugins().push(Ext.create({ xclass: 'Ext.grid.plugin.RowEditing', clicksToMoveEditor: 1, autoCancel: false })); } }, // Used as a column renderer by BigData: resolved using defaultListenerScope concatNames: function(v, cellValues, rec) { return rec.get('forename') + ' ' + rec.get('surname'); }, // Used as an editRenderer by BigData to display an uneditable field in the RowEditor bold: function(v) { return "" + v + ""; }, nameSorter: function (rec1, rec2) { // Sort prioritizing surname over forename as would be expected. var rec1Name = rec1.get('surname') + rec1.get('forename'), rec2Name = rec2.get('surname') + rec2.get('forename'); if (rec1Name > rec2Name) { return 1; } if (rec1Name < rec2Name) { return -1; } return 0; }, onBeforeRenderNoticeEditor: function (editor) { var view = this.getView(), store = view.store; editor.setStore(store.collect('noticePeriod', false, true)); }, onNameFilterKeyup: function() { var grid = this.getView(), // Access the field using its "reference" property name. filterField = this.lookupReference('nameFilterField'), filters = grid.store.getFilters(); if (filterField.value) { this.nameFilter = filters.add({ id : 'nameFilter', property : 'name', value : filterField.value, anyMatch : true, caseSensitive : false }); } else if (this.nameFilter) { filters.remove(this.nameFilter); this.nameFilter = null; } }, onShowHeadersToggle: function(checkItem, checked) { this.getView().setHeaderBorders(checked); }, renderMailto: function (v) { return '' + Ext.htmlEncode(v) + ''; }, });