PanelController.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /**
  2. * The Controller for the BigData view.
  3. *
  4. * Provides logic which is referenced by listeners, handlers and renderers in the view which are configured
  5. * as strings. They are resolved to members of this class.
  6. *
  7. */
  8. Ext.define('uas.view.grid.bigData.PanelController', {
  9. extend: 'Ext.app.ViewController',
  10. alias: 'controller.bigdata',
  11. init: function() {
  12. // RowEditing not appropriate for touch devices
  13. if (!Ext.supports.Touch) {
  14. // Plugins are instantiated at this time, we must add an instantiated Plugin, not a config
  15. this.getView().getPlugins().push(Ext.create({
  16. xclass: 'Ext.grid.plugin.RowEditing',
  17. clicksToMoveEditor: 1,
  18. autoCancel: false
  19. }));
  20. }
  21. },
  22. // Used as a column renderer by BigData: resolved using defaultListenerScope
  23. concatNames: function(v, cellValues, rec) {
  24. return rec.get('forename') + ' ' + rec.get('surname');
  25. },
  26. // Used as an editRenderer by BigData to display an uneditable field in the RowEditor
  27. bold: function(v) {
  28. return "<b>" + v + "</b>";
  29. },
  30. nameSorter: function (rec1, rec2) {
  31. // Sort prioritizing surname over forename as would be expected.
  32. var rec1Name = rec1.get('surname') + rec1.get('forename'),
  33. rec2Name = rec2.get('surname') + rec2.get('forename');
  34. if (rec1Name > rec2Name) {
  35. return 1;
  36. }
  37. if (rec1Name < rec2Name) {
  38. return -1;
  39. }
  40. return 0;
  41. },
  42. onBeforeRenderNoticeEditor: function (editor) {
  43. var view = this.getView(),
  44. store = view.store;
  45. editor.setStore(store.collect('noticePeriod', false, true));
  46. },
  47. onNameFilterKeyup: function() {
  48. var grid = this.getView(),
  49. // Access the field using its "reference" property name.
  50. filterField = this.lookupReference('nameFilterField'),
  51. filters = grid.store.getFilters();
  52. if (filterField.value) {
  53. this.nameFilter = filters.add({
  54. id : 'nameFilter',
  55. property : 'name',
  56. value : filterField.value,
  57. anyMatch : true,
  58. caseSensitive : false
  59. });
  60. } else if (this.nameFilter) {
  61. filters.remove(this.nameFilter);
  62. this.nameFilter = null;
  63. }
  64. },
  65. onShowHeadersToggle: function(checkItem, checked) {
  66. this.getView().setHeaderBorders(checked);
  67. },
  68. renderMailto: function (v) {
  69. return '<a href="mailto:' + encodeURIComponent(v) + '">' +
  70. Ext.htmlEncode(v) + '</a>';
  71. },
  72. });