From 0a7df4a541466da1b3e65333e5cf7a74b72c266e Mon Sep 17 00:00:00 2001 From: Bhabesh <bhabesh.mukhopadhyay@nibio.no> Date: Fri, 3 Jul 2020 15:17:49 +0200 Subject: [PATCH] Two new weather stations added MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Weather stations named 'Helgøy' and 'Skiftun' added. Modification related with password and different url to fetch data implemented --- .../templates/cydiapomonella/index.html | 342 ++++++++++++------ 1 file changed, 227 insertions(+), 115 deletions(-) diff --git a/cydiapomonella/templates/cydiapomonella/index.html b/cydiapomonella/templates/cydiapomonella/index.html index c53a2f2d..c3db141f 100644 --- a/cydiapomonella/templates/cydiapomonella/index.html +++ b/cydiapomonella/templates/cydiapomonella/index.html @@ -55,6 +55,8 @@ {% block customJS %} {% csrf_token %} <script type="text/javascript"> + var resultHeatSumDailyData=[]; + var CONST_TIMEZONE = 'Europe/Oslo'; var dateToday = new Date(); var dateYesterday = getAdjustDate(dateToday,1); @@ -74,11 +76,16 @@ function funDtPickerHeatSum() { - var varWeatherId = $('#weatherStationId').find(':selected').val(); + var varWeatherId = $('#weatherStationId').find(':selected').val(); + var weatherStationIdParamJSON = getJsonData(varWeatherId); + if(typeof varWeatherId === "undefined") { varWeatherId = '$(#weatherStationId)'; } + else{ + varWeatherId = getJsonData(varWeatherId).id; + } var startDate = new Date($('#idTxtDateInput').val()); @@ -95,7 +102,8 @@ timeZone : CONST_TIMEZONE } - var jsonDailyData = getAjaxDailyData (jsonParamUrlDataDaily); + var jsonDailyData = getAjaxDailyData (jsonParamUrlDataDaily,weatherStationIdParamJSON); + } @@ -113,26 +121,63 @@ */ $('#idTxtDateInput').change(function(){ - funDtPickerHeatSum(); - }); + funDtPickerHeatSum(); + }); + /* Convert string to JSON */ + function getJsonData(strData) + { + return JSON.parse(strData); + } /* On change of drop down for weather stations */ $('#weatherStationId').change(function(){ - + + + var jsonParamUrlDataHourly = ''; + var varStationPwd = ''; var varWeatherId = $('#weatherStationId').find(':selected').val(); + + + var weatherStationIdParamJSON = getJsonData(varWeatherId); + if(typeof varWeatherId === "undefined") { varWeatherId = '$(#weatherStationId)'; } + else + { + varWeatherId = getJsonData(varWeatherId).id; + } + + var radioDaysValue = $("input[name='radioDays']:checked").val(); var dateStartDate = getAdjustDate(dateToday,radioDaysValue); var strStartDate = JSON.stringify(dateStartDate).substring(1,11); - var jsonParamUrlDataHourly = { + if( + varWeatherId === '536' || + varWeatherId === '537' + ) + { + var dateStartDate02 = getAdjustDate(dateToday, (parseInt(radioDaysValue) + 1)); + var strStartDate02 = JSON.stringify(dateStartDate02).substring(1,11); + + jsonParamUrlDataHourly = { + logInterval : '1h', + startDate : strStartDate02, + startTime : '12', + endDate : strEndDate, + endTime : '11', + timeZone : CONST_TIMEZONE + } + } + else + { + jsonParamUrlDataHourly = { weatherStationId : varWeatherId, elementMeasurementTypes : ['TM','RR'], logInterval : '1h', @@ -142,10 +187,13 @@ endTime : '11', timeZone : CONST_TIMEZONE } + } + + - jsonHourlyData = getAjaxHourlyData(jsonParamUrlDataHourly); + jsonHourlyData = getAjaxHourlyData(jsonParamUrlDataHourly,weatherStationIdParamJSON); //$('#idTxtDateInput').datepicker("setDate",dateStartDate); @@ -165,68 +213,79 @@ /* Convert hourly data to daily data */ function setConvertHourlyData(data) { + //resultHeatSumDailyData=[]; + var tmElementMeasurementType=''; + var tmSUM = 0.0; + var strDate01_heatSum = ''; + var resultConvertData=[]; - var strDate01 = ''; - var strDate02 = ''; - var date01 = null; - var data02 = null; - var time19 = ''; - var time20 = ''; - var time21 = ''; - var time22 = ''; - var time23 = ''; - var rainFall = 0.0; - - var hourCount = 0; - var tempval = ''; - - strDate01 = JSON.stringify(getStrConvertedDate(data[0].timeMeasured)).substring(1,11); - + var strDate01 = ''; + var strDate02 = ''; + var date01 = null; + var data02 = null; + var time19 = ''; + var time20 = ''; + var time21 = ''; + var time22 = ''; + var time23 = ''; + var rainFall = 0.0; + + var hourCount = 0; + var tempval = ''; + + strDate01 = JSON.stringify(getStrConvertedDate(data[0].timeMeasured)).substring(1,11); + + date01 = new Date(strDate01); date02 = new Date(strDate01); - for (var i=0; i<data.length; i++) { - + + var radioDaysValue = $("input[name='radioDays']:checked").val(); + var varDtData = new Date(getStrConvertedDate(data[i].timeMeasured).substring(0,11)); + var varDtStartDate = new Date(getStrConvertedDate(getAdjustDate(new Date(),radioDaysValue)).substring(0,11)); - strDate02 = JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11); + if (varDtData.getTime() >= varDtStartDate.getTime()) + { + strDate02 = JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11); switch (JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(12,14)) { case '19': if(data[i].elementMeasurementTypeId==='TM') { - time19 = data[i].value; + + time19 = parseFloat(data[i].value).toFixed(1); tempval = data[i].elementMeasurementTypeId; } break; case '20': if(data[i].elementMeasurementTypeId==='TM') { - time20 = data[i].value; + time20 = parseFloat(data[i].value).toFixed(1); tempval = data[i].elementMeasurementTypeId; } break; case '21': if(data[i].elementMeasurementTypeId==='TM') { - time21 = data[i].value; + time21 = parseFloat(data[i].value).toFixed(1); tempval = data[i].elementMeasurementTypeId; } break; case '22': if(data[i].elementMeasurementTypeId==='TM') { - time22 = data[i].value; + time22 = parseFloat(data[i].value).toFixed(1); tempval = data[i].elementMeasurementTypeId; } break; case '23': if(data[i].elementMeasurementTypeId==='TM') { - time23 = data[i].value; + time23 = parseFloat(data[i].value).toFixed(1); tempval = data[i].elementMeasurementTypeId; } break; @@ -236,28 +295,41 @@ } - if(strDate01.localeCompare(strDate02) !== 0) { - - + if($.trim(strDate01_heatSum)) + { + resultHeatSumDailyData.push({ + 'elementMeasurementTypeId' : tmElementMeasurementType, + 'value' : (tmSUM/24), + 'timeMeasured' : strDate01_heatSum + }); + } var decimalPlace = 2; - resultConvertData.push({ + /* Avoiding empty data */ + if($.trim(time19)) + { + /* Creating JSON list for data table */ + resultConvertData.push({ resultDate: strDate01, - 'time19' : time19.toFixed(1), - 'time20' : time20.toFixed(1), // getDecimalPlace(time20, decimalPlace), - 'time21' : time21.toFixed(1), - 'time22' : time22.toFixed(1), - 'time23' : time23.toFixed(1), + 'time19' : time19, + 'time20' : time20, // getDecimalPlace(time20, decimalPlace), + 'time21' : time21, + 'time22' : time22, + 'time23' : time23, 'rainFall': rainFall.toFixed(1) //getDecimalPlace(rainFall,2) }); + } + strDate01 = JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11); rainFall = 0.0; - + tmSUM = 0.0; + tmElementMeasurementType = ''; + strDate01_heatSum = data[i].timeMeasured; } @@ -266,8 +338,20 @@ rainFall = rainFall + data[i].value; } + + + /* HEAT SUM -- Daily TM */ + if(data[i].elementMeasurementTypeId==='TM') + { + tmElementMeasurementType = data[i].elementMeasurementTypeId; + tmSUM = tmSUM + data[i].value; + } + + } //--------------------------------- + } + getWeatherDataTable(resultConvertData); @@ -285,6 +369,7 @@ /* Calculate the daily TM value for HeatSum */ function getHeatSumValue(data) { + var TM_BASE = 10; var TM_Daily = 0.0; var TM_SUM = 0.0; @@ -292,35 +377,53 @@ var TM_NON_NEGATIVE = 0; var counter = undefined; - - for (var i=0; i<data.length; i++) + console.log('I hv data'); + if($.trim(data)) { - var strStartDateDtPicker = JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11); - - if(strStartDateDtPicker===$('#idTxtDateInput').val()) - { - counter = 0; - } - if(typeof counter === "undefined") - { - break; - } - else + + for (var i=0; i<data.length; i++) { - TM_Daily = data[counter].value; - TM_Calc = TM_Daily - TM_BASE; - TM_NON_NEGATIVE = TM_NON_NEGATIVE + ((TM_Calc<0) ? 0 : TM_Calc); - var temp = ((TM_Calc<0) ? 0 : TM_Calc) - ++counter; + var strStartDateDtPicker = JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11); + + if(strStartDateDtPicker===$('#idTxtDateInput').val()) + { + counter = 0; + TM_NON_NEGATIVE = 0; + } + if(typeof counter === "undefined") + { + + break; + } + else + { + TM_Daily = data[counter].value; + TM_Calc = TM_Daily - TM_BASE; + TM_NON_NEGATIVE = TM_NON_NEGATIVE + ((TM_Calc<0) ? 0 : TM_Calc); + //var temp = ((TM_Calc<0) ? 0 : TM_Calc) + ++counter; + } + } - } - $('#idSpanWeatherStationName').html($('#weatherStationId').find(':selected').text()); - $('#idSpanStartDate').html($('#idTxtDateInput').val()); - $('#idSpanEndDate').html(JSON.stringify(dateYesterday).substring(1,11)); - $('#idDivResultNonNegative').html(Math.round(TM_NON_NEGATIVE)); - $('#idSpanDateDifference').html(dateDifferenceInDays(new Date($('#idTxtDateInput').val()), new Date())); - + $('#idSpanWeatherStationName').html($('#weatherStationId').find(':selected').text()); + $('#idSpanStartDate').html($('#idTxtDateInput').val()); + $('#idSpanEndDate').html(JSON.stringify(dateYesterday).substring(1,11)); + $('#idDivResultNonNegative').html(Math.round(TM_NON_NEGATIVE)); + $('#idSpanDateDifference').html(dateDifferenceInDays(new Date($('#idTxtDateInput').val()), new Date())); + + + + } + else + { + + $('#idSpanWeatherStationName').html(''); + $('#idSpanStartDate').html(''); + $('#idSpanEndDate').html(''); + $('#idDivResultNonNegative').html(''); + $('#idSpanDateDifference').html(''); + } } @@ -405,12 +508,20 @@ /* Fetch hourly data through ajax call */ - function getAjaxHourlyData(jsonParamUrlDataHourly) + function getAjaxHourlyData(jsonParamUrlDataHourly,idJsonParam) { - var resultData = ""; - + var resultData = ""; + var strUrl = ""; + if($.trim(idJsonParam.pas)) + { + strUrl = "https://weather.vips.nibio.no/rest/fruitwebdavis/id="+idJsonParam.id+"&pw="+idJsonParam.pas; + } + else + { + strUrl = "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback"; + } $.ajax({ - url : "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback", + url : strUrl, type : 'GET', cache : false, data : jsonParamUrlDataHourly, @@ -422,6 +533,11 @@ resultData = data; setConvertHourlyData(resultData); + if($.trim(idJsonParam.pas)) + { + getHeatSumValue(resultHeatSumDailyData); + } + } else{ $('#idDivHeatSum').hide(); @@ -443,35 +559,29 @@ /* Fetch Daily data through ajax call */ - function getAjaxDailyData(jsonParamUrlDataHourly) + function getAjaxDailyData(jsonParamUrlDataHourly,idJsonParam) { var resultData = ""; - - $.ajax({ - url : "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback", - type : 'GET', - cache : false, - data : jsonParamUrlDataHourly, - //async : false, - success : function (data) { - if($.trim(data)) + $.ajax({ + url : "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback", + type : 'GET', + cache : false, + data : jsonParamUrlDataHourly, + //async : false, + success : function (data) { + if($.trim(data)) + { + resultData = data; + getHeatSumValue(resultData); + } + }, + error : function(xhr, status, error) { - - resultData = data; - getHeatSumValue(resultData); + //TODO } - else{ - //TODO - } - }, - error : function(xhr, status, error) - { - //TODO - } - }); - + }); + return resultData; - } @@ -516,27 +626,29 @@ <div class="col-sm-4"> <select name="weatherStationName" id="weatherStationId" class="form-control"> <option value="-1">-- {% trans "Select weather station" %} --</option> - <option value="11">Apelsvoll</option> - <option value="12">Balestrand</option> - <option value="13">Bø</option> - <option value="86">Darbu</option> - <option value="19">Gjerpen</option> - <option value="21">Gvarv</option> - <option value="22">Hjelmeland</option> - <option value="25">Hønefoss</option> - <option value="27">Kise</option> - <option value="29">Landvik</option> - <option value="30">Lier</option> - <option value="65">Ljøsne</option> - <option value="32">Lyngdal</option> - <option value="35">Njøs</option> - <option value="41">Rygge</option> - <option value="42">Sande</option> - <option value="131">Sandefjord</option> - <option value="64">Slinde</option> - <option value="47">Svelvik</option> - <option value="91">Søve</option> - <option value="61">Åsbakken</option> + <option value='{"id":"11","pas":""}'>Apelsvoll</option> + <option value='{"id":"12","pas":""}'>Balestrand</option> + <option value='{"id":"13","pas":""}'>Bø</option> + <option value='{"id":"86","pas":""}'>Darbu</option> + <option value='{"id":"19","pas":""}'>Gjerpen</option> + <option value='{"id":"21","pas":""}'>Gvarv</option> + <option value='{"id":"22","pas":""}'>Hjelmeland</option> + <option value='{"id":"25","pas":""}'>Hønefoss</option> + <option value='{"id":"27","pas":""}'>Kise</option> + <option value='{"id":"29","pas":""}'>Landvik</option> + <option value='{"id":"30","pas":""}'>Lier</option> + <option value='{"id":"65","pas":""}'>Ljøsne</option> + <option value='{"id":"32","pas":""}'>Lyngdal</option> + <option value='{"id":"35","pas":""}'>Njøs</option> + <option value='{"id":"41","pas":""}'>Rygge</option> + <option value='{"id":"42","pas":""}'>Sande</option> + <option value='{"id":"131","pas":""}'>Sandefjord</option> + <option value='{"id":"64","pas":""}'>Slinde</option> + <option value='{"id":"47","pas":""}'>Svelvik</option> + <option value='{"id":"91","pas":""}'>Søve</option> + <option value='{"id":"61","pas":""}'>Åsbakken</option> + <option value='{"id":"536","pas":"GF90esoleo"}'>Helgøy</option> + <option value='{"id":"537","pas":"Kgsf72k388"}'>Skiftun</option> </select> </div> <div class="col-sm-6"> -- GitLab