2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-22 08:11:44 +00:00
fhem-mirror/fhem/www/frontend/app/controller/TableDataController.js
johannnes 25ab56a7d1 structure changes...
git-svn-id: https://svn.fhem.de/fhem/trunk@4475 2b470e98-0d58-463d-a4d8-8e2adae1ed80
2013-12-27 15:03:31 +00:00

137 lines
5.3 KiB
JavaScript

/**
* The Controller handling Table Data retrieval
*/
Ext.define('FHEM.controller.TableDataController', {
extend: 'Ext.app.Controller',
requires: [
'FHEM.view.TableDataGridPanel'
],
refs: [
{
selector: 'button[name=applytablefilter]',
ref: 'applytablefilterbtn' //this.getApplytablefilterbtn()
}
],
/**
* init function to register listeners
*/
init: function() {
this.control({
'button[name=applytablefilter]': {
click: this.filterTableData
}
});
},
/**
* function handling the filtering of tabledata, preparing querystring
*/
filterTableData: function() {
var me = this,
devicecombo = Ext.ComponentQuery.query('combo[name=tddevicecombo]')[0],
readingscombo = Ext.ComponentQuery.query('combo[name=tdreadingscombo]')[0],
checkedradio = Ext.ComponentQuery.query('radiogroup[name=tddynamictime]')[0],
starttimepicker = Ext.ComponentQuery.query('datefield[name=tdstarttimepicker]')[0],
endtimepicker = Ext.ComponentQuery.query('datefield[name=tdendtimepicker]')[0],
gridpanel = Ext.ComponentQuery.query('gridpanel[name=tabledatagridpanel]')[0];
//check if timerange or dynamic time should be used
checkedradio.eachBox(function(box, idx){
var date = new Date();
if (box.checked) {
if (box.inputValue === "year") {
starttime = Ext.Date.parse(date.getUTCFullYear() + "-01-01", "Y-m-d");
endtime = Ext.Date.parse(date.getUTCFullYear() + 1 + "-01-01", "Y-m-d");
} else if (box.inputValue === "month") {
starttime = Ext.Date.getFirstDateOfMonth(date);
endtime = Ext.Date.getLastDateOfMonth(date);
} else if (box.inputValue === "week") {
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
//monday starts with 0 till sat with 5, sund with -1
var dayoffset = date.getDay() - 1,
monday,
nextmonday;
if (dayoffset >= 0) {
monday = Ext.Date.add(date, Ext.Date.DAY, -dayoffset);
} else {
//we have a sunday
monday = Ext.Date.add(date, Ext.Date.DAY, -6);
}
nextmonday = Ext.Date.add(monday, Ext.Date.DAY, 7);
starttime = monday;
endtime = nextmonday;
} else if (box.inputValue === "day") {
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
starttime = date;
endtime = Ext.Date.add(date, Ext.Date.DAY, 1);
} else if (box.inputValue === "hour") {
date.setMinutes(0);
date.setSeconds(0);
starttime = date;
endtime = Ext.Date.add(date, Ext.Date.HOUR, 1);
} else {
Ext.Msg.alert("Error", "Could not setup the dynamic time.");
}
dbstarttime = Ext.Date.format(starttime, 'Y-m-d_H:i:s');
dbendtime = Ext.Date.format(endtime, 'Y-m-d_H:i:s');
starttimepicker.setValue(starttime);
endtimepicker.setValue(endtime);
} else {
dbstarttime = Ext.Date.format(starttimepicker.getValue(), 'Y-m-d_H:i:s');
dbendtime = Ext.Date.format(endtimepicker.getValue(), 'Y-m-d_H:i:s');
}
});
if (Ext.isEmpty(dbstarttime) || Ext.isEmpty(dbendtime)) {
Ext.Msg.alert("Error", "Please select a timerange first!");
} else {
//cleanup store
gridpanel.getStore().clearData();
var firststart = true;
gridpanel.getStore().on("beforeprefetch", function(store, operation, eOpts) {
var url = '../../../fhem?cmd=get+' + FHEM.dblogname + '+-+webchart+' + dbstarttime + '+' + dbendtime + '+';
if (!Ext.isEmpty(devicecombo.getValue())) {
url += devicecombo.getValue();
} else {
url += '""';
}
url += '+getTableData+""+';
if (!Ext.isEmpty(readingscombo.rawValue)) {
url += readingscombo.rawValue;
} else {
url += '""';
}
url += '+""+""+';
if (firststart) {
url += "0+";
firststart = false;
} else {
url += operation.start + "+";
}
url += operation.limit + "&XHR=1";
if (operation.request) {
operation.request.url = url;
}
store.proxy.url = url;
});
gridpanel.getStore().load();
}
}
});