]>
Commit | Line | Data |
---|---|---|
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 | |
32 | Ext.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 |