1 var api_base_url = '/api/1/sensor/type/Wassertemperatur?mode=consolidated&format=c3';
3 function dayschart(element, interval, days, xtickformat) {
4 var chart = c3.generate({
7 width: document.getElementById(element).parentElement.clientWidth * 80 / 100
13 text: 'Der See (' + interval + ')'
16 url: api_base_url + beginend(days),
19 '0316a2193bff': '0316a2193bff_x',
20 '0316a21383ff': '0316a21383ff_x'
23 '0316a2193bff': 'Wassertemperatur in 4 m Tiefe',
24 '0316a21383ff': 'Wassertemperatur in 5 m Tiefe'
26 xFormat: '%Y-%m-%d %H:%M:%S',
28 '0316a2193bff': 'lightblue',
29 '0316a21383ff': 'darkblue'
38 multiline: true, // broken? so →
44 text: 'Temperatur in °C',
45 position: 'outer-middle'
48 format: function (d) {
49 return d.toFixed(1) + '°';
56 onzoomend: function (domain) {
58 var start = domain[0].getTime()/1000;
59 var end = domain[1].getTime()/1000;
60 var duration = end - start;
61 // duration is now the diff of the "viewport in seconds"
63 var days = Math.round(duration / 86400 / 2);
71 name: function (name, ratio, id, index) {
73 var res = re.exec(name);
76 value: function (value, ratio, id, index) {
77 return value.toFixed(2) + '°';
80 // TODO: format datetime into something readable
91 {axis: 'y', start: -999, end: 0, class: 'region-frozen'},
92 {axis: 'y', start: 0, end: 25, class: 'region-ok'},
93 {axis: 'y', start: 25, end: 100, class: 'region-warm'},
94 {axis: 'y', start: 100, end: 999, class: 'region-boiling'}
99 function loaddays(days) {
101 url: api_base_url + beginend(days),
106 function beginend(days) {
107 var now = Date.now();
108 var end = new Date(now).toISOString().substr(0, 19); // 2018-06-13T16:52:30.995Z
109 var begin = new Date(now - days * 60*60*24 * 1000).toISOString().substr(0, 19);
110 return '&begin=' + begin + '&end=' + end;
113 dayschart('chart1', 'Tag', 1, '%H:%M');
114 dayschart('chart7', 'Woche', 7, '%a %d');
115 dayschart('chart31', 'Monat', 31, 'Woche %V');
116 dayschart('chart365', 'Jahr', 365, '%b %d');