diff --git a/cydiapomonella/templates/cydiapomonella/index.html b/cydiapomonella/templates/cydiapomonella/index.html index ad82159eb71652782e4848c8df4835333e020bf2..2cd2f0ea3a734b37d3a03ab8edf6d591043b134e 100644 --- a/cydiapomonella/templates/cydiapomonella/index.html +++ b/cydiapomonella/templates/cydiapomonella/index.html @@ -55,7 +55,6 @@ {% block customJS %} {% csrf_token %} <script type="text/javascript"> - var resultHeatSumDailyData=[]; var CONST_TIMEZONE = 'Europe/Oslo'; var dateToday = new Date(); @@ -63,10 +62,6 @@ var strEndDate = JSON.stringify(dateToday).substring(1,11); - //var jsonDailyData = ""; - var jsonHourlyData = ""; - var jsonMeasurdData = ""; - $(function(){ document.getElementById('idTxtDateInput').setAttribute("max", JSON.stringify(dateYesterday).substring(1,11)); $('#idTxtDateInput').removeClass('hasDatepicker'); @@ -77,33 +72,41 @@ { var varWeatherId = $('#weatherStationId').find(':selected').val(); - var weatherStationIdParamJSON = getJsonData(varWeatherId); + var strStartDate = undefined; + var varLogInIntervalHourly = '1h'; + var varLogInIntervalDaily = '1d'; + var varElementMeasurementTypes = ['TM']; + + var jsonParamUrlData = ''; + + var weatherStationIdParamJSON = getJsonData(varWeatherId); if(typeof varWeatherId === "undefined") { - varWeatherId = '$(#weatherStationId)'; + varWeatherId = '$(#weatherStationId)'; } else{ - varWeatherId = getJsonData(varWeatherId).id; + varWeatherId = getJsonData(varWeatherId).id; } - var startDate = new Date($('#idTxtDateInput').val()); + var startDate = new Date($('#idTxtDateInput').val()); - var strStartDate = JSON.stringify(getAdjustDate(new Date($('#idTxtDateInput').val()), 1 )).substring(1,11); - - var jsonParamUrlDataDaily = { - weatherStationId : varWeatherId, - elementMeasurementTypes : ['TM'], - logInterval : '1d', - startDate : strStartDate, - startTime : '12', - endDate : strEndDate, - endTime : '11', - timeZone : CONST_TIMEZONE - } - - var jsonDailyData = getAjaxDailyData (jsonParamUrlDataDaily,weatherStationIdParamJSON); - + + if( + varWeatherId === '536' || + varWeatherId === '537' + ) + { + strStartDate = JSON.stringify(getAdjustDate(startDate, 2 )).substring(1,11); + jsonParamUrlData = getWeatherDataUrlParam(varWeatherId, strStartDate, strEndDate, varElementMeasurementTypes, varLogInIntervalHourly, CONST_TIMEZONE); + getAjaxHourlyData(jsonParamUrlData,weatherStationIdParamJSON,false); + } + else + { + strStartDate = JSON.stringify(getAdjustDate(startDate, 1 )).substring(1,11); + jsonParamUrlData = getWeatherDataUrlParam(varWeatherId, strStartDate, strEndDate, varElementMeasurementTypes, varLogInIntervalDaily, CONST_TIMEZONE); + getAjaxDailyData (jsonParamUrlData,weatherStationIdParamJSON); + } } @@ -134,159 +137,184 @@ /* On change of drop down for weather stations */ $('#weatherStationId').change(function(){ + var jsonParamUrlDataHourly = ''; + var varStationPwd = ''; + var varWeatherId = $('#weatherStationId').find(':selected').val(); + var varElementMeasurementTypes = ['TM','RR']; + var varLogInIntervalHourly = '1h'; - var jsonParamUrlDataHourly = ''; - var varStationPwd = ''; - var varWeatherId = $('#weatherStationId').find(':selected').val(); - + var weatherStationIdParamJSON = getJsonData(varWeatherId); - var weatherStationIdParamJSON = getJsonData(varWeatherId); - - if(typeof varWeatherId === "undefined") + if(typeof varWeatherId === "undefined") { - varWeatherId = '$(#weatherStationId)'; + varWeatherId = '$(#weatherStationId)'; } else { - varWeatherId = getJsonData(varWeatherId).id; + varWeatherId = getJsonData(varWeatherId).id; } - var radioDaysValue = $("input[name='radioDays']:checked").val(); + var radioDaysValue = $("input[name='radioDays']:checked").val(); - var dateStartDate = getAdjustDate(dateToday,radioDaysValue); - var strStartDate = JSON.stringify(dateStartDate).substring(1,11); + var dateStartDate = getAdjustDate(dateToday,radioDaysValue); + var strStartDate = JSON.stringify(dateStartDate).substring(1,11); 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 - } + var dateStartDate02 = getAdjustDate(dateToday, (parseInt(radioDaysValue) + 1)); + strStartDate = JSON.stringify(dateStartDate02).substring(1,11); } - else - { - jsonParamUrlDataHourly = { - weatherStationId : varWeatherId, - elementMeasurementTypes : ['TM','RR'], - logInterval : '1h', - startDate : strStartDate, - startTime : '12', - endDate : strEndDate, - endTime : '11', - timeZone : CONST_TIMEZONE - } - } - + jsonParamUrlDataHourly = getWeatherDataUrlParam(varWeatherId, strStartDate, strEndDate, varElementMeasurementTypes, varLogInIntervalHourly, CONST_TIMEZONE ); - - - jsonHourlyData = getAjaxHourlyData(jsonParamUrlDataHourly,weatherStationIdParamJSON); + getAjaxHourlyData(jsonParamUrlDataHourly,weatherStationIdParamJSON,true); - - //$('#idTxtDateInput').datepicker("setDate",dateStartDate); document.querySelector("#idTxtDateInput").valueAsDate = dateStartDate; /*Calling function to calculate and place heatsum value based upon date placed on datepicker*/ - funDtPickerHeatSum(); + //funDtPickerHeatSum(); }); + /* Get the parameters of the URL for weather station */ + function getWeatherDataUrlParam(varWeatherId, paramStartDate, strEndDate, paramElementMeasurementTypes, paramLogInInterval, paramTimeZone ) + { + + + var jsonParamUrlDataHourly = ''; + + if( + varWeatherId === '536' || + varWeatherId === '537' + ) + { + jsonParamUrlDataHourly = { + logInterval : paramLogInInterval, + startDate : paramStartDate, + startTime : '12', + endDate : strEndDate, + endTime : '11', + timeZone : paramTimeZone + } + } + else + { + jsonParamUrlDataHourly = { + weatherStationId : varWeatherId, + elementMeasurementTypes : paramElementMeasurementTypes, + logInterval : paramLogInInterval, + startDate : paramStartDate, + startTime : '12', + endDate : strEndDate, + endTime : '11', + timeZone : paramTimeZone + } + } + + return jsonParamUrlDataHourly; + + + } + + + /* Radio button click*/ $(document).on("click", ".clsRadioDays", function(event){ $('#weatherStationId').change(); }); - /* Convert hourly data to daily data */ - function setConvertHourlyData(data) + /* Hourly data and Convert hourly data to daily data */ + function setConvertHourlyData(data, flagActivate) { - //resultHeatSumDailyData=[]; - var tmElementMeasurementType=''; - var tmSUM = 0.0; - var strDate01_heatSum = ''; + resultHeatSumDailyData = []; + var tmElementMeasurementType = ''; + var tmSUM = 0.0; + var strDate01_heatSum = ''; - var resultConvertData=[]; + 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 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 = ''; + var hourCount = 0; + var tempval = ''; - strDate01 = JSON.stringify(getStrConvertedDate(data[0].timeMeasured)).substring(1,11); + strDate01 = JSON.stringify(getStrConvertedDate(data[0].timeMeasured)).substring(1,11); - date01 = new Date(strDate01); - date02 = new Date(strDate01); + 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)); + var varDtStartDate = undefined; + var radioDaysValue = $("input[name='radioDays']:checked").val(); + var varDtData = new Date(getStrConvertedDate(data[i].timeMeasured).substring(0,11)); + if(flagActivate) + { + varDtStartDate = new Date(getStrConvertedDate(getAdjustDate(new Date(),radioDaysValue)).substring(0,11)); + } + else + { + var startDate = new Date($('#idTxtDateInput').val()); + varDtStartDate = new Date(JSON.stringify(getAdjustDate(startDate, 1 )).substring(1,11)); + } if (varDtData.getTime() >= varDtStartDate.getTime()) { - strDate02 = JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11); + 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 = parseFloat(data[i].value).toFixed(1); - tempval = data[i].elementMeasurementTypeId; + time19 = parseFloat(data[i].value).toFixed(1); + tempval = data[i].elementMeasurementTypeId; } break; case '20': if(data[i].elementMeasurementTypeId==='TM') { - time20 = parseFloat(data[i].value).toFixed(1); - tempval = data[i].elementMeasurementTypeId; + time20 = parseFloat(data[i].value).toFixed(1); + tempval = data[i].elementMeasurementTypeId; } break; case '21': if(data[i].elementMeasurementTypeId==='TM') { - time21 = parseFloat(data[i].value).toFixed(1); - tempval = data[i].elementMeasurementTypeId; + time21 = parseFloat(data[i].value).toFixed(1); + tempval = data[i].elementMeasurementTypeId; } break; case '22': if(data[i].elementMeasurementTypeId==='TM') { - time22 = parseFloat(data[i].value).toFixed(1); - tempval = data[i].elementMeasurementTypeId; + time22 = parseFloat(data[i].value).toFixed(1); + tempval = data[i].elementMeasurementTypeId; } break; case '23': if(data[i].elementMeasurementTypeId==='TM') { - time23 = parseFloat(data[i].value).toFixed(1); - tempval = data[i].elementMeasurementTypeId; + time23 = parseFloat(data[i].value).toFixed(1); + tempval = data[i].elementMeasurementTypeId; } break; @@ -297,15 +325,16 @@ if(strDate01.localeCompare(strDate02) !== 0) { + //TODO -- check usability of this below if clause if($.trim(strDate01_heatSum)) { resultHeatSumDailyData.push({ - 'elementMeasurementTypeId' : tmElementMeasurementType, - 'value' : (tmSUM/24), - 'timeMeasured' : strDate01_heatSum + 'elementMeasurementTypeId' : tmElementMeasurementType, + 'value' : (tmSUM/24), + 'timeMeasured' : strDate01_heatSum }); } - var decimalPlace = 2; + var decimalPlace = 2; /* Avoiding empty data */ if($.trim(time19)) @@ -314,28 +343,26 @@ resultConvertData.push({ resultDate: strDate01, 'time19' : time19, - 'time20' : time20, // getDecimalPlace(time20, decimalPlace), + 'time20' : time20, 'time21' : time21, 'time22' : time22, 'time23' : time23, - 'rainFall': rainFall.toFixed(1) //getDecimalPlace(rainFall,2) - - + 'rainFall': rainFall.toFixed(1) }); } - strDate01 = JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11); - rainFall = 0.0; + strDate01 = JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11); + rainFall = 0.0; - tmSUM = 0.0; - tmElementMeasurementType = ''; - strDate01_heatSum = data[i].timeMeasured; + tmSUM = 0.0; + tmElementMeasurementType = ''; + strDate01_heatSum = data[i].timeMeasured; } - if(data[i].elementMeasurementTypeId==='RR') + if(data[i].elementMeasurementTypeId === 'RR') { - rainFall = rainFall + data[i].value; + rainFall = rainFall + data[i].value; } @@ -344,22 +371,23 @@ if(data[i].elementMeasurementTypeId==='TM') { tmElementMeasurementType = data[i].elementMeasurementTypeId; - tmSUM = tmSUM + data[i].value; + tmSUM = tmSUM + data[i].value; } - } //--------------------------------- + } } - - getWeatherDataTable(resultConvertData); + if(flagActivate) + { + getWeatherDataTable(resultConvertData); + } } - /*function which return decimal with required (e.g. 2) places without rounding */ function getDecimalPlace(num, place) { @@ -369,14 +397,13 @@ /* Calculate the daily TM value for HeatSum */ function getHeatSumValue(data) { - - var TM_BASE = 10; - var TM_Daily = 0.0; - var TM_SUM = 0.0; - var TM_Calc = 0.0; - var TM_NON_NEGATIVE = 0; + var TM_BASE = 10; + var TM_Daily = 0.0; + var TM_SUM = 0.0; + var TM_Calc = 0.0; + var TM_NON_NEGATIVE = 0; - var counter = undefined; + var counter = undefined; if($.trim(data)) { @@ -384,38 +411,33 @@ for (var i=0; i<data.length; i++) { var strStartDateDtPicker = JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11); - if(strStartDateDtPicker===$('#idTxtDateInput').val()) + + if(strStartDateDtPicker === $('#idTxtDateInput').val()) { - counter = 0; - TM_NON_NEGATIVE = 0; + counter = 0; + TM_NON_NEGATIVE = 0; } - if(typeof counter === "undefined") + if(typeof counter === "undefined") { - break; + //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) + TM_Daily = data[counter].value; + TM_Calc = TM_Daily - TM_BASE; + TM_NON_NEGATIVE = TM_NON_NEGATIVE + ((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())); - - - } else { - $('#idSpanWeatherStationName').html(''); $('#idSpanStartDate').html(''); $('#idSpanEndDate').html(''); @@ -431,69 +453,69 @@ if($.trim(weatherData)) { $('#idTableWeather').DataTable({ - "sDom": '<t><"clearfix">', - "lengthMenu": [[50, -1], ["All"]], - "aaData" : weatherData, - "aoColumns" : + "sDom" : '<t><"clearfix">', + "lengthMenu" : [[50, -1], ["All"]], + "aaData" : weatherData, + "aoColumns" : [ { - "mData" : "resultDate", - "render" :function(data, type, full, meta) - { - return data - } + "mData" : "resultDate", + "render" : function(data, type, full, meta) + { + return data + } }, { - "mData" : "time19", - "render" :function(data, type, full, meta) - { - return data - }, + "mData" : "time19", + "render" : function(data, type, full, meta) + { + return data + }, "bSortable" : false }, { - "mData" : "time20", - "render" :function(data, type, full, meta) - { - return data - }, + "mData" : "time20", + "render" : function(data, type, full, meta) + { + return data + }, "bSortable" : false }, { - "mData" : "time21", - "render" :function(data, type, full, meta) - { - return data - }, + "mData" : "time21", + "render" : function(data, type, full, meta) + { + return data + }, "bSortable" : false }, { - "mData" : "time22", - "render" :function(data, type, full, meta) - { - return data - }, + "mData" : "time22", + "render" : function(data, type, full, meta) + { + return data + }, "bSortable" : false }, { - "mData" : "time23", - "render" :function(data, type, full, meta) - { - return data - }, + "mData" : "time23", + "render" : function(data, type, full, meta) + { + return data + }, "bSortable" : false } , { - "mData" : "rainFall", - "render" :function(data, type, full, meta) - { - return data - }, + "mData" : "rainFall", + "render" : function(data, type, full, meta) + { + return data + }, "bSortable" : false } ], - destroy: true + destroy : true }); $('.dtr-data').addClass('text-wrap'); } @@ -506,35 +528,42 @@ /* Fetch hourly data through ajax call */ - function getAjaxHourlyData(jsonParamUrlDataHourly,idJsonParam) + function getAjaxHourlyData(jsonParamUrlDataHourly,idJsonParam, flagActivate) { - var resultData = ""; - var strUrl = ""; + var resultData = []; + var strUrl = ""; if($.trim(idJsonParam.pas)) { - strUrl = "https://weather.vips.nibio.no/rest/fruitwebdavis/id="+idJsonParam.id+"&pw="+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"; + strUrl = "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback"; } $.ajax({ - url : strUrl, - type : 'GET', - cache : false, - data : jsonParamUrlDataHourly, - //async : false, - success : function (data) { - resultHeatSumDailyData = []; /* Re initialize */ + url : strUrl, + type : 'GET', + cache : false, + data : jsonParamUrlDataHourly, + success : function (data) { + resultHeatSumDailyData = []; /* Re initialize */ + resultData = []; if($.trim(data)) { $('#idDivHeatSum').show(); - resultData = data; - setConvertHourlyData(resultData); + resultData = data; + setConvertHourlyData(resultData, flagActivate); + if($.trim(idJsonParam.pas)) { + getHeatSumValue(resultHeatSumDailyData); + resultHeatSumDailyData = []; + } + else + { + funDtPickerHeatSum(); } } @@ -546,7 +575,7 @@ { $('#idDivHeatSum').hide(); - alert('test 4'); + alert('Please try later'); } }); @@ -560,21 +589,21 @@ /* Fetch Daily data through ajax call */ function getAjaxDailyData(jsonParamUrlDataHourly,idJsonParam) { - var resultData = ""; + var resultData = []; $.ajax({ - url : "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback", - type : 'GET', - cache : false, - data : jsonParamUrlDataHourly, - //async : false, - success : function (data) { + url : "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback", + type : 'GET', + cache : false, + data : jsonParamUrlDataHourly, + success : function (data) { + resultData = []; if($.trim(data)) { resultData = data; getHeatSumValue(resultData); } }, - error : function(xhr, status, error) + error : function(xhr, status, error) { //TODO } @@ -587,8 +616,8 @@ /* Adjust the dates as per radio button click to understand start date and end date*/ function getAdjustDate(date,days) { - var result = new Date(date); - result.setDate(result.getDate() - days); + var result = new Date(date); + result.setDate(result.getDate() - days); return result; } @@ -601,9 +630,9 @@ /* Date difference */ function dateDifferenceInDays(startDate, endDate) { - var strEndDate = JSON.stringify(endDate).substring(1,11); - var dtEndDate = new Date(strEndDate); - var result = (dtEndDate - startDate)/(1000*60*60*24); + var strEndDate = JSON.stringify(endDate).substring(1,11); + var dtEndDate = new Date(strEndDate); + var result = (dtEndDate - startDate)/(1000*60*60*24); return result; }