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