]> git.proxmox.com Git - extjs.git/blame - extjs/examples/kitchensink/classic/samples/view/grid/LockingGrid.js
add extjs 6.0.1 sources
[extjs.git] / extjs / examples / kitchensink / classic / samples / view / grid / LockingGrid.js
CommitLineData
6527f429
DM
1/**\r
2 * This example shows how to achieve "freeze pane" locking functionality similar to Excel.\r
3 *\r
4 * Columns may be locked or unlocked by dragging them across into the opposite side, or\r
5 * by using the column's header menu.\r
6 *\r
7 * The "Price" column is not lockable, and may not be dragged into the locked side, or\r
8 * locked using the header menu.\r
9 *\r
10 * It is not possible to lock all columns using the user interface. The unlocked side must\r
11 * always contain at least one column.\r
12 *\r
13 * There is also an initially hidden "Tall Header" that shows wrapping header text.'\r
14 */\r
15Ext.define('KitchenSink.view.grid.LockingGrid', {\r
16 extend: 'Ext.grid.Panel',\r
17 requires: [\r
18 'Ext.grid.RowNumberer'\r
19 ],\r
20 xtype: 'locking-grid',\r
21 store: 'Companies',\r
22 columnLines: true,\r
23 height: 350,\r
24 width: 600,\r
25 title: 'Locking Grid',\r
26\r
27 // There is no asymmetric data, we do not need to go to the expense of synching row heights\r
28 syncRowHeight: false,\r
29\r
30 //<example>\r
31 otherContent: [{\r
32 type: 'Store',\r
33 path: 'classic/samples/store/Companies.js'\r
34 },{\r
35 type: 'Model',\r
36 path: 'classic/samples/model/Company.js'\r
37 }],\r
38 profiles: {\r
39 classic: {\r
40 },\r
41 neptune: {\r
42 }\r
43 },\r
44 //</example>\r
45\r
46 initComponent: function () {\r
47 this.columns = [{\r
48 xtype: 'rownumberer'\r
49 }, {\r
50 text : 'Company Name',\r
51 locked : true,\r
52 width : 230,\r
53 sortable : false,\r
54 dataIndex: 'name'\r
55 }, {\r
56 text : 'Price',\r
57 lockable: false,\r
58 width : 80,\r
59 sortable : true,\r
60 formatter: 'usMoney',\r
61 dataIndex: 'price'\r
62 }, {\r
63 text : 'Tall<br>Header',\r
64 hidden : true,\r
65 width : 70,\r
66 sortable : false,\r
67 renderer : function(val) {\r
68 return Math.round(val * 3.14 * 100) / 10;\r
69 },\r
70 dataIndex: 'change'\r
71 }, {\r
72 text : 'Change',\r
73 width : 90,\r
74 sortable : true,\r
75 renderer : function(val) {\r
76 if (val > 0) {\r
77 return '<span style="color:green;">' + val + '</span>';\r
78 } else if (val < 0) {\r
79 return '<span style="color:red;">' + val + '</span>';\r
80 }\r
81 return val;\r
82 },\r
83 dataIndex: 'change'\r
84 }, {\r
85 text : '% Change',\r
86 width : 105,\r
87 sortable : true,\r
88 renderer : function(val) {\r
89 if (val > 0) {\r
90 return '<span style="color:green;">' + val + '%</span>';\r
91 } else if (val < 0) {\r
92 return '<span style="color:red;">' + val + '%</span>';\r
93 }\r
94 return val;\r
95 },\r
96 dataIndex: 'pctChange'\r
97 }, {\r
98 text : 'Last Updated',\r
99 width : 135,\r
100 sortable : true,\r
101 formatter: 'date("m/d/Y")',\r
102 dataIndex: 'lastChange'\r
103 }];\r
104\r
105 this.callParent();\r
106 }\r
107});\r