dependencies.grid.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. fred.grid.Dependencies = function (config) {
  2. config = config || {};
  3. Ext.applyIf(config, {
  4. remoteSort: false,
  5. fields: ['name', 'version'],
  6. height: 250,
  7. columns: [
  8. {
  9. header: _('fred.themes.package_name'),
  10. dataIndex: 'name',
  11. width: 120,
  12. sortable: true,
  13. editor: {xtype: 'fred-combo-installed-packages'}
  14. },
  15. {
  16. header: _('fred.themes.version'),
  17. dataIndex: 'version',
  18. width: 120,
  19. sortable: true,
  20. editor: {xtype: 'textfield'}
  21. }
  22. ],
  23. listeners: {
  24. beforerender: this.fillGrid,
  25. beforeedit: function(data) {
  26. if ((data.field === 'name') && (data.value === 'fred')) {
  27. return false;
  28. }
  29. return true;
  30. },
  31. validateedit: function(data) {
  32. var valid = true;
  33. this.store.each(function (record, index) {
  34. if ((index !== data.row) && record.data.name.toLowerCase() === data.value.toLowerCase()) {
  35. valid = false;
  36. return false;
  37. }
  38. });
  39. if (!valid) {
  40. MODx.msg.alert('Error', 'Package Name must be unique');
  41. return false;
  42. }
  43. return valid;
  44. }
  45. },
  46. tbar: [
  47. {
  48. text: _('fred.themes.add_dependency'),
  49. handler: this.addDependency
  50. }
  51. ]
  52. });
  53. fred.grid.Dependencies.superclass.constructor.call(this, config);
  54. };
  55. Ext.extend(fred.grid.Dependencies, fred.grid.LocalGearGrid, {
  56. _loadStore: function (config) {
  57. return new Ext.data.JsonStore({
  58. fields: config.fields,
  59. remoteSort: false,
  60. idProperty: 'name'
  61. });
  62. },
  63. getMenu: function() {
  64. return [
  65. {
  66. text: _('fred.themes.remove_dependency'),
  67. handler: this.removeDependency
  68. }
  69. ];
  70. },
  71. fillGrid: function (prepare) {
  72. if (this.config && this.config.initValue && Array.isArray(this.config.initValue)) {
  73. prepare.store.loadData(this.config.initValue);
  74. } else {
  75. prepare.store.loadData([{name: "fred", version: '*'}]);
  76. }
  77. },
  78. addDependency: function(btn, e) {
  79. this.stopEditing();
  80. this.store.add(new this.store.recordType({name: '', version: '*'}));
  81. this.startEditing(this.store.getCount() - 1, 0);
  82. },
  83. removeDependency: function() {
  84. if (this.menu.record.name === 'fred') {
  85. MODx.msg.alert(_('fred.err.fred_dependency_title'), _('fred.err.fred_dependency_body'));
  86. return;
  87. }
  88. this.store.removeAt(this.menu.recordIndex);
  89. }
  90. });
  91. Ext.reg('fred-grid-dependencies', fred.grid.Dependencies);