]> git.proxmox.com Git - pmg-gui.git/blame - js/StatTimeSelector.js
bump version to 1.0-42
[pmg-gui.git] / js / StatTimeSelector.js
CommitLineData
eafa9a65
DM
1Ext.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);
ccbf186f 82 daysel.setValue(statics.selected_month ? statics.selected_day : 0);
eafa9a65
DM
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 }];
be95ef5d 98 }())
eafa9a65
DM
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;
be95ef5d 119 }())
eafa9a65
DM
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;
be95ef5d 139 }())
eafa9a65
DM
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});