1469 lines
		
	
	
	
		
			42 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			1469 lines
		
	
	
	
		
			42 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Created: 2021/01/26 13:54:44
 | |
| // Last modified: 2023/12/29 15:08:12
 | |
| 
 | |
| var chart, config, options;
 | |
| var settings;
 | |
| var freezing;
 | |
| var txtSelect = 'Select Series';
 | |
| var txtClear = 'Clear Series';
 | |
| 
 | |
| var compassP = function (deg) {
 | |
|     var a = ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'];
 | |
|     return a[Math.floor((deg + 22.5) / 45) % 8];
 | |
| };
 | |
| 
 | |
| 
 | |
| $(document).ready(function () {
 | |
|     settings = prefs.load();
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/availabledata.json', dataType: "json", success: function (result1) {
 | |
|             $.ajax({
 | |
|                 url: "data/graphconfig.json", dataType: "json", success: function (result2) {
 | |
|                     config = result2;
 | |
| 
 | |
|                     // add the default select option
 | |
|                     var option = $('<option />');
 | |
|                     option.html(txtSelect);
 | |
|                     option.val(0);
 | |
|                     $('#data0').append(option.clone());
 | |
|                     $('#data1').append(option.clone());
 | |
|                     $('#data2').append(option.clone());
 | |
|                     $('#data3').append(option.clone());
 | |
|                     $('#data4').append(option.clone());
 | |
|                     $('#data5').append(option);
 | |
| 
 | |
|                     // then the real series options
 | |
|                     for (var k in result1) {
 | |
|                         if (['DailyTemps', 'Sunshine', 'DegreeDays', 'TempSum', 'CO2'].indexOf(k) === -1) {
 | |
|                             var optgrp = $('<optgroup />');
 | |
|                             optgrp.attr('label', k);
 | |
|                             result1[k].forEach(function (val) {
 | |
|                                 var option = $('<option />');
 | |
|                                 option.html(val);
 | |
|                                 if (['ExtraTemp', 'ExtraHum', 'ExtraDewPoint', 'SoilMoist', 'SoilTemp', 'UserTemp', 'LeafWetness'].indexOf(k) === -1) {
 | |
|                                     option.val(val);
 | |
|                                 } else {
 | |
|                                     option.val(k + '-' + val);
 | |
|                                 }
 | |
|                                 optgrp.append(option);
 | |
|                             });
 | |
|                             $('#data0').append(optgrp.clone());
 | |
|                             $('#data1').append(optgrp.clone());
 | |
|                             $('#data2').append(optgrp.clone());
 | |
|                             $('#data3').append(optgrp.clone());
 | |
|                             $('#data4').append(optgrp.clone());
 | |
|                             $('#data5').append(optgrp);
 | |
|                         }
 | |
|                     }
 | |
| 
 | |
|                     // add the chart theme colours
 | |
|                     Highcharts.theme.colors.forEach(function (col, idx) {
 | |
|                         var option = $('<option style="background-color:' + col + '"/>');
 | |
|                         option.html(idx);
 | |
|                         option.val(col);
 | |
|                         $('#colour0').append(option.clone());
 | |
|                         $('#colour1').append(option.clone());
 | |
|                         $('#colour2').append(option.clone());
 | |
|                         $('#colour3').append(option.clone());
 | |
|                         $('#colour4').append(option.clone());
 | |
|                         $('#colour5').append(option);
 | |
|                     });
 | |
| 
 | |
|                     // Draw the basic chart
 | |
|                     freezing = config.temp.units === 'C' ? 0 : 32;
 | |
|                     var options = {
 | |
|                         chart: {
 | |
|                             renderTo: 'chartcontainer',
 | |
|                             type: 'line',
 | |
|                             alignTicks: true
 | |
|                         },
 | |
|                         title: { text: 'Recent Data Select-a-Chart' },
 | |
|                         credits: { enabled: true },
 | |
|                         xAxis: {
 | |
|                             type: 'datetime',
 | |
|                             ordinal: false,
 | |
|                             dateTimeLabelFormats: {
 | |
|                                 day: '%e %b',
 | |
|                                 week: '%e %b %y',
 | |
|                                 month: '%b %y',
 | |
|                                 year: '%Y'
 | |
|                             }
 | |
|                         },
 | |
|                         yAxis: [],
 | |
|                         legend: { enabled: true },
 | |
|                         plotOptions: {
 | |
|                             series: {
 | |
|                                 dataGrouping: {
 | |
|                                     enabled: false
 | |
|                                 },
 | |
|                                 states: {
 | |
|                                     hover: {
 | |
|                                         halo: {
 | |
|                                             size: 5,
 | |
|                                             opacity: 0.25
 | |
|                                         }
 | |
|                                     }
 | |
|                                 },
 | |
|                                 cursor: 'pointer',
 | |
|                                 marker: {
 | |
|                                     enabled: false,
 | |
|                                     states: {
 | |
|                                         hover: {
 | |
|                                             enabled: true,
 | |
|                                             radius: 0.1
 | |
|                                         }
 | |
|                                     }
 | |
|                                 }
 | |
|                             },
 | |
|                             line: { lineWidth: 2 }
 | |
|                         },
 | |
|                         tooltip: {
 | |
|                             shared: true,
 | |
|                             split: false,
 | |
|                             xDateFormat: '%A, %b %e, %H:%M'
 | |
|                         },
 | |
|                         series: [],
 | |
|                         rangeSelector: {
 | |
|                             buttons: [{
 | |
|                                 count: 12,
 | |
|                                 type: 'hour',
 | |
|                                 text: '12h'
 | |
|                             }, {
 | |
|                                 count: 24,
 | |
|                                 type: 'hour',
 | |
|                                 text: '24h'
 | |
|                             }, {
 | |
|                                 count: 2,
 | |
|                                 type: 'day',
 | |
|                                 text: '2d'
 | |
|                             }, {
 | |
|                                 type: 'all',
 | |
|                                 text: 'All'
 | |
|                             }],
 | |
|                             inputEnabled: false,
 | |
|                             selected: 1
 | |
|                         }
 | |
|                     };
 | |
| 
 | |
|                     // draw the basic chart framework
 | |
|                     chart = new Highcharts.StockChart(options);
 | |
| 
 | |
|                     // Set the dropdowns to defaults or previous values
 | |
|                     for (var i = 0; i < 6; i++) {
 | |
|                         $('#colour' + i).css('text-indent', '-99px');
 | |
|                         if (settings.colours[i] == '' || settings.colours[i] == null) {
 | |
|                             $('#colour' + i).css('background', chart.options.colors[i]);
 | |
|                             $('#colour' + i).val(chart.options.colors[i]);
 | |
|                             settings.colours[i] = chart.options.colors[i];
 | |
|                         } else {
 | |
|                             $('#colour' + i).css('background', settings.colours[i]);
 | |
|                             $('#colour' + i).val(settings.colours[i]);
 | |
|                         }
 | |
|                         if (settings.series[i] != '0') {
 | |
|                             // This series has some data associated with it
 | |
|                             $('#data' + i + ' option:contains(' + txtSelect + ')').text(txtClear);
 | |
|                             $('#data' + i).val(settings.series[i]);
 | |
|                             // Draw it on the chart
 | |
|                             updateChart(settings.series[i], i, 'data' + i);
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| });
 | |
| 
 | |
| 
 | |
| var prefs = {
 | |
|     data: {
 | |
|         series: ['0', '0', '0', '0', '0', '0'],
 | |
|         colours: ['', '', '', '', '', '']
 | |
|     },
 | |
|     load: function () {
 | |
|         var cookie = document.cookie.split(';');
 | |
|         cookie.forEach(function (val) {
 | |
|             if (val.trim().startsWith('selecta=')) {
 | |
|                 var dat = decodeURIComponent(val).split('=');
 | |
|                 prefs.data = JSON.parse(dat[1]);
 | |
|             }
 | |
|         });
 | |
|         return prefs.data;
 | |
|     },
 | |
|     save: function (settings) {
 | |
|         this.data = settings;
 | |
|         var d = new Date();
 | |
|         d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000));
 | |
|         document.cookie = 'selecta=' + encodeURIComponent(JSON.stringify(this.data)) + ';expires=' + d.toUTCString();
 | |
|     }
 | |
| };
 | |
| 
 | |
| var procDataSelect = function (sel) {
 | |
| 
 | |
|     // compare the select value against the other selects, and update the chart if required
 | |
|     var id = sel.id;
 | |
|     var num = +id.slice(-1);
 | |
|     var val = sel.value;
 | |
| 
 | |
|     // Has this series already been selected? If so set the dropdown back to its previous value, then abort
 | |
|     if (val != '0' && settings.series.indexOf(sel.value) != -1) {
 | |
|         $('#' + id).val(settings.series[num]).prop('selected', true);
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     //
 | |
|     if (val != '0') {
 | |
|         $('#' + id + ' option:contains(' + txtSelect + ')').text(txtClear);
 | |
|     } else {
 | |
|         $('#' + id + ' option:contains(' + txtClear + ')').text(txtSelect);
 | |
|     }
 | |
| 
 | |
|     // clear the existing series
 | |
|     if (chart.series.length > 0)
 | |
|         clearSeries(settings.series[num]);
 | |
| 
 | |
| 
 | |
|     updateChart(val, num, id);
 | |
| 
 | |
|     settings.series[num] = val;
 | |
| 
 | |
|     prefs.save(settings);
 | |
| };
 | |
| 
 | |
| var updateChart = function (val, num, id) {
 | |
|     // test for the extra sensor series first
 | |
|     if (val.startsWith('ExtraTemp-')) {
 | |
|         doExtraTemp(num, val);
 | |
|         return;
 | |
|     } else if (val.startsWith('ExtraHum-')) {
 | |
|         doExtraHum(num, val);
 | |
|         return;
 | |
|     } else if (val.startsWith('ExtraDewPoint-')) {
 | |
|         doExtraDew(num, val);
 | |
|         return;
 | |
|     } else if (val.startsWith('UserTemp-')) {
 | |
|         doUserTemp(num, val);
 | |
|         return;
 | |
|     } else if (val.startsWith('SoilMoist-')) {
 | |
|         doSoilMoist(num, val);
 | |
|         return;
 | |
|     } else if (val.startsWith('SoilTemp-')) {
 | |
|         doSoilTemp(num, val);
 | |
|         return;
 | |
|     } else if (val.startsWith('LeafWetness-')) {
 | |
|         doLeafWet(num, val);
 | |
|         return;
 | |
|     }
 | |
| 
 | |
|     switch (val) {
 | |
|         case '0':
 | |
|             // clear this series
 | |
|             break;
 | |
|         case 'Temperature':
 | |
|             doTemp(num);
 | |
|             break;
 | |
|         case 'Indoor Temp':
 | |
|             doInTemp(num);
 | |
|             break;
 | |
|         case 'Heat Index':
 | |
|             doHeatIndex(num);
 | |
|             break;
 | |
|         case 'Dew Point':
 | |
|             doDewPoint(num);
 | |
|             break;
 | |
|         case 'Wind Chill':
 | |
|             doWindChill(num);
 | |
|             break;
 | |
|         case 'Apparent Temp':
 | |
|             doAppTemp(num);
 | |
|             break;
 | |
|         case 'Feels Like':
 | |
|             doFeelsLike(num);
 | |
|             break;
 | |
| 
 | |
|         case 'Humidity':
 | |
|             doHumidity(num);
 | |
|             break;
 | |
|         case 'Indoor Hum':
 | |
|             doInHumidity(num);
 | |
|             break;
 | |
| 
 | |
|         case 'Solar Rad':
 | |
|             doSolarRad(num);
 | |
|             break;
 | |
|         case 'UV Index':
 | |
|             doUV(num);
 | |
|             break;
 | |
| 
 | |
|         case 'Pressure':
 | |
|             doPress(num);
 | |
|             break;
 | |
| 
 | |
|         case 'Wind Speed':
 | |
|             doWindSpeed(num);
 | |
|             break;
 | |
|         case 'Wind Gust':
 | |
|             doWindGust(num);
 | |
|             break;
 | |
|         case 'Wind Bearing':
 | |
|             doWindDir(num);
 | |
|             break;
 | |
| 
 | |
|         case 'Rainfall':
 | |
|             doRainfall(num);
 | |
|             break;
 | |
|         case 'Rainfall Rate':
 | |
|             doRainRate(num);
 | |
|             break;
 | |
| 
 | |
|         case 'PM 2.5':
 | |
|             doPm2p5(num);
 | |
|             break;
 | |
|         case 'PM 10':
 | |
|             doPm10(num);
 | |
|             break;
 | |
| 
 | |
|         default:
 | |
|             $('#' + id).val(txtSelect);
 | |
|             break;
 | |
|     }
 | |
| }
 | |
| 
 | |
| var updateColour = function (sel) {
 | |
|     var id = sel.id;
 | |
|     var num = +id.slice(-1);
 | |
|     var val = sel.value;
 | |
| 
 | |
|     // set the selection colour
 | |
|     $('#' + id).css('background', val);
 | |
| 
 | |
|     settings.colours[num] = val;
 | |
| 
 | |
| 
 | |
|     // do we need to update the associated data series?
 | |
|     if (settings.series[num] != '0') {
 | |
|         // find the series
 | |
|         var seriesIdx = -1;
 | |
|         var i = 0;
 | |
|         chart.series.forEach(function (ser) {
 | |
|             if (ser.options.name == settings.series[num] && ser.yAxis.options.id != 'navigator-y-axis') {
 | |
|                 seriesIdx = i;
 | |
|             }
 | |
|             i++;
 | |
|         });
 | |
| 
 | |
|         if (seriesIdx == -1)
 | |
|             return;
 | |
| 
 | |
|         chart.series[seriesIdx].options.color = settings.colours[num];
 | |
|         chart.series[seriesIdx].update(chart.series[seriesIdx].options);
 | |
|     }
 | |
|     prefs.save(settings);
 | |
| };
 | |
| 
 | |
| var clearSeries = function (val) {
 | |
|     // find the series
 | |
|     var seriesIdx = -1;
 | |
|     var i = 0;
 | |
|     chart.series.forEach(function (ser) {
 | |
|         if (ser.options.id == val && ser.yAxis.options.id != 'navigator-y-axis') {
 | |
|             seriesIdx = i;
 | |
|         }
 | |
|         i++;
 | |
|     });
 | |
| 
 | |
|     if (seriesIdx == -1)
 | |
|         return;
 | |
| 
 | |
|     // check no other series is using the yAxis
 | |
|     var yAxisId = chart.series[seriesIdx].yAxis.options.id;
 | |
|     var inUse = 0;
 | |
| 
 | |
|     chart.series.forEach(function (ser) {
 | |
|         if (ser.yAxis.options.id == yAxisId) {
 | |
|             inUse++;
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     // clear the series
 | |
|     chart.series[seriesIdx].remove();
 | |
| 
 | |
|     // Are we the only series using this axis, if so clear it
 | |
|     if (inUse === 1) {
 | |
|         var axisIdx = -1;
 | |
|         // find which index of yAxis that in use
 | |
|         for (i = 0; i < chart.yAxis.length; i++) {
 | |
|             if (chart.yAxis[i].options.id == yAxisId)
 | |
|                 axisIdx = i;
 | |
|         }
 | |
| 
 | |
|         // clear the yAxis
 | |
|         chart.yAxis[axisIdx].remove();
 | |
|     }
 | |
| 
 | |
|     // check the navigator - have we just removed the series it was using, and is there at least one series we can use instead?
 | |
|     if (!chart.navigator.hasNavigatorData && chart.series.length > 0) {
 | |
|         chart.series[0].setOptions({ showInNavigator: true });
 | |
|         chart.navigator.baseSeries = chart.series[0];
 | |
|         chart.navigator.update();
 | |
|         chart.redraw();
 | |
|     }
 | |
| };
 | |
| 
 | |
| 
 | |
| var checkAxisExists = function (name) {
 | |
|     var exists = false;
 | |
|     chart.yAxis.forEach(function (axis) {
 | |
|         if (axis.options.id == name)
 | |
|             exists = true;
 | |
|     });
 | |
|     return exists;
 | |
| };
 | |
| 
 | |
| 
 | |
| var addTemperatureAxis = function (idx) {
 | |
|     // first check if we already have a temperature axis
 | |
|     if (checkAxisExists('Temperature'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Temperature (°' + config.temp.units + ')' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: "Temperature",
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             formatter: function () {
 | |
|                 return '<span style="fill: ' + (this.value <= freezing ? 'blue' : 'red') + ';">' + this.value + '</span>';
 | |
|             },
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left',
 | |
|         },
 | |
|         plotLines: [{
 | |
|             // freezing line
 | |
|             value: freezing,
 | |
|             color: 'rgb(0, 0, 180)',
 | |
|             width: 1,
 | |
|             zIndex: 2
 | |
|         }],
 | |
|         minRange: config.temp.units == 'C' ? 5 : 10,
 | |
|         allowDecimals: false
 | |
|     }, false, false);
 | |
| 
 | |
| };
 | |
| 
 | |
| var addPressureAxis = function (idx) {
 | |
|     // first check if we already have a pressure axis
 | |
|     if (checkAxisExists('Pressure'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Pressure (' + config.press.units + ')' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: "Pressure",
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         minRange: config.press.units == 'in' ? 1 : 5,
 | |
|         allowDecimals: config.press.units == 'in' ? true : false
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addHumidityAxis = function (idx) {
 | |
|     // first check if we already have a humidity axis
 | |
|     if (checkAxisExists('Humidity'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Humidity (%)' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'Humidity',
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         min: 0,
 | |
|         max: 100,
 | |
|         allowDecimals: false
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addSoilMoistAxis = function (idx) {
 | |
|     // first check if we already have a soil moisture axis
 | |
|     if (checkAxisExists('SoilMoist'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Soil Moisture (' + config.soilmoisture.units + ')' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'SoilMoist',
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         min: 0,
 | |
|         max: config.soilmoisture.units === '%' ? 100 : 200, // Davis 0-200 cb, Ecowitt 0-100%
 | |
|         allowDecimals: false
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addSolarAxis = function (idx) {
 | |
|     // first check if we already have a solar axis
 | |
|     if (checkAxisExists('Solar'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Solar Radiation (W/m\u00B2)' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'Solar',
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         min: 0,
 | |
|         allowDecimals: false
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addUVAxis = function (idx) {
 | |
|     // first check if we already have a UV axis
 | |
|     if (checkAxisExists('UV'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'UV Index' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'UV',
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         min: 0
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addWindAxis = function (idx) {
 | |
|     // first check if we already have a wind axis
 | |
|     if (checkAxisExists('Wind'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Wind Speed (' + config.wind.units + ')' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'Wind',
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         min: 0,
 | |
|         allowDecimals: config.wind.units == 'm/s' ? true : false
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addBearingAxis = function (idx) {
 | |
|     // first check if we already have a bearing axis
 | |
|     if (checkAxisExists('Bearing'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Wind Bearing' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'Bearing',
 | |
|         alignTicks: false,
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left',
 | |
|             formatter: function () {
 | |
|                 var a = ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'];
 | |
|                 return a[Math.floor((this.value + 22.5) / 45) % 8];
 | |
|             }
 | |
|         },
 | |
|         min: 0,
 | |
|         max: 360,
 | |
|         tickInterval: 45,
 | |
|         gridLineWidth: 0,
 | |
|         minorGridLineWidth: 0
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addRainAxis = function (idx) {
 | |
|     // first check if we already have a rain axis
 | |
|     if (checkAxisExists('Rain'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Rainfall (' + config.rain.units + ')' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'Rain',
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         min: 0,
 | |
|         minRange: config.rain.units == 'in' ? 0.25 : 4,
 | |
|         allowDecimals: config.rain.units == 'in' ? true : false
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addRainRateAxis = function (idx) {
 | |
|     // first check if we already have a rain rate axis
 | |
|     if (checkAxisExists('RainRate'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Rainfall Rate (' + config.rain.units + '/hr)' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'RainRate',
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         min: 0,
 | |
|         minRange: config.rain.units == 'in' ? 0.25 : 4,
 | |
|         allowDecimals: config.rain.units == 'in' ? true : false
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addAQAxis = function (idx) {
 | |
|     // first check if we already have a AQ axis
 | |
|     if (checkAxisExists('pm'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Particulates (µg/m³)' },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'pm',
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         min: 0,
 | |
|         allowDecimals: false
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| var addLeafWetAxis = function (idx) {
 | |
|     // first check if we already have a humidity axis
 | |
|     if (checkAxisExists('LeafWet'))
 | |
|         return;
 | |
| 
 | |
|     // nope no existing axis, add one
 | |
|     chart.addAxis({
 | |
|         title: { text: 'Leaf wetness' + (config.leafwet.units == '' ? '' : '(' + config.leafwet.units + ')') },
 | |
|         opposite: idx < settings.series.length / 2 ? false : true,
 | |
|         id: 'LeafWetness',
 | |
|         showEmpty: false,
 | |
|         labels: {
 | |
|             align: idx < settings.series.length / 2 ? 'right' : 'left'
 | |
|         },
 | |
|         min: 0,
 | |
|         allowDecimals: false
 | |
|     }, false, false);
 | |
| };
 | |
| 
 | |
| 
 | |
| var doTemp = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/tempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.temp,
 | |
|                 id: 'Temperature',
 | |
|                 name: 'Temperature',
 | |
|                 yAxis: 'Temperature',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doInTemp = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/tempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.intemp,
 | |
|                 id: 'Indoor Temp',
 | |
|                 name: 'Indoor Temp',
 | |
|                 yAxis: 'Temperature',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doHeatIndex = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/tempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.heatindex,
 | |
|                 id: 'Heat Index',
 | |
|                 name: 'Heat Index',
 | |
|                 yAxis: 'Temperature',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doDewPoint = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/tempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.dew,
 | |
|                 id: 'Dew Point',
 | |
|                 name: 'Dew Point',
 | |
|                 yAxis: 'Temperature',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doWindChill = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/tempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.wchill,
 | |
|                 id: 'Wind Chill',
 | |
|                 name: 'Wind Chill',
 | |
|                 yAxis: 'Temperature',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doAppTemp = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/tempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.apptemp,
 | |
|                 id: 'Apparent Temp',
 | |
|                 name: 'Apparent Temp',
 | |
|                 yAxis: 'Temperature',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doFeelsLike = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/tempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.feelslike,
 | |
|                 id: 'Feels Like',
 | |
|                 name: 'Feels Like',
 | |
|                 yAxis: 'Temperature',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| 
 | |
| var doHumidity = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addHumidityAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/humdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.hum,
 | |
|                 id: 'Humidity',
 | |
|                 name: 'Humidity',
 | |
|                 yAxis: 'Humidity',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' %',
 | |
|                     valueDecimals: config.hum.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doInHumidity = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addHumidityAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/humdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.inhum,
 | |
|                 id: 'Indoor Hum',
 | |
|                 name: 'Indoor Hum',
 | |
|                 yAxis: 'Humidity',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' %',
 | |
|                     valueDecimals: config.hum.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| 
 | |
| var doSolarRad = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addSolarAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/solardata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.SolarRad,
 | |
|                 id: 'Solar Rad',
 | |
|                 name: 'Solar Rad',
 | |
|                 yAxis: 'Solar',
 | |
|                 type: 'area',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' W/m\u00B2',
 | |
|                     valueDecimals: 0
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 fillOpacity: 0.5,
 | |
|                 boostThreshold: 0,
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doUV = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addUVAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/solardata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.UV,
 | |
|                 id: 'UV Index',
 | |
|                 name: 'UV Index',
 | |
|                 yAxis: 'UV',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: null,
 | |
|                     valueDecimals: config.uv.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| 
 | |
| var doPress = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addPressureAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/pressdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.press,
 | |
|                 id: 'Pressure',
 | |
|                 name: 'Pressure',
 | |
|                 yAxis: 'Pressure',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' ' + config.press.units,
 | |
|                     valueDecimals: config.press.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| 
 | |
| var doWindSpeed = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addWindAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/winddata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.wspeed,
 | |
|                 id: 'Wind Speed',
 | |
|                 name: 'Wind Speed',
 | |
|                 yAxis: 'Wind',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' ' + config.wind.units,
 | |
|                     valueDecimals: config.wind.avgdecimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doWindGust = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addWindAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/winddata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.wgust,
 | |
|                 id: 'Wind Gust',
 | |
|                 name: 'Wind Gust',
 | |
|                 yAxis: 'Wind',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' ' + config.wind.units,
 | |
|                     valueDecimals: config.wind.gustdecimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doWindDir = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addBearingAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/wdirdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.avgbearing,
 | |
|                 id: 'Wind Bearing',
 | |
|                 name: 'Wind Bearing',
 | |
|                 yAxis: 'Bearing',
 | |
|                 type: 'scatter',
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx,
 | |
|                 marker: {
 | |
|                     enabled: true,
 | |
|                     symbol: 'circle',
 | |
|                     radius: 2,
 | |
|                     states: {
 | |
|                         hover: { enabled: false },
 | |
|                         select: { enabled: false },
 | |
|                         normal: { enabled: false }
 | |
|                     }
 | |
|                 },
 | |
|                 tooltip: {
 | |
|                     enabled: false
 | |
|                 },
 | |
|                 animationLimit: 1,
 | |
|                 cursor: 'pointer',
 | |
|                 enableMouseTracking: false,
 | |
|                 label: { enabled: false }
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| 
 | |
| var doRainfall = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addRainAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/raindata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.rfall,
 | |
|                 id: 'Rainfall',
 | |
|                 name: 'Rainfall',
 | |
|                 yAxis: 'Rain',
 | |
|                 type: 'area',
 | |
|                 tooltip: {
 | |
|                     valueDecimals: config.rain.decimals,
 | |
|                     valueSuffix: ' ' + config.rain.units
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx,
 | |
|                 fillOpacity: 0.3,
 | |
|                 boostThreshold: 0
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doRainRate = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addRainRateAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/raindata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.rrate,
 | |
|                 id: 'Rainfall Rate',
 | |
|                 name: 'Rainfall Rate',
 | |
|                 yAxis: 'RainRate',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' ' + config.rain.units + '/hr',
 | |
|                     valueDecimals: config.rain.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| 
 | |
| var doPm2p5 = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addAQAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/airquality.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.pm2p5,
 | |
|                 id: 'PM 2.5',
 | |
|                 name: 'PM 2.5',
 | |
|                 yAxis: 'pm',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' µg/m³',
 | |
|                     valueDecimals: 1,
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doPm10 = function (idx) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addAQAxis(idx);
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/airquality.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp.pm10,
 | |
|                 id: 'PM 10',
 | |
|                 name: 'PM 10',
 | |
|                 yAxis: 'pm',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' µg/m³',
 | |
|                     valueDecimals: 1,
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| 
 | |
| var doExtraTemp = function (idx, val) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     // get the sensor name
 | |
|     var name = val.split('-').slice(1).join('-');
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/extratempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp[name],
 | |
|                 id: val,
 | |
|                 name: name,
 | |
|                 yAxis: "Temperature",
 | |
|                 type: "line",
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doUserTemp = function (idx, val) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     // get the sensor name
 | |
|     var name = val.split('-').slice(1).join('-');
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/usertempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp[name],
 | |
|                 id: val,
 | |
|                 name: name,
 | |
|                 yAxis: "Temperature",
 | |
|                 type: "line",
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doExtraHum = function (idx, val) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addHumidityAxis(idx);
 | |
| 
 | |
|     // get the sensor name
 | |
|     var name = val.split('-').slice(1).join('-');
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/extrahumdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp[name],
 | |
|                 id: val,
 | |
|                 name: name,
 | |
|                 yAxis: 'Humidity',
 | |
|                 type: 'line',
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' %',
 | |
|                     valueDecimals: config.hum.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doExtraDew = function (idx, val) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     // get the sensor name
 | |
|     var name = val.split('-').slice(1).join('-');
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/extradewdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp[name],
 | |
|                 id: val,
 | |
|                 name: name,
 | |
|                 yAxis: "Temperature",
 | |
|                 type: "line",
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doSoilTemp = function (idx, val) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addTemperatureAxis(idx);
 | |
| 
 | |
|     // get the sensor name
 | |
|     var name = val.split('-').slice(1).join('-');
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/soiltempdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp[name],
 | |
|                 id: val,
 | |
|                 name: name,
 | |
|                 yAxis: "Temperature",
 | |
|                 type: "line",
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' °' + config.temp.units,
 | |
|                     valueDecimals: config.temp.decimals
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doSoilMoist = function (idx, val) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addSoilMoistAxis(idx);
 | |
| 
 | |
|     // get the sensor name
 | |
|     var name = val.split('-').slice(1).join('-');
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/soilmoistdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp[name],
 | |
|                 id: val,
 | |
|                 name: name,
 | |
|                 yAxis: "SoilMoist",
 | |
|                 type: "line",
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' ' + config.soilmoisture.units
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | |
| 
 | |
| var doLeafWet = function (idx, val) {
 | |
|     chart.showLoading();
 | |
| 
 | |
|     addLeafWetAxis(idx);
 | |
| 
 | |
|     // get the sensor name
 | |
|     var name = val.split('-').slice(1).join('-');
 | |
| 
 | |
|     $.ajax({
 | |
|         url: 'data/leafwetdata.json',
 | |
|         dataType: 'json',
 | |
|         success: function (resp) {
 | |
|             chart.hideLoading();
 | |
|             chart.addSeries({
 | |
|                 index: idx,
 | |
|                 data: resp[name],
 | |
|                 id: val,
 | |
|                 name: name,
 | |
|                 yAxis: "LeafWetness",
 | |
|                 type: "line",
 | |
|                 tooltip: {
 | |
|                     valueSuffix: ' ' + config.leafwet.units
 | |
|                 },
 | |
|                 visible: true,
 | |
|                 color: settings.colours[idx],
 | |
|                 zIndex: 100 - idx
 | |
|             });
 | |
|         }
 | |
|     });
 | |
| };
 | 
