diff --git a/forecasts/templates/models/detail.html b/forecasts/templates/models/detail.html
index 90b085bfd67051a54db92bdb0090c15dcd62aaf4..064c9f0716ad58b2063701b421edac11cd6d203d 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 0000000000000000000000000000000000000000..f534b0025938a7ffece3a5904e9024a47ffe0fc7
--- /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"> </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> </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 69d3c90f1c58c35f10ec5a11c71211ca1c7f96c0..4782eb6a87fb6700507902e951f1562d0d1fed2b 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 3a6798900655e19155f30e191f250613df0b6c54..30bcde9ba41d1c9081432aeaf60592adc2b2c0ba 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 d6908ef9741f199d702c30a8b81abe0838104cfb..43a88c5e9ae4a654fdfd98926d63a984947ee289 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);