]>
Commit | Line | Data |
---|---|---|
eafa9a65 DM |
1 | Ext.define('PMG.StatTimeSelector', { |
2 | extend: 'Ext.container.Container', | |
3 | xtype: 'pmgStatTimeSelector', | |
4 | ||
5 | statics: { | |
6 | selected_year: undefined, | |
7 | selected_month: undefined, | |
8 | selected_day: undefined, | |
9 | ||
10 | getTimeSpan: function() { | |
11 | var year = this.selected_year; | |
12 | var month = this.selected_month; | |
13 | var day = this.selected_day; | |
14 | ||
15 | var starttime, endtime, span; | |
16 | ||
17 | if (!month) { | |
18 | starttime = new Date(year, 0); | |
19 | endtime = new Date(year + 1, 0); | |
20 | } else if (!day) { | |
21 | starttime = new Date(year, month - 1); | |
22 | endtime = new Date(year, month); | |
23 | } else { | |
24 | starttime = new Date(year, month - 1, day); | |
25 | endtime = new Date(year, month - 1, day + 1); | |
26 | } | |
27 | ||
28 | var data = {}; | |
29 | ||
30 | data.starttime = (starttime.getTime() / 1000).toFixed(0); | |
31 | data.endtime = (endtime.getTime() / 1000).toFixed(0); | |
32 | ||
33 | return data; | |
34 | } | |
35 | }, | |
36 | ||
37 | layout: { | |
38 | type: 'hbox' | |
39 | }, | |
40 | ||
41 | controller: { | |
42 | xclass: 'Ext.app.ViewController', | |
43 | ||
44 | updateVisibility: function() { | |
45 | var view = this.getView(); | |
46 | ||
47 | var yearsel = this.lookupReference('yearsel'); | |
48 | var monthsel = this.lookupReference('monthsel'); | |
49 | var daysel = this.lookupReference('daysel'); | |
50 | ||
51 | var year = yearsel.getValue(); | |
52 | var month = monthsel.getValue(); | |
53 | daysel.setVisible(month !== 0); | |
54 | if (!month) { | |
55 | daysel.setValue(0); | |
56 | } | |
57 | var day = daysel.getValue(); | |
58 | ||
59 | var statics = Ext.getClass(view); | |
60 | ||
61 | statics.selected_year = year; | |
62 | statics.selected_month = month; | |
63 | statics.selected_day = day; | |
64 | ||
65 | var data = statics.getTimeSpan(); | |
66 | Ext.GlobalEvents.fireEvent('pmgStatTimeSelectorUpdate', data); | |
67 | }, | |
68 | ||
69 | onSelect: function() { | |
70 | this.updateVisibility(); | |
71 | }, | |
72 | ||
73 | init: function(view) { | |
74 | var statics = Ext.getClass(view); | |
75 | ||
76 | var yearsel = this.lookupReference('yearsel'); | |
77 | var monthsel = this.lookupReference('monthsel'); | |
78 | var daysel = this.lookupReference('daysel'); | |
79 | ||
80 | yearsel.setValue(statics.selected_year); | |
81 | monthsel.setValue(statics.selected_month); | |
82 | daysel.setValue(statics.selected_month ? statics.selected_day : 0); | |
83 | ||
84 | this.updateVisibility(); | |
85 | } | |
86 | }, | |
87 | ||
88 | items: [ | |
89 | { | |
90 | xtype: 'combobox', | |
91 | reference: 'yearsel', | |
92 | store: { | |
93 | fields: [ 'year' ], | |
94 | data: (function() { | |
95 | var today = new Date(); | |
96 | var year = today.getFullYear(); | |
97 | return [{ year: year }, { year: year -1 },{ year: year -2 }]; | |
98 | })() | |
99 | }, | |
100 | listeners: { select: 'onSelect' }, | |
101 | value: (new Date()).getFullYear(), | |
102 | queryMode: 'local', | |
103 | displayField: 'year', | |
104 | editable: false, | |
105 | valueField: 'year' | |
106 | }, | |
107 | { | |
108 | xtype: 'combobox', | |
109 | reference: 'monthsel', | |
110 | store: { | |
111 | fields: [ 'month', 'name' ], | |
112 | data: (function() { | |
113 | var i; | |
114 | var data = [{ month: 0, name: gettext('Whole year') }]; | |
115 | for (i = 1; i <= 12; i++) { | |
116 | data.push({ month: i, name: Ext.Date.monthNames[i-1]}); | |
117 | } | |
118 | return data; | |
119 | })() | |
120 | }, | |
121 | listeners: { select: 'onSelect' }, | |
122 | queryMode: 'local', | |
123 | displayField: 'name', | |
124 | editable: false, | |
125 | valueField: 'month' | |
126 | }, | |
127 | { | |
128 | xtype: 'combobox', | |
129 | reference: 'daysel', | |
130 | store: { | |
131 | fields: [ 'day', 'name' ], | |
132 | data: (function() { | |
133 | var i; | |
134 | var data = [{ day: 0, name: gettext('Whole month') }]; | |
135 | for (i = 1; i <= 31; i++) { | |
136 | data.push({ day: i, name: i}); | |
137 | } | |
138 | return data; | |
139 | })() | |
140 | }, | |
141 | listeners: { select: 'onSelect' }, | |
142 | queryMode: 'local', | |
143 | displayField: 'name', | |
144 | editable: false, | |
145 | valueField: 'day' | |
146 | } | |
147 | ] | |
148 | }, function() { | |
149 | ||
150 | var today = new Date(); | |
151 | ||
152 | this.selected_year = today.getFullYear(); | |
153 | this.selected_month = today.getMonth() + 1; | |
154 | this.selected_day = today.getDate(); | |
155 | ||
156 | }); |