From a715ada3d26ea09a444a0512b341c1f2e2844c6d Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@bioforsk.no>
Date: Mon, 14 Mar 2016 13:50:10 +0100
Subject: [PATCH] Added test page for model descriptions Minor display change
 in detail template

---
 forecasts/templates/models/detail.html        |   2 +-
 forecasts/templates/models/detail_test.html   | 180 ++++++++++++++++++
 forecasts/urls.py                             |   1 +
 forecasts/views.py                            |   4 +
 .../observations/js/observationViewMap.js     |  19 +-
 5 files changed, 203 insertions(+), 3 deletions(-)
 create mode 100644 forecasts/templates/models/detail_test.html

diff --git a/forecasts/templates/models/detail.html b/forecasts/templates/models/detail.html
index 90b085bf..064c9f07 100644
--- a/forecasts/templates/models/detail.html
+++ b/forecasts/templates/models/detail.html
@@ -32,7 +32,7 @@
     </ul>
     <div class="tab-content">
         <div id="modelDescription" class="tab-pane fade in active">
-            {{model.description|safe| linebreaks}}
+            {{model.description|safe}}
         </div>
         <div id="warningStatusInterpretation" class="tab-pane fade">
             {{model.warning_status_interpretation|safe| linebreaks}}
diff --git a/forecasts/templates/models/detail_test.html b/forecasts/templates/models/detail_test.html
new file mode 100644
index 00000000..f534b002
--- /dev/null
+++ b/forecasts/templates/models/detail_test.html
@@ -0,0 +1,180 @@
+{% extends "base.html" %}
+{% comment %}
+#
+# Copyright (c) 2014 NIBIO <http://www.nibio.no/>. 
+# 
+# This file is part of VIPSWeb.
+# VIPSWeb is free software: you can redistribute it and/or modify
+# it under the terms of the NIBIO Open Source License as published by 
+# NIBIO, either version 1 of the License, or (at your option) any
+# later version.
+# 
+# VIPSWeb is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# NIBIO Open Source License for more details.
+#
+# You should have received a copy of the NIBIO Open Source License
+# along with VIPSWeb.  If not, see <http://www.nibio.no/licenses/>.
+# 
+{% endcomment %}
+{% load i18n %}
+{% block title%}Model output test - {% trans "Models" %}{%endblock%}
+{% block content %}
+<div class="col-md-3">&nbsp;</div>
+<div class="col-md-9">	
+	<h1>Model output test</h1>
+	<ul class="nav nav-tabs">
+        <li class="active"><a data-toggle="tab" href="#modelDescription">{% trans "Description" %}</a></li>
+        <li><a data-toggle="tab" href="#warningStatusInterpretation">{% trans "Interpretation of warning status" %}</a></li>
+        <li><a data-toggle="tab" href="#modelUsage">{% trans "Technical usage" %}</a></li>
+        <li><a data-toggle="tab" href="#modelSampleConfig">{% trans "Sample configuration" %}</a></li>
+    </ul>
+    <div class="tab-content">
+        <div id="modelDescription" class="tab-pane fade in active">
+        	
+<h2>Epleskurv <i>(Venturia inaequalis)</i></h2>
+[BILDE]
+<p>Foto: R. Langnes</p>
+
+<h3>Modellbeskrivelse</h3>
+<p>Soppen som gir epleskurv overvintrar som askosporar i gamalt bladverk på bakken. 
+	Han kan også overvintra som mycel og konidiesporar på årsskot og knoppar, men det 
+	har som regel lite å seia i godt stelte frukthagar. Askosporane vert kasta i regn 
+	og kan infisere nye blad, skot og frukter når tilhøva ligg til rette for det. 
+	Epleskurvvarslinga er  i hovudsak basert på to modellar, der den eine omfattar 
+	tilhøve for å få infeksjon. Den andre omfattar modning og spreiing av askosporar 
+	frå gamle blad på bakken og  viser kor mykje sporar som vert spreidd til ulike 
+	tider i sesongen og døgnet. Parametrane som vert brukt i epleskurvvarslinga er 
+	timeverdiar av temperatur (Tm/Tmf), nedbør (RR) og bladfukt (Bt/Btf/Btff). </p>
+<h3>Infeksjonsmodell</h3>
+<p>Det må vera fuktige blad, skot eller frukter i eit visst tidsrom for at sporane 
+	til skurvsoppen skal kunne infisere, og kor raskt infeksjonen skjer er avhengig 
+	av temperaturen. Det er såkalla bladfuktsensorar som indikerer kor lenge bladverket 
+	er fuktig. Infeksjonstabellen, ofte kalla Mills' tabell, viser kor lang tid det 
+	tar før dei første sporane har infisert ved ulike temperaturar. Ved optimal temperatur, 
+	16 - 22 °C, tar det 6 timar.</p>
+<p>Infeksjonsfaren vert uttrykt ved hjelp av ein akkumulert verdi i form av eit tal større 
+	enn null. Talet aukar for kvar time med bladfukt. Når talet for infeksjonsfare passerer 
+	90, vert varselindikatoren gul (mogleg fare). Når talet passerer 100, vert varselindikatoren 
+	raud - eit symbol på infeksjonsfare. Viss det har vore tørt i 8 timar,  vert infeksjonsfaren 
+	nullstilt. Men viss det er tørt i mindre enn 8 timar mellom to infeksjonsperiodar, vert 
+	timane med bladfukt i dei to periodane lagt saman når infeksjonsfaren vert rekna ut.</p>
+
+<h3>Sporemodningsmodell</h3>
+<p>I USA er det utarbeida ein modell for askosporemodning som er tilpassa norske tilhøve. 
+	Modninga er ein funksjon av akkumulert varmesum (sum graddagar [døgngrader], basistemperaturen 
+	er 0°C) frå ein bestemt startdato (= når dei første sporane er modne) og reknar ut kor 
+	lenge det er fare for infeksjon av askosporar. Ved lange periodar utan nedbør eller langvarig 
+	nattedogg (meir enn 7 dagar) vil akkumuleringa av døgngrader stansa. Døgngradeakkumuleringa vil 
+	starta igjen så snart det vert registrert nedbør. Mange eller lange periodar utan nedbør vil 
+	føre til ei forlenging av sesongen  for infeksjon av askosporar.</p>
+<h3>RIMpro</h3>
+<p>I tillegg presenterer VIPS epleskurvvarsling frå RIMpro som er utvikla og vert levert av Marc 
+	Trapman, Bio Fruit Advies, Nederland. Dette er ei ekstern teneste, men baserer seg på klimadata 
+	frå stasjonane til Landbruksmeteorologisk teneste. </p>
+
+
+<h3>Tolking av varsel</h3>
+<ul>
+	<li>Grøne boksar vil seia at det ikkje har vore tilhøve for infeksjon av epleskurv gjeldande dag.</li>
+	<li>Gule boksar vil seia at ein kan forventa eit skurvvarsel i løpet av dei næraste timane viss vêrstasjonen fortset å registrere bladfukt.</li>
+	<li>Raude boksar vil seia at det har vore tilhøve for skurvinfeksjon inneverande dag.</li>
+</ul>
+[Figur 1. Skjermdump av varsel]
+
+<p>Den blå streken viser prosent sporemodning, og når denne når 100%, er sesongen over og det 
+	vil ikkje bli gitt fleire varsel inneverande sesong. Den blå linja er akkumulert 
+	infeksjonsrisiko, og når denne passerer 90 og 100 vil bakgrunnen verta tilsvarande gul eller raud.</p> 
+
+<p>Tabell 1. Infeksjonsrisiko basert på smittepress og sort.</p> 
+<table class="table">
+	<thead>
+		<tr>
+			<th>&nbsp;</th>
+			<th colspan="3" style="text-align: center;">Resistens hos sorten</th>
+		</tr>
+		<tr>
+			<th>Skurvangrep året før</th>
+			<th>Sterk</th>
+			<th>Middels</th>
+			<th>Svak</th>
+		</tr>
+	</thead>
+	<tbody>
+		<tr>
+			<td style="font-weight: bold;">Lite</td>
+			<td>Låg</td>
+			<td>Låg</td>
+			<td>Middels</td>
+		</tr>
+		<tr>
+			<td style="font-weight: bold;">Middels</td>
+			<td>Låg</td>
+			<td>Middels</td>
+			<td>Høg</td>
+		</tr>
+		<tr>
+			<td style="font-weight: bold;">Mykje</td>
+			<td>Middels</td>
+			<td>Høg</td>
+			<td>Svært høg</td>
+		</tr>
+	</tbody>
+</table>
+
+
+<h3>Varslingssesong – oppstart og avslutning av varsel»</h3>
+<p>Starttidspunkt: Grøn spiss i tidlegblomstrande eplesortar (til dømes Gravenstein og Summerred).
+Sluttidspunkt: Etter enda primærsesong (når modninga av askosporar har nådd 100%)</p>
+
+<h3>Utprøving og validering av modellen</h3>
+<h4>Nasjonalt</h4>
+<p>Nesten kvart år sidan 1989 har sporekasting av epleskurv gjennom sesongen blitt registrert av 
+	sporefeller plassert i ein eplehage på Ås. Vi har hatt liknande registreringar for nokre andre 
+	lokalitetar i Noreg også. Sporefellene har gitt data som viser når sporekastinga startar om 
+	våren, under kva vêrtilhøve sporane vert kasta, og når primærsesongen er slutt. Ein modell 
+	for sporemodning publisert i USA (Gadoury og MacHardy, 1982) er validert basert på data frå 
+	denne sporefella, og ein justert versjon av modellen tilpassa norske tilhøve er publisert 
+	(Stensvand et al. 2005). Seinare vart ulike modellar for modning og spreiing av askosporar 
+	hos pæreskurvsoppen (Venturia pyrina) undersøkt med data frå Noreg, Belgia og Frankrike 
+	(Eikemo et al. 2011), og den best tilpassa modellen var den som vi i dag brukar for epleskurv. 
+	Utfordringa med pæreskurv er at såkalla greinskurv, der soppen overvintrar som mycel og 
+	konidiesporar i årsskota, er langt viktigare enn for epleskurv. Spreiing av konidiar frå 
+	greinskurv varer gjerne lengre utover i vekstsesongen enn spreiing av askosporar frå det gamle bladverket på bakken.</p>
+
+<h4>Internasjonalt</h4>
+<p>RIMpro er det verktøyet som er mest nytta internasjonalt i varsling av epleskurv. RIMpro er 
+	basert på den same litteraturen som nemnt over, og vert årleg validert og revidert basert på ny forsking. </p>
+
+<h3>Referanser</h3>
+<ul class="literatureReference">
+	<li>Eikemo, H., Gadoury, D.M., Spotts, R.A., Villalta, O., Creemers, P., Seem, R.C. & Stensvand, A. 2011. Evaluation of six models to estimate ascospore maturation in Venturia pyrina. Plant Disease 95:279-28</li>
+	<li>Gadoury, D. M., and MacHardy, W. E. 1982. A model to estimate the maturity of ascospores of Venturia inaequalis. Phytopathology 72:901-904.4.</li>
+	<li>Stensvand, A., Eikemo, H., Gadoury, D.M. & Seem, R.C. 2005. Use of a rainfall frequency threshold to adjust a degree-day model of ascospore maturity of Venturia inaequalis. Plant Disease 89):198-202.</li>
+</ul>
+<h3>Kontaktpersonar</h3> 
+<p>Håvard Eikemo - haavard.eikemo@nibio.no<br/> 
+Arne Stensvand - arne.stensvand@nibio.no </p>
+			
+<h3>Lenker til mer informasjon</h3>
+<ul>
+	<li><a href="http://leksikon.nibio.no/vieworganism.php?organismId=1_598" target="new">Epleskurv i plantevernleksikonet</a></li>
+	<li><a href="http://www.rimpro.eu/" target="new">RIMpro</a></li>
+</ul>
+
+        </div>
+        <div id="warningStatusInterpretation" class="tab-pane fade">
+            TEST
+        </div>
+        <div id="modelUsage" class="tab-pane fade">
+            TEST
+        </div>
+        <div id="modelSampleConfig" class="tab-pane fade">
+			<pre>
+TEST
+			</pre>
+        </div>
+    </div>
+</div>
+{% endblock %}
\ No newline at end of file
diff --git a/forecasts/urls.py b/forecasts/urls.py
index 69d3c90f..4782eb6a 100644
--- a/forecasts/urls.py
+++ b/forecasts/urls.py
@@ -29,6 +29,7 @@ urlpatterns = patterns('forecasts.views',
     #url(r'^(?P<forecast_id>\d+)/$', cache_page(60 * 15)(views.detail), name='detail'),
     url(r'^(?P<forecast_id>\d+)/$', (views.detail), name='detail'),
     url(r'^(?P<forecast_id>\d+)/(?P<latest_days>\d+)/$', (views.detail_latest_days), name='detail_latest_days'),
+    url(r'^models/test/$', views.models_detail_test, name='models_detail_test'),
     url(r'^models/(?P<model_id>\w+)/$', views.models_detail, name='models_detail'),
     url(r'^models/js/modelLocalNames.js', cache_page(60 * 30)(views.model_local_names_js), name='model_local_names_js'),
     url(r'^models/$', views.models_index, name='models_index'),
diff --git a/forecasts/views.py b/forecasts/views.py
index 3a679890..30bcde9b 100644
--- a/forecasts/views.py
+++ b/forecasts/views.py
@@ -79,6 +79,10 @@ def models_detail(request, model_id):
     context = {'model': model}
     return render(request, 'models/detail.html', context)
 
+def models_detail_test(request):
+    context = {}
+    return render(request, 'models/detail_test.html', context)
+
 # Serving models' local names for the forecast Map
 def model_local_names_js(request):
     models_local_names = Model.get_models_local_names_as_json()
diff --git a/observations/static/observations/js/observationViewMap.js b/observations/static/observations/js/observationViewMap.js
index d6908ef9..43a88c5e 100644
--- a/observations/static/observations/js/observationViewMap.js
+++ b/observations/static/observations/js/observationViewMap.js
@@ -44,7 +44,7 @@ var initMap = function(geoJSON, container, mapAttribution)
 	// center to correct map projection)
 	var view = new ol.View({
 		center: ol.proj.transform([10,65], 'EPSG:4326', map.getView().getProjection().getCode()),
-		zoom: 1,
+		zoom: 8,
 		maxZoom: 8
 	});
 	map.setView(view);
@@ -60,7 +60,7 @@ var initMap = function(geoJSON, container, mapAttribution)
 	      }),
 	      stroke: new ol.style.Stroke({
 	        color: '#ff00ff',
-	        width: 8
+	        width: 2
 	      }),
 	      image: new ol.style.Circle({
 	        radius: 7,
@@ -75,6 +75,21 @@ var initMap = function(geoJSON, container, mapAttribution)
       dataProjection: 'EPSG:4326',
       featureProjection: map.getView().getProjection().getCode()
     });
+    
+    // TODO: Convert small areas to points on large scale views
+    /**
+    for(var i in drawnfeatures)
+    {
+    	console.log(drawnfeatures[i].getGeometryName());
+    	var geome = drawnfeatures[i];
+    	if(geome.getGeometry() instanceof ol.geom.Polygon)
+    	{
+    		console.log(geome.getGeometry().getArea());
+    	}
+    	
+    }
+    console.log(drawnfeatures);
+    */
     //featureOverlay.clear(true);
     featureOverlay.getSource().addFeatures(drawnfeatures);
     featureOverlay.setMap(map);
-- 
GitLab