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