removed buttons and code that belongs to it
This commit is contained in:
parent
78cd5d7248
commit
e326250819
2 changed files with 17 additions and 255 deletions
|
@ -89,36 +89,6 @@
|
|||
<button id="addChannel">add channel</button>
|
||||
<br>
|
||||
|
||||
<b>Information:</b><br>
|
||||
<select name="info">
|
||||
<option value="power">Leistung</option>
|
||||
<option value="energy">Energie</option>
|
||||
<option value="infos">weitere Infos</option>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<b>Anzeigebereich:</b><br>
|
||||
<select name="window">
|
||||
<option value="1HOUR">1 Stunde</option>
|
||||
<option value="1DAY">1 Tag</option>
|
||||
<option value="3DAY">3 Tage</option>
|
||||
<option value="7DAY">7 Tage</option>
|
||||
<option value="1MONTH" selected="selected">1 Monat</option>
|
||||
<option value="1YEAR">1 Jahr</option>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<b>Gruppierung:</b><br>
|
||||
<select name="grouping">
|
||||
<option value="400">dynamisch</option>
|
||||
<option value="minute">Minute</option>
|
||||
<option value="hour" selected="selected">Stunde</option>
|
||||
<option value="day">Tag</option>
|
||||
<option value="month">Monat</option>
|
||||
<option value="year">Jahr</option>
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<div style="font-size:8pt;">
|
||||
<input type="checkbox" name="stackChannels" /> Kanäle addieren<br>
|
||||
<input type="checkbox" name="autoReload" /> auto reload (5s)<br>
|
||||
|
@ -394,16 +364,12 @@ function getData() {
|
|||
|
||||
$('#debug').append('<a href="../backend/index.php/data/'+myUUID+'/format/json/from/'+myWindowStart+'/to/'+myWindowEnd+'">json</a>');
|
||||
// load json data with given time window
|
||||
$.getJSON("../backend/index.php/data/" + myUUID, function(j){
|
||||
$.getJSON("../backend/index.php/data/" + myUUID + '/format/json/from/'+myWindowStart+'/to/'+myWindowEnd, function(j){
|
||||
data = j;
|
||||
$('#debug').empty().append(data.toSource());
|
||||
// then show/reload the chart
|
||||
//if(data.channels.length > 0 && data.channels[0].pulses.length > 0)
|
||||
if(f.info.value == 'infos')
|
||||
showInfos()
|
||||
else
|
||||
showChart();
|
||||
|
||||
$('#loading').empty();
|
||||
});
|
||||
|
||||
|
@ -448,83 +414,19 @@ function showChart() {
|
|||
jqOptions.series.push({label:data.channels[i]['description']});
|
||||
}
|
||||
|
||||
// different formatStrings for different grouping times
|
||||
switch(f.grouping.value) {
|
||||
case 'year':
|
||||
EformatString = '%Y';
|
||||
break;
|
||||
case 'month':
|
||||
EformatString = '%m/%Y';
|
||||
break;
|
||||
case 'day':
|
||||
EformatString = '%d.%m.%y';
|
||||
break;
|
||||
case 'hour':
|
||||
EformatString = '%d.%m.%y %H:%M';
|
||||
break;
|
||||
case 'minute':
|
||||
EformatString = '%d.%m.%y %H:%M';
|
||||
break;
|
||||
default:
|
||||
EformatString = '%d.%m.%y %H:%M:%S';
|
||||
}
|
||||
EformatString = '%d.%m.%y %H:%M';
|
||||
|
||||
// power
|
||||
if(f.info.value == 'power') {
|
||||
|
||||
// for each channel in json response
|
||||
for(var i=0;i<data.channels.length;i++) {
|
||||
// power (moving average) gray line
|
||||
//jqData.push(raw2Power(data.channels[i],true));
|
||||
//series_chart.push({showLabel:false,color:'#808080'})
|
||||
|
||||
// power
|
||||
/*if(f.grouping.value == '') {
|
||||
jqData.push(raw2Power(data.channels[i],false));
|
||||
}
|
||||
else {
|
||||
jqData.push(raw2Energy(data.channels[i]));
|
||||
}*/
|
||||
|
||||
//$('#debug').empty().append(raw2Energy(data.channels[i]).toSource());
|
||||
jqData.push(json2jqplot(data.channels[i].data));
|
||||
}
|
||||
jqOptions.axes = {
|
||||
yaxis:{autoscale:true, min:0, label:"Leistung (Watt)", tickOptions:{formatString:'%.3f'},labelRenderer: $.jqplot.CanvasAxisLabelRenderer},
|
||||
xaxis:{autoscale:true, min:calcMyWindowStart(), max:myWindowEnd, tickOptions:{formatString:EformatString,angle:-30},pad:1, renderer:$.jqplot.DateAxisRenderer,rendererOptions:{tickRenderer:$.jqplot.CanvasAxisTickRenderer}},
|
||||
};
|
||||
// for each channel in json response
|
||||
for(var i=0;i<data.channels.length;i++) {
|
||||
// power (moving average) gray line
|
||||
//series_chart.push({showLabel:false,color:'#808080'})
|
||||
|
||||
jqData.push(json2jqplot(data.channels[i].data));
|
||||
}
|
||||
// energy
|
||||
else if(f.info.value == 'energy') {
|
||||
|
||||
// thats not possible without grouping
|
||||
if(f.grouping.value == '' )
|
||||
return;
|
||||
|
||||
// for each channel in json response
|
||||
for(var i=0;i<data.channels.length;i++) {
|
||||
jqData.push(raw2Energy(data.channels[i]));
|
||||
}
|
||||
|
||||
//jqData = json2jqplot(data);
|
||||
|
||||
jqOptions.axes={
|
||||
yaxis:{autoscale:true, min:0, tickOptions:{formatString:'%.3f'},label:"Energie (kWh)",labelRenderer: $.jqplot.CanvasAxisLabelRenderer},
|
||||
xaxis:{
|
||||
renderer:$.jqplot.CategoryAxisRenderer,
|
||||
autoscale:true,
|
||||
tickOptions:{formatString:'%d.%m.%y %H:%M:%S',angle:-30},
|
||||
pad:1,
|
||||
rendererOptions:{tickRenderer:$.jqplot.CanvasAxisTickRenderer},
|
||||
ticks:generateAxisTicks()
|
||||
}
|
||||
};
|
||||
jqOptions.highlighter={sizeAdjust: 7.5};
|
||||
|
||||
jqOptions.seriesDefaults.renderer=$.jqplot.BarRenderer;
|
||||
jqOptions.cursor={show:false,zoom:false,showTooltip:true,showMarker:true}
|
||||
}
|
||||
jqOptions.axes = {
|
||||
yaxis:{autoscale:true, min:0, label:"Leistung (Watt)", tickOptions:{formatString:'%.3f'},labelRenderer: $.jqplot.CanvasAxisLabelRenderer},
|
||||
xaxis:{autoscale:true, min:calcMyWindowStart(), max:myWindowEnd, tickOptions:{formatString:EformatString,angle:-30},pad:1, renderer:$.jqplot.DateAxisRenderer,rendererOptions:{tickRenderer:$.jqplot.CanvasAxisTickRenderer}},
|
||||
};
|
||||
|
||||
chart = $.jqplot("ChartDIV",jqData,jqOptions);
|
||||
chart.replot();
|
||||
|
@ -568,14 +470,7 @@ function generateAxisTicks() {
|
|||
|
||||
for(var timestamp in data_grouped_time) {
|
||||
var time = new Date(timestamp*1000);
|
||||
if(f.grouping.value == 'month')
|
||||
ticks.push((time.getMonth()+1)+'/'+time.getFullYear());
|
||||
if(f.grouping.value == 'day')
|
||||
ticks.push(time.getDate()+'.'+(time.getMonth()+1)+'.');
|
||||
if(f.grouping.value == 'hour')
|
||||
ticks.push(time.getDate()+'.'+(time.getMonth()+1)+'.'+' '+time.getHours()+':00');
|
||||
if(f.grouping.value == 'minute')
|
||||
ticks.push(time.getDate()+'.'+(time.getMonth()+1));
|
||||
ticks.push(time.getDate()+'.'+(time.getMonth()+1)+'.'+' '+time.getHours()+':00');
|
||||
}
|
||||
|
||||
return ticks;
|
||||
|
|
|
@ -36,25 +36,7 @@ function getEmptyGroupArray() {
|
|||
|
||||
var iteratorDate = new Date(iterator);
|
||||
//$('#debug').append('#'+i+':'+iteratorDate+'<br>');
|
||||
switch(f.grouping.value) {
|
||||
case 'year':
|
||||
iteratorDate.setYear(iteratorDate.getYear()+1);
|
||||
break;
|
||||
case 'month':
|
||||
iteratorDate.setMonth(iteratorDate.getMonth()+1);
|
||||
break;
|
||||
case 'day':
|
||||
iteratorDate.setDate(iteratorDate.getDate()+1);
|
||||
break;
|
||||
case 'hour':
|
||||
iteratorDate.setHours(iteratorDate.getHours()+1);
|
||||
break;
|
||||
case 'minute':
|
||||
iteratorDate.setMinutes(iteratorDate.getMinutes()+1);
|
||||
break;
|
||||
default:
|
||||
return empty_array;
|
||||
}
|
||||
iteratorDate.setDate(iteratorDate.getDate()+1);
|
||||
// very bad bug: infinity loop for summer winter change
|
||||
if(i==750) return empty_array;
|
||||
|
||||
|
@ -74,26 +56,12 @@ function calcMyWindowStart() {
|
|||
var hours = myWindowStart.getHours();
|
||||
var minutes = myWindowStart.getMinutes();
|
||||
|
||||
var windowSize = f.window.value.substring(0,1);
|
||||
var windowInterval = f.window.value.substring(1);
|
||||
//var windowSize = f.window.value.substring(0,1);
|
||||
var windowSize = "1";
|
||||
//var windowInterval = f.window.value.substring(1);
|
||||
var windowInterval = "MONTH"; // we want to display 1 day (for now)
|
||||
|
||||
switch(windowInterval) {
|
||||
case 'YEAR':
|
||||
myWindowStart.setYear(myWindowStart.getFullYear()-windowSize);
|
||||
break;
|
||||
case 'MONTH':
|
||||
myWindowStart.setMonth(myWindowStart.getMonth()-windowSize);
|
||||
break;
|
||||
case 'DAY':
|
||||
myWindowStart.setDate(myWindowStart.getDate()-windowSize);
|
||||
break;
|
||||
case 'HOUR':
|
||||
myWindowStart.setHours(myWindowStart.getHours()-windowSize);
|
||||
break;
|
||||
case 'MINUTE':
|
||||
myWindowStart.setMinutes(myWindowStart.getMinutes()-windowSize);
|
||||
break;
|
||||
}
|
||||
return myWindowStart.getTime();
|
||||
}
|
||||
|
||||
|
@ -108,109 +76,8 @@ function getGroupedTimestamp(timestamp) {
|
|||
var hours = time.getHours();
|
||||
var minutes = time.getMinutes();
|
||||
|
||||
// hint: its correct without break;
|
||||
switch(f.grouping.value) {
|
||||
case 'year':
|
||||
month = 1;
|
||||
case 'month':
|
||||
day = 1;
|
||||
case 'day':
|
||||
hours = 0;
|
||||
case 'hour':
|
||||
minutes = 0;
|
||||
}
|
||||
|
||||
return (new Date(year,month,day,hours,minutes)).getTime();
|
||||
}
|
||||
|
||||
|
||||
function raw2Energy(raw) {
|
||||
|
||||
var data_grouped_time = getEmptyGroupArray();
|
||||
var data_grouped = new Array();
|
||||
|
||||
if(f.grouping.value == '')
|
||||
return;
|
||||
|
||||
if(raw.data.length == 0) {
|
||||
return [[0,0]];
|
||||
}
|
||||
|
||||
// for each timestamp in json response
|
||||
for(var i=0;i<raw.data.length;i++) {
|
||||
data_grouped_time[raw.data[i][0]] = raw.data[i][1];
|
||||
}
|
||||
t = 1;
|
||||
switch(f.grouping.value) {
|
||||
case 'year':
|
||||
t *= 365;
|
||||
case 'day':
|
||||
t *= 24;
|
||||
case 'hour':
|
||||
t *= 60;
|
||||
case 'minute':
|
||||
t *= 60;
|
||||
}
|
||||
|
||||
// transform to proper array and energy instead of pulse count
|
||||
for(var timestamp in data_grouped_time) {
|
||||
|
||||
if(f.info.value == 'energy')
|
||||
data_grouped.push(data_grouped_time[timestamp]/raw.resolution);
|
||||
else {
|
||||
data_grouped.push([timestamp*1, 3600 * 1000 * data_grouped_time[timestamp] / raw.resolution / t ]);
|
||||
}
|
||||
}
|
||||
|
||||
if(f.info.value == 'power') {
|
||||
for(var i=data_grouped.length-1;i>=0;i--) {
|
||||
if(data_grouped[i][1]==0 && i>0 && i<data_grouped.length-1 && data_grouped[i][0] > raw.data[0][0]*1000)
|
||||
data_grouped[i][1] = data_grouped[i+1][1];
|
||||
}
|
||||
}
|
||||
|
||||
return data_grouped;
|
||||
}
|
||||
|
||||
|
||||
function raw2Power(raw,moving_average) {
|
||||
|
||||
var last_timestamp = 0;
|
||||
var last_power = 0;
|
||||
var power = 0;
|
||||
var data_line = new Array();
|
||||
|
||||
if(typeof raw == 'undefined' || raw.data.length == 0) {
|
||||
return [[0,0]];
|
||||
}
|
||||
|
||||
// for each timestamp in json response
|
||||
for(var i=0;i<raw.data.length;i++) {
|
||||
if(last_timestamp>0) {
|
||||
|
||||
// difference between this and last timestamp
|
||||
difference = raw.data[i][0] - last_timestamp;
|
||||
|
||||
// power = 3600*1000/difference/resolution*count
|
||||
power = Math.round(3600 * 1000/difference/raw.resolution*raw.data[i][1]);
|
||||
|
||||
// average with last power value
|
||||
if(moving_average && last_power>0 && Math.abs(last_power-power)<0.25*power)
|
||||
power = (power + last_power)/2;
|
||||
|
||||
// additional value for last_power > power*1.25
|
||||
if(last_power > power*1.25 && last_timestamp) {
|
||||
data_line.push([last_timestamp,power]);
|
||||
}
|
||||
|
||||
// array with timestamp and power
|
||||
data_line.push([raw.data[i][0],power]);
|
||||
}
|
||||
|
||||
last_timestamp = raw.data[i][0];
|
||||
last_power = power;
|
||||
}
|
||||
|
||||
// return array with power@timestamps
|
||||
return data_line;
|
||||
}
|
Loading…
Add table
Reference in a new issue