]> git.proxmox.com Git - extjs.git/blame - extjs/classic/classic/src/grid/column/Template.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / classic / src / grid / column / Template.js
CommitLineData
6527f429
DM
1/**\r
2 * A Column definition class which renders a value by processing a {@link Ext.data.Model Model}'s\r
3 * {@link Ext.data.Model#getData data} using a {@link #tpl configured}\r
4 * {@link Ext.XTemplate XTemplate}.\r
5 *\r
6 * @example\r
7 * Ext.create('Ext.data.Store', {\r
8 * storeId:'employeeStore',\r
9 * fields:['firstname', 'lastname', 'seniority', 'department'],\r
10 * groupField: 'department',\r
11 * data:[\r
12 * { firstname: "Michael", lastname: "Scott", seniority: 7, department: "Management" },\r
13 * { firstname: "Dwight", lastname: "Schrute", seniority: 2, department: "Sales" },\r
14 * { firstname: "Jim", lastname: "Halpert", seniority: 3, department: "Sales" },\r
15 * { firstname: "Kevin", lastname: "Malone", seniority: 4, department: "Accounting" },\r
16 * { firstname: "Angela", lastname: "Martin", seniority: 5, department: "Accounting" }\r
17 * ]\r
18 * });\r
19 *\r
20 * Ext.create('Ext.grid.Panel', {\r
21 * title: 'Column Template Demo',\r
22 * store: Ext.data.StoreManager.lookup('employeeStore'),\r
23 * columns: [\r
24 * { text: 'Full Name', xtype: 'templatecolumn', tpl: '{firstname} {lastname}', flex:1 },\r
25 * { text: 'Department (Yrs)', xtype: 'templatecolumn', tpl: '{department} ({seniority})' }\r
26 * ],\r
27 * height: 200,\r
28 * width: 300,\r
29 * renderTo: Ext.getBody()\r
30 * });\r
31 */\r
32Ext.define('Ext.grid.column.Template', {\r
33 extend: 'Ext.grid.column.Column',\r
34 alias: ['widget.templatecolumn'],\r
35 requires: ['Ext.XTemplate'],\r
36 alternateClassName: 'Ext.grid.TemplateColumn',\r
37\r
38 /**\r
39 * @cfg {String/Ext.XTemplate} tpl\r
40 * An {@link Ext.XTemplate XTemplate}, or an XTemplate *definition string* to use to process a\r
41 * {@link Ext.data.Model Model}'s data object to produce a cell's rendered value.\r
42 */\r
43\r
44 /**\r
45 * @cfg {Object} renderer\r
46 * @hide\r
47 */\r
48\r
49 /**\r
50 * @cfg {Object} scope\r
51 * @hide\r
52 */\r
53\r
54 initComponent: function(){\r
55 var me = this;\r
56 me.tpl = (!Ext.isPrimitive(me.tpl) && me.tpl.compile) ? me.tpl : new Ext.XTemplate(me.tpl);\r
57 // Set this here since the template may access any record values,\r
58 // so we must always run the update for this column\r
59 me.hasCustomRenderer = true;\r
60 me.callParent(arguments);\r
61 },\r
62\r
63 defaultRenderer: function(value, meta, record) {\r
64 var data = Ext.apply({}, record.data, record.getAssociatedData());\r
65 return this.tpl.apply(data);\r
66 },\r
67\r
68 updater: function(cell, value) {\r
69 Ext.fly(cell).down(this.getView().innerSelector, true).innerHTML = Ext.grid.column.CheckColumn.prototype.defaultRenderer.call(this, value);\r
70 }\r
71});\r