Skip to content
Snippets Groups Projects
Commit 5761189d authored by Bhabesh Bhabani Mukhopadhyay's avatar Bhabesh Bhabani Mukhopadhyay
Browse files

Devis stations produce HeatSum with date changes

Devis stations (536, 537) now calculate daily TM value from Hourly TM values and calculate Heat Sum
parent 547b76f2
Branches
No related tags found
No related merge requests found
......@@ -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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment