var chart; function drawGraph(deveui, alias, property, start, stop, create_graph) { range = "" range = range + "&start=" + start; range = range + "&stop=" + stop; var label; var labels = {}; var forceNiceScale = true; $(".button").removeClass("is-success"); if (property=="t") { $("#btn_t").addClass("is-success"); label = 'Temperatur'; mysubtitle = 'Temperatur in °C'; minfunc = function(min) { if (min > 0) { return 0 } else { return min } } maxfunc = function(max) { return max + 5 } } else if (property=="vp") { $("#btn_vp").addClass("is-success"); label = 'Akkuladung'; mysubtitle = 'Akkuladung in Prozent'; minfunc = function(min) { return 0 } maxfunc = function(max) { return 100 } forceNiceScale = false; } else if (property=="w") { $("#btn_w").addClass("is-success"); label = 'Gewicht'; mysubtitle = 'Gewicht in Kilogramm'; minfunc = function(min) { if (min > 5000) { return min - 2000 } else { return 0 } } maxfunc = function(max) { return max + 2000 } labels = { formatter: function(val, index) { return (val / 1000.0).toFixed(3); } }; } else if (property==="h") { $("#btn_h").addClass("is-success"); label = 'Luftfeuchtigkeit'; mysubtitle = 'Luftfeuchtigkeit in Prozent'; minfunc = function(min) { return 0 } maxfunc = function(max) { return 100 } forceNiceScale = false; } else if (property=="p") { $("#btn_p").addClass("is-success"); label = 'Luftdruck'; mysubtitle = 'Luftdruck in Hektopascal'; minfunc = function(min) { return 900 } maxfunc = function(max) { return 1060 } } else { label = 'Unknown'; mysubtitle = 'Unknown'; } $.getJSON('https://mini-beieli.ch/metrics?deveui=' + deveui + '&alias=' + alias + '&property=' + property + range, function(mydata) { if ("msg" in mydata) { if (mydata.msg.includes("expired")) { $('#chart').html(`
Abo ist abgelaufen
`); } else if (mydata.msg.includes("error:")) { $('#myselectors').hide(); $('#chart').html(`
Fehler im Aufruf
`); } else { location.reload(true); } return; } var options = { chart: { type: 'line', animations: { enabled: false } }, stroke: { curve: 'smooth' }, title: { text: urlParams.get('alias'), align: 'center', offsetY: 20, style: { fontSize: '32px' } }, subtitle: { text: mysubtitle, align: 'center', offsetY: 60, style: { fontSize: '12px' } }, xaxis: { type: "datetime", labels: { rotate: 0, datetimeUTC: false } }, yaxis: { min: minfunc, max: maxfunc, forceNiceScale: forceNiceScale, labels: labels }, tooltip: { x: { format: 'dd.MM.yyyy HH:mm' } }, series: [{ name: label, data: mydata }] } if (create_graph) { chart = new ApexCharts(document.querySelector("#chart"), options); } else { chart.destroy(); chart = new ApexCharts(document.querySelector("#chart"), options); //chart.updateOptions(options); //chart.updateSeries(mydata); } chart.render(); }); } var urlParams = new URLSearchParams(window.location.search); var deveui = urlParams.get('deveui'); var alias = urlParams.get('alias'); var property = urlParams.get('property'); var start = urlParams.get('start'); var stop = urlParams.get('stop'); range=""; if (start == null) { var dstart = moment({hour: 0}); var start = dstart.utc().format('YYYY-MM-DDTHH:mm:ss[Z]'); range = range + "&start=" + start; } if (stop == null) { var dstop = moment(); var stop = dstop.utc().format('YYYY-MM-DDTHH:mm:ss[Z]'); range = range + "&stop=" + stop; } $('#reportrange span').html(moment(start).locale('de').format('D. MMM YYYY') + ' - ' + moment(stop).locale('de').format('D. MMM YYYY')); drawGraph(deveui, alias, property, start, stop, true);