]> git.proxmox.com Git - extjs.git/blame - extjs/classic/classic/test/specs/grid/filters/filter/DateTime.js
add extjs 6.0.1 sources
[extjs.git] / extjs / classic / classic / test / specs / grid / filters / filter / DateTime.js
CommitLineData
6527f429
DM
1xdescribe('Ext.grid.filters.filter.DateTime', function () {\r
2 var viewReady = false,\r
3 grid, plugin, store;\r
4\r
5 function createGrid(pluginCfg, gridCfg, storeCfg) {\r
6 store = new Ext.data.Store(Ext.apply({\r
7 fields:['name', 'email', 'phone', { name: 'dob', type: 'date'}],\r
8 data: [\r
9 { 'name': 'evan', 'email':'evan@example.com', 'phone':'555-111-1224', 'dob': '12/12/1992 01:00' },\r
10 { 'name': 'nige', 'email':'nige@example.com', 'phone':'555-222-1234', 'dob': '12/12/1992 02:00' },\r
11 { 'name': 'phil', 'email':'phil@example.com', 'phone':'555-222-1244', 'dob': '12/12/1992 03:15' },\r
12 { 'name': 'don', 'email':'don@example.com', 'phone':'555-222-1254', 'dob': '12/12/1992 04:30' },\r
13 { 'name': 'alex', 'email':'alex@example.com', 'phone':'555-222-1254', 'dob': '12/12/1992 13:00' },\r
14 { 'name': 'ben', 'email':'ben@example.com', 'phone':'555-222-1264', 'dob': '12/12/1992 22:45' }\r
15 ],\r
16 autoDestroy: true\r
17 }, storeCfg));\r
18\r
19 plugin = new Ext.grid.filters.Filters(Ext.apply({\r
20 updateBuffer: 0\r
21 }, pluginCfg || {}));\r
22\r
23 grid = new Ext.grid.Panel(Ext.apply({\r
24 store: store,\r
25 columns: [\r
26 { header: 'Name', dataIndex: 'name', width: 100 },\r
27 { header: 'Email', dataIndex: 'email', width: 100 },\r
28 { header: 'Phone', dataIndex: 'phone', width: 100 },\r
29 { header: 'DOB', dataIndex: 'dob', xtype: 'datecolumn', format: 'd/m/Y G:i', width: 100,\r
30 filter: {\r
31 type: 'datetime',\r
32 time: {\r
33 format: 'G:i'\r
34 },\r
35 dock: {\r
36 buttonText: 'Filter',\r
37 dock: 'bottom'\r
38 }\r
39 }\r
40 }\r
41 ],\r
42 plugins: plugin,\r
43 height: 200,\r
44 width: 400,\r
45 listeners: {\r
46 viewready: function () {\r
47 viewReady = true;\r
48 }\r
49 },\r
50 renderTo: Ext.getBody()\r
51 }, gridCfg));\r
52 }\r
53\r
54 afterEach(function () {\r
55 Ext.destroy(grid);\r
56 grid = plugin = store = null;\r
57 viewReady = false;\r
58 });\r
59\r
60 describe('setValue', function () {\r
61 var parse = Ext.Date.parse,\r
62 columnFilter;\r
63\r
64 afterEach(function () {\r
65 columnFilter = null;\r
66 });\r
67\r
68 it('should update the value of the date whenever called', function () {\r
69 // See EXTJSIV-11532.\r
70 createGrid();\r
71\r
72 waitsFor(function () {\r
73 return viewReady;\r
74 });\r
75\r
76 runs(function () {\r
77 columnFilter = grid.columnManager.getHeaderByDataIndex('dob').filter;\r
78 columnFilter.createMenu();\r
79\r
80 columnFilter.setValue({eq: parse('08/08/1992', 'd/m/Y')});\r
81 columnFilter.setValue({eq: parse('26/09/2009', 'd/m/Y')});\r
82\r
83 expect(columnFilter.filter.eq.getValue()).toBe(parse('26/09/2009', 'd/m/Y').getTime());\r
84 });\r
85 });\r
86 });\r
87\r
88 describe('onMenuSelect handler and setFieldValue', function () {\r
89 var columnFilter, headerCt, header, filtersCheckItem, beforeCheckItem, datepicker, timepicker, btn;\r
90\r
91 afterEach(function () {\r
92 columnFilter = headerCt = header = filtersCheckItem = beforeCheckItem = datepicker = timepicker = btn = null;\r
93 });\r
94\r
95 it('should correctly filter based upon picker selections', function () {\r
96 createGrid();\r
97\r
98 waitsFor(function () {\r
99 return viewReady;\r
100 });\r
101\r
102 runs(function () {\r
103 columnFilter = grid.columnManager.getHeaderByDataIndex('dob').filter;\r
104 headerCt = grid.headerCt;\r
105 header = grid.getColumnManager().getLast();\r
106\r
107 // Show the grid menu.\r
108 headerCt.showMenuBy(null, header.triggerEl.dom, header);\r
109\r
110 // Show the filter menu.\r
111 filtersCheckItem = headerCt.menu.items.last();\r
112 filtersCheckItem.activated = true;\r
113 filtersCheckItem.expandMenu(null, 0);\r
114\r
115 // Show the DateTime container.\r
116 beforeCheckItem = filtersCheckItem.menu.items.first();\r
117 beforeCheckItem.activated = true;\r
118 beforeCheckItem.expandMenu(null, 0);\r
119\r
120 // Finally, get the refs to the components we need to test.\r
121 datepicker = beforeCheckItem.menu.down('datepicker');\r
122 timepicker = beforeCheckItem.menu.down('timepicker');\r
123 btn = beforeCheckItem.menu.down('button[text="Filter"]');\r
124\r
125 datepicker.setValue(new Date('12/12/1992'));\r
126 timepicker.select(timepicker.store.getAt(5));\r
127 btn.el.dom.click();\r
128\r
129 // The filtering is async.\r
130 waits(1);\r
131\r
132 runs(function () {\r
133 expect(store.getCount()).toBe(1);\r
134\r
135 timepicker.select(timepicker.store.getAt(9));\r
136 btn.el.dom.click();\r
137 });\r
138\r
139 waits(1);\r
140\r
141 runs(function () {\r
142 expect(store.getCount()).toBe(2);\r
143 });\r
144 });\r
145 });\r
146 });\r
147});\r