mirror of
https://git.proxmox.com/git/pmg-gui
synced 2025-06-03 19:17:43 +00:00
157 lines
3.6 KiB
JavaScript
157 lines
3.6 KiB
JavaScript
Ext.define('PMG.StatTimeSelector', {
|
|
extend: 'Ext.container.Container',
|
|
xtype: 'pmgStatTimeSelector',
|
|
|
|
statics: {
|
|
selected_year: undefined,
|
|
selected_month: undefined,
|
|
selected_day: undefined,
|
|
|
|
getTimeSpan: function() {
|
|
var year = this.selected_year;
|
|
var month = this.selected_month;
|
|
var day = this.selected_day;
|
|
|
|
var starttime, endtime, span;
|
|
|
|
if (!month) {
|
|
starttime = new Date(year, 0);
|
|
endtime = new Date(year + 1, 0);
|
|
} else if (!day) {
|
|
starttime = new Date(year, month - 1);
|
|
endtime = new Date(year, month);
|
|
} else {
|
|
starttime = new Date(year, month - 1, day);
|
|
endtime = new Date(year, month - 1, day + 1);
|
|
}
|
|
|
|
var data = {};
|
|
|
|
data.starttime = (starttime.getTime() / 1000).toFixed(0);
|
|
data.endtime = (endtime.getTime() / 1000).toFixed(0);
|
|
|
|
return data;
|
|
}
|
|
},
|
|
|
|
layout: {
|
|
type: 'hbox'
|
|
},
|
|
|
|
controller: {
|
|
xclass: 'Ext.app.ViewController',
|
|
|
|
updateVisibility: function() {
|
|
var view = this.getView();
|
|
|
|
var yearsel = this.lookupReference('yearsel');
|
|
var monthsel = this.lookupReference('monthsel');
|
|
var daysel = this.lookupReference('daysel');
|
|
|
|
var year = yearsel.getValue();
|
|
var month = monthsel.getValue();
|
|
daysel.setVisible(month !== 0);
|
|
if (!month) {
|
|
daysel.setValue(0);
|
|
}
|
|
var day = daysel.getValue();
|
|
|
|
var statics = Ext.getClass(view);
|
|
|
|
statics.selected_year = year;
|
|
statics.selected_month = month;
|
|
statics.selected_day = day;
|
|
|
|
var data = statics.getTimeSpan();
|
|
Ext.GlobalEvents.fireEvent('pmgStatTimeSelectorUpdate', data);
|
|
},
|
|
|
|
onSelect: function() {
|
|
this.updateVisibility();
|
|
},
|
|
|
|
init: function(view) {
|
|
var statics = Ext.getClass(view);
|
|
|
|
var yearsel = this.lookupReference('yearsel');
|
|
var monthsel = this.lookupReference('monthsel');
|
|
var daysel = this.lookupReference('daysel');
|
|
|
|
yearsel.setValue(statics.selected_year);
|
|
monthsel.setValue(statics.selected_month);
|
|
daysel.setValue(statics.selected_month ? statics.selected_day : 0);
|
|
|
|
this.updateVisibility();
|
|
}
|
|
},
|
|
|
|
items: [
|
|
{
|
|
xtype: 'combobox',
|
|
reference: 'yearsel',
|
|
store: {
|
|
fields: [ 'year' ],
|
|
data: (function() {
|
|
var today = new Date();
|
|
var year = today.getFullYear();
|
|
return [{ year: year }, { year: year -1 },{ year: year -2 }];
|
|
}())
|
|
},
|
|
listeners: { select: 'onSelect' },
|
|
value: (new Date()).getFullYear(),
|
|
queryMode: 'local',
|
|
displayField: 'year',
|
|
editable: false,
|
|
valueField: 'year'
|
|
},
|
|
{
|
|
xtype: 'combobox',
|
|
reference: 'monthsel',
|
|
store: {
|
|
fields: [ 'month', 'name' ],
|
|
data: (function() {
|
|
var i;
|
|
var data = [{ month: 0, name: gettext('Whole year') }];
|
|
for (i = 1; i <= 12; i++) {
|
|
data.push({ month: i, name: Ext.Date.monthNames[i-1]});
|
|
}
|
|
return data;
|
|
}())
|
|
},
|
|
listeners: { select: 'onSelect' },
|
|
queryMode: 'local',
|
|
displayField: 'name',
|
|
editable: false,
|
|
valueField: 'month'
|
|
},
|
|
{
|
|
xtype: 'combobox',
|
|
reference: 'daysel',
|
|
store: {
|
|
fields: [ 'day', 'name' ],
|
|
data: (function() {
|
|
var i;
|
|
var data = [{ day: 0, name: gettext('Whole month') }];
|
|
for (i = 1; i <= 31; i++) {
|
|
data.push({ day: i, name: i});
|
|
}
|
|
return data;
|
|
}())
|
|
},
|
|
listeners: { select: 'onSelect' },
|
|
queryMode: 'local',
|
|
displayField: 'name',
|
|
editable: false,
|
|
valueField: 'day'
|
|
}
|
|
]
|
|
}, function() {
|
|
|
|
var today = new Date();
|
|
|
|
this.selected_year = today.getFullYear();
|
|
this.selected_month = today.getMonth() + 1;
|
|
this.selected_day = today.getDate();
|
|
|
|
});
|