]> git.proxmox.com Git - extjs.git/blame - extjs/build/examples/kitchensink/classic/samples/view/dd/FieldToGrid.js
add extjs 6.0.1 sources
[extjs.git] / extjs / build / examples / kitchensink / classic / samples / view / dd / FieldToGrid.js
CommitLineData
6527f429
DM
1/**\r
2 * This example assumes prior knowledge of using a GridPanel.\r
3 *\r
4 * This illustrates how a DragZone can manage an arbitrary number of drag sources, and how\r
5 * a DropZone can manage an arbitrary number of targets.\r
6 *\r
7 * Fields are editable. Drag the fields into the grid using the label as the handle.\r
8 */\r
9Ext.define('KitchenSink.view.dd.FieldToGrid', {\r
10 extend: 'Ext.container.Container',\r
11 \r
12 requires: [\r
13 'Ext.ux.dd.CellFieldDropZone',\r
14 'Ext.ux.dd.PanelFieldDragZone',\r
15 'Ext.grid.*',\r
16 'Ext.form.*',\r
17 'KitchenSink.model.Company',\r
18 'Ext.layout.container.VBox'\r
19 ], \r
20 xtype: 'dd-field-to-grid',\r
21 \r
22 //<example>\r
23 exampleTitle: 'Using a GridPanel as a DropZone managing each grid cell as a target',\r
24 otherContent: [{\r
25 type: 'Model',\r
26 path: 'classic/samples/model/Company.js'\r
27 },{\r
28 type: 'Data',\r
29 path: 'classic/samples/data/DataSets.js'\r
30 }],\r
31 profiles: {\r
32 classic: {\r
33 percentChangeColumnWidth: 75,\r
34 lastUpdatedColumnWidth: 85\r
35 },\r
36 neptune: {\r
37 percentChangeColumnWidth: 100,\r
38 lastUpdatedColumnWidth: 115\r
39 }\r
40 },\r
41 //</example>\r
42 \r
43 width: 700,\r
44 height: 450,\r
45 layout: {\r
46 type: 'vbox',\r
47 align: 'stretch'\r
48 },\r
49 \r
50 initComponent: function(){\r
51 var store = new Ext.data.Store({\r
52 model: KitchenSink.model.Company,\r
53 proxy: {\r
54 type: 'memory',\r
55 reader: {\r
56 type: 'array'\r
57 }\r
58 },\r
59 data: KitchenSink.data.DataSets.company\r
60 }), group = this.id + 'ddGroup';\r
61 \r
62 Ext.apply(this, {\r
63 items: [{\r
64 flex: 1,\r
65 xtype: 'gridpanel',\r
66 plugins: new Ext.ux.dd.CellFieldDropZone({\r
67 ddGroup: group,\r
68 onCellDrop: function(field){\r
69 var sorter = store.sorters.first();\r
70 if (sorter && sorter.property == field) {\r
71 store.sort();\r
72 }\r
73 }\r
74 }),\r
75 store: store,\r
76 columns: [{\r
77 id:'company',\r
78 header: 'Company', \r
79 sortable: true, \r
80 dataIndex: 'name', \r
81 flex: 1\r
82 }, {\r
83 header: 'Price', \r
84 width: 75, \r
85 sortable: true, \r
86 formatter: 'usMoney',\r
87 dataIndex: 'price'\r
88 }, {\r
89 header: 'Change', \r
90 width: 80, \r
91 sortable: true, \r
92 renderer: this.changeRenderer, \r
93 dataIndex: 'change'\r
94 }, {\r
95 header: '% Change', \r
96 width: this.profileInfo.percentChangeColumnWidth,\r
97 sortable: true, \r
98 renderer: this.pctChangeRenderer, \r
99 dataIndex: 'pctChange'\r
100 }, {\r
101 header: 'Last Updated', \r
102 width: this.profileInfo.lastUpdatedColumnWidth,\r
103 sortable: true,\r
104 formatter: 'date("m/d/Y")',\r
105 dataIndex: 'lastChange'\r
106 }],\r
107 stripeRows: true,\r
108 title: 'Company Grid'\r
109 }, {\r
110 frame: true,\r
111 margin: '10 0 0 0',\r
112 bodyPadding: 5,\r
113 plugins: new Ext.ux.dd.PanelFieldDragZone({\r
114 ddGroup: group\r
115 }),\r
116 defaults: {\r
117 labelWidth: 150\r
118 },\r
119 items: [{\r
120 xtype: 'textfield',\r
121 fieldLabel: 'Drag this text',\r
122 value: 'test'\r
123 },{\r
124 xtype: 'numberfield',\r
125 fieldLabel: 'Drag this number',\r
126 value: '1.2'\r
127 },{\r
128 xtype: 'datefield',\r
129 fieldLabel: 'Drag this date',\r
130 value: new Date()\r
131 }]\r
132 }]\r
133 });\r
134 this.callParent();\r
135 },\r
136 \r
137 changeRenderer: function(val) {\r
138 if (val > 0) {\r
139 return '<span style="color:green;">' + val + '</span>';\r
140 } else if(val < 0) {\r
141 return '<span style="color:red;">' + val + '</span>';\r
142 }\r
143 return val;\r
144 },\r
145 \r
146 pctChangeRenderer: function(val){\r
147 if (val > 0) {\r
148 return '<span style="color:green;">' + val + '%</span>';\r
149 } else if(val < 0) {\r
150 return '<span style="color:red;">' + val + '%</span>';\r
151 }\r
152 return val;\r
153 }\r
154});\r