From b6a494cca3132811b93870aae0bd3b20be6e7e30 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Fri, 8 Sep 2017 14:51:45 +0200
Subject: [PATCH] Refactored forecast result object

---
 .../js/js_apps/oatFloweringModelForm.js       |  4 ++--
 VIPSWeb/static/js/util.js                     |  4 ++--
 .../barleynetblotchform.html                  |  4 ++--
 forecasts/models.py                           | 19 ++++++++++---------
 forecasts/static/forecasts/js/forecasts.js    | 12 ++++++------
 forecasts/templates/forecasts/detail.html     |  2 +-
 .../fusarium/js/oatFloweringModelForm.js      |  4 ++--
 roughage/static/roughage/js/nutrition.js      |  2 +-
 8 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/VIPSWeb/static/js/js_apps/oatFloweringModelForm.js b/VIPSWeb/static/js/js_apps/oatFloweringModelForm.js
index 3e5d511b..d29c2c41 100755
--- a/VIPSWeb/static/js/js_apps/oatFloweringModelForm.js
+++ b/VIPSWeb/static/js/js_apps/oatFloweringModelForm.js
@@ -290,7 +290,7 @@ var getRawResults = function(data)
 	{
 		result +="<li>";
 		result += "z" + data[key].allValues["OATFLOWERM.ZREACHED"] + " n&aring;dd  " 
-			+ moment(data[key].resultValidTime).tz("Europe/Oslo").format("YYYY-MM-DD")
+			+ moment(data[key].validTimeStart).tz("Europe/Oslo").format("YYYY-MM-DD")
 			+ " (uke " + data[key].allValues["OATFLOWERM.WEEK_IN_YEAR"] + ")<br/>";
 		result +="</li>";
 	}
@@ -316,7 +316,7 @@ var getDateForZ = function(data,z)
 	{
 		if(data[key].allValues["OATFLOWERM.ZREACHED"] == z)
 		{
-			return moment(data[key].resultValidTime);
+			return moment(data[key].validTimeStart);
 		}
 	}
 }
diff --git a/VIPSWeb/static/js/util.js b/VIPSWeb/static/js/util.js
index d156b7b7..27915a66 100755
--- a/VIPSWeb/static/js/util.js
+++ b/VIPSWeb/static/js/util.js
@@ -126,11 +126,11 @@ var compareStrings = function(a,b)
 
 var compareForecastResults = function(a,b)
 {
-	if(a["resultValidTime"] < b["resultValidTime"])
+	if(a["validTimeStart"] < b["validTimeStart"])
 	{
 		return -1;
 	}
-	if(a["resultValidTime"] > b["resultValidTime"])
+	if(a["validTimeStart"] > b["validTimeStart"])
 	{
 		return 1;
 	}
diff --git a/cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html b/cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html
index 8f5ee089..d4674ef0 100755
--- a/cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html
+++ b/cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html
@@ -217,11 +217,11 @@
             var table = ["<table border=\"1\">",headingLine];
             for(var row in data)
             {
-            	if(data[row]["resultValidTime"] == null)
+            	if(data[row]["validTimeStart"] == null)
             	{
             		continue;
             	}
-                var resultLine = "<tr><td>" + moment(data[row]["resultValidTime"]).format() + "</td>";
+                var resultLine = "<tr><td>" + moment(data[row]["validTimeStart"]).format() + "</td>";
                 for(var i in allKeys)
                 {
                 	var value = data[row].allValues[allKeys[i]];
diff --git a/forecasts/models.py b/forecasts/models.py
index 4966aefe..f4caccde 100755
--- a/forecasts/models.py
+++ b/forecasts/models.py
@@ -38,9 +38,9 @@ from common import util
 Represents a single result from the running of a forecasting model
 """
 class ForecastResult:
-    def __init__(self,forecast_result_id,result_valid_time,warning_status,all_values):
+    def __init__(self,forecast_result_id,valid_time_start,warning_status,all_values):
         self.forecast_result_id = forecast_result_id
-        self.result_valid_time = datetime.fromtimestamp(result_valid_time/1000)
+        self.valid_time_start = datetime.fromtimestamp(valid_time_start/1000)
         self.warning_status = warning_status
         self.all_values = all_values
         
@@ -62,11 +62,12 @@ class ForecastResult:
         if user_uuid != None:
             auth_param = "?userUUID=%s" % user_uuid
         requestResult = requests.get("%s://%s/rest/forecastresults/%s/%s%s" % (settings.VIPSLOGIC_PROTOCOL, settings.VIPSLOGIC_SERVER_NAME,forecast_configuration_id, latest_days, auth_param))
+        #print requestResult.json()
         return requestResult.json()
     
     @staticmethod
     def get_instance_from_dict(theDict):
-        return ForecastResult(theDict["forecastResultId"],theDict["resultValidTime"],theDict["warningStatus"],theDict["allValues"])
+        return ForecastResult(theDict["forecastResultId"],theDict["validTimeStart"],theDict["warningStatus"],theDict["allValues"])
 
     """
     Creates plot bands for the warning statuses
@@ -85,29 +86,29 @@ class ForecastResult:
         plot_band = None
         band_offset = 0
         if len(forecast_results) >=2:
-            band_offset = (util.get_unix_timestamp(forecast_results[1].result_valid_time) - util.get_unix_timestamp(forecast_results[0].result_valid_time)) / 2
+            band_offset = (util.get_unix_timestamp(forecast_results[1].valid_time_start) - util.get_unix_timestamp(forecast_results[0].valid_time_start)) / 2
         for forecast_result in forecast_results:
             if previous_forecast_result == None or previous_forecast_result.warning_status != forecast_result.warning_status:
                 # Add the previous plot band
                 if plot_band != None:
-                    plot_band["to"] = util.get_unix_timestamp(forecast_result.result_valid_time) - band_offset
+                    plot_band["to"] = util.get_unix_timestamp(forecast_result.valid_time_start) - band_offset
                     plot_bands.append(plot_band)
                 plot_band = {
                              "color": warning_statuses[forecast_result.warning_status]["color"],
-                             "from" : util.get_unix_timestamp(forecast_result.result_valid_time) - band_offset
+                             "from" : util.get_unix_timestamp(forecast_result.valid_time_start) - band_offset
                              }
             previous_forecast_result = forecast_result
         
         # We probably have a rouge plot band that needs to be finished and appended
         if plot_band != None and plot_band.get("to", None) == None:
-            plot_band["to"] = util.get_unix_timestamp(forecast_results[-1].result_valid_time) + band_offset
+            plot_band["to"] = util.get_unix_timestamp(forecast_results[-1].valid_time_start) + band_offset
             plot_bands.append(plot_band)
         
         return plot_bands
 
     @staticmethod
     def get_forecast_results_highcharts(forecast_results, forecast_id, user_uuid):
-        
+        #print forecast_results
         # We must narrow this down to only the most important ones
         # First: Get modelId
         forecast_configuration = ForecastConfiguration.get_forecast_configuration(forecast_id, user_uuid)
@@ -153,7 +154,7 @@ class ForecastResult:
                 the_value = forecast_result.all_values.get(result_parameter.getNamespaceKey(), "")
                 if the_value != "" and timeseries.get(result_parameter.getNamespaceKey(), None) != None:
                     try:
-                        data_point = [util.get_unix_timestamp(forecast_result.result_valid_time),Decimal(the_value)]
+                        data_point = [util.get_unix_timestamp(forecast_result.valid_time_start),Decimal(the_value)]
                         timeseries[result_parameter.getNamespaceKey()]["data"].append(data_point)
                     except InvalidOperation:
                         continue
diff --git a/forecasts/static/forecasts/js/forecasts.js b/forecasts/static/forecasts/js/forecasts.js
index 6992ebba..8fa517a1 100755
--- a/forecasts/static/forecasts/js/forecasts.js
+++ b/forecasts/static/forecasts/js/forecasts.js
@@ -244,8 +244,8 @@ function getWarningStatusPlotBandData(forecastResults)
 	if (forecastResults != null && forecastResults.length >=2)
 	{
 		// Replace with Moment.js
-		var start = forecastResults[0]["resultValidTime"];
-		var end = forecastResults[1]["resultValidTime"];
+		var start = forecastResults[0]["validTimeStart"];
+		var end = forecastResults[1]["validTimeStart"];
 		
 		bandOffset = (end - start) / 2;
 		//console.log("bandOffset=" + bandOffset);
@@ -259,13 +259,13 @@ function getWarningStatusPlotBandData(forecastResults)
 			if(plotBand != null)
 			{
 				// Moment.js needed!
-			    plotBand["to"] = forecastResult["resultValidTime"] - bandOffset;
+			    plotBand["to"] = forecastResult["validTimeStart"] - bandOffset;
 			    plotBands.push(plotBand);
 			}
 			plotBand = {
 		         "color": warningStatuses[forecastResult["warningStatus"]].color,
 		         // Moment.js!!
-		         "from" : forecastResult["resultValidTime"] - bandOffset
+		         "from" : forecastResult["validTimeStart"] - bandOffset
 	        };
 		}
 		previousForecastResult = forecastResult;
@@ -275,7 +275,7 @@ function getWarningStatusPlotBandData(forecastResults)
 	if(plotBand != null && plotBand["to"] == null)
 	{
 		// Moment.js!!!
-		plotBand.to = forecastResults[forecastResults.length -1]["resultValidTime"] + bandOffset;
+		plotBand.to = forecastResults[forecastResults.length -1]["validTimeStart"] + bandOffset;
 		plotBands.push(plotBand);
 	}
 	
@@ -309,7 +309,7 @@ function getHighChartsSeries(forecastResults, yAxisList, parameterList)
 		{
 			var parameter = parameterList[j];
 			var value = parseFloat(forecastResult["allValues"][parameter.key]);
-			chartSeries.series[parameter.key].data.push([forecastResult.resultValidTime,value]);
+			chartSeries.series[parameter.key].data.push([forecastResult.validTimeStart,value]);
 		}
 	}
 	
diff --git a/forecasts/templates/forecasts/detail.html b/forecasts/templates/forecasts/detail.html
index f24644b2..a24e7507 100755
--- a/forecasts/templates/forecasts/detail.html
+++ b/forecasts/templates/forecasts/detail.html
@@ -75,7 +75,7 @@
 		<tbody>
 			{% for result in forecast_results reversed %}
 			<tr>
-				<td style="white-space: nowrap;">{{ result.result_valid_time|date:"Y-m-d H:i" }}</td>
+				<td style="white-space: nowrap;">{{ result.valid_time_start|date:"Y-m-d H:i" }}</td>
 				<td class="tableCellWarningStatus_{{ result.warning_status }}">&nbsp;</td>
 				{% for result_parameter in result_parameters %}
 				<td>{{ result.all_values|lookup:result_parameter.getNamespaceKey}}</td>
diff --git a/fusarium/static/fusarium/js/oatFloweringModelForm.js b/fusarium/static/fusarium/js/oatFloweringModelForm.js
index b6dc77d7..eb124c30 100755
--- a/fusarium/static/fusarium/js/oatFloweringModelForm.js
+++ b/fusarium/static/fusarium/js/oatFloweringModelForm.js
@@ -296,7 +296,7 @@ var getRawResults = function(data)
 	{
 		result +="<li>";
 		result += "z" + data[key].allValues["OATFLOWERM.ZREACHED"] + " n&aring;dd  " 
-			+ moment(data[key].resultValidTime).tz("Europe/Oslo").format("YYYY-MM-DD")
+			+ moment(data[key].validTimeStart).tz("Europe/Oslo").format("YYYY-MM-DD")
 			+ " (uke " + data[key].allValues["OATFLOWERM.WEEK_IN_YEAR"] + ")<br/>";
 		result +="</li>";
 	}
@@ -322,7 +322,7 @@ var getDateForZ = function(data,z)
 	{
 		if(data[key].allValues["OATFLOWERM.ZREACHED"] == z)
 		{
-			return moment(data[key].resultValidTime);
+			return moment(data[key].validTimeStart);
 		}
 	}
 }
diff --git a/roughage/static/roughage/js/nutrition.js b/roughage/static/roughage/js/nutrition.js
index 12740447..256940b0 100755
--- a/roughage/static/roughage/js/nutrition.js
+++ b/roughage/static/roughage/js/nutrition.js
@@ -354,7 +354,7 @@ function renderResultTable(tableId, data)
 	var dataRowsHTML = "<tbody>";
 	for(var i=0; i<data.length; i++)
 	{
-		dataRowsHTML += "<tr><td>" + moment.tz(data[i].resultValidTime, "Europe/Oslo").format("YYYY-MM-DD") + "</td>";
+		dataRowsHTML += "<tr><td>" + moment.tz(data[i].validTimeStart, "Europe/Oslo").format("YYYY-MM-DD") + "</td>";
 		for(var j=0;j<headingData.length;j++)
 		{
 			dataRowsHTML += "<td>" + data[i].allValues[headingData[j]] + "</td>";
-- 
GitLab