grid.common.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. Ext.ns('VersionX.grid.Common');
  2. VersionX.grid.Common.DetailGrid = function(config) {
  3. config = config || {};
  4. Ext.apply(config,{
  5. autoHeight: true,
  6. width: '98%',
  7. viewConfig: {
  8. forceFit: true,
  9. enableRowBody: true
  10. },
  11. fields: [
  12. {name: 'fieldName', type: 'string'},
  13. {name: 'fieldValue', type: 'string'},
  14. {name: 'fieldValueCmp', type: 'string'},
  15. {name: 'different', type: 'bool'}
  16. ],
  17. columns: [
  18. {
  19. header: _('versionx.resources.detail.grid.columns.field-name'),
  20. dataIndex: 'fieldName',
  21. sortable: true,
  22. width: .25
  23. },
  24. {
  25. header: _('versionx.resources.detail.grid.columns.field-value', {id:config.vxRecord.version_id}),
  26. dataIndex: 'fieldValue',
  27. sortable: true,
  28. width: .375,
  29. renderer: function(value, meta, record) {
  30. if (record.data.different) {
  31. meta.css += ' vx-added';
  32. }
  33. return value;
  34. }
  35. }
  36. ]
  37. });
  38. // Populate data
  39. if ( typeof config.vxFieldMap != 'undefined' ) {
  40. config.data = [];
  41. var length = config.vxFieldMap.length;
  42. for ( var i = 0; i < length; i++ ) {
  43. if (config.vxFieldMap[i].enumerate) {
  44. var different = config.vxRecordCmp &&
  45. JSON.stringify(config.vxRecordCmp[config.vxFieldMap[i].key], null, 2) !== JSON.stringify(config.vxRecord[config.vxFieldMap[i].key], null, 2);
  46. config.data.push([
  47. _(config.vxFieldMap[i].lexicon),
  48. '<pre>'+JSON.stringify(config.vxRecord[config.vxFieldMap[i].key], null, 2) + '</pre>',
  49. config.vxRecordCmp ? '<pre>'+JSON.stringify(config.vxRecordCmp[config.vxFieldMap[i].key], null, 2) + '</pre>' : '',
  50. different
  51. ]);
  52. } else {
  53. var different = config.vxRecordCmp && config.vxRecord[config.vxFieldMap[i].key] !== config.vxRecordCmp[config.vxFieldMap[i].key];
  54. config.data.push([
  55. _(config.vxFieldMap[i].lexicon),
  56. config.vxRecord[config.vxFieldMap[i].key],
  57. config.vxRecordCmp ? config.vxRecordCmp[config.vxFieldMap[i].key] : '',
  58. different
  59. ]);
  60. }
  61. }
  62. }
  63. if ( config.vxRecordCmp ) {
  64. config.columns.push({
  65. header: _('versionx.resources.detail.grid.columns.field-value', {id:config.vxRecordCmp.version_id}),
  66. dataIndex: 'fieldValueCmp',
  67. sortable: true,
  68. width: .375
  69. });
  70. }
  71. VersionX.grid.Common.DetailGrid.superclass.constructor.call(this,config);
  72. };
  73. Ext.extend(VersionX.grid.Common.DetailGrid,MODx.grid.LocalGrid,{});
  74. Ext.reg('versionx-grid-common-detailgrid',VersionX.grid.Common.DetailGrid);