Ext.grid.Column-multipleRendererSupport.js (2568B)
1 /** 2 * Enhances grid columns to support multiple renderers. 3 */ 4 Ext.define("PartKeepr.ExtJS.Enhancements.Grid.MultipleRendererSupport", { 5 override: "Ext.grid.Column", 6 7 rendererInstances: [], 8 9 initComponent: function () 10 { 11 var i, rendererDef, rendererClass; 12 13 if (this.$className !== "Ext.grid.column.Column") { 14 return this.callParent(arguments); 15 } 16 17 this.originalRenderer = this.renderer; 18 this.originalScope = this.scope; 19 this.scope = this; 20 this.renderer = this.doRender; 21 22 23 this.callParent(arguments); 24 25 26 if (!this.renderers) 27 { 28 this.renderers = []; 29 } 30 31 32 if (!(this.renderers instanceof Array)) 33 { 34 this.renderers = [this.renderers]; 35 } 36 37 this.rendererInstances = []; 38 39 for (i = 0; i < this.renderers.length; i++) 40 { 41 rendererDef = this.renderers[i]; 42 43 if (typeof(rendererDef) === "string") 44 { 45 rendererClass = PartKeepr.Components.Grid.Renderers.RendererRegistry.lookupRenderer(rendererDef); 46 47 this.rendererInstances.push(Ext.create(rendererClass)); 48 continue; 49 } 50 51 if (typeof(rendererDef) === "object" && rendererDef.rtype) 52 { 53 rendererClass = PartKeepr.Components.Grid.Renderers.RendererRegistry.lookupRenderer(rendererDef.rtype); 54 this.rendererInstances.push(Ext.create(rendererClass, rendererDef)); 55 continue; 56 } 57 58 if (rendererDef instanceof PartKeepr.Components.Grid.Renderers.AbstractRenderer) 59 { 60 Ext.raise("Passing a renderer instance is prohibited!"); 61 continue; 62 } 63 64 Ext.raise("No valid renderers definition found for entry:"); 65 Ext.raise(rendererDef); 66 } 67 }, 68 doRender: function (value, metaData, record, rowIndex, colIndex, store, view) 69 { 70 var i; 71 72 value = Ext.util.Format.htmlEncode(value); 73 74 for (i = 0; i < this.rendererInstances.length; i++) 75 { 76 value = this.rendererInstances[i].renderer.call(this.originalScope, value, metaData, record, rowIndex, colIndex, store, view, this.rendererInstances[i]); 77 } 78 79 if (typeof(this.originalRenderer) === "function") 80 { 81 return this.originalRenderer.call(this.originalScope, value, metaData, record, rowIndex, colIndex, store, view); 82 } else { 83 return value; 84 } 85 } 86 });