// Prepare all data to plot the charts import * as utils from '../utilities/chartoptions.js' export const liveData = (params, values) => { let series1 = [] let series2 = [] let series3 = [] // save the current (actual) values here let aktVal = {} // Put values into the arrays let cnt = 0 values.forEach((x) => { let dat = new Date(x.datetime).getTime() series1.push([dat, x.noise_LAeq]) series2.push([dat, x.noise_LA_max]) series3.push([dat, x.noise_LA_min]) // put data and value into series array }) if (values.length != 0) { const lastidx = values.length - 1 // Aktuelle Werte speichern aktVal['LAeq'] = values[lastidx].noise_LAeq aktVal['LAMax'] = values[lastidx].noise_LA_max aktVal['LAMin'] = values[lastidx].noise_LA_min // InfoTafel füllen let infoTafel = '' + '' + '' + '' infoTafel += '' + '' infoTafel += '' + '' infoTafel += '
Aktuelle Werte
LAeq' + (aktVal.LAeq).toFixed(1) + 'dbA
LAmin' + (aktVal.LAMin).toFixed(0) + 'dbA
LAmax' + (aktVal.LAMax).toFixed(0) + 'dbA
' + '' } let txtMeldung = false // Plot-Options let options = utils.createGlobObtions('dd.LL HH:mm:ss') let series_LAeq = { name: 'LAeq', data: series1, color: utils.colors.eq, yAxis: 0, zIndex: 1, marker: { enabled: false, symbol: 'square', }, visible: true, fillColor: { linearGradient: [0, 600, 0, 0], stops: [ [0, 'rgb(238,223,236)'], [1, 'rgb(238,223,236)'] ] }, } let series_LAMax = { name: 'LAmax', data: series2, color: utils.colors.max, yAxis: 0, zIndex: 0, marker: { enabled: false, symbol: 'square', }, visible: true, fillColor: { linearGradient: [0, 600, 0, 0], stops: [ [0, 'rgb(255,233,236)'], [1, 'rgb(255,233,236)'] ] }, // fillOpacity: 0.2, } let series_LAMin = { name: 'LAmin', data: series3, color: utils.colors.min, yAxis: 0, zIndex: 6, marker: { enabled: false, symbol: 'square', }, visible: true, fillColor: { linearGradient: [0, 600, 0, 0], stops: [ [0, 'rgb(219,216,217)'], [1, 'rgb(219,216,217)'] ] }, } let yAxis_LAeq = { // 1 title: { text: 'dbA', style: { color: 'black' } }, max: utils.noise_ymax, // min: utils.noise_ymin, min: 20, // opposite: true, tickAmount: 11, useHTML: true, } options.series = [] options.yAxis = [] options.series[0] = series_LAeq options.series[1] = series_LAMin options.title.text = 'Noise level for one day' options.subtitle.useHTML = true options.subtitle.text = '2.5min log. average values
 ' options.series[2] = series_LAMax // options.yAxis[2] = yAxis_LAMin options.yAxis[0] = yAxis_LAeq // options.yAxis[1] = yAxis_LAMax options.chart.zoomType = 'x' options.chart.type = 'area' options.chart.resetZoomButton= { position: { align: 'left', verticalAlign: 'bottom', x: 20, y: -50, }, relativeTo: 'chart' } options.tooltip.formatter = function () { let y = Math.round(this.y * 100) / 100 return '
' + DateTime.fromMillis(this.x, {zone: 'utc'}).toFormat("dd.LL - HH:mm:ss") + '
' + '● ' + this.series.name + ':  ' + y + '
' } let noDataTafel = '
' + 'Für heute liegen leider keine Daten vor!
Bitte den Sensor überprüfen!\'
' + '
' let navy = 20 let navbreit = 55 let navtxt = ['-24h', '-12h', 'live', '+12h', '+24h'] let navtime = [-24, -12, 0, 12, 24] return { options: options, params: params} } export const havgData = (params, values) => { let series1 = [] let series2 = [] // Put values into the serieses let cnt = 0 values.forEach((x) => { if (x.n_AVG != -1) { let dat = new Date(x.datetime).getTime() // retrieve the date series1.push([dat, x.n_AVG]) series2.push([dat, x.peakcount]) } }) // Plot-Options let options = utils.createGlobObtions() options.xAxis.tickInterval = 6 * 3600 * 1000 // options.xAxis.plotBands = utils.calcWeekends(data, true) options.xAxis.minTickInterval = 3600 * 1000 options.yAxis = { title: { text: 'dbA', useHTML: true, }, min: utils.noise_ymin, tickAmount: 10, gridLineColor: 'lightgray', } options.series = [ { name: 'Mean value LAeq', data: series1, color: utils.colors.eq, type: 'column', zIndex: 2, }, ] options.plotOptions.column = { pointWidth: 8, groupPadding: 0.5 } options.title.text = 'Noise hourly mean values' options.subtitle.text = 'Hourly mean values of LAeq for each full hour
 ' options.subtitle.useHTML = true options.chart.zoomType = 'x' options.chart.height = 350 options.chart.resetZoomButton= { position: { align: 'left', // verticalAlign: 'bottom', x: 20, y: 300, }, relativeTo: 'chart' } options.tooltip.formatter = function () { let y = Math.round(this.y * 10) / 10 return '
' + DateTime.fromMillis(this.x, {zone: 'utc'}).toFormat("dd.LL - HH'h'") + '
' + '● ' + this.series.name + ':  ' + y + '
' } return { options: options, params: params} /* // Do PLOT 1 let ch = Highcharts.chart('dhour', options, function (chart) { utils.addSensorID2chart(chart, {sid: data.sid, indoor: data.indoor}, document.getElementById('dhour').offsetWidth) }) // Do PLOT 2 options.series[0] = { name: 'Peaks', data: series2, color: utils.colors.peaks, type: 'column' } options.title.text = 'Peaks more than ' + data.peak + ' dbA' options.subtitle.text = 'Number of exceedances per hour
 ' options.yAxis = { title: { text: 'Counts', useHTML: true, }, tickAmount: 10, allowDecimals: false, gridLineColor: 'lightgray', } options.tooltip.formatter = function () { let y = Math.round(this.y) return '
' + DateTime.fromMillis(this.x, {zone: 'utc'}).toFormat("dd.LL - HH'h'") + '
' + '● ' + this.series.name + ':  ' + y + '
' } let ch1 = Highcharts.chart('dpeak', options) } */ }