diff --git a/VIPSWeb/local_settings_sample.py b/VIPSWeb/local_settings_sample.py
index 466a2c166494e8bb09326682fc199d5ef5e3a4f2..58088731eddb2e4f917e142243ad5af2547b9db4 100755
--- a/VIPSWeb/local_settings_sample.py
+++ b/VIPSWeb/local_settings_sample.py
@@ -165,6 +165,10 @@ MAP_WARNING_LEGEND_PLACEMENT = 4
 # The attribution text that appears in a corner of the map
 MAP_ATTRIBUTION = "&copy; <a href='http://www.openstreetmap.org'>OpenStreetMap</a> contributors"
 
+# Geoapify is used for getting information (timezone etc) about a given point (latitude, longitude)
+# Register at https://www.geoapify.com, and create an API key in order to be able to use the API
+GEOAPIFY_API_KEY='api-key'
+
 # The message tags to use on the front page
 FRONTPAGE_MESSAGE_TAG_IDS = [1,2,3]
 
diff --git a/VIPSWeb/locale/bg/LC_MESSAGES/django.po b/VIPSWeb/locale/bg/LC_MESSAGES/django.po
index d6868ec03337301c99545de1bdb03a141f6a3ca2..55c2ffd51231cf0029202615b08d588c5d4dd426 100755
--- a/VIPSWeb/locale/bg/LC_MESSAGES/django.po
+++ b/VIPSWeb/locale/bg/LC_MESSAGES/django.po
@@ -19,7 +19,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: 2014-05-14 09:31+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -30,6 +30,38 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 1.6.5\n"
 
+#: VIPSWeb/local_settings.py:208
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:212
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:216
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:220
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:231
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:242
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:248
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:255
+msgid "Other models and services"
+msgstr ""
+
 #: VIPSWeb/templates/404.html:3 VIPSWeb/templates/404.html:5
 msgid "File not found"
 msgstr ""
diff --git a/VIPSWeb/locale/bg/LC_MESSAGES/djangojs.po b/VIPSWeb/locale/bg/LC_MESSAGES/djangojs.po
index fb9498857c1664445b400e54ee9a1c1a8c4641f2..87afbb33e55186f41c3fdaeede83b2d4578e58db 100755
--- a/VIPSWeb/locale/bg/LC_MESSAGES/djangojs.po
+++ b/VIPSWeb/locale/bg/LC_MESSAGES/djangojs.po
@@ -19,7 +19,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-04-03 14:01+0200\n"
+"POT-Creation-Date: 2024-10-30 15:38+0100\n"
 "PO-Revision-Date: 2014-05-14 09:33+0200\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -100,8 +100,8 @@ msgstr ""
 msgid "Older"
 msgstr ""
 
-#: VIPSWeb/static/js/util.js:241 VIPSWeb/static/js/util.js:270
-#: VIPSWeb/static/js/util.js:422
+#: VIPSWeb/static/js/util.js:253 VIPSWeb/static/js/util.js:282
+#: VIPSWeb/static/js/util.js:434
 msgid "Unnamed"
 msgstr ""
 
@@ -160,59 +160,59 @@ msgstr ""
 msgid "Select station"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Sunday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Monday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Tuesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Wednesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Thursday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Friday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Saturday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Mon"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Tue"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Wed"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Thu"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Fri"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sat"
 msgstr ""
 
@@ -244,119 +244,119 @@ msgstr ""
 msgid "Sa"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "January"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "February"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "March"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "April"
 msgstr ""
 
 #: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:17
-#: VIPSWeb/templates/settings.js:48 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:50 VIPSWeb/templates/settings.js:51
 msgid "May"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "June"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "July"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "August"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "September"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "October"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "November"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "December"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jan"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Feb"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Mar"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Apr"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jul"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Aug"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Sep"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Oct"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Nov"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Dec"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:52
+#: VIPSWeb/templates/settings.js:54
 msgid "Print chart"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:53
+#: VIPSWeb/templates/settings.js:55
 msgid "Download PNG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:54
+#: VIPSWeb/templates/settings.js:56
 msgid "Download JPEG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:55
+#: VIPSWeb/templates/settings.js:57
 msgid "Download PDF document"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:56
+#: VIPSWeb/templates/settings.js:58
 msgid "Download SVG vector image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:57
+#: VIPSWeb/templates/settings.js:59
 msgid "Chart context menu"
 msgstr ""
diff --git a/VIPSWeb/locale/bs/LC_MESSAGES/django.po b/VIPSWeb/locale/bs/LC_MESSAGES/django.po
index 8fd8d1ad447b3518f6f79c8889c579261a5c85f5..1a9bdae806a575deee22715e219ef29780a74ee5 100755
--- a/VIPSWeb/locale/bs/LC_MESSAGES/django.po
+++ b/VIPSWeb/locale/bs/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: 2015-02-13 11:26+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -19,6 +19,38 @@ msgstr ""
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Poedit 1.7.4\n"
 
+#: VIPSWeb/local_settings.py:208
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:212
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:216
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:220
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:231
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:242
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:248
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:255
+msgid "Other models and services"
+msgstr ""
+
 #: VIPSWeb/templates/404.html:3 VIPSWeb/templates/404.html:5
 msgid "File not found"
 msgstr ""
diff --git a/VIPSWeb/locale/bs/LC_MESSAGES/djangojs.po b/VIPSWeb/locale/bs/LC_MESSAGES/djangojs.po
index 575106b4a66d11a7076585b79243fd84ddedaa1f..cad749af1cb8df7772110b84aeef2485213fd98b 100755
--- a/VIPSWeb/locale/bs/LC_MESSAGES/djangojs.po
+++ b/VIPSWeb/locale/bs/LC_MESSAGES/djangojs.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-04-03 14:01+0200\n"
+"POT-Creation-Date: 2024-10-30 15:38+0100\n"
 "PO-Revision-Date: 2015-02-13 11:26+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -89,8 +89,8 @@ msgstr ""
 msgid "Older"
 msgstr ""
 
-#: VIPSWeb/static/js/util.js:241 VIPSWeb/static/js/util.js:270
-#: VIPSWeb/static/js/util.js:422
+#: VIPSWeb/static/js/util.js:253 VIPSWeb/static/js/util.js:282
+#: VIPSWeb/static/js/util.js:434
 msgid "Unnamed"
 msgstr "Neimenovan"
 
@@ -151,59 +151,59 @@ msgstr ""
 msgid "Select station"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Sunday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Monday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Tuesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Wednesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Thursday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Friday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Saturday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Mon"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Tue"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Wed"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Thu"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Fri"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sat"
 msgstr ""
 
@@ -235,119 +235,119 @@ msgstr ""
 msgid "Sa"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "January"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "February"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "March"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "April"
 msgstr ""
 
 #: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:17
-#: VIPSWeb/templates/settings.js:48 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:50 VIPSWeb/templates/settings.js:51
 msgid "May"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "June"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "July"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "August"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "September"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "October"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "November"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "December"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jan"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Feb"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Mar"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Apr"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jul"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Aug"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Sep"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Oct"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Nov"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Dec"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:52
+#: VIPSWeb/templates/settings.js:54
 msgid "Print chart"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:53
+#: VIPSWeb/templates/settings.js:55
 msgid "Download PNG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:54
+#: VIPSWeb/templates/settings.js:56
 msgid "Download JPEG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:55
+#: VIPSWeb/templates/settings.js:57
 msgid "Download PDF document"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:56
+#: VIPSWeb/templates/settings.js:58
 msgid "Download SVG vector image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:57
+#: VIPSWeb/templates/settings.js:59
 msgid "Chart context menu"
 msgstr ""
diff --git a/VIPSWeb/locale/de/LC_MESSAGES/django.po b/VIPSWeb/locale/de/LC_MESSAGES/django.po
index 5d566efd25980f7d95521432735a39e1f598fb08..276ef418fade09b5c1f02eb9963be987006a594e 100755
--- a/VIPSWeb/locale/de/LC_MESSAGES/django.po
+++ b/VIPSWeb/locale/de/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,6 +18,38 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: VIPSWeb/local_settings.py:208
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:212
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:216
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:220
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:231
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:242
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:248
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:255
+msgid "Other models and services"
+msgstr ""
+
 #: VIPSWeb/templates/404.html:3 VIPSWeb/templates/404.html:5
 msgid "File not found"
 msgstr ""
diff --git a/VIPSWeb/locale/de/LC_MESSAGES/djangojs.po b/VIPSWeb/locale/de/LC_MESSAGES/djangojs.po
index 1733c8643625e7338cce14c4c805b6c71d473339..1893ac3138c525ba3e5d6a1bc2a75056cdfc350b 100755
--- a/VIPSWeb/locale/de/LC_MESSAGES/djangojs.po
+++ b/VIPSWeb/locale/de/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-04-03 14:01+0200\n"
+"POT-Creation-Date: 2024-10-30 15:38+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -86,8 +86,8 @@ msgstr ""
 msgid "Older"
 msgstr ""
 
-#: VIPSWeb/static/js/util.js:241 VIPSWeb/static/js/util.js:270
-#: VIPSWeb/static/js/util.js:422
+#: VIPSWeb/static/js/util.js:253 VIPSWeb/static/js/util.js:282
+#: VIPSWeb/static/js/util.js:434
 msgid "Unnamed"
 msgstr ""
 
@@ -146,59 +146,59 @@ msgstr ""
 msgid "Select station"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Sunday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Monday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Tuesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Wednesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Thursday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Friday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Saturday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Mon"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Tue"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Wed"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Thu"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Fri"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sat"
 msgstr ""
 
@@ -230,119 +230,119 @@ msgstr ""
 msgid "Sa"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "January"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "February"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "March"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "April"
 msgstr ""
 
 #: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:17
-#: VIPSWeb/templates/settings.js:48 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:50 VIPSWeb/templates/settings.js:51
 msgid "May"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "June"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "July"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "August"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "September"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "October"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "November"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "December"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jan"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Feb"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Mar"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Apr"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jul"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Aug"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Sep"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Oct"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Nov"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Dec"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:52
+#: VIPSWeb/templates/settings.js:54
 msgid "Print chart"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:53
+#: VIPSWeb/templates/settings.js:55
 msgid "Download PNG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:54
+#: VIPSWeb/templates/settings.js:56
 msgid "Download JPEG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:55
+#: VIPSWeb/templates/settings.js:57
 msgid "Download PDF document"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:56
+#: VIPSWeb/templates/settings.js:58
 msgid "Download SVG vector image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:57
+#: VIPSWeb/templates/settings.js:59
 msgid "Chart context menu"
 msgstr ""
diff --git a/VIPSWeb/locale/fi/LC_MESSAGES/django.po b/VIPSWeb/locale/fi/LC_MESSAGES/django.po
index a8d6ee75c3aa6e01a800c98ff451b760b60b88a9..d07c4f4a5841541f010913f6951d412697161875 100755
--- a/VIPSWeb/locale/fi/LC_MESSAGES/django.po
+++ b/VIPSWeb/locale/fi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,6 +18,38 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: VIPSWeb/local_settings.py:208
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:212
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:216
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:220
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:231
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:242
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:248
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:255
+msgid "Other models and services"
+msgstr ""
+
 #: VIPSWeb/templates/404.html:3 VIPSWeb/templates/404.html:5
 msgid "File not found"
 msgstr ""
diff --git a/VIPSWeb/locale/fi/LC_MESSAGES/djangojs.po b/VIPSWeb/locale/fi/LC_MESSAGES/djangojs.po
index 1733c8643625e7338cce14c4c805b6c71d473339..1893ac3138c525ba3e5d6a1bc2a75056cdfc350b 100755
--- a/VIPSWeb/locale/fi/LC_MESSAGES/djangojs.po
+++ b/VIPSWeb/locale/fi/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-04-03 14:01+0200\n"
+"POT-Creation-Date: 2024-10-30 15:38+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -86,8 +86,8 @@ msgstr ""
 msgid "Older"
 msgstr ""
 
-#: VIPSWeb/static/js/util.js:241 VIPSWeb/static/js/util.js:270
-#: VIPSWeb/static/js/util.js:422
+#: VIPSWeb/static/js/util.js:253 VIPSWeb/static/js/util.js:282
+#: VIPSWeb/static/js/util.js:434
 msgid "Unnamed"
 msgstr ""
 
@@ -146,59 +146,59 @@ msgstr ""
 msgid "Select station"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Sunday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Monday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Tuesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Wednesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Thursday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Friday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Saturday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Mon"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Tue"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Wed"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Thu"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Fri"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sat"
 msgstr ""
 
@@ -230,119 +230,119 @@ msgstr ""
 msgid "Sa"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "January"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "February"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "March"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "April"
 msgstr ""
 
 #: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:17
-#: VIPSWeb/templates/settings.js:48 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:50 VIPSWeb/templates/settings.js:51
 msgid "May"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "June"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "July"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "August"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "September"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "October"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "November"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "December"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jan"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Feb"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Mar"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Apr"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jul"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Aug"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Sep"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Oct"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Nov"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Dec"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:52
+#: VIPSWeb/templates/settings.js:54
 msgid "Print chart"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:53
+#: VIPSWeb/templates/settings.js:55
 msgid "Download PNG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:54
+#: VIPSWeb/templates/settings.js:56
 msgid "Download JPEG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:55
+#: VIPSWeb/templates/settings.js:57
 msgid "Download PDF document"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:56
+#: VIPSWeb/templates/settings.js:58
 msgid "Download SVG vector image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:57
+#: VIPSWeb/templates/settings.js:59
 msgid "Chart context menu"
 msgstr ""
diff --git a/VIPSWeb/locale/nb/LC_MESSAGES/django.mo b/VIPSWeb/locale/nb/LC_MESSAGES/django.mo
index 6e6787af22a0b68014df65a1b893ccb2cb96cb74..f4270641c7b7d8cf8bffb7162126d73cfe04eed7 100755
Binary files a/VIPSWeb/locale/nb/LC_MESSAGES/django.mo and b/VIPSWeb/locale/nb/LC_MESSAGES/django.mo differ
diff --git a/VIPSWeb/locale/nb/LC_MESSAGES/django.po b/VIPSWeb/locale/nb/LC_MESSAGES/django.po
index f1cb3ca41060326ae4a9f32e6354b43e05254573..1af216c358727515cc0430dae3df28000038ae9a 100755
--- a/VIPSWeb/locale/nb/LC_MESSAGES/django.po
+++ b/VIPSWeb/locale/nb/LC_MESSAGES/django.po
@@ -19,7 +19,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VIPSWeb\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: 2024-03-22 09:25+0100\n"
 "Last-Translator: Tor-Einar Skog <tor-einar.skog@nibio.no>\n"
 "Language-Team: \n"
@@ -30,6 +30,38 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 3.4.2\n"
 
+#: VIPSWeb/local_settings.py:208
+msgid "Risk maps"
+msgstr "Risikokart"
+
+#: VIPSWeb/local_settings.py:212
+msgid "About risk maps"
+msgstr "Om risikokart"
+
+#: VIPSWeb/local_settings.py:216
+msgid "Naerstad Late Blight Model"
+msgstr "Nærstads modell"
+
+#: VIPSWeb/local_settings.py:220
+msgid "Carrot rust fly temperature model"
+msgstr "Gulrotflue svermetidspunktmodell"
+
+#: VIPSWeb/local_settings.py:231
+msgid "Cereals and oilseeds"
+msgstr "Korn og oljevekster"
+
+#: VIPSWeb/local_settings.py:242
+msgid "Potato and vegetables"
+msgstr "Poteter og grønnsaker"
+
+#: VIPSWeb/local_settings.py:248
+msgid "Fruits and berries"
+msgstr "Frukt og bær"
+
+#: VIPSWeb/local_settings.py:255
+msgid "Other models and services"
+msgstr "Andre modeller og tjenester"
+
 #: VIPSWeb/templates/404.html:3 VIPSWeb/templates/404.html:5
 msgid "File not found"
 msgstr "Fil ikke funnet"
@@ -198,29 +230,5 @@ msgstr "Modeller fra IPM Decisions"
 msgid "Saddle gall midge"
 msgstr "Salgallmygg"
 
-#~ msgid "Risk maps"
-#~ msgstr "Risikokart"
-
-#~ msgid "About risk maps"
-#~ msgstr "Om risikokart"
-
 #~ msgid "Septoria reference humidity model"
 #~ msgstr "Septoria referansefuktmodell"
-
-#~ msgid "Carrot rust fly temperature model"
-#~ msgstr "Gulrotflue svermetidspunktmodell"
-
-#~ msgid "Cereals and oilseeds"
-#~ msgstr "Korn og oljevekster"
-
-#~ msgid "Potato and vegetables"
-#~ msgstr "Poteter og grønnsaker"
-
-#~ msgid "Fruits and berries"
-#~ msgstr "Frukt og bær"
-
-#~ msgid "Other models and services"
-#~ msgstr "Andre modeller og tjenester"
-
-#~ msgid "Naerstad Late Blight Model"
-#~ msgstr "Nærstads modell"
diff --git a/VIPSWeb/locale/nb/LC_MESSAGES/djangojs.po b/VIPSWeb/locale/nb/LC_MESSAGES/djangojs.po
index d38b7b9e9922260704af96d74118816fa940d1b2..2a4da49a055837fb7ff27f73d644bb8a1a7c0043 100755
--- a/VIPSWeb/locale/nb/LC_MESSAGES/djangojs.po
+++ b/VIPSWeb/locale/nb/LC_MESSAGES/djangojs.po
@@ -19,7 +19,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: VIPSWeb\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-04-03 14:01+0200\n"
+"POT-Creation-Date: 2024-10-30 15:38+0100\n"
 "PO-Revision-Date: 2024-04-03 14:04+0200\n"
 "Last-Translator: Tor-Einar Skog <tor-einar.skog@nibio.no>\n"
 "Language-Team: \n"
@@ -98,8 +98,8 @@ msgstr "Dager"
 msgid "Older"
 msgstr "Eldre"
 
-#: VIPSWeb/static/js/util.js:241 VIPSWeb/static/js/util.js:270
-#: VIPSWeb/static/js/util.js:422
+#: VIPSWeb/static/js/util.js:253 VIPSWeb/static/js/util.js:282
+#: VIPSWeb/static/js/util.js:434
 msgid "Unnamed"
 msgstr "Uten navn"
 
@@ -158,66 +158,66 @@ msgstr "For mange skilletegn (komma)"
 msgid "Select station"
 msgstr "Velg stasjon"
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Sunday"
 msgstr "Søndag"
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Monday"
 msgstr "Mandag"
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Tuesday"
 msgstr "Tirsdag"
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Wednesday"
 msgstr "Onsdag"
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Thursday"
 msgstr "Torsdag"
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Friday"
 msgstr "Fredag"
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Saturday"
 msgstr "Lørdag"
 
 # Abbreviation for Sunday
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sun"
 msgstr "Søn"
 
 # Abbreviation for Monday
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Mon"
 msgstr "Man"
 
 # Abbreviation for Tuesday
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Tue"
 msgstr "Tir"
 
 # Abbreviation for Wednesday
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Wed"
 msgstr "Ons"
 
 # Abbreviation for Thursday
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Thu"
 msgstr "Tor"
 
 # Abbreviation for Friday
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Fri"
 msgstr "Fredag"
 
 # Abbreviation for Saturday
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sat"
 msgstr "Lør"
 
@@ -256,130 +256,130 @@ msgstr "Fr"
 msgid "Sa"
 msgstr "Lø"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "January"
 msgstr "Januar"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "February"
 msgstr "Februar"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "March"
 msgstr "Mars"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "April"
 msgstr "April"
 
 #: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:17
-#: VIPSWeb/templates/settings.js:48 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:50 VIPSWeb/templates/settings.js:51
 msgid "May"
 msgstr "Mai"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "June"
 msgstr "Juni"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "July"
 msgstr "Juli"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "August"
 msgstr "August"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "September"
 msgstr "September"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "October"
 msgstr "Oktober"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "November"
 msgstr "November"
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "December"
 msgstr "Desember"
 
 # Abbreviation for January
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jan"
 msgstr "Jan"
 
 # Abbreviation for February
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Feb"
 msgstr "Feb"
 
 # Abbreviation for March
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Mar"
 msgstr "Mar"
 
 # Abbreviation for April
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Apr"
 msgstr "Apr"
 
 # Abbreviation for June
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jun"
 msgstr "Jun"
 
 # Abbreviation for July
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jul"
 msgstr "Jul"
 
 # Abbreviation for August
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Aug"
 msgstr "Aug"
 
 # Abbreviation for September
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Sep"
 msgstr "Sep"
 
 # Abbreviation for October
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Oct"
 msgstr "Okt"
 
 # Abbreviation for November
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Nov"
 msgstr "Nov"
 
 # Abbreviation for December
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Dec"
 msgstr "Des"
 
-#: VIPSWeb/templates/settings.js:52
+#: VIPSWeb/templates/settings.js:54
 msgid "Print chart"
 msgstr "Skriv ut graf"
 
-#: VIPSWeb/templates/settings.js:53
+#: VIPSWeb/templates/settings.js:55
 msgid "Download PNG image"
 msgstr "Last ned som PNG"
 
-#: VIPSWeb/templates/settings.js:54
+#: VIPSWeb/templates/settings.js:56
 msgid "Download JPEG image"
 msgstr "Last ned som JPEG"
 
-#: VIPSWeb/templates/settings.js:55
+#: VIPSWeb/templates/settings.js:57
 msgid "Download PDF document"
 msgstr "Last ned som PDF"
 
-#: VIPSWeb/templates/settings.js:56
+#: VIPSWeb/templates/settings.js:58
 msgid "Download SVG vector image"
 msgstr "Last ned som SVG"
 
-#: VIPSWeb/templates/settings.js:57
+#: VIPSWeb/templates/settings.js:59
 msgid "Chart context menu"
 msgstr "Grafmeny"
diff --git a/VIPSWeb/locale/vi/LC_MESSAGES/django.po b/VIPSWeb/locale/vi/LC_MESSAGES/django.po
index fddb506111e918c6bc701beb603ac70d92af0c8b..8d2555a1cde30101c97a2edc24b8245cf3033b93 100755
--- a/VIPSWeb/locale/vi/LC_MESSAGES/django.po
+++ b/VIPSWeb/locale/vi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,6 +18,38 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+#: VIPSWeb/local_settings.py:208
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:212
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:216
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:220
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:231
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:242
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:248
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:255
+msgid "Other models and services"
+msgstr ""
+
 #: VIPSWeb/templates/404.html:3 VIPSWeb/templates/404.html:5
 msgid "File not found"
 msgstr "File không tìm thấy"
diff --git a/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.po b/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.po
index f625d86e62fb34a9de4f8ca50d89a61fbb9f21e9..a41eed97e768ba7370a0dd48888def0cdb4eec00 100755
--- a/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.po
+++ b/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-04-03 14:01+0200\n"
+"POT-Creation-Date: 2024-10-30 15:38+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -92,8 +92,8 @@ msgstr ""
 msgid "Older"
 msgstr ""
 
-#: VIPSWeb/static/js/util.js:241 VIPSWeb/static/js/util.js:270
-#: VIPSWeb/static/js/util.js:422
+#: VIPSWeb/static/js/util.js:253 VIPSWeb/static/js/util.js:282
+#: VIPSWeb/static/js/util.js:434
 msgid "Unnamed"
 msgstr "Vô danh"
 
@@ -152,59 +152,59 @@ msgstr "Quá nhiều dấu phẩy phân cách"
 msgid "Select station"
 msgstr "Chọn ga"
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Sunday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Monday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Tuesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Wednesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Thursday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Friday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Saturday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Mon"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Tue"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Wed"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Thu"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Fri"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sat"
 msgstr ""
 
@@ -236,119 +236,119 @@ msgstr ""
 msgid "Sa"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "January"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "February"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "March"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "April"
 msgstr ""
 
 #: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:17
-#: VIPSWeb/templates/settings.js:48 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:50 VIPSWeb/templates/settings.js:51
 msgid "May"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "June"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "July"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "August"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "September"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "October"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "November"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "December"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jan"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Feb"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Mar"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Apr"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jul"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Aug"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Sep"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Oct"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Nov"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Dec"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:52
+#: VIPSWeb/templates/settings.js:54
 msgid "Print chart"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:53
+#: VIPSWeb/templates/settings.js:55
 msgid "Download PNG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:54
+#: VIPSWeb/templates/settings.js:56
 msgid "Download JPEG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:55
+#: VIPSWeb/templates/settings.js:57
 msgid "Download PDF document"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:56
+#: VIPSWeb/templates/settings.js:58
 msgid "Download SVG vector image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:57
+#: VIPSWeb/templates/settings.js:59
 msgid "Chart context menu"
 msgstr ""
diff --git a/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.mo b/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.mo
index ea3b4ec465f5f377c42f225e37df0bc01ecdc5b0..5aff4d0b67b3df1fe4431b16e46306c2539c48b3 100644
Binary files a/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.mo and b/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.mo differ
diff --git a/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.po b/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.po
index 59639d5033e1232cd0a66deb163df1aff3e23252..f34e9b6a86e556740064b4bb2172e0a7d786ff21 100644
--- a/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: 2019-06-24 12:21+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -17,6 +17,38 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 2.0.6\n"
 
+#: VIPSWeb/local_settings.py:208
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:212
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:216
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:220
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:231
+msgid "Cereals and oilseeds"
+msgstr "谷物和油籽"
+
+#: VIPSWeb/local_settings.py:242
+msgid "Potato and vegetables"
+msgstr "土豆和蔬菜"
+
+#: VIPSWeb/local_settings.py:248
+msgid "Fruits and berries"
+msgstr "水果和浆果"
+
+#: VIPSWeb/local_settings.py:255
+msgid "Other models and services"
+msgstr "其他模型和服务"
+
 #: VIPSWeb/templates/404.html:3 VIPSWeb/templates/404.html:5
 msgid "File not found"
 msgstr "找不到文件"
@@ -181,18 +213,6 @@ msgstr ""
 msgid "Saddle gall midge"
 msgstr ""
 
-#~ msgid "Cereals and oilseeds"
-#~ msgstr "谷物和油籽"
-
-#~ msgid "Potato and vegetables"
-#~ msgstr "土豆和蔬菜"
-
-#~ msgid "Fruits and berries"
-#~ msgstr "水果和浆果"
-
-#~ msgid "Other models and services"
-#~ msgstr "其他模型和服务"
-
 #~ msgid "Temporarily down for maintenance"
 #~ msgstr "暂时停机维护"
 
diff --git a/VIPSWeb/locale/zh_Hans/LC_MESSAGES/djangojs.po b/VIPSWeb/locale/zh_Hans/LC_MESSAGES/djangojs.po
index 8527d3708d71a50db086c518131632ce7cc2877d..44a2f6ec025e7720e0c2b103f401608f7a610998 100755
--- a/VIPSWeb/locale/zh_Hans/LC_MESSAGES/djangojs.po
+++ b/VIPSWeb/locale/zh_Hans/LC_MESSAGES/djangojs.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-04-03 14:01+0200\n"
+"POT-Creation-Date: 2024-10-30 15:38+0100\n"
 "PO-Revision-Date: 2016-11-03 15:00+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -86,8 +86,8 @@ msgstr ""
 msgid "Older"
 msgstr ""
 
-#: VIPSWeb/static/js/util.js:241 VIPSWeb/static/js/util.js:270
-#: VIPSWeb/static/js/util.js:422
+#: VIPSWeb/static/js/util.js:253 VIPSWeb/static/js/util.js:282
+#: VIPSWeb/static/js/util.js:434
 msgid "Unnamed"
 msgstr "未命名的"
 
@@ -146,59 +146,59 @@ msgstr "太多分割逗号"
 msgid "Select station"
 msgstr "选择站点"
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Sunday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Monday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Tuesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Wednesday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Thursday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Friday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:50
+#: VIPSWeb/templates/settings.js:13 VIPSWeb/templates/settings.js:52
 msgid "Saturday"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Mon"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Tue"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Wed"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Thu"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Fri"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:51
+#: VIPSWeb/templates/settings.js:14 VIPSWeb/templates/settings.js:53
 msgid "Sat"
 msgstr ""
 
@@ -230,119 +230,119 @@ msgstr ""
 msgid "Sa"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "January"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "February"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "March"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "April"
 msgstr ""
 
 #: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:17
-#: VIPSWeb/templates/settings.js:48 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:50 VIPSWeb/templates/settings.js:51
 msgid "May"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "June"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "July"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "August"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "September"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "October"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "November"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:49
+#: VIPSWeb/templates/settings.js:16 VIPSWeb/templates/settings.js:51
 msgid "December"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jan"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Feb"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Mar"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Apr"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jun"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Jul"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Aug"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Sep"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Oct"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Nov"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:48
+#: VIPSWeb/templates/settings.js:17 VIPSWeb/templates/settings.js:50
 msgid "Dec"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:52
+#: VIPSWeb/templates/settings.js:54
 msgid "Print chart"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:53
+#: VIPSWeb/templates/settings.js:55
 msgid "Download PNG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:54
+#: VIPSWeb/templates/settings.js:56
 msgid "Download JPEG image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:55
+#: VIPSWeb/templates/settings.js:57
 msgid "Download PDF document"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:56
+#: VIPSWeb/templates/settings.js:58
 msgid "Download SVG vector image"
 msgstr ""
 
-#: VIPSWeb/templates/settings.js:57
+#: VIPSWeb/templates/settings.js:59
 msgid "Chart context menu"
 msgstr ""
diff --git a/VIPSWeb/settings.py b/VIPSWeb/settings.py
index ee36cbb49cc99254eea6d7fdf9d709ead9fd2e80..d91aa417e6de0beefa02df84048172d5db67784e 100755
--- a/VIPSWeb/settings.py
+++ b/VIPSWeb/settings.py
@@ -82,9 +82,6 @@ STATICFILES_FINDERS = (
 #    'django.contrib.staticfiles.finders.DefaultStorageFinder',
 )
 
-
-
-
 MIDDLEWARE = (
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
diff --git a/VIPSWeb/static/css/vipsweb.css b/VIPSWeb/static/css/vipsweb.css
index 859cf7a763ec1bbc86596fee6c1d106b465986e0..8d7ca6aa8b35d1660f8ec7dff406918f83c6e9fa 100755
--- a/VIPSWeb/static/css/vipsweb.css
+++ b/VIPSWeb/static/css/vipsweb.css
@@ -879,6 +879,11 @@ button.btn-primary {
 	color: white;
 }
 
+button.btn-info {
+	background-color: #79bd8b;
+	color: white;
+}
+
 table.table {
 	border-collapse: collapse;
 }
diff --git a/VIPSWeb/static/js/util.js b/VIPSWeb/static/js/util.js
index 633a3ccc8fe992d4d4ecaba00e48cc040852838f..b0bc1487b8ba89338ac8bcf0603b27466a873de0 100755
--- a/VIPSWeb/static/js/util.js
+++ b/VIPSWeb/static/js/util.js
@@ -204,6 +204,18 @@ function getLocalSettings(keys, allOrNothing)
 	return (allOrNothing && keys.length != Object.keys(retVal).length) ? null : retVal;
 }
 
+/**
+ * Namespace all strings in given array
+ */
+function getNameSpaced(nameSpace, anArray) {
+	var retVal = [];
+	for(var i = 0; i<anArray.length;i++)
+	{
+		retVal.push(nameSpace + "." + anArray[i]);
+	}
+	return retVal;
+};
+
 /**
  * Converts a string like this "6,3,23,1,100" => [6,3,23,1,100]
  * @param csvString
@@ -421,3 +433,28 @@ function getLocalizedCropCategoryName(cropCategory)
 	// Then we give up
 	return gettext("Unnamed");
 }
+
+async function getLocationInformation(latitude, longitude) {
+	let location = "Unknown"
+	let timezone = "Europe/Oslo"
+
+	try {
+		const response = await fetch(`https://api.geoapify.com/v1/geocode/reverse?lat=${latitude}&lon=${longitude}&format=json&apiKey=${settings.geoapifyApiKey}`);
+		const respJson = await response.json()
+		if(respJson.results && respJson.results.length > 0) {
+			location = respJson.results[0].city ? respJson.results[0].city : respJson.results[0].formatted;
+			timezone = respJson.results[0].timezone.name;
+		} else {
+			console.error("Unable to get location information for for lat=" + latitude + " lon=" + longitude)
+		}
+	} catch (error) {
+		console.error("Error fetching location information", error)		
+	}
+	return {
+		latitude: latitude,
+		longitude: longitude,
+		location: location,
+		timezone: timezone
+	}
+}
+
diff --git a/VIPSWeb/templates/settings.js b/VIPSWeb/templates/settings.js
index 4659ca6ce179995c8f5ceb19660448d02956439b..afe28c9b8d9552e17d2edaf383904255f0d337e9 100755
--- a/VIPSWeb/templates/settings.js
+++ b/VIPSWeb/templates/settings.js
@@ -43,6 +43,8 @@ var settings = {
 		
 		userIsIE: {{user_is_ie|yesno:"true,false"}},
 		
+		geoapifyApiKey: "{{settings.GEOAPIFY_API_KEY}}",  
+
 		highchartsGlobalOptions: {
 			lang: {
 				shortMonths: [gettext("Jan"),gettext("Feb"),gettext("Mar"),gettext("Apr"),gettext("May"),gettext("Jun"),gettext("Jul"),gettext("Aug"),gettext("Sep"),gettext("Oct"),gettext("Nov"),gettext("Dec")],
diff --git a/VIPSWeb/urls.py b/VIPSWeb/urls.py
index 756b6eddd05fcf18d15c1582b52d99701dcc821e..c81a53753c78913103994dbb620092126a26c7e4 100755
--- a/VIPSWeb/urls.py
+++ b/VIPSWeb/urls.py
@@ -34,7 +34,7 @@ admin.autodiscover()
 # Enabling translation in JavaScript files
 # See https://docs.djangoproject.com/en/1.5/topics/i18n/translation/#internationalization-in-javascript-code
 js_info_dict = {
-    'packages': ['forecasts','vips_messages','VIPSWeb','roughage', 'spatial'],
+    'packages': ['forecasts','vips_messages','VIPSWeb','roughage', 'spatial','cydiapomonella'],
     'domain': 'djangojs',
 }
 
diff --git a/cerealblotchmodels/locale/bg/LC_MESSAGES/django.po b/cerealblotchmodels/locale/bg/LC_MESSAGES/django.po
index c3253dceffdfa3513cc44b303cce4471db417b1b..e39dd10dc835efc600d74cffd42dbd10ecca709f 100644
--- a/cerealblotchmodels/locale/bg/LC_MESSAGES/django.po
+++ b/cerealblotchmodels/locale/bg/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,140 +17,95 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
 #: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:34
 msgid "Barley net blotch"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:42
-msgid "Background data for the barley net blotch model"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:49
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
-msgid "Weather station"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:122
 msgid "Sowing date"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:60
-msgid "Crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:67
-msgid "Same crop as last season"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:72
-msgid "Plowed"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:78
-msgid "Observation date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:83
-msgid "&#37; Infected leaves"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:88
-msgid "Spraying date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:93
-msgid "Preparation"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:99
-msgid "Preparation dose"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:108
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:175
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:203
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:182
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:193
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:375
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:384
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:442
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:443
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:444
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:513
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:447
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:514
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:454
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:601
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:462
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:608
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:497
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:510
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:517
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:528
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:523
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
-msgid "Select crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:581
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:610
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:388
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
 "is not designed to work with Internet Explorer, you may experience errors "
@@ -164,12 +119,12 @@ msgid "Cereal blotch models"
 msgstr ""
 
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:28
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:449
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:58
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:658
 msgid "Septoria humidity model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:29
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:59
 msgid ""
 "Fuktmodellen er et beslutningsstøtteverktøy, utviklet av <a href='https://"
 "www.seges.dk/'>SEGES</a>, Danmark, for å kunne vurdere risiko for angrep av "
@@ -178,140 +133,127 @@ msgid ""
 "com/818734601' target='new'>informasjonsvideo</a>"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:33
-msgid "Background data"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:39
-msgid "Country"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:41
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:48
-msgid "Please select"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:103
 msgid "Sprayings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:105
 msgid "Spraying 1"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:60
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:110
 msgid "Spraying 2"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:70
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:118
 msgid "Phenology"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:72
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:120
 msgid "Growth stage 31"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:77
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:125
 msgid "3rd upper leaf (gs 32)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:82
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:130
 msgid "2nd upper leaf (gs 33)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:87
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:135
 msgid "Upper leaf (gs 37-39)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:92
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:140
 msgid "All kernels fully developed (gs 75)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:97
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:146
 msgid "Show advanced settings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:102
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:152
 msgid "Threshold values for humid hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:104
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:154
 msgid "Relative humidity"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:109
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:159
 msgid "Leaf wetness (min/hour)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:114
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:164
 msgid "Precipitation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:119
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:169
 msgid "Sliding hours past (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:124
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:174
 msgid "Sliding hours ahead (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:132
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:182
 msgid "Other threshold values"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:134
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:184
 msgid "Number of consecutive 'humid hours'"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:139
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:189
 msgid "Spraying protection days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:144
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:194
 msgid "Leaf life time (days)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:360
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:570
 msgid "The model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:379
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:589
 msgid "Leaf wetness, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:380
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:590
 msgid "Rain, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:381
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:591
 msgid "Relative humidity, hourly mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:382
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:592
 msgid "Humid hour (yes/no)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:383
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:593
 msgid "Humid period hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:384
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:594
 msgid "Humid hour sum"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:385
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:444
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:595
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:653
 msgid "Humid period hour outside protection period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:440
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:649
 msgid "Hours"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:445
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:654
 msgid "Threshold humid period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:655
 msgid "Spraying protection period"
 msgstr ""
diff --git a/cerealblotchmodels/locale/bs/LC_MESSAGES/django.po b/cerealblotchmodels/locale/bs/LC_MESSAGES/django.po
index a53d50ef70b28383a93d5ecc114933578ac88508..9366bb4b0e824a2d4175e5fbb6ae6ee07f0ef4ff 100644
--- a/cerealblotchmodels/locale/bs/LC_MESSAGES/django.po
+++ b/cerealblotchmodels/locale/bs/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,142 +16,97 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
 #: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:34
 msgid "Barley net blotch"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:42
-msgid "Background data for the barley net blotch model"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:49
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
-msgid "Weather station"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:122
 msgid "Sowing date"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:60
-msgid "Crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:67
-msgid "Same crop as last season"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:72
-msgid "Plowed"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:78
-msgid "Observation date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:83
-msgid "&#37; Infected leaves"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:88
-msgid "Spraying date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:93
-msgid "Preparation"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:99
-msgid "Preparation dose"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:108
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:175
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:203
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:182
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:193
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:375
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:384
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:442
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:443
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:444
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:513
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:447
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:514
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:454
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:601
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:462
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:608
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:497
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:510
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:517
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:528
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:523
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
-msgid "Select crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:581
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:610
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:388
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
 "is not designed to work with Internet Explorer, you may experience errors "
@@ -165,12 +120,12 @@ msgid "Cereal blotch models"
 msgstr ""
 
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:28
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:449
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:58
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:658
 msgid "Septoria humidity model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:29
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:59
 msgid ""
 "Fuktmodellen er et beslutningsstøtteverktøy, utviklet av <a href='https://"
 "www.seges.dk/'>SEGES</a>, Danmark, for å kunne vurdere risiko for angrep av "
@@ -179,140 +134,127 @@ msgid ""
 "com/818734601' target='new'>informasjonsvideo</a>"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:33
-msgid "Background data"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:39
-msgid "Country"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:41
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:48
-msgid "Please select"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:103
 msgid "Sprayings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:105
 msgid "Spraying 1"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:60
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:110
 msgid "Spraying 2"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:70
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:118
 msgid "Phenology"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:72
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:120
 msgid "Growth stage 31"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:77
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:125
 msgid "3rd upper leaf (gs 32)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:82
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:130
 msgid "2nd upper leaf (gs 33)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:87
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:135
 msgid "Upper leaf (gs 37-39)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:92
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:140
 msgid "All kernels fully developed (gs 75)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:97
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:146
 msgid "Show advanced settings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:102
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:152
 msgid "Threshold values for humid hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:104
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:154
 msgid "Relative humidity"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:109
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:159
 msgid "Leaf wetness (min/hour)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:114
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:164
 msgid "Precipitation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:119
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:169
 msgid "Sliding hours past (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:124
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:174
 msgid "Sliding hours ahead (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:132
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:182
 msgid "Other threshold values"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:134
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:184
 msgid "Number of consecutive 'humid hours'"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:139
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:189
 msgid "Spraying protection days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:144
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:194
 msgid "Leaf life time (days)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:360
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:570
 msgid "The model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:379
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:589
 msgid "Leaf wetness, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:380
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:590
 msgid "Rain, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:381
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:591
 msgid "Relative humidity, hourly mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:382
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:592
 msgid "Humid hour (yes/no)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:383
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:593
 msgid "Humid period hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:384
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:594
 msgid "Humid hour sum"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:385
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:444
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:595
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:653
 msgid "Humid period hour outside protection period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:440
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:649
 msgid "Hours"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:445
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:654
 msgid "Threshold humid period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:655
 msgid "Spraying protection period"
 msgstr ""
diff --git a/cerealblotchmodels/locale/de/LC_MESSAGES/django.po b/cerealblotchmodels/locale/de/LC_MESSAGES/django.po
index 65f927db1505a9f9f9b5ab501c6c94f27c691bb6..e39dd10dc835efc600d74cffd42dbd10ecca709f 100755
--- a/cerealblotchmodels/locale/de/LC_MESSAGES/django.po
+++ b/cerealblotchmodels/locale/de/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -19,139 +19,93 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:34
 msgid "Barley net blotch"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:42
-msgid "Background data for the barley net blotch model"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:49
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
-msgid "Weather station"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:122
 msgid "Sowing date"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:60
-msgid "Crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:67
-msgid "Same crop as last season"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:72
-msgid "Plowed"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:78
-msgid "Observation date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:83
-msgid "&#37; Infected leaves"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:88
-msgid "Spraying date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:93
-msgid "Preparation"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:99
-msgid "Preparation dose"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:108
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:175
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:203
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:182
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:193
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:375
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:384
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:442
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:443
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:444
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:513
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:447
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:514
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:454
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:601
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:462
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:608
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:497
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:510
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:517
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:528
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:523
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
-msgid "Select crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:581
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:610
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:388
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
 "is not designed to work with Internet Explorer, you may experience errors "
@@ -165,12 +119,12 @@ msgid "Cereal blotch models"
 msgstr ""
 
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:28
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:449
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:58
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:658
 msgid "Septoria humidity model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:29
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:59
 msgid ""
 "Fuktmodellen er et beslutningsstøtteverktøy, utviklet av <a href='https://"
 "www.seges.dk/'>SEGES</a>, Danmark, for å kunne vurdere risiko for angrep av "
@@ -179,140 +133,127 @@ msgid ""
 "com/818734601' target='new'>informasjonsvideo</a>"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:33
-msgid "Background data"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:39
-msgid "Country"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:41
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:48
-msgid "Please select"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:103
 msgid "Sprayings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:105
 msgid "Spraying 1"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:60
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:110
 msgid "Spraying 2"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:70
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:118
 msgid "Phenology"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:72
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:120
 msgid "Growth stage 31"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:77
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:125
 msgid "3rd upper leaf (gs 32)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:82
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:130
 msgid "2nd upper leaf (gs 33)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:87
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:135
 msgid "Upper leaf (gs 37-39)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:92
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:140
 msgid "All kernels fully developed (gs 75)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:97
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:146
 msgid "Show advanced settings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:102
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:152
 msgid "Threshold values for humid hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:104
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:154
 msgid "Relative humidity"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:109
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:159
 msgid "Leaf wetness (min/hour)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:114
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:164
 msgid "Precipitation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:119
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:169
 msgid "Sliding hours past (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:124
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:174
 msgid "Sliding hours ahead (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:132
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:182
 msgid "Other threshold values"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:134
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:184
 msgid "Number of consecutive 'humid hours'"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:139
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:189
 msgid "Spraying protection days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:144
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:194
 msgid "Leaf life time (days)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:360
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:570
 msgid "The model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:379
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:589
 msgid "Leaf wetness, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:380
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:590
 msgid "Rain, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:381
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:591
 msgid "Relative humidity, hourly mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:382
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:592
 msgid "Humid hour (yes/no)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:383
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:593
 msgid "Humid period hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:384
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:594
 msgid "Humid hour sum"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:385
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:444
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:595
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:653
 msgid "Humid period hour outside protection period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:440
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:649
 msgid "Hours"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:445
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:654
 msgid "Threshold humid period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:655
 msgid "Spraying protection period"
 msgstr ""
diff --git a/cerealblotchmodels/locale/fi/LC_MESSAGES/django.po b/cerealblotchmodels/locale/fi/LC_MESSAGES/django.po
index c3253dceffdfa3513cc44b303cce4471db417b1b..e39dd10dc835efc600d74cffd42dbd10ecca709f 100644
--- a/cerealblotchmodels/locale/fi/LC_MESSAGES/django.po
+++ b/cerealblotchmodels/locale/fi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,140 +17,95 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
 #: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:34
 msgid "Barley net blotch"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:42
-msgid "Background data for the barley net blotch model"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:49
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
-msgid "Weather station"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:122
 msgid "Sowing date"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:60
-msgid "Crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:67
-msgid "Same crop as last season"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:72
-msgid "Plowed"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:78
-msgid "Observation date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:83
-msgid "&#37; Infected leaves"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:88
-msgid "Spraying date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:93
-msgid "Preparation"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:99
-msgid "Preparation dose"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:108
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:175
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:203
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:182
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:193
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:375
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:384
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:442
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:443
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:444
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:513
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:447
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:514
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:454
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:601
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:462
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:608
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:497
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:510
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:517
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:528
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:523
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
-msgid "Select crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:581
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:610
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:388
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
 "is not designed to work with Internet Explorer, you may experience errors "
@@ -164,12 +119,12 @@ msgid "Cereal blotch models"
 msgstr ""
 
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:28
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:449
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:58
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:658
 msgid "Septoria humidity model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:29
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:59
 msgid ""
 "Fuktmodellen er et beslutningsstøtteverktøy, utviklet av <a href='https://"
 "www.seges.dk/'>SEGES</a>, Danmark, for å kunne vurdere risiko for angrep av "
@@ -178,140 +133,127 @@ msgid ""
 "com/818734601' target='new'>informasjonsvideo</a>"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:33
-msgid "Background data"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:39
-msgid "Country"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:41
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:48
-msgid "Please select"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:103
 msgid "Sprayings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:105
 msgid "Spraying 1"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:60
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:110
 msgid "Spraying 2"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:70
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:118
 msgid "Phenology"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:72
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:120
 msgid "Growth stage 31"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:77
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:125
 msgid "3rd upper leaf (gs 32)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:82
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:130
 msgid "2nd upper leaf (gs 33)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:87
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:135
 msgid "Upper leaf (gs 37-39)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:92
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:140
 msgid "All kernels fully developed (gs 75)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:97
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:146
 msgid "Show advanced settings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:102
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:152
 msgid "Threshold values for humid hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:104
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:154
 msgid "Relative humidity"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:109
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:159
 msgid "Leaf wetness (min/hour)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:114
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:164
 msgid "Precipitation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:119
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:169
 msgid "Sliding hours past (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:124
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:174
 msgid "Sliding hours ahead (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:132
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:182
 msgid "Other threshold values"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:134
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:184
 msgid "Number of consecutive 'humid hours'"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:139
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:189
 msgid "Spraying protection days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:144
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:194
 msgid "Leaf life time (days)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:360
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:570
 msgid "The model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:379
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:589
 msgid "Leaf wetness, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:380
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:590
 msgid "Rain, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:381
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:591
 msgid "Relative humidity, hourly mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:382
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:592
 msgid "Humid hour (yes/no)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:383
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:593
 msgid "Humid period hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:384
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:594
 msgid "Humid hour sum"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:385
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:444
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:595
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:653
 msgid "Humid period hour outside protection period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:440
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:649
 msgid "Hours"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:445
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:654
 msgid "Threshold humid period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:655
 msgid "Spraying protection period"
 msgstr ""
diff --git a/cerealblotchmodels/locale/nb/LC_MESSAGES/django.mo b/cerealblotchmodels/locale/nb/LC_MESSAGES/django.mo
index f7de82ce09ce0d8826adf8190a0f8f6ee9b76bd4..cb3f59175285781079f355433b6d7e3bfaa7a566 100755
Binary files a/cerealblotchmodels/locale/nb/LC_MESSAGES/django.mo and b/cerealblotchmodels/locale/nb/LC_MESSAGES/django.mo differ
diff --git a/cerealblotchmodels/locale/nb/LC_MESSAGES/django.po b/cerealblotchmodels/locale/nb/LC_MESSAGES/django.po
index f7572e76e38c61023b46d142bf61a4c0579408bf..9b37fc07fb8e3945e3014f6b8f59298e2e302cb0 100644
--- a/cerealblotchmodels/locale/nb/LC_MESSAGES/django.po
+++ b/cerealblotchmodels/locale/nb/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: 2024-04-04 12:59+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -20,139 +20,93 @@ msgstr ""
 "X-Generator: Poedit 3.4.2\n"
 
 #: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:34
 msgid "Barley net blotch"
 msgstr "Byggbrunflekk"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:42
-msgid "Background data for the barley net blotch model"
-msgstr "Bakgrunnsdata for byggbrunflekkmodellen"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:49
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
-msgid "Weather station"
-msgstr "Målestasjon"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:122
 msgid "Sowing date"
 msgstr "Sådato"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:60
-msgid "Crop"
-msgstr "Kultur"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:67
-msgid "Same crop as last season"
-msgstr "Samme kultur som forrige sesong"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:72
-msgid "Plowed"
-msgstr "Plølyd"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:78
-msgid "Observation date"
-msgstr "Observasjonsdato"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:83
-msgid "&#37; Infected leaves"
-msgstr "&#37; Infiserte blad"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:88
-msgid "Spraying date"
-msgstr "Sprøytedato"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:93
-msgid "Preparation"
-msgstr "Preparat"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:99
-msgid "Preparation dose"
-msgstr "Preparatdose"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:108
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:175
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:203
 msgid "Run model"
 msgstr "Kjør modell"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:182
 msgid "Model is running, please wait"
 msgstr "Modellen kjører, vennligst vent"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:193
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr "Scroll forbi grafen ved å sveipe den prikkede linjen til høyre"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:375
 msgid "Missing observation information"
 msgstr "Manglende informasjon om feltobservasjoner"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:384
 msgid "Missing spraying information"
 msgstr "Manglende sprøytedata"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:442
 msgid "Temperature, daily mean"
 msgstr "Temperatur, daglig gjennomsnitt"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:443
 msgid "Rain last 28 days"
 msgstr "Regn siste 28 dager"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:444
 msgid "Rain, daily"
 msgstr "Regn, daglig sum"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 msgid "Day degrees since sowing"
 msgstr "Døgngrader siden såing"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:513
 msgid "Threshold"
 msgstr "Terskel"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:447
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:514
 msgid "Disease"
 msgstr "Sykdom"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:454
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:601
 msgid "Time"
 msgstr "Tid"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:462
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:608
 msgid "Warning status"
 msgstr "Varselstatus"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:497
 msgid "No data returned"
 msgstr "Ingen data returnert"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:510
 msgid "Disease value"
 msgstr "Sykdomsverdi"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:517
 msgid "Barley net blotch development"
 msgstr "Utvikling av byggbrunflekk"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:528
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:523
 msgid "Select weather station"
 msgstr "Velg målestasjon"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
-msgid "Select crop"
-msgstr "Velg kultur"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:581
 msgid "Select preparation"
 msgstr "Velg preparat"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:610
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:388
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
 "is not designed to work with Internet Explorer, you may experience errors "
@@ -170,12 +124,12 @@ msgid "Cereal blotch models"
 msgstr "Hvetebladflekkmodeller"
 
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:28
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:449
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:58
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:658
 msgid "Septoria humidity model"
 msgstr "Bladflekker i korn - fuktmodell"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:29
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:59
 msgid ""
 "Fuktmodellen er et beslutningsstøtteverktøy, utviklet av <a href='https://"
 "www.seges.dk/'>SEGES</a>, Danmark, for å kunne vurdere risiko for angrep av "
@@ -184,140 +138,169 @@ msgid ""
 "com/818734601' target='new'>informasjonsvideo</a>"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:33
-msgid "Background data"
-msgstr "Bakgrunnsdata"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:39
-msgid "Country"
-msgstr "Land"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:41
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:48
-msgid "Please select"
-msgstr "Vennligst velg"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:103
 msgid "Sprayings"
 msgstr "Sprøytinger"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:105
 msgid "Spraying 1"
 msgstr "Første sprøyting"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:60
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:110
 msgid "Spraying 2"
 msgstr "Andre sprøyting"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:70
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:118
 msgid "Phenology"
 msgstr "Utvikling"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:72
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:120
 msgid "Growth stage 31"
 msgstr "GS 31"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:77
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:125
 msgid "3rd upper leaf (gs 32)"
 msgstr "GS 32"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:82
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:130
 msgid "2nd upper leaf (gs 33)"
 msgstr "GS 333"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:87
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:135
 msgid "Upper leaf (gs 37-39)"
 msgstr "GS 37-39"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:92
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:140
 msgid "All kernels fully developed (gs 75)"
 msgstr "GS 75"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:97
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:146
 msgid "Show advanced settings"
 msgstr "Vis avanserte innstillinger"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:102
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:152
 msgid "Threshold values for humid hour"
 msgstr "Terskelverdier for fuktig time"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:104
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:154
 msgid "Relative humidity"
 msgstr "Relativ luftfukt"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:109
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:159
 msgid "Leaf wetness (min/hour)"
 msgstr "Bladfukt (min/t)"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:114
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:164
 msgid "Precipitation"
 msgstr "Nedbør (mm)"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:119
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:169
 msgid "Sliding hours past (hours)"
 msgstr "Glidende timer passert"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:124
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:174
 msgid "Sliding hours ahead (hours)"
 msgstr "Glidende timer forut"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:132
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:182
 msgid "Other threshold values"
 msgstr "Andre terskelverdier"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:134
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:184
 msgid "Number of consecutive 'humid hours'"
 msgstr "Antall sammenhengende fuktige timer"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:139
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:189
 msgid "Spraying protection days"
 msgstr "Varighet (dager) av beskyttelse etter sprøyting"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:144
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:194
 msgid "Leaf life time (days)"
 msgstr "Bladets levetid (dager)"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:360
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:570
 msgid "The model is running, please wait"
 msgstr "Modellen kjører, vennligst vent"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:379
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:589
 msgid "Leaf wetness, hourly"
 msgstr "Bladfukt, timeverdi"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:380
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:590
 msgid "Rain, hourly"
 msgstr "Nedbør, timeverdi"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:381
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:591
 msgid "Relative humidity, hourly mean"
 msgstr "Relativ luftfukt, timesgjennomsnitt"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:382
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:592
 msgid "Humid hour (yes/no)"
 msgstr "Fuktig time (ja/nei)"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:383
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:593
 msgid "Humid period hour"
 msgstr "Fuktig periode-time"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:384
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:594
 msgid "Humid hour sum"
 msgstr "Sum fuktige timer"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:385
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:444
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:595
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:653
 msgid "Humid period hour outside protection period"
 msgstr "Fuktige timer utenfor beskyttelsesperiode"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:440
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:649
 msgid "Hours"
 msgstr "Timer"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:445
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:654
 msgid "Threshold humid period"
 msgstr "Terskel fuktig periode"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:655
 msgid "Spraying protection period"
 msgstr "Beskyttet periode ved sprøyting"
+
+#~ msgid "&#37; Infected leaves"
+#~ msgstr "&#37; Infiserte blad"
+
+#~ msgid "Select crop"
+#~ msgstr "Velg kultur"
+
+#~ msgid "Background data"
+#~ msgstr "Bakgrunnsdata"
+
+#~ msgid "Country"
+#~ msgstr "Land"
+
+#~ msgid "Please select"
+#~ msgstr "Vennligst velg"
+
+#~ msgid "Weather station"
+#~ msgstr "Målestasjon"
+
+#~ msgid "Background data for the barley net blotch model"
+#~ msgstr "Bakgrunnsdata for byggbrunflekkmodellen"
+
+#~ msgid "Crop"
+#~ msgstr "Kultur"
+
+#~ msgid "Same crop as last season"
+#~ msgstr "Samme kultur som forrige sesong"
+
+#~ msgid "Plowed"
+#~ msgstr "Plølyd"
+
+#~ msgid "Observation date"
+#~ msgstr "Observasjonsdato"
+
+#~ msgid "Spraying date"
+#~ msgstr "Sprøytedato"
+
+#~ msgid "Preparation"
+#~ msgstr "Preparat"
+
+#~ msgid "Preparation dose"
+#~ msgstr "Preparatdose"
diff --git a/cerealblotchmodels/locale/vi/LC_MESSAGES/django.po b/cerealblotchmodels/locale/vi/LC_MESSAGES/django.po
index 8ef4bb737e0c32589ac44c30c7ee6c524591d7f8..4d51865e88cdfa5fcc9e6890a1abbf5541617631 100644
--- a/cerealblotchmodels/locale/vi/LC_MESSAGES/django.po
+++ b/cerealblotchmodels/locale/vi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,140 +17,95 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+
 #: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:34
 msgid "Barley net blotch"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:42
-msgid "Background data for the barley net blotch model"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:49
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
-msgid "Weather station"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:122
 msgid "Sowing date"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:60
-msgid "Crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:67
-msgid "Same crop as last season"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:72
-msgid "Plowed"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:78
-msgid "Observation date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:83
-msgid "&#37; Infected leaves"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:88
-msgid "Spraying date"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:93
-msgid "Preparation"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:99
-msgid "Preparation dose"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:108
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:175
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:203
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:182
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:193
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:375
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:384
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:442
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:443
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:444
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:513
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:447
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:514
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:454
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:601
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:462
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:608
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:497
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:510
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:517
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:528
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:523
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
-msgid "Select crop"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:581
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:610
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:388
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
 "is not designed to work with Internet Explorer, you may experience errors "
@@ -164,12 +119,12 @@ msgid "Cereal blotch models"
 msgstr ""
 
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:28
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:449
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:58
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:658
 msgid "Septoria humidity model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:29
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:59
 msgid ""
 "Fuktmodellen er et beslutningsstøtteverktøy, utviklet av <a href='https://"
 "www.seges.dk/'>SEGES</a>, Danmark, for å kunne vurdere risiko for angrep av "
@@ -178,140 +133,127 @@ msgid ""
 "com/818734601' target='new'>informasjonsvideo</a>"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:33
-msgid "Background data"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:39
-msgid "Country"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:41
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:48
-msgid "Please select"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:103
 msgid "Sprayings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:105
 msgid "Spraying 1"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:60
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:110
 msgid "Spraying 2"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:70
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:118
 msgid "Phenology"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:72
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:120
 msgid "Growth stage 31"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:77
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:125
 msgid "3rd upper leaf (gs 32)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:82
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:130
 msgid "2nd upper leaf (gs 33)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:87
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:135
 msgid "Upper leaf (gs 37-39)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:92
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:140
 msgid "All kernels fully developed (gs 75)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:97
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:146
 msgid "Show advanced settings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:102
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:152
 msgid "Threshold values for humid hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:104
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:154
 msgid "Relative humidity"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:109
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:159
 msgid "Leaf wetness (min/hour)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:114
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:164
 msgid "Precipitation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:119
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:169
 msgid "Sliding hours past (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:124
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:174
 msgid "Sliding hours ahead (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:132
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:182
 msgid "Other threshold values"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:134
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:184
 msgid "Number of consecutive 'humid hours'"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:139
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:189
 msgid "Spraying protection days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:144
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:194
 msgid "Leaf life time (days)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:360
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:570
 msgid "The model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:379
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:589
 msgid "Leaf wetness, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:380
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:590
 msgid "Rain, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:381
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:591
 msgid "Relative humidity, hourly mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:382
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:592
 msgid "Humid hour (yes/no)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:383
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:593
 msgid "Humid period hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:384
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:594
 msgid "Humid hour sum"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:385
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:444
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:595
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:653
 msgid "Humid period hour outside protection period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:440
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:649
 msgid "Hours"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:445
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:654
 msgid "Threshold humid period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:655
 msgid "Spraying protection period"
 msgstr ""
diff --git a/cerealblotchmodels/locale/zh_Hans/LC_MESSAGES/django.po b/cerealblotchmodels/locale/zh_Hans/LC_MESSAGES/django.po
index 0516bdc52d5c911a343cddd31cdd6a1bb7a7d8e9..fa9d06ea3f5552f79942fb00ce541f0680e06baa 100755
--- a/cerealblotchmodels/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/cerealblotchmodels/locale/zh_Hans/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 11:29+0100\n"
 "PO-Revision-Date: 2016-10-07 11:05+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -19,139 +19,93 @@ msgstr ""
 "X-Generator: Poedit 1.8.7\n"
 
 #: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:34
 msgid "Barley net blotch"
 msgstr "大麦网斑病"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:42
-msgid "Background data for the barley net blotch model"
-msgstr "大麦网斑病模型的背景数据"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:49
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
-msgid "Weather station"
-msgstr "气象站"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:122
 msgid "Sowing date"
 msgstr "播种日期"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:60
-msgid "Crop"
-msgstr "作物"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:67
-msgid "Same crop as last season"
-msgstr "与上季同样的作物"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:72
-msgid "Plowed"
-msgstr "犁过的"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:78
-msgid "Observation date"
-msgstr "观测日期"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:83
-msgid "&#37; Infected leaves"
-msgstr "&#37; 感染水平"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:88
-msgid "Spraying date"
-msgstr "喷药日期"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:93
-msgid "Preparation"
-msgstr "准备"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:99
-msgid "Preparation dose"
-msgstr "准备剂量"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:108
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:175
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:203
 msgid "Run model"
 msgstr "运行模型"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:182
 msgid "Model is running, please wait"
 msgstr "模型在运行,请等候"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:193
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr "点击右边点状线看上一幅图"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:375
 msgid "Missing observation information"
 msgstr "遗失的观测信息"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:384
 msgid "Missing spraying information"
 msgstr "遗失的喷药信息"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:442
 msgid "Temperature, daily mean"
 msgstr "日均温"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:443
 msgid "Rain last 28 days"
 msgstr "过去28天降雨"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:444
 msgid "Rain, daily"
 msgstr "日降雨"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 msgid "Day degrees since sowing"
 msgstr "从撒种开始日温度"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:513
 msgid "Threshold"
 msgstr "阈值"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:447
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:514
 msgid "Disease"
 msgstr "疾病"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:454
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:601
 msgid "Time"
 msgstr "时间"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:462
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:608
 msgid "Warning status"
 msgstr "预警信息"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:497
 msgid "No data returned"
 msgstr "无数据返回"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:510
 msgid "Disease value"
 msgstr "疾病值"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:517
 msgid "Barley net blotch development"
 msgstr "大麦网斑病发展"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:528
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:523
 msgid "Select weather station"
 msgstr "选择气象站"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
-msgid "Select crop"
-msgstr "选择作物"
-
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:581
 msgid "Select preparation"
 msgstr "选择准备"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:610
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:388
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
 "is not designed to work with Internet Explorer, you may experience errors "
@@ -165,12 +119,12 @@ msgid "Cereal blotch models"
 msgstr "谷物斑点病模型"
 
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:25
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:28
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:449
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:58
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:658
 msgid "Septoria humidity model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:29
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:59
 msgid ""
 "Fuktmodellen er et beslutningsstøtteverktøy, utviklet av <a href='https://"
 "www.seges.dk/'>SEGES</a>, Danmark, for å kunne vurdere risiko for angrep av "
@@ -179,156 +133,176 @@ msgid ""
 "com/818734601' target='new'>informasjonsvideo</a>"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:33
-msgid "Background data"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:39
-msgid "Country"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:41
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:48
-msgid "Please select"
-msgstr ""
-
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:103
 #, fuzzy
 #| msgid "Spraying date"
 msgid "Sprayings"
 msgstr "喷药日期"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:55
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:105
 #, fuzzy
 #| msgid "Spraying date"
 msgid "Spraying 1"
 msgstr "喷药日期"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:60
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:110
 #, fuzzy
 #| msgid "Spraying date"
 msgid "Spraying 2"
 msgstr "喷药日期"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:70
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:118
 msgid "Phenology"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:72
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:120
 msgid "Growth stage 31"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:77
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:125
 msgid "3rd upper leaf (gs 32)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:82
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:130
 msgid "2nd upper leaf (gs 33)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:87
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:135
 msgid "Upper leaf (gs 37-39)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:92
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:140
 msgid "All kernels fully developed (gs 75)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:97
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:146
 msgid "Show advanced settings"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:102
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:152
 msgid "Threshold values for humid hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:104
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:154
 msgid "Relative humidity"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:109
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:159
 msgid "Leaf wetness (min/hour)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:114
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:164
 #, fuzzy
 #| msgid "Preparation"
 msgid "Precipitation"
 msgstr "准备"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:119
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:169
 msgid "Sliding hours past (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:124
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:174
 msgid "Sliding hours ahead (hours)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:132
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:182
 msgid "Other threshold values"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:134
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:184
 msgid "Number of consecutive 'humid hours'"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:139
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:189
 msgid "Spraying protection days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:144
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:194
 msgid "Leaf life time (days)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:360
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:570
 #, fuzzy
 #| msgid "Model is running, please wait"
 msgid "The model is running, please wait"
 msgstr "模型在运行,请等候"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:379
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:589
 msgid "Leaf wetness, hourly"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:380
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:590
 #, fuzzy
 #| msgid "Rain, daily"
 msgid "Rain, hourly"
 msgstr "日降雨"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:381
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:591
 msgid "Relative humidity, hourly mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:382
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:592
 msgid "Humid hour (yes/no)"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:383
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:593
 msgid "Humid period hour"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:384
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:594
 msgid "Humid hour sum"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:385
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:444
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:595
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:653
 msgid "Humid period hour outside protection period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:440
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:649
 msgid "Hours"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:445
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:654
 msgid "Threshold humid period"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:446
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:655
 msgid "Spraying protection period"
 msgstr ""
 
+#~ msgid "&#37; Infected leaves"
+#~ msgstr "&#37; 感染水平"
+
+#~ msgid "Select crop"
+#~ msgstr "选择作物"
+
+#~ msgid "Weather station"
+#~ msgstr "气象站"
+
+#~ msgid "Background data for the barley net blotch model"
+#~ msgstr "大麦网斑病模型的背景数据"
+
+#~ msgid "Crop"
+#~ msgstr "作物"
+
+#~ msgid "Same crop as last season"
+#~ msgstr "与上季同样的作物"
+
+#~ msgid "Plowed"
+#~ msgstr "犁过的"
+
+#~ msgid "Observation date"
+#~ msgstr "观测日期"
+
+#~ msgid "Spraying date"
+#~ msgstr "喷药日期"
+
+#~ msgid "Preparation"
+#~ msgstr "准备"
+
+#~ msgid "Preparation dose"
+#~ msgstr "准备剂量"
+
 #, fuzzy
 #~| msgid "Background data for the barley net blotch model"
 #~ msgid "Background data for the wheat leaf blotch model"
diff --git a/cerealblotchmodels/static/cerealblotchmodels/formdefinitions/barleyNetBlotchForm.json b/cerealblotchmodels/static/cerealblotchmodels/formdefinitions/barleyNetBlotchForm.json
index 683dfbfde3de01a3d118f0daf4de4102f1c0e1bf..0b84b056c8b5ba9ccf3f8e9d9095ffaea118c0f7 100755
--- a/cerealblotchmodels/static/cerealblotchmodels/formdefinitions/barleyNetBlotchForm.json
+++ b/cerealblotchmodels/static/cerealblotchmodels/formdefinitions/barleyNetBlotchForm.json
@@ -16,13 +16,23 @@
         "You should have received a copy of the NIBIO Open Source License ",
         "along with VIPSWeb.  If not, see <http://www.nibio.no/licenses/>. "
     ],
-    "_comment" : "Structure of the observationForm and how to validate it",
+    "_comment" : "Structure of the barleyNetBlotchForm and how to validate it",
     "fields": [
+        {
+            "name" : "latitude",
+            "dataType" : "DOUBLE",
+            "required" : false
+        },
+        {
+            "name" : "longitude",
+            "dataType" : "DOUBLE",
+            "required" : false
+        },
         {
             "name" : "weatherStationId",
             "dataType" : "INTEGER",
             "fieldType" : "SELECT_SINGLE",
-            "required" : true,
+            "required" : false,
             "nullValue" : "-1"
         },
         {
diff --git a/cerealblotchmodels/static/cerealblotchmodels/formdefinitions/septoriaHumidityForm.json b/cerealblotchmodels/static/cerealblotchmodels/formdefinitions/septoriaHumidityForm.json
index 6005dbd07334b626f39a822c20284f1178f8c84d..915954d62d382f9efdaa1bc8fe73ab21c2c74e96 100755
--- a/cerealblotchmodels/static/cerealblotchmodels/formdefinitions/septoriaHumidityForm.json
+++ b/cerealblotchmodels/static/cerealblotchmodels/formdefinitions/septoriaHumidityForm.json
@@ -18,18 +18,28 @@
     ],
     "_comment" : "Structure of the septoriaHumidityForm and how to validate it",
     "fields": [
+        {
+            "name" : "latitude",
+            "dataType" : "DOUBLE",
+            "required" : false
+        },
+        {
+            "name" : "longitude",
+            "dataType" : "DOUBLE",
+            "required" : false
+        },
     	{
             "name" : "organizationId_countryCode",
             "dataType" : "STRING",
             "fieldType" : "SELECT_SINGLE",
-            "required" : true,
+            "required" : false,
             "nullValue" : "None"
         },
         {
             "name" : "weatherStationId",
             "dataType" : "STRING",
             "fieldType" : "SELECT_SINGLE",
-            "required" : true,
+            "required" : false,
             "nullValue" : ""
         },
         {
diff --git a/cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html b/cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html
index feb21cdcfc8c5dc90bdc6fd3fb2582076c8f2d8d..eb50a7b890a3e3d936c8ef19a16011303c8bde4d 100755
--- a/cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html
+++ b/cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html
@@ -23,89 +23,156 @@
 {% endcomment %}
 {% load i18n %}
 {% block title %}{% trans "Barley net blotch" %}{% endblock %}
+
 {% block customCSS %}
 <!--[if lte IE 9]>
   <style type="text/css">#oldIEWarning{display: block !important;}</style>
 <![endif]-->
+<link type="text/css" rel="stylesheet" href="https://logic.testvips.nibio.no/css/3rdparty/leaflet.css" />
+<link type="text/css" rel="stylesheet" href="https://logic.testvips.nibio.no/css/mapModal.css" />
 
+<style>
+	/* Added when integrating map, should perhaps be moved to main css file. */
+	input#latitude, input#longitude {
+		width: 30%;
+		display: inline-block;
+		margin: 10px 10px 10px 0;
+	}
+	select#weatherStationId {
+		width: 60%;
+		display: inline-block;
+		margin: 10px 10px 10px 0;
+	}
+	fieldset {
+		margin-bottom: 30px;
+	}
+	.btn-map {
+		margin-top: 5px;
+		margin-bottom: 20px;
+	}
+	#gridPointInfo {
+		margin: 10px 0;
+	}
+</style>
 {% endblock %}
+
 {% block content %}
 <div class="singleBlockContainer">
-	<h1>{% trans "Barley net blotch" %}</h1>
+	<h1>Byggbrunflekk - Elens modell</h1>
 	<div class="alert alert-danger" role="alert" id="oldIEWarning" style="display:none;">
 		Du bruker en gammel versjon av Internet Explorer. Den nye byggbrunflekkmodellen fungerer med 
 		de fleste moderne nettlesere, som Chrome, Firefox og Internet Explorer versjon 10 og nyere.
 	</div>
 	<form role="form" id="{{ form_id }}">
 		<div class="row">
-			<div class="col-md-12">
-				<h2>{% trans "Background data for the barley net blotch model" %}</h2>
+			<div class="col-md-12 mb-3">
+				<p class="lead">
+				<a href="https://www.vips-landbruk.no/forecasts/models/BARLEYNETB/">Elens modell for byggbrunflekk</a> lager en utviklingskurve for byggbrunflekk med værdata som grunnlag.
+				Du kan velge å kjøre modellen med værdata for et vilkårlig punkt i kartet, eller fra en værstasjon. Det er i tillegg nødvendig å legge inn informasjon om nivået på angrep av sjukdommen, samt 
+				sådato, sort, vekstskifte og jordarbeiding. Dersom du har en <a href="https://www.vips-landbruk.no/information/27/">privat værstasjon</a> som er registrert i VIPS, vil denne være tilgjengelig i skjemaet etter <a href="https://logic.vips.nibio.no/login">innlogging</a>.
+			</p>
 			</div>
 		</div>
 		<div class="row">
 			<div class="col-md-6">
 				<input type="hidden" name="timeZone" value="Europe/Oslo"/>
-				<div class="form-group">
-					<label for="weatherStationId">{% trans "Weather station" %}</label>
-					<select name="weatherStationId" id="weatherStationId" class="form-control" onblur="validateField(this);">
-					</select>
-					<span class="help-block" id="{{ form_id }}_weatherStationId_validation"></span>
-				</div>
-				<div class="form-group">
-					<label for="sowingDate">{% trans "Sowing date" %}</label>
-					<input type="date" name="sowingDate" class="form-control" max="{{max_sowing_date|date:'Y-m-d'}}" onblur="validateField(this);"/>
-					<span class="help-block" id="{{ form_id }}_sowingDate_validation"></span>
-				</div>
-				<div class="form-group">
-					<label for="cropOrganismId">{% trans "Crop" %}</label>
-					<select name="cropOrganismId" id="cropOrganismId" class="form-control" onblur="validateField(this);">
-					</select>
-					<span class="help-block" id="{{ form_id }}_cropOrganismId_validation"></span>
-				</div>
-				<div class="form-group">
-					<input type="checkbox" name="sameCropAsLastSeason"/>
-					<label for="sameCropAsLastSeason">{% trans "Same crop as last season" %}</label><br/>
-					<span class="help-block" id="{{ form_id }}_sameCropAsLastSeason_validation"></span>
-				</div>
-				<div class="form-group">
-					<input type="checkbox" name="plowed"/>
-					<label for="plowed"><span>{% trans "Plowed" %}</span></label><br/>
-					<span class="help-block" id="{{ form_id }}_plowed_validation"></span>
-				</div>
+				<fieldset>
+					<legend>Jeg vil bruke værdata</legend>
+					<div class="form-group">
+						<div class="radio">
+							<label>
+								<input type="radio" name="weatherDataSourceType" id="grid" value="grid" onchange="displayCoordinatesInput()">
+								for et punkt i kartet
+							</label>
+							<div id="input-coordinates">
+								<input type="hidden" class="form-control" name="latitude" id="latitude" placeholder="Breddegrad" aria-label="Breddegrad">
+								<input type="hidden" class="form-control" name="longitude" id="longitude" placeholder="Lengdegrad" aria-label="Lengdegrad">
+								<input type="hidden" class="form-control" name="timezone" id="timezone" placeholder="Tidssone" aria-label="Tidssone">
+								<div id="gridPointInfo"></div>
+								<button type="button" class="btn btn-primary btn-map" onclick="openCoordinatesMap()"><i class="fa fa-map-marker fa-lg"></i>&nbsp;&nbsp;Velg i kart</button>
+							</div>
+							<div id="coordinates-map" class="map-modal"></div>
+						</div>
+						<div class="radio">
+							<label>
+							<input type="radio" name="weatherDataSourceType" id="weatherstation" value="weatherstation" onchange="displayWeatherstationInput()">
+							fra en værstasjon
+							</label>
+							<div id="input-weatherstation" style="display: none;">
+								<select name="weatherStationId" id="weatherStationId" class="form-control">
+									<option value="">Velg værstasjon</option>
+								</select>
+								<button type="button" class="btn btn-primary btn-map" onclick="openPoiMap()"><i class="fa fa-map-marker fa-lg"></i>&nbsp;&nbsp;Velg i kart</button>
+							</div>
+							<div id="poi-map" class="map-modal"></div>
+						</div>
+						<span class="help-block" id="{{ form_id }}_latitude_validation"></span>
+						<span class="help-block" id="{{ form_id }}_longitude_validation"></span>
+						<span class="help-block" id="{{ form_id }}_weatherStationId_validation"></span>
+					</div>
+				</fieldset>
+				<fieldset>
+					<legend>Jeg dyrker</legend>
+					<div class="form-group">
+						<select name="cropOrganismId" id="cropOrganismId" class="form-control" onblur="validateField(this);">
+						</select>
+						<span class="help-block" id="{{ form_id }}_cropOrganismId_validation"></span>
+					</div>
+					<div class="form-group">
+						<label for="sowingDate">{% trans "Sowing date" %}</label>
+						<input type="date" id="sowingDate" name="sowingDate" class="form-control" max="{{max_sowing_date|date:'Y-m-d'}}" onblur="validateField(this);" placeholder="Sådato"/>
+						<span class="help-block" id="{{ form_id }}_sowingDate_validation"></span>
+					</div>
+					<div class="form-group">
+						<label for="sameCropAsLastSeason">Vekstskifte</label><br>
+						<input type="checkbox" id="sameCropAsLastSeason" name="sameCropAsLastSeason"/> Jeg dyrket bygg på samme skifte i fjor<br/>
+						<span class="help-block" id="{{ form_id }}_sameCropAsLastSeason_validation"></span>
+					</div>
+					<div class="form-group">
+						<label for="plowed">Jordarbeiding</label><br>
+						<input type="checkbox" id="plowed" name="plowed"/> Jeg har pløyd<br/>
+						<span class="help-block" id="{{ form_id }}_plowed_validation"></span>
+					</div>
+				</fieldset>
 			</div>
-			<div class="col-md-6 form-group">
-				<div class="form-group">
-					<label for="observationDate">{% trans "Observation date" %}</label>
-					<input type="date" name="observationDate" class="form-control"/>
-					<span class="help-block" id="{{ form_id }}_observationDate_validation"></span>
-				</div>
-				<div class="form-group">
-					<label for ="observationValue">{% trans "&#37; Infected leaves" %}</label>
-					<input type="number" name="observationValue" class="form-control" min="0" max="100"/>
-					<span class="help-block" id="{{ form_id }}_observationValue_validation"></span>
-				</div>
-				<div class="form-group">
-					<label for="sprayingDate">{% trans "Spraying date" %}</label>
-					<input type="date" name="sprayingDate" class="form-control"/>
-					<span class="help-block" id="{{ form_id }}_sprayingDate_validation"></span>
-				</div>
-				<div class="form-group">
-					<label for="preparationId">{% trans "Preparation" %}</label>
-					<select name="preparationId" id="preparationId" class="form-control">
-					</select>
-					<span class="help-block" id="{{ form_id }}_preparationId_validation"></span>
-				</div>
-				<div class="form-group">
-					<label for="preparationDose">{% trans "Preparation dose" %} (ml/daa)</label>
-					<input type="number" name="preparationDose" class="form-control"/>
-					<span class="help-block" id="{{ form_id }}_preparationDose_validation"></span>
-				</div>
-				
+			<div class="col-md-6">
+				<fieldset>
+					<legend>Observasjon</legend>
+					<div class="form-group">
+						<p><i>Legg inn dato og omfang dersom du har observert symptomer</i></p>
+						<input type="date" id="observationDate" name="observationDate" class="form-control"/>
+						<span class="help-block" id="{{ form_id }}_observationDate_validation"></span>
+					</div>
+					<div class="form-group">
+						<label for="observationValue">% blad med symptomer</label>
+						<input type="number" id="observationValue" name="observationValue" class="form-control" min="0" max="100"/>
+						<span class="help-block" id="{{ form_id }}_observationValue_validation"></span>
+					</div>
+				</fieldset>
+				<fieldset>
+					<legend>Sprøyting</legend>
+					<div class="form-group">
+						<p><i>Legg inn dato og detaljer for eventuell siste sprøyting</i></p>
+						<input type="date" id="sprayingDate" name="sprayingDate" class="form-control"/>
+						<span class="help-block" id="{{ form_id }}_sprayingDate_validation"></span>
+					</div>
+					<div class="form-group">
+						<label for="preparationId">med preparat</label>
+						<select name="preparationId" id="preparationId" class="form-control">
+						</select>
+						<span class="help-block" id="{{ form_id }}_preparationId_validation"></span>
+					</div>
+					<div class="form-group">
+						<label for="preparationDose">og preparatdose (ml/daa)</label>
+						<input type="number" id="preparationDose" name="preparationDose" class="form-control"/>
+						<span class="help-block" id="{{ form_id }}_preparationDose_validation"></span>
+					</div>
+				</fieldset>
 			</div>
 		</div>
 		<div class="row">
-			<div class="col-md-6 form-group">
-				<button type="button" class="btn btn-primary" onclick="if(validateForm(document.getElementById('{{ form_id }}')) & validateFormExtra()){runModel();}">{% trans "Run model" %}</button>
+			<div class="col-md-12 form-group">
+				<button type="button" class="btn btn-primary pull-right" onclick="if(validateForm(document.getElementById('{{ form_id }}')) & validateFormExtra()){storeUserSettings();runModel();}">{% trans "Run model" %}</button>
 			</div>
 		</div>
 		
@@ -141,11 +208,167 @@
 <script type="text/javascript" src="{% static "js/validateForm.js" %}"></script>
 <script type="text/javascript" src="{% static "organisms/organismsUtil.js" %}"></script>
 <script type="text/javascript" src="{% static "forecasts/js/forecasts.js" %}"></script>
-<script type="text/javascript">
+<script type="module">
+	import MapModal from 'https://logic.testvips.nibio.no/js/mapModal.js';
+	//import MapModal from settings.vipslogicProtocol + "://" + settings.vipslogicServerName + "/js/mapModal.js"
+
+	const theForm = document.getElementById("{{ form_id }}");
+	const inputLatitudeElement = document.getElementById("latitude");
+	const inputLongitudeElement = document.getElementById("longitude");
+	const radioGrid = document.getElementById("grid")
+	const radioWeatherstation = document.getElementById("weatherstation")
+	const selectWeatherstationElement = document.getElementById("weatherStationId");
+	let poiIdList = []
+
+	let selectedPoint = null;
+	let selectedFeature = undefined;
+
+	const formFields = [
+		"weatherDataSourceType",
+		"latitude",
+		"longitude",
+		"timezone",
+		"weatherStationId",
+		"cropOrganismId",
+		"sowingDate",
+		"sameCropAsLastSeason",
+		"plowed",
+		"observationDate",
+		"observationValue",
+		"sprayingDate",
+		"preparationId",
+		"preparationDose"
+		];
+
+	function getSelectedPoiId() {
+		const value = selectWeatherstationElement.value;
+		const parsedValue = parseInt(value, 10);
+		return (!isNaN(parsedValue) && parsedValue > 0) ? parsedValue : undefined;
+	}
+
+	function selectCoordinates(coordinatesData) {
+		const selectedLatitude = coordinatesData ? coordinatesData.latitude : undefined;
+		const selectedLongitude = coordinatesData ? coordinatesData.longitude : undefined;
+
+		if(selectedLatitude && selectedLongitude) {
+			inputLatitudeElement.value = selectedLatitude;
+			inputLongitudeElement.value = selectedLongitude;
+			getTimezoneForPoint(selectedLatitude, selectedLongitude);
+		}
+	}
+
+	function selectPoi(poiData) {
+		const selectedId = poiData ? poiData.pointOfInterestId : undefined;
+		if (selectedId) {
+			const optionIndex = Array.from(selectWeatherstationElement.options).findIndex(option => option.value == selectedId);
+			if (optionIndex !== -1) {
+				selectWeatherstationElement.selectedIndex = optionIndex;
+			} 
+		} 
+	}
+
+	window.openCoordinatesMap = () => {
+		if (inputLatitudeElement.value && inputLongitudeElement.value) {
+			selectedPoint = -1;
+			selectedFeature = { 
+				"type": "FeatureCollection", "features": [
+					{
+						"type": "Feature",
+						"geometry": {
+							"type": "Point",
+							"coordinates": [parseFloat(inputLongitudeElement.value), parseFloat(inputLatitudeElement.value)]
+						},
+						"properties": {
+							"pointOfInterestId": selectedPoint,
+						}
+					}]
+			};
+		} else {
+			selectedPoint = undefined;
+			selectedFeature = undefined;
+		}
+
+		const isPoiMap = false; // Map should enable selection of coordinates (not pois)
+        const allowNewPoints = true; // User should be able to select new coordinates
+        const coordinatesMapInstance = new MapModal('coordinates-map', selectedFeature, settings.currentLanguage, isPoiMap, allowNewPoints, selectCoordinates);
+		coordinatesMapInstance.openModal(selectedPoint);
+	}
+
+	window.openPoiMap = () => {
+		fetch(settings.vipslogicProtocol + "://" + settings.vipslogicServerName + "/rest/poi/geojson", {
+                method: 'POST',
+                headers: {
+                    'Content-Type': 'application/json',
+                    'Accept': 'application/json'
+                },
+                body: JSON.stringify(poiIdList)
+            })
+            .then(response => response.json())
+            .then(geoJson => {
+				const isPoiMap = true; // Map should enable selection of pois
+		        const allowNewPoints = false; // User should not be able to create new pois
+				const poiMapInstance = new MapModal('poi-map', geoJson, settings.currentLanguage, isPoiMap, allowNewPoints, selectPoi);
+                const selectedPoiId = getSelectedPoiId();
+                poiMapInstance.openModal(selectedPoiId);
+            })
+            .catch(error => {
+                console.error('Unable to retrieve weatherstation geojson', error);
+            });
+	}
+
+	window.displayWeatherstationInput = () => {
+		radioWeatherstation.checked = true;
+		document.getElementById('input-weatherstation').style.display="block";
+		document.getElementById('input-coordinates').style.display="none";
+	}
+
+	window.displayCoordinatesInput = () => {
+		radioGrid.checked = true;
+		document.getElementById('input-weatherstation').style.display="none";
+		document.getElementById('input-coordinates').style.display="block";
+		getTimezoneForSelectedPoint()
+	}
+
+	const getTimezoneForPoint = (latitude, longitude) => {
+		getLocationInformation(latitude, longitude).then(locationInfo => {
+			theForm["timezone"].value = locationInfo.timezone;
+			document.getElementById("gridPointInfo").innerHTML = `<b>Sted</b> ${locationInfo.location}<br>
+																	<b>Breddegrad</b> ${locationInfo.latitude}<br>	
+																	<b>Lengdegrad</b> ${locationInfo.longitude}<br>
+																	<b>Tidssone</b> ${locationInfo.timezone}`
+		});
+	}
+
+	const getTimezoneForSelectedPoint = () => {
+		const lat = theForm["latitude"].value;
+		const lon = theForm["longitude"].value;
+		if(lat && lon) {
+			getTimezoneForPoint(lat, lon)
+		} else {
+			console.info("Latitude and longitude not set in form, cannot get timezone information")
+		}
+	}
+
+	window.validateFormExtra = () => {
+		// Location: Either weatherStationId or latitude/longitude must be set
+		const selectedWeatherdataType = theForm.querySelector('input[name="weatherDataSourceType"]:checked').value;
+		if( selectedWeatherdataType === "grid") {
+			const trimmedLat = theForm["latitude"].value.trim()
+			const trimmedLon = theForm["longitude"].value.trim()
+			if(trimmedLat === "" || trimmedLon === "" || isNaN(Number(trimmedLat)) || isNaN(Number(trimmedLon))) {
+				alert("Mangler gyldig punkt");
+				return false;
+			}
+		} else if (selectedWeatherdataType === "weatherstation") {
+			if(theForm["weatherStationId"].options[theForm["weatherStationId"].selectedIndex].value == "-1") {
+				alert("Mangler værstasjon")
+				return false;
+			}
+		} else {
+			alert("Mangler type værdatakilde")
+			return false;
+		}
 
-	function validateFormExtra()
-	{
-		var theForm = document.getElementById("{{ form_id }}");
 		// Observation: Either no fields or all fields must be set
 		if(theForm["observationDate"].value.trim() == "" ^  theForm["observationValue"].value.trim() == "")
 		{
@@ -164,11 +387,36 @@
 		return true;
 	}
 
-	
+	window.storeUserSettings = () => {
+		var settingsDict = {}
+		for(var i in formFields) {
+			const inputElement = theForm[formFields[i]];
+			const key = "{{ form_id }}" + "." + formFields[i];
+			// Need to add the formId as namespace to avoid confusion in Local Storage
+			if(inputElement.type === "checkbox") {
+				settingsDict[key] = inputElement.checked
+			} else {
+				settingsDict[key] = inputElement.value;
+			}
+		}
+		storeLocalSettings(settingsDict);
+	};
 
-	var VIPSOrganizationId = {{vips_organization_id}};
-	function runModel()
-	{
+	window.renderUserSettings = (userSettings) => {
+		for(const key in userSettings){
+			const fieldName = key.substring("{{form_id}}.".length);
+			const inputElement = theForm[fieldName];
+			const theValue = userSettings[key];
+			if (inputElement.type && inputElement.type === "checkbox") {
+				inputElement.checked = theValue === "true" || theValue === true;
+			} else {
+				inputElement.value = theValue;
+			}
+		}
+	};
+
+	const VIPSOrganizationId = {{vips_organization_id}};
+	window.runModel = () => {
 		document.getElementById("results").style.display="none";
 		document.getElementById("errorMessageContainer").style.display="none";
 		document.getElementById("runningModelMessage").style.display="block";
@@ -270,9 +518,8 @@
 	};
 	
 	
-	function initWeatherStations(){
-		// Fetching information asynchronously from server 
-	    var request = $.ajax({
+	async function initWeatherStations(){
+		return $.ajax({
 	        type:"GET",
 	        url: settings.vipslogicProtocol + "://" + settings.vipslogicServerName + "/rest/poi/organization/" + VIPSOrganizationId,
 	        statusCode:{
@@ -283,6 +530,7 @@
 	            	for(var i in data)
 	            	{
 	            		var ws = data[i];
+						poiIdList.push(ws["pointOfInterestId"]);
 	            		wsHTML.push("<option value=\"" + ws["pointOfInterestId"] + "\">" + ws["name"] + "</option>");
 	            	}
 	            	document.getElementById("weatherStationId").innerHTML = wsHTML.join("");
@@ -297,14 +545,13 @@
 	
 	function initCrops()
     {
-     	// Fetching information asynchronously from server 
-	    var request = $.ajax({
+	    return $.ajax({
 	        type:"GET",
 	        url: settings.vipslogicProtocol + "://" + settings.vipslogicServerName + "/rest/barleynetblotchmodel/barleyvarieties/" + VIPSOrganizationId,
 	        statusCode:{
 	            200: function(data,textStatus, jqXHR){
 	            	// Building result HTML
-	            	var cropHTML=["<option value=\"-1\">-- {% trans "Select crop" %} --</option>"];
+	            	var cropHTML=["<option value=\"-1\">-- Velg sort --</option>"];
 	            	data.sort(compareOrganisms);
 	            	for(var i in data)
 	            	{
@@ -325,8 +572,7 @@
     
     function initPreparations()
     {
-    	// Fetching information asynchronously from server 
-	    var request = $.ajax({
+	    return $.ajax({
 	        type:"GET",
 	        url: settings.vipslogicProtocol + "://" + settings.vipslogicServerName + "/rest/barleynetblotchmodel/preparations/" + VIPSOrganizationId,
 	        statusCode:{
@@ -357,17 +603,34 @@
         document.getElementById("errorMessage").innerHTML = "<h1>Error</h1><pre>" + message + "</pre>";
         document.getElementById("errorMessageContainer").style.display="block";
     };
-    
+
     $(document).ready(function() {
     	if(settings.userIsIE)
 		{
 			alert("{% trans "WARNING: We suspect you are using Internet Explorer to view this site. VIPS is not designed to work with Internet Explorer, you may experience errors and missing features. Please use a different browser, like Microsoft Edge or Google Chrome." %}");
 		}
-		initWeatherStations();
-		initCrops();
-		initPreparations();
-		// Init form validation
-		loadFormDefinition("{{ form_id }}","/static/cerealblotchmodels/formdefinitions/");
+
+		// Make sure all promises have returned before continuing
+		Promise.all([initWeatherStations(), initCrops(), initPreparations()]).then(function() {
+			loadFormDefinition("{{ form_id }}","/static/cerealblotchmodels/formdefinitions/");
+
+			var userSettings = getLocalSettings(getNameSpaced("{{ form_id }}",formFields), false);
+			if(!isDictEmpty(userSettings)) {
+				renderUserSettings(userSettings);
+				if(theForm["weatherDataSourceType"].value == "grid") {
+					displayCoordinatesInput();
+				} else if(theForm["weatherDataSourceType"].value == "weatherstation") {
+					displayWeatherstationInput();
+				} else {
+					displayCoordinatesInput();
+				}
+			} else {
+				displayCoordinatesInput();
+			}
+		}).catch(function(error) {
+        	console.error("Error initializing data:", error);
+    	});
 	});
 </script>
-{% endblock %}
\ No newline at end of file
+
+{% endblock %}
diff --git a/cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html b/cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html
index 65632da22e6ec598c51675b410e280c45bef4cba..0645aacb254323cfefd3b29ae22f502492e55267 100644
--- a/cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html
+++ b/cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html
@@ -23,32 +23,82 @@
 {% endcomment %}
 {% load i18n %}
 {% block title %}{% trans "Septoria humidity model" %}{% endblock %}
+
+{% block customCSS %}
+<link type="text/css" rel="stylesheet" href="https://logic.testvips.nibio.no/css/3rdparty/leaflet.css" />
+<link type="text/css" rel="stylesheet" href="https://logic.testvips.nibio.no/css/mapModal.css" />
+
+<style>
+	/* Added when integrating map, should perhaps be moved to main css file. */
+	input#latitude, input#longitude {
+		margin: 10px 10px 10px 0;
+	}
+	select#organizationId_countryCode, select#weatherStationId {
+		margin: 5px;
+	}
+	.main-label {
+		font-size: 1.8rem;
+		font-weight: 500 !important;
+	}
+	.space {
+		margin-top: 40px;
+	}
+	.radio {
+		margin-top: 0;
+		margin-bottom: 20px;
+	}
+	#gridPointInfo {
+		margin: 10px 0;
+	}
+</style>
+{% endblock %}
+
 {% block content %}
 <div class="singleBlockContainer">
 	<h1>{% trans "Septoria humidity model" %}</h1>
-	<p>{% trans "Fuktmodellen er et beslutningsstøtteverktøy, utviklet av <a href='https://www.seges.dk/'>SEGES</a>, Danmark, for å kunne vurdere risiko for angrep av hvetebladprikk i høsthvete under danske forhold. <a href='/forecasts/models/SEPTORIAHU/' target='new'>Les mer</a>, og se <a href='https://vimeo.com/818734601' target='new'>informasjonsvideo</a>" %}</p>
+	<p class="lead">{% trans "Fuktmodellen er et beslutningsstøtteverktøy, utviklet av <a href='https://www.seges.dk/'>SEGES</a>, Danmark, for å kunne vurdere risiko for angrep av hvetebladprikk i høsthvete under danske forhold. <a href='/forecasts/models/SEPTORIAHU/' target='new'>Les mer</a>, og se <a href='https://vimeo.com/818734601' target='new'>informasjonsvideo</a>" %}</p>
 	<form role="form" id="{{ form_id }}">
-	<div class="row">
-		<div class="col-md-12">
-			<h2>{% trans "Background data" %}</h2>
-		</div>
-	</div>
 	<div class="row">
 		<div class="col-md-3">
-			<div class="form-group">
-				<label for="organizationId_countryCode">{% trans "Country" %}</label>
-				<select name="organizationId_countryCode" id="organizationId_countryCode" class="form-control" onchange="updateWeatherDataSources(this.options[this.options.selectedIndex].value);">
-				<option value="None">{% trans "Please select" %}</option>
-				</select>
-				<span class="help-block" id="{{ form_id }}_organizationId_countryCode_validation"></span>
-			</div>
-			<div class="form-group">
-				<label for="weatherStationId">{% trans "Weather station" %}</label>
-				<select name="weatherStationId" id="weatherStationId" class="form-control">
-				<option value="">{% trans "Please select" %}</option>
-				</select>
-				<span class="help-block" id="{{ form_id }}_weatherStationId_validation"></span>
-			</div>
+			<fieldset>
+				<legend>Værdata</legend>
+				<div class="form-group">
+					<div class="radio">
+						<label>
+							<input type="radio" name="weatherDataSourceType" id="grid" value="grid" onchange="displayCoordinatesInput()">
+							for et punkt i kartet
+						</label>
+						<div id="input-coordinates">
+							<input type="hidden" class="form-control" name="latitude" id="latitude" placeholder="Breddegrad" aria-label="Breddegrad">
+							<input type="hidden" class="form-control" name="longitude" id="longitude" placeholder="Lengdegrad" aria-label="Lengdegrad">
+							<input type="hidden" class="form-control" name="timezone" id="timezone" placeholder="Tidssone" aria-label="Tidssone">
+							<div id="gridPointInfo"></div>
+							<button type="button" class="btn btn-primary" onclick="openCoordinatesMap()"><i class="fa fa-map-marker fa-lg"></i>&nbsp;&nbsp;Velg i kart</button>
+						</div>
+						<div id="coordinates-map" class="map-modal"></div>
+					</div>
+					<div class="radio">
+						<label>
+						<input type="radio" name="weatherDataSourceType" id="weatherstation" value="weatherstation" onchange="displayWeatherstationInput()">
+						fra en værstasjon
+						</label>
+						<div id="input-weatherstation" style="display: none;">
+							<select name="organizationId_countryCode" id="organizationId_countryCode" class="form-control" onchange="updateWeatherDataSources(this.options[this.options.selectedIndex].value);">
+								<option value="None">Velg land</option>
+							</select>
+							<select name="weatherStationId" id="weatherStationId" class="form-control" disabled>
+								<option value="">Velg værstasjon</option>
+							</select>
+							<button disabled type="button" id="poi-map-button" class="btn btn-primary" onclick="openPoiMap()"><i class="fa fa-map-marker fa-lg"></i>&nbsp;&nbsp;Velg i kart</button>
+						</div>
+						<div id="poi-map" class="map-modal"></div>
+					</div>
+					<span class="help-block" id="{{ form_id }}_organizationId_countryCode_validation"></span>
+					<span class="help-block" id="{{ form_id }}_weatherStationId_validation"></span>
+					<span class="help-block" id="{{ form_id }}_latitude_validation"></span>
+					<span class="help-block" id="{{ form_id }}_longitude_validation"></span>
+				</div>
+			</fieldset>
 			<fieldset>
 				<legend>{% trans "Sprayings" %}</legend>
 				<div class="form-group">
@@ -62,8 +112,6 @@
 					<span class="help-block" id="{{ form_id }}_dateSpraying2_validation"></span>
 				</div>
 			</fieldset>
-			
-			
 		</div>
 		<div class="col-md-3">
 			<fieldset>
@@ -94,7 +142,9 @@
 					<span class="help-block" id="{{ form_id }}_dateGs75_validation"></span>
 				</div>
 			</fieldset>
-			{% trans "Show advanced settings" %} <input type="checkbox" onclick="toggleAdvancedColumns(this);" autocomplete="off"/>
+			<div class="pull-right">
+				{% trans "Show advanced settings" %} <input type="checkbox" onclick="toggleAdvancedColumns(this);" autocomplete="off"/>
+			</div>
 		</div>
 		<div class="col-md-3">
 			
@@ -149,8 +199,8 @@
 		</div>
 	</div>
 	<div class="row">
-		<div class="col-md-12 form-group">
-			<button type="button" class="btn btn-primary" onclick="if(validateForm(document.getElementById('{{ form_id }}'))){storeUserSettings();runModel();}">{% trans "Run model" %}</button>
+		<div class="col-md-6 form-group">
+			<button type="button" class="btn btn-primary pull-right" onclick="if(validateForm(document.getElementById('{{ form_id }}')) & validateFormExtra()){storeUserSettings();runModel();}">{% trans "Run model" %}</button>
 		</div>
 	</div>
 	</form>
@@ -179,11 +229,139 @@
 <script type="text/javascript" src="{% static "js/util.js" %}"></script>
 <script type="text/javascript" src="{% static "js/validateForm.js" %}"></script>
 <script type="text/javascript" src="{% static "forecasts/js/forecasts.js" %}"></script>
-<script type="text/javascript">
+<script type="module">
+	import MapModal from 'https://logic.testvips.nibio.no/js/mapModal.js';
+	//import MapModal from settings.vipslogicProtocol + "://" + settings.vipslogicServerName + "/js/mapModal.js"
+
+	const theForm = document.getElementById("{{ form_id }}");
+	const inputLatitudeElement = document.getElementById("latitude");
+	const inputLongitudeElement = document.getElementById("longitude");
+	const selectWeatherstationElement = document.getElementById("weatherStationId");
+	const openPoiMapButton = document.getElementById("poi-map-button");
+
+	let poiIdList = []
+
+	let selectedPoint = null;
+	let selectedFeature = undefined;
+
+	function getSelectedPoiId() {
+		const value = selectWeatherstationElement.value;
+		const parsedValue = parseInt(value, 10);
+		return (!isNaN(parsedValue) && parsedValue > 0) ? parsedValue : undefined;
+	}
+
+	function selectCoordinates(coordinatesData) {
+		const selectedLatitude = coordinatesData ? coordinatesData.latitude : undefined;
+		const selectedLongitude = coordinatesData ? coordinatesData.longitude : undefined;
+
+		if(selectedLatitude && selectedLongitude) {
+			inputLatitudeElement.value = selectedLatitude;
+			inputLongitudeElement.value = selectedLongitude;
+			getTimezoneForPoint(selectedLatitude, selectedLongitude);
+		}
+	}
+
+	function selectPoi(poiData) {
+		const selectedId = poiData ? poiData.pointOfInterestId : undefined;
+		if (selectedId) {
+			const optionIndex = Array.from(selectWeatherstationElement.options).findIndex(option => option.value == selectedId);
+			if (optionIndex !== -1) {
+				selectWeatherstationElement.selectedIndex = optionIndex;
+			} 
+		} 
+	}
+
+	window.openCoordinatesMap = () => {
+		if (inputLatitudeElement.value && inputLongitudeElement.value) {
+			console.info(`Open map for lat=${parseFloat(inputLatitudeElement.value)} lon=${parseFloat(inputLatitudeElement.value)}`)
+			selectedPoint = -1;
+			selectedFeature = { 
+				"type": "FeatureCollection", "features": [
+					{
+						"type": "Feature",
+						"geometry": {
+							"type": "Point",
+							"coordinates": [parseFloat(inputLongitudeElement.value), parseFloat(inputLatitudeElement.value)]
+						},
+						"properties": {
+							"pointOfInterestId": selectedPoint,
+						}
+					}]
+			};
+		} else {
+			selectedPoint = undefined;
+			selectedFeature = undefined;
+		}
+
+		const isPoiMap = false; // Map should enable selection of coordinates (not pois)
+        const allowNewPoints = true; // User should be able to select new coordinates
+        const coordinatesMapInstance = new MapModal('coordinates-map', selectedFeature, settings.currentLanguage, isPoiMap, allowNewPoints, selectCoordinates);
+		coordinatesMapInstance.openModal(selectedPoint);
+	}
+
+	window.openPoiMap = () => {
+		fetch(settings.vipslogicProtocol + "://" + settings.vipslogicServerName + "/rest/poi/geojson", {
+                method: 'POST',
+                headers: {
+                    'Content-Type': 'application/json',
+                    'Accept': 'application/json'
+                },
+                body: JSON.stringify(poiIdList)
+            })
+            .then(response => response.json())
+            .then(geoJson => {
+				const isPoiMap = true; // Map should enable selection of pois
+		        const allowNewPoints = false; // User should not be able to create new pois
+				const poiMapInstance = new MapModal('poi-map', geoJson, settings.currentLanguage, isPoiMap, allowNewPoints, selectPoi);
+                const selectedPoiId = getSelectedPoiId();
+                poiMapInstance.openModal(selectedPoiId);
+            })
+            .catch(error => {
+                console.error('Unable to retrieve weatherstation geojson', error);
+            });
+	}
+
+	window.displayWeatherstationInput = () => {
+		document.getElementById("weatherstation").checked = true;
+		document.getElementById('input-weatherstation').style.display="block";
+		document.getElementById('input-coordinates').style.display="none";
+	}
+
+	window.displayCoordinatesInput = (id) => {
+		document.getElementById("grid").checked = true;
+		document.getElementById('input-weatherstation').style.display="none";
+		document.getElementById('input-coordinates').style.display="block";
+		getTimezoneForSelectedPoint()
+	}
+
+	const getTimezoneForPoint = (latitude, longitude) => {
+		getLocationInformation(latitude, longitude).then(locationInfo => {
+			theForm["timezone"].value = locationInfo.timezone;
+			document.getElementById("gridPointInfo").innerHTML = `<b>Sted</b> ${locationInfo.location}<br>
+																	<b>Breddegrad</b> ${locationInfo.latitude}<br>	
+																	<b>Lengdegrad</b> ${locationInfo.longitude}<br>
+																	<b>Tidssone</b> ${locationInfo.timezone}`
+		});
+	}
+
+	const getTimezoneForSelectedPoint = () => {
+		const lat = theForm["latitude"].value;
+		const lon = theForm["longitude"].value;
+		if(lat && lon) {
+			getTimezoneForPoint(lat, lon)
+		} else {
+			console.info("Latitude and longitude not set in form, cannot get timezone information")
+		}
+	}
+
 	var danishPostCodesUTM;
 	var organizations;
 	var allowedCountryCodes = ["NO","DK","SE","FI","LT"];
 	var formFields = [
+		"weatherDataSourceType",
+		"latitude",
+		"longitude",
+		"timezone",
 		"organizationId_countryCode",
 		"weatherStationId",
 		"dateSpraying1",
@@ -217,18 +395,46 @@
 				var userSettings = getLocalSettings(getNameSpaced("{{ form_id }}",formFields), false);
 				if(!isDictEmpty(userSettings)) {
 					renderUserSettings(userSettings);
+					if(theForm["weatherDataSourceType"].value == "grid") {
+						displayCoordinatesInput();
+					} else if(theForm["weatherDataSourceType"].value == "weatherstation") {
+						displayWeatherstationInput();
+					} else {
+						displayCoordinatesInput();
+					}
 				}
 				else
 				{
+					displayCoordinatesInput();
 					updateGSDates();
 				}
 			});
-			
 		});
-		
-		
 	});
-	
+
+	window.validateFormExtra = () => {
+		// Location: Either weatherStationId or latitude/longitude must be set
+		const selectedWeatherdataType = theForm.querySelector('input[name="weatherDataSourceType"]:checked').value;
+		if( selectedWeatherdataType === "grid") {
+			const trimmedLat = theForm["latitude"].value.trim()
+			const trimmedLon = theForm["longitude"].value.trim()
+			if(trimmedLat === "" || trimmedLon === "" || isNaN(Number(trimmedLat)) || isNaN(Number(trimmedLon))) {
+				alert("Mangler gyldig punkt");
+				return false;
+			}
+		} 
+		else if (selectedWeatherdataType === "weatherstation") {
+			if(theForm["weatherStationId"].options[theForm["weatherStationId"].selectedIndex].value == "-1") {
+				alert("Mangler værstasjon");
+				return false;
+			}
+		} else {
+			alert("Mangler type værdatakilde")
+			return false;
+		}
+		return true;
+	}
+
 	var initDanishPostCodesUTM = function(callback){
 		$.ajax({
 	        type:"GET",
@@ -279,13 +485,13 @@
 	        }
 	     });
 	};
-	
-	var updateWeatherDataSources = function(organizationId_countryCode){
-		var selectList = document.getElementById("weatherStationId");
-		selectList.options.length = 1; // Erase all former options
+
+	window.updateWeatherDataSources = (organizationId_countryCode) => {
+		selectWeatherstationElement.options.length = 1; // Erase all former options
 		
-		if(organizationId_countryCode === "None")
-		{
+		if(organizationId_countryCode === "None"){
+			selectWeatherstationElement.disabled = true;
+			openPoiMapButton.disabled = true;
 			return;
 		}
 		
@@ -301,12 +507,13 @@
 				var city = postCodeEl.getElementsByTagName("CityName")[0].firstChild.nodeValue;
 				var opt = new Option(city,UTM32v);
 				//console.info(opt);
-				selectList.options[selectList.options.length] = opt;
+				selectWeatherstationElement.options[selectWeatherstationElement.options.length] = opt;
 			}
-			renderUserSetting(selectList);
+			renderUserSetting(selectWeatherstationElement);
 		}
 		else
 		{
+			poiIdList = []
 			$.ajax({
 		        type:"GET",
 		        url: settings.vipslogicProtocol + "://" + settings.vipslogicServerName + "/rest/poi/organization/" + organizationId,
@@ -318,6 +525,7 @@
 		            	for(var i in data)
 		            	{
 		            		var ws = data[i];
+							poiIdList.push(ws["pointOfInterestId"]);
 		            		wsHTML.push("<option value=\"" + ws["pointOfInterestId"] + "\">" + ws["name"] + "</option>");
 		            	}
 		            	var wsSelect = document.getElementById("weatherStationId");
@@ -331,9 +539,11 @@
 		        }
 		     });
 		}
+		selectWeatherstationElement.disabled = false;
+		openPoiMapButton.disabled = false;
 	};
 	
-	var updateGSDates = function(){
+	window.updateGSDates = () => {
 		var dateGs31 							= document.getElementById("dateGs31");
 		var date3rdUpperLeafEmergingdateGs31 	= document.getElementById("date3rdUpperLeafEmerging");
 		var date2ndUpperLeafEmerging 			= document.getElementById("date2ndUpperLeafEmerging");
@@ -353,7 +563,7 @@
 		dateGs75.value = currentDate.format("YYYY-MM-DD");
 	}
 	
-	var runModel = function(){
+	window.runModel = () => {
 		document.getElementById("chartContainer").style.display="none"; // Hide chart
 		document.getElementById("warningStatusInterpretation").style.display="none";
 		// Insert please wait message
@@ -385,8 +595,7 @@
 			"SEPTORIAHU.HPHPP" : "{% trans "Humid period hour outside protection period" %}"
 		};
 	
-	var renderResults = function(data,textStatus, jqXHR)
-	{
+	window.renderResults = (data,textStatus, jqXHR) => {
 		data.sort(compareForecastResults).reverse();
 		// First attempt: A table!
 		var headingLine = "<tr><td style=\"font-weight: bold;\">{% trans "Time" %}</td>";
@@ -449,11 +658,12 @@
         renderForecastChart("chartContainer", "{% trans "Septoria humidity model" %}", warningStatusPlotBandData, data);
 	}
 	
-	var handleAjaxError = function(jqXHR,textStatus,errorThrown){
+	window.handleAjaxError = (jqXHR,textStatus,errorThrown) => {
+		document.getElementById("resultsTable").innerHTML=""
 		alert(textStatus);
 	};
 	
-	var renderUserSettings = function(userSettings){
+	window.renderUserSettings = (userSettings) => {
 		// Strip namespace from form field
 		var theForm = document.getElementById('{{ form_id }}');
 		for(var i in userSettings){
@@ -464,7 +674,7 @@
 		}
 	};
 	
-	var renderUserSetting = function(formField)
+	window.renderUserSetting = (formField) =>
 	{
 		var localStorageKey = "{{form_id}}." + formField.name;
 		
@@ -475,16 +685,7 @@
 		}
 	}
 	
-	var getNameSpaced = function(nameSpace, anArray){
-		var retVal = [];
-		for(var i = 0; i<anArray.length;i++)
-		{
-			retVal.push(nameSpace + "." + anArray[i]);
-		}
-		return retVal;
-	};
-	
-	var storeUserSettings = function(){
+	window.storeUserSettings = () => {
 		var theForm = document.getElementById('{{ form_id }}');
 		var settingsDict = {}
 		for(var i in formFields)
@@ -495,7 +696,7 @@
 		storeLocalSettings(settingsDict);
 	};
 	
-	var toggleAdvancedColumns = function(theCheckBox){
+	window.toggleAdvancedColumns = (theCheckBox) => {
 		var col1 = document.getElementById("septoriaHumidityAdvancedColumn1");
 		var col2 = document.getElementById("septoriaHumidityAdvancedColumn2");
 		col1.style.visibility = theCheckBox.checked ? "visible" : "hidden";
diff --git a/cydiapomonella/locale/bg/LC_MESSAGES/django.po b/cydiapomonella/locale/bg/LC_MESSAGES/django.po
index 079deba3686c705dd73db27dfb633e819d64e5e6..26d8afe36826b742d513a907eeb537d6e389965b 100644
--- a/cydiapomonella/locale/bg/LC_MESSAGES/django.po
+++ b/cydiapomonella/locale/bg/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 14:48+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,75 +18,148 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index.html:22
+#: cydiapomonella/templates/cydiapomonella/index_old.html:29
 msgid "Cydia pomonella"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:713
-msgid ""
-"Loading weather data !! If it takes forever, please contact the VIPS team."
+#: cydiapomonella/templates/cydiapomonella/index.html:141
+msgid "Location name"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:142
+msgid "Latitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:143
+msgid "Longitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:144
+msgid "Timezone"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index.html:225
+#: cydiapomonella/templates/cydiapomonella/index_old.html:718
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid ""
+"Check night temps and rainfall for weather stations and locations in regions "
+"with coddling moth."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid "Read more"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:227
+msgid ""
+"If all criteria for oviposition are met, calculate heat sum from start date "
+"below."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:234
+#: cydiapomonella/templates/cydiapomonella/index_old.html:727
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index.html:240
+msgid "I want to use weather data"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:244
+msgid "for a specific location (coordinates)"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:251
+#: cydiapomonella/templates/cydiapomonella/index.html:264
+msgid "Select in map"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:258
+msgid "from a weather station"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:262
+#: cydiapomonella/templates/cydiapomonella/index_old.html:733
 msgid "Select weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:765
-#: cydiapomonella/templates/cydiapomonella/index.html:768
-#: cydiapomonella/templates/cydiapomonella/index.html:771
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index.html:276
+msgid "I want to get night temperatures and rainfall back in time:"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:278
+#: cydiapomonella/templates/cydiapomonella/index.html:281
+#: cydiapomonella/templates/cydiapomonella/index.html:284
+#: cydiapomonella/templates/cydiapomonella/index_old.html:765
+#: cydiapomonella/templates/cydiapomonella/index_old.html:768
+#: cydiapomonella/templates/cydiapomonella/index_old.html:771
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "days"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index.html:292
+msgid "Please wait..."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:301
+#: cydiapomonella/templates/cydiapomonella/index_old.html:782
 msgid "Date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:783
-#: cydiapomonella/templates/cydiapomonella/index.html:784
-#: cydiapomonella/templates/cydiapomonella/index.html:785
-#: cydiapomonella/templates/cydiapomonella/index.html:786
-#: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index.html:302
+#: cydiapomonella/templates/cydiapomonella/index.html:303
+#: cydiapomonella/templates/cydiapomonella/index.html:304
+#: cydiapomonella/templates/cydiapomonella/index.html:305
+#: cydiapomonella/templates/cydiapomonella/index.html:306
+#: cydiapomonella/templates/cydiapomonella/index_old.html:783
+#: cydiapomonella/templates/cydiapomonella/index_old.html:784
+#: cydiapomonella/templates/cydiapomonella/index_old.html:785
+#: cydiapomonella/templates/cydiapomonella/index_old.html:786
+#: cydiapomonella/templates/cydiapomonella/index_old.html:787
 msgid "Temp at"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index.html:307
+#: cydiapomonella/templates/cydiapomonella/index_old.html:788
 msgid "Daily rainfall"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index.html:319
+#: cydiapomonella/templates/cydiapomonella/index_old.html:803
 msgid "Heat sum"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index.html:322
+#: cydiapomonella/templates/cydiapomonella/index_old.html:807
 msgid "Calculate heat sum from date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:713
+msgid ""
+"Loading weather data !! If it takes forever, please contact the VIPS team."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid ""
 "Heat sum, with a base temperature of 10 degrees Celcius, calculated for "
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "weather station for the period starting with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "and ending with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "is"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "day degrees"
 msgstr ""
diff --git a/cydiapomonella/locale/bg/LC_MESSAGES/djangojs.po b/cydiapomonella/locale/bg/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000000000000000000000000000000000..e8f72bd8c31d67028cc18e99d79fd6097f1813be
--- /dev/null
+++ b/cydiapomonella/locale/bg/LC_MESSAGES/djangojs.po
@@ -0,0 +1,56 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-10-31 10:23+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: cydiapomonella/static/js/cydiapomonella.js:222
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "calculated for"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "weatherstation"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "selected coordinates"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "for the period starting with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "and ending with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:227
+msgid "days"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "is"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "day degrees"
+msgstr ""
diff --git a/cydiapomonella/locale/bs/LC_MESSAGES/django.po b/cydiapomonella/locale/bs/LC_MESSAGES/django.po
index 562f3be3ddf15214422a4027c412f5c7794912c3..807177a933f34c5a91573cff70a8c282a0b65735 100644
--- a/cydiapomonella/locale/bs/LC_MESSAGES/django.po
+++ b/cydiapomonella/locale/bs/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 14:48+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -19,75 +19,148 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index.html:22
+#: cydiapomonella/templates/cydiapomonella/index_old.html:29
 msgid "Cydia pomonella"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:713
-msgid ""
-"Loading weather data !! If it takes forever, please contact the VIPS team."
+#: cydiapomonella/templates/cydiapomonella/index.html:141
+msgid "Location name"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:142
+msgid "Latitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:143
+msgid "Longitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:144
+msgid "Timezone"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index.html:225
+#: cydiapomonella/templates/cydiapomonella/index_old.html:718
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid ""
+"Check night temps and rainfall for weather stations and locations in regions "
+"with coddling moth."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid "Read more"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:227
+msgid ""
+"If all criteria for oviposition are met, calculate heat sum from start date "
+"below."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:234
+#: cydiapomonella/templates/cydiapomonella/index_old.html:727
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index.html:240
+msgid "I want to use weather data"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:244
+msgid "for a specific location (coordinates)"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:251
+#: cydiapomonella/templates/cydiapomonella/index.html:264
+msgid "Select in map"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:258
+msgid "from a weather station"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:262
+#: cydiapomonella/templates/cydiapomonella/index_old.html:733
 msgid "Select weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:765
-#: cydiapomonella/templates/cydiapomonella/index.html:768
-#: cydiapomonella/templates/cydiapomonella/index.html:771
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index.html:276
+msgid "I want to get night temperatures and rainfall back in time:"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:278
+#: cydiapomonella/templates/cydiapomonella/index.html:281
+#: cydiapomonella/templates/cydiapomonella/index.html:284
+#: cydiapomonella/templates/cydiapomonella/index_old.html:765
+#: cydiapomonella/templates/cydiapomonella/index_old.html:768
+#: cydiapomonella/templates/cydiapomonella/index_old.html:771
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "days"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index.html:292
+msgid "Please wait..."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:301
+#: cydiapomonella/templates/cydiapomonella/index_old.html:782
 msgid "Date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:783
-#: cydiapomonella/templates/cydiapomonella/index.html:784
-#: cydiapomonella/templates/cydiapomonella/index.html:785
-#: cydiapomonella/templates/cydiapomonella/index.html:786
-#: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index.html:302
+#: cydiapomonella/templates/cydiapomonella/index.html:303
+#: cydiapomonella/templates/cydiapomonella/index.html:304
+#: cydiapomonella/templates/cydiapomonella/index.html:305
+#: cydiapomonella/templates/cydiapomonella/index.html:306
+#: cydiapomonella/templates/cydiapomonella/index_old.html:783
+#: cydiapomonella/templates/cydiapomonella/index_old.html:784
+#: cydiapomonella/templates/cydiapomonella/index_old.html:785
+#: cydiapomonella/templates/cydiapomonella/index_old.html:786
+#: cydiapomonella/templates/cydiapomonella/index_old.html:787
 msgid "Temp at"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index.html:307
+#: cydiapomonella/templates/cydiapomonella/index_old.html:788
 msgid "Daily rainfall"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index.html:319
+#: cydiapomonella/templates/cydiapomonella/index_old.html:803
 msgid "Heat sum"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index.html:322
+#: cydiapomonella/templates/cydiapomonella/index_old.html:807
 msgid "Calculate heat sum from date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:713
+msgid ""
+"Loading weather data !! If it takes forever, please contact the VIPS team."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid ""
 "Heat sum, with a base temperature of 10 degrees Celcius, calculated for "
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "weather station for the period starting with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "and ending with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "is"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "day degrees"
 msgstr ""
diff --git a/cydiapomonella/locale/bs/LC_MESSAGES/djangojs.po b/cydiapomonella/locale/bs/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000000000000000000000000000000000..bb2f9a711287c0b2e55b654a6bbdf52cf1af3be8
--- /dev/null
+++ b/cydiapomonella/locale/bs/LC_MESSAGES/djangojs.po
@@ -0,0 +1,57 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-10-31 10:23+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: cydiapomonella/static/js/cydiapomonella.js:222
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "calculated for"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "weatherstation"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "selected coordinates"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "for the period starting with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "and ending with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:227
+msgid "days"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "is"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "day degrees"
+msgstr ""
diff --git a/cydiapomonella/locale/de/LC_MESSAGES/django.po b/cydiapomonella/locale/de/LC_MESSAGES/django.po
index 079deba3686c705dd73db27dfb633e819d64e5e6..26d8afe36826b742d513a907eeb537d6e389965b 100644
--- a/cydiapomonella/locale/de/LC_MESSAGES/django.po
+++ b/cydiapomonella/locale/de/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 14:48+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,75 +18,148 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index.html:22
+#: cydiapomonella/templates/cydiapomonella/index_old.html:29
 msgid "Cydia pomonella"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:713
-msgid ""
-"Loading weather data !! If it takes forever, please contact the VIPS team."
+#: cydiapomonella/templates/cydiapomonella/index.html:141
+msgid "Location name"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:142
+msgid "Latitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:143
+msgid "Longitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:144
+msgid "Timezone"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index.html:225
+#: cydiapomonella/templates/cydiapomonella/index_old.html:718
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid ""
+"Check night temps and rainfall for weather stations and locations in regions "
+"with coddling moth."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid "Read more"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:227
+msgid ""
+"If all criteria for oviposition are met, calculate heat sum from start date "
+"below."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:234
+#: cydiapomonella/templates/cydiapomonella/index_old.html:727
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index.html:240
+msgid "I want to use weather data"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:244
+msgid "for a specific location (coordinates)"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:251
+#: cydiapomonella/templates/cydiapomonella/index.html:264
+msgid "Select in map"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:258
+msgid "from a weather station"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:262
+#: cydiapomonella/templates/cydiapomonella/index_old.html:733
 msgid "Select weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:765
-#: cydiapomonella/templates/cydiapomonella/index.html:768
-#: cydiapomonella/templates/cydiapomonella/index.html:771
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index.html:276
+msgid "I want to get night temperatures and rainfall back in time:"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:278
+#: cydiapomonella/templates/cydiapomonella/index.html:281
+#: cydiapomonella/templates/cydiapomonella/index.html:284
+#: cydiapomonella/templates/cydiapomonella/index_old.html:765
+#: cydiapomonella/templates/cydiapomonella/index_old.html:768
+#: cydiapomonella/templates/cydiapomonella/index_old.html:771
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "days"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index.html:292
+msgid "Please wait..."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:301
+#: cydiapomonella/templates/cydiapomonella/index_old.html:782
 msgid "Date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:783
-#: cydiapomonella/templates/cydiapomonella/index.html:784
-#: cydiapomonella/templates/cydiapomonella/index.html:785
-#: cydiapomonella/templates/cydiapomonella/index.html:786
-#: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index.html:302
+#: cydiapomonella/templates/cydiapomonella/index.html:303
+#: cydiapomonella/templates/cydiapomonella/index.html:304
+#: cydiapomonella/templates/cydiapomonella/index.html:305
+#: cydiapomonella/templates/cydiapomonella/index.html:306
+#: cydiapomonella/templates/cydiapomonella/index_old.html:783
+#: cydiapomonella/templates/cydiapomonella/index_old.html:784
+#: cydiapomonella/templates/cydiapomonella/index_old.html:785
+#: cydiapomonella/templates/cydiapomonella/index_old.html:786
+#: cydiapomonella/templates/cydiapomonella/index_old.html:787
 msgid "Temp at"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index.html:307
+#: cydiapomonella/templates/cydiapomonella/index_old.html:788
 msgid "Daily rainfall"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index.html:319
+#: cydiapomonella/templates/cydiapomonella/index_old.html:803
 msgid "Heat sum"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index.html:322
+#: cydiapomonella/templates/cydiapomonella/index_old.html:807
 msgid "Calculate heat sum from date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:713
+msgid ""
+"Loading weather data !! If it takes forever, please contact the VIPS team."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid ""
 "Heat sum, with a base temperature of 10 degrees Celcius, calculated for "
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "weather station for the period starting with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "and ending with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "is"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "day degrees"
 msgstr ""
diff --git a/cydiapomonella/locale/de/LC_MESSAGES/djangojs.po b/cydiapomonella/locale/de/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000000000000000000000000000000000..e8f72bd8c31d67028cc18e99d79fd6097f1813be
--- /dev/null
+++ b/cydiapomonella/locale/de/LC_MESSAGES/djangojs.po
@@ -0,0 +1,56 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-10-31 10:23+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: cydiapomonella/static/js/cydiapomonella.js:222
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "calculated for"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "weatherstation"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "selected coordinates"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "for the period starting with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "and ending with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:227
+msgid "days"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "is"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "day degrees"
+msgstr ""
diff --git a/cydiapomonella/locale/fi/LC_MESSAGES/django.po b/cydiapomonella/locale/fi/LC_MESSAGES/django.po
index 079deba3686c705dd73db27dfb633e819d64e5e6..26d8afe36826b742d513a907eeb537d6e389965b 100644
--- a/cydiapomonella/locale/fi/LC_MESSAGES/django.po
+++ b/cydiapomonella/locale/fi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 14:48+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,75 +18,148 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index.html:22
+#: cydiapomonella/templates/cydiapomonella/index_old.html:29
 msgid "Cydia pomonella"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:713
-msgid ""
-"Loading weather data !! If it takes forever, please contact the VIPS team."
+#: cydiapomonella/templates/cydiapomonella/index.html:141
+msgid "Location name"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:142
+msgid "Latitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:143
+msgid "Longitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:144
+msgid "Timezone"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index.html:225
+#: cydiapomonella/templates/cydiapomonella/index_old.html:718
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid ""
+"Check night temps and rainfall for weather stations and locations in regions "
+"with coddling moth."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid "Read more"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:227
+msgid ""
+"If all criteria for oviposition are met, calculate heat sum from start date "
+"below."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:234
+#: cydiapomonella/templates/cydiapomonella/index_old.html:727
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index.html:240
+msgid "I want to use weather data"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:244
+msgid "for a specific location (coordinates)"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:251
+#: cydiapomonella/templates/cydiapomonella/index.html:264
+msgid "Select in map"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:258
+msgid "from a weather station"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:262
+#: cydiapomonella/templates/cydiapomonella/index_old.html:733
 msgid "Select weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:765
-#: cydiapomonella/templates/cydiapomonella/index.html:768
-#: cydiapomonella/templates/cydiapomonella/index.html:771
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index.html:276
+msgid "I want to get night temperatures and rainfall back in time:"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:278
+#: cydiapomonella/templates/cydiapomonella/index.html:281
+#: cydiapomonella/templates/cydiapomonella/index.html:284
+#: cydiapomonella/templates/cydiapomonella/index_old.html:765
+#: cydiapomonella/templates/cydiapomonella/index_old.html:768
+#: cydiapomonella/templates/cydiapomonella/index_old.html:771
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "days"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index.html:292
+msgid "Please wait..."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:301
+#: cydiapomonella/templates/cydiapomonella/index_old.html:782
 msgid "Date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:783
-#: cydiapomonella/templates/cydiapomonella/index.html:784
-#: cydiapomonella/templates/cydiapomonella/index.html:785
-#: cydiapomonella/templates/cydiapomonella/index.html:786
-#: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index.html:302
+#: cydiapomonella/templates/cydiapomonella/index.html:303
+#: cydiapomonella/templates/cydiapomonella/index.html:304
+#: cydiapomonella/templates/cydiapomonella/index.html:305
+#: cydiapomonella/templates/cydiapomonella/index.html:306
+#: cydiapomonella/templates/cydiapomonella/index_old.html:783
+#: cydiapomonella/templates/cydiapomonella/index_old.html:784
+#: cydiapomonella/templates/cydiapomonella/index_old.html:785
+#: cydiapomonella/templates/cydiapomonella/index_old.html:786
+#: cydiapomonella/templates/cydiapomonella/index_old.html:787
 msgid "Temp at"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index.html:307
+#: cydiapomonella/templates/cydiapomonella/index_old.html:788
 msgid "Daily rainfall"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index.html:319
+#: cydiapomonella/templates/cydiapomonella/index_old.html:803
 msgid "Heat sum"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index.html:322
+#: cydiapomonella/templates/cydiapomonella/index_old.html:807
 msgid "Calculate heat sum from date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:713
+msgid ""
+"Loading weather data !! If it takes forever, please contact the VIPS team."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid ""
 "Heat sum, with a base temperature of 10 degrees Celcius, calculated for "
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "weather station for the period starting with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "and ending with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "is"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "day degrees"
 msgstr ""
diff --git a/cydiapomonella/locale/fi/LC_MESSAGES/djangojs.po b/cydiapomonella/locale/fi/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000000000000000000000000000000000..e8f72bd8c31d67028cc18e99d79fd6097f1813be
--- /dev/null
+++ b/cydiapomonella/locale/fi/LC_MESSAGES/djangojs.po
@@ -0,0 +1,56 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-10-31 10:23+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: cydiapomonella/static/js/cydiapomonella.js:222
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "calculated for"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "weatherstation"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "selected coordinates"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "for the period starting with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "and ending with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:227
+msgid "days"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "is"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "day degrees"
+msgstr ""
diff --git a/cydiapomonella/locale/nb/LC_MESSAGES/django.mo b/cydiapomonella/locale/nb/LC_MESSAGES/django.mo
index e3737a06e70691511f59d9b593a2bca47a1a3e3f..152099afda2261cea5427bfc8f7009d8d9d5d21c 100644
Binary files a/cydiapomonella/locale/nb/LC_MESSAGES/django.mo and b/cydiapomonella/locale/nb/LC_MESSAGES/django.mo differ
diff --git a/cydiapomonella/locale/nb/LC_MESSAGES/django.po b/cydiapomonella/locale/nb/LC_MESSAGES/django.po
index 56356a7b919bb08cf2cdf02586682d4d11bc1f0e..a17d7ea18b83c6d4dc49227544d4bc597bb57bc3 100644
--- a/cydiapomonella/locale/nb/LC_MESSAGES/django.po
+++ b/cydiapomonella/locale/nb/LC_MESSAGES/django.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
-"PO-Revision-Date: 2021-06-09 08:49+0200\n"
+"POT-Creation-Date: 2024-10-31 14:48+0100\n"
+"PO-Revision-Date: 2024-10-31 14:49+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: nb\n"
@@ -16,78 +16,161 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.3\n"
+"X-Generator: Poedit 3.4.2\n"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index.html:22
+#: cydiapomonella/templates/cydiapomonella/index_old.html:29
 msgid "Cydia pomonella"
 msgstr "Eplevikler"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:713
-msgid ""
-"Loading weather data !! If it takes forever, please contact the VIPS team."
-msgstr ""
-"Laster værdata. Hvis det tar veldig lang tid, vennligst kontakt VIPS-teamet."
+#: cydiapomonella/templates/cydiapomonella/index.html:141
+msgid "Location name"
+msgstr "Stedsnavn"
+
+#: cydiapomonella/templates/cydiapomonella/index.html:142
+msgid "Latitude"
+msgstr "Breddegrad"
+
+#: cydiapomonella/templates/cydiapomonella/index.html:143
+msgid "Longitude"
+msgstr "Lengdegrad"
+
+#: cydiapomonella/templates/cydiapomonella/index.html:144
+msgid "Timezone"
+msgstr "Tidssone"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index.html:225
+#: cydiapomonella/templates/cydiapomonella/index_old.html:718
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr "Beregn fare for angrep av eplevikler"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid ""
+"Check night temps and rainfall for weather stations and locations in regions "
+"with coddling moth."
+msgstr ""
+"Her kan du sjekke kveldstemperatur og nedbør for værstasjoner i regioner med "
+"eplevikler."
+
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid "Read more"
+msgstr "Les mer"
+
+#: cydiapomonella/templates/cydiapomonella/index.html:227
+msgid ""
+"If all criteria for oviposition are met, calculate heat sum from start date "
+"below."
+msgstr ""
+"Dersom alle kriteriene for egglegging er oppfylt, beregn påløpt varmesum ved "
+"å skrive inn startdato nedenfor."
+
+#: cydiapomonella/templates/cydiapomonella/index.html:234
+#: cydiapomonella/templates/cydiapomonella/index_old.html:727
 msgid "No weather data available from the selected weather station"
 msgstr "Ingen værdata er tilgjengelig fra den valgte målestasjonen"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index.html:240
+msgid "I want to use weather data"
+msgstr "Jeg vil bruke værdata"
+
+#: cydiapomonella/templates/cydiapomonella/index.html:244
+msgid "for a specific location (coordinates)"
+msgstr "for et punkt i kartet"
+
+#: cydiapomonella/templates/cydiapomonella/index.html:251
+#: cydiapomonella/templates/cydiapomonella/index.html:264
+msgid "Select in map"
+msgstr "Velg i kart"
+
+#: cydiapomonella/templates/cydiapomonella/index.html:258
+msgid "from a weather station"
+msgstr "fra en værstasjon"
+
+#: cydiapomonella/templates/cydiapomonella/index.html:262
+#: cydiapomonella/templates/cydiapomonella/index_old.html:733
 msgid "Select weather station"
 msgstr "Velg målestasjon"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:765
-#: cydiapomonella/templates/cydiapomonella/index.html:768
-#: cydiapomonella/templates/cydiapomonella/index.html:771
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index.html:276
+msgid "I want to get night temperatures and rainfall back in time:"
+msgstr "Jeg vil hente data tilbake i tid fra:"
+
+#: cydiapomonella/templates/cydiapomonella/index.html:278
+#: cydiapomonella/templates/cydiapomonella/index.html:281
+#: cydiapomonella/templates/cydiapomonella/index.html:284
+#: cydiapomonella/templates/cydiapomonella/index_old.html:765
+#: cydiapomonella/templates/cydiapomonella/index_old.html:768
+#: cydiapomonella/templates/cydiapomonella/index_old.html:771
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "days"
 msgstr "dager"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index.html:292
+msgid "Please wait..."
+msgstr "Vennligst vent..."
+
+#: cydiapomonella/templates/cydiapomonella/index.html:301
+#: cydiapomonella/templates/cydiapomonella/index_old.html:782
 msgid "Date"
 msgstr "Dato"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:783
-#: cydiapomonella/templates/cydiapomonella/index.html:784
-#: cydiapomonella/templates/cydiapomonella/index.html:785
-#: cydiapomonella/templates/cydiapomonella/index.html:786
-#: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index.html:302
+#: cydiapomonella/templates/cydiapomonella/index.html:303
+#: cydiapomonella/templates/cydiapomonella/index.html:304
+#: cydiapomonella/templates/cydiapomonella/index.html:305
+#: cydiapomonella/templates/cydiapomonella/index.html:306
+#: cydiapomonella/templates/cydiapomonella/index_old.html:783
+#: cydiapomonella/templates/cydiapomonella/index_old.html:784
+#: cydiapomonella/templates/cydiapomonella/index_old.html:785
+#: cydiapomonella/templates/cydiapomonella/index_old.html:786
+#: cydiapomonella/templates/cydiapomonella/index_old.html:787
 msgid "Temp at"
 msgstr "Temp kl"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index.html:307
+#: cydiapomonella/templates/cydiapomonella/index_old.html:788
 msgid "Daily rainfall"
 msgstr "Døgnnedbør"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index.html:319
+#: cydiapomonella/templates/cydiapomonella/index_old.html:803
 msgid "Heat sum"
 msgstr "Varmesum"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index.html:322
+#: cydiapomonella/templates/cydiapomonella/index_old.html:807
 msgid "Calculate heat sum from date"
 msgstr "Beregn varmesum fra dato"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:713
+msgid ""
+"Loading weather data !! If it takes forever, please contact the VIPS team."
+msgstr ""
+"Laster værdata. Hvis det tar veldig lang tid, vennligst kontakt VIPS-teamet."
+
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid ""
 "Heat sum, with a base temperature of 10 degrees Celcius, calculated for "
 msgstr "Varmesum, med basistemperatur 10, beregnet for "
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "weather station for the period starting with"
 msgstr "målestasjon for perioden fra og med"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "and ending with"
 msgstr "til og med"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "is"
 msgstr "er"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "day degrees"
 msgstr "graddager"
+
+#~ msgid "Heat sum, with a base temperature of"
+#~ msgstr "Varmesum, med basistemperatur"
+
+#~ msgid "calculated for "
+#~ msgstr "beregnet for "
diff --git a/cydiapomonella/locale/nb/LC_MESSAGES/djangojs.po b/cydiapomonella/locale/nb/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000000000000000000000000000000000..318bacced37cf11f384a3a77ba7f94218c0c4b35
--- /dev/null
+++ b/cydiapomonella/locale/nb/LC_MESSAGES/djangojs.po
@@ -0,0 +1,60 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-10-31 10:23+0100\n"
+"PO-Revision-Date: 2024-10-31 10:23+0100\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"Language: nb\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 3.4.2\n"
+
+#: cydiapomonella/static/js/cydiapomonella.js:222
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "Heat sum, with a base temperature of"
+msgstr "Varmesum, med basistemperatur"
+
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "calculated for"
+msgstr "beregnet for"
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "weatherstation"
+msgstr "værstasjon"
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "selected coordinates"
+msgstr "valgt punkt"
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "for the period starting with"
+msgstr "for perioden fra og med"
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "and ending with"
+msgstr "til og med"
+
+#: cydiapomonella/static/js/cydiapomonella.js:227
+msgid "days"
+msgstr "dager"
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "is"
+msgstr "er"
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "day degrees"
+msgstr "graddager"
+
+#~ msgid "Field is required"
+#~ msgstr "DETTE ER EN TEST"
diff --git a/cydiapomonella/locale/vi/LC_MESSAGES/django.po b/cydiapomonella/locale/vi/LC_MESSAGES/django.po
index 5c528fba6d4fcb42f35cf45647be116c4ddc770a..9da9adb3ad10f21d2d7cd86e8f9f1c372b693c5f 100644
--- a/cydiapomonella/locale/vi/LC_MESSAGES/django.po
+++ b/cydiapomonella/locale/vi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 14:48+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,75 +18,148 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index.html:22
+#: cydiapomonella/templates/cydiapomonella/index_old.html:29
 msgid "Cydia pomonella"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:713
-msgid ""
-"Loading weather data !! If it takes forever, please contact the VIPS team."
+#: cydiapomonella/templates/cydiapomonella/index.html:141
+msgid "Location name"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:142
+msgid "Latitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:143
+msgid "Longitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:144
+msgid "Timezone"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index.html:225
+#: cydiapomonella/templates/cydiapomonella/index_old.html:718
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid ""
+"Check night temps and rainfall for weather stations and locations in regions "
+"with coddling moth."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid "Read more"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:227
+msgid ""
+"If all criteria for oviposition are met, calculate heat sum from start date "
+"below."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:234
+#: cydiapomonella/templates/cydiapomonella/index_old.html:727
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index.html:240
+msgid "I want to use weather data"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:244
+msgid "for a specific location (coordinates)"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:251
+#: cydiapomonella/templates/cydiapomonella/index.html:264
+msgid "Select in map"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:258
+msgid "from a weather station"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:262
+#: cydiapomonella/templates/cydiapomonella/index_old.html:733
 msgid "Select weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:765
-#: cydiapomonella/templates/cydiapomonella/index.html:768
-#: cydiapomonella/templates/cydiapomonella/index.html:771
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index.html:276
+msgid "I want to get night temperatures and rainfall back in time:"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:278
+#: cydiapomonella/templates/cydiapomonella/index.html:281
+#: cydiapomonella/templates/cydiapomonella/index.html:284
+#: cydiapomonella/templates/cydiapomonella/index_old.html:765
+#: cydiapomonella/templates/cydiapomonella/index_old.html:768
+#: cydiapomonella/templates/cydiapomonella/index_old.html:771
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "days"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index.html:292
+msgid "Please wait..."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:301
+#: cydiapomonella/templates/cydiapomonella/index_old.html:782
 msgid "Date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:783
-#: cydiapomonella/templates/cydiapomonella/index.html:784
-#: cydiapomonella/templates/cydiapomonella/index.html:785
-#: cydiapomonella/templates/cydiapomonella/index.html:786
-#: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index.html:302
+#: cydiapomonella/templates/cydiapomonella/index.html:303
+#: cydiapomonella/templates/cydiapomonella/index.html:304
+#: cydiapomonella/templates/cydiapomonella/index.html:305
+#: cydiapomonella/templates/cydiapomonella/index.html:306
+#: cydiapomonella/templates/cydiapomonella/index_old.html:783
+#: cydiapomonella/templates/cydiapomonella/index_old.html:784
+#: cydiapomonella/templates/cydiapomonella/index_old.html:785
+#: cydiapomonella/templates/cydiapomonella/index_old.html:786
+#: cydiapomonella/templates/cydiapomonella/index_old.html:787
 msgid "Temp at"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index.html:307
+#: cydiapomonella/templates/cydiapomonella/index_old.html:788
 msgid "Daily rainfall"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index.html:319
+#: cydiapomonella/templates/cydiapomonella/index_old.html:803
 msgid "Heat sum"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index.html:322
+#: cydiapomonella/templates/cydiapomonella/index_old.html:807
 msgid "Calculate heat sum from date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:713
+msgid ""
+"Loading weather data !! If it takes forever, please contact the VIPS team."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid ""
 "Heat sum, with a base temperature of 10 degrees Celcius, calculated for "
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "weather station for the period starting with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "and ending with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "is"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "day degrees"
 msgstr ""
diff --git a/cydiapomonella/locale/vi/LC_MESSAGES/djangojs.po b/cydiapomonella/locale/vi/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000000000000000000000000000000000..2992c7fe8b0c0c8f340bc0f99dfcab1168d5886e
--- /dev/null
+++ b/cydiapomonella/locale/vi/LC_MESSAGES/djangojs.po
@@ -0,0 +1,56 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-10-31 10:23+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: cydiapomonella/static/js/cydiapomonella.js:222
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "calculated for"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "weatherstation"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "selected coordinates"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "for the period starting with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "and ending with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:227
+msgid "days"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "is"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "day degrees"
+msgstr ""
diff --git a/cydiapomonella/locale/zh_Hans/LC_MESSAGES/django.po b/cydiapomonella/locale/zh_Hans/LC_MESSAGES/django.po
index 5c528fba6d4fcb42f35cf45647be116c4ddc770a..9da9adb3ad10f21d2d7cd86e8f9f1c372b693c5f 100644
--- a/cydiapomonella/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/cydiapomonella/locale/zh_Hans/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-11-22 16:16+0100\n"
+"POT-Creation-Date: 2024-10-31 14:48+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,75 +18,148 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index.html:22
+#: cydiapomonella/templates/cydiapomonella/index_old.html:29
 msgid "Cydia pomonella"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:713
-msgid ""
-"Loading weather data !! If it takes forever, please contact the VIPS team."
+#: cydiapomonella/templates/cydiapomonella/index.html:141
+msgid "Location name"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:142
+msgid "Latitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:143
+msgid "Longitude"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:144
+msgid "Timezone"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index.html:225
+#: cydiapomonella/templates/cydiapomonella/index_old.html:718
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid ""
+"Check night temps and rainfall for weather stations and locations in regions "
+"with coddling moth."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:226
+msgid "Read more"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:227
+msgid ""
+"If all criteria for oviposition are met, calculate heat sum from start date "
+"below."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:234
+#: cydiapomonella/templates/cydiapomonella/index_old.html:727
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index.html:240
+msgid "I want to use weather data"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:244
+msgid "for a specific location (coordinates)"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:251
+#: cydiapomonella/templates/cydiapomonella/index.html:264
+msgid "Select in map"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:258
+msgid "from a weather station"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:262
+#: cydiapomonella/templates/cydiapomonella/index_old.html:733
 msgid "Select weather station"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:765
-#: cydiapomonella/templates/cydiapomonella/index.html:768
-#: cydiapomonella/templates/cydiapomonella/index.html:771
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index.html:276
+msgid "I want to get night temperatures and rainfall back in time:"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:278
+#: cydiapomonella/templates/cydiapomonella/index.html:281
+#: cydiapomonella/templates/cydiapomonella/index.html:284
+#: cydiapomonella/templates/cydiapomonella/index_old.html:765
+#: cydiapomonella/templates/cydiapomonella/index_old.html:768
+#: cydiapomonella/templates/cydiapomonella/index_old.html:771
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "days"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index.html:292
+msgid "Please wait..."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index.html:301
+#: cydiapomonella/templates/cydiapomonella/index_old.html:782
 msgid "Date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:783
-#: cydiapomonella/templates/cydiapomonella/index.html:784
-#: cydiapomonella/templates/cydiapomonella/index.html:785
-#: cydiapomonella/templates/cydiapomonella/index.html:786
-#: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index.html:302
+#: cydiapomonella/templates/cydiapomonella/index.html:303
+#: cydiapomonella/templates/cydiapomonella/index.html:304
+#: cydiapomonella/templates/cydiapomonella/index.html:305
+#: cydiapomonella/templates/cydiapomonella/index.html:306
+#: cydiapomonella/templates/cydiapomonella/index_old.html:783
+#: cydiapomonella/templates/cydiapomonella/index_old.html:784
+#: cydiapomonella/templates/cydiapomonella/index_old.html:785
+#: cydiapomonella/templates/cydiapomonella/index_old.html:786
+#: cydiapomonella/templates/cydiapomonella/index_old.html:787
 msgid "Temp at"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index.html:307
+#: cydiapomonella/templates/cydiapomonella/index_old.html:788
 msgid "Daily rainfall"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index.html:319
+#: cydiapomonella/templates/cydiapomonella/index_old.html:803
 msgid "Heat sum"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index.html:322
+#: cydiapomonella/templates/cydiapomonella/index_old.html:807
 msgid "Calculate heat sum from date"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:713
+msgid ""
+"Loading weather data !! If it takes forever, please contact the VIPS team."
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid ""
 "Heat sum, with a base temperature of 10 degrees Celcius, calculated for "
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "weather station for the period starting with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "and ending with"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "is"
 msgstr ""
 
-#: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_old.html:815
 msgid "day degrees"
 msgstr ""
diff --git a/cydiapomonella/locale/zh_Hans/LC_MESSAGES/djangojs.po b/cydiapomonella/locale/zh_Hans/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000000000000000000000000000000000..2992c7fe8b0c0c8f340bc0f99dfcab1168d5886e
--- /dev/null
+++ b/cydiapomonella/locale/zh_Hans/LC_MESSAGES/djangojs.po
@@ -0,0 +1,56 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2024-10-31 10:23+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: cydiapomonella/static/js/cydiapomonella.js:222
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:224
+msgid "calculated for"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "weatherstation"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:225
+msgid "selected coordinates"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "for the period starting with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:226
+msgid "and ending with"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:227
+msgid "days"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "is"
+msgstr ""
+
+#: cydiapomonella/static/js/cydiapomonella.js:228
+msgid "day degrees"
+msgstr ""
diff --git a/cydiapomonella/static/js/cydiapomonella.js b/cydiapomonella/static/js/cydiapomonella.js
new file mode 100644
index 0000000000000000000000000000000000000000..964f06fb16058ad55a8b479dec9131396ec88f5b
--- /dev/null
+++ b/cydiapomonella/static/js/cydiapomonella.js
@@ -0,0 +1,345 @@
+/**
+ * Functionality for the running of the Cydia Pomonella model. 
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * 
+ * This program 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
+ * GNU Affero General Public License for more details.
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses />.
+ * 
+ * Created 2024-10-30
+ * @author Tor-Einar Skog <tor-einar.skog@nibio.no>
+ */
+
+class CydiaPomonella 
+{
+
+    weatherStationDataURL = "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback";
+    gridDataURL = "https://weather.vips.nibio.no/rest/grid/openmeteo/"; 
+    TIMEZONE_OSLO = "Europe/Oslo";
+    DATE_FORMAT = "YYYY-MM-DD";
+    HEATSUM_BASE_TEMP = 10.0;
+    WEATHER_DATASOURCE_TYPE_COORDINATES = "coordinates";
+    WEATHER_DATASOURCE_TYPE_WEATHERSTATION = "weatherstation";
+    progressIconRow = document.getElementById("progressIconRow");
+    
+
+    appleWeatherStations = [
+        { "id": 11, "name": "Apelsvoll" },
+        { "id": 12, "name": "Balestrand" },
+        { "id": 13, "name": "Bø" },
+        { "id": 86, "name": "Darbu" },
+        { "id": 19, "name": "Gjerpen" },
+        { "id": 21, "name": "Gvarv" },
+        { "id": 22, "name": "Hjelmeland" },
+        { "id": 25, "name": "Hønefoss" },
+        { "id": 27, "name": "Kise" },
+        { "id": 29, "name": "Landvik" },
+        { "id": 30, "name": "Lier" },
+        { "id": 65, "name": "Ljøsne" },
+        { "id": 32, "name": "Lyngdal" },
+        { "id": 35, "name": "Njøs" },
+        { "id": 41, "name": "Rygge" },
+        { "id": 42, "name": "Sande" },
+        { "id": 131, "name": "Sandefjord" },
+        { "id": 64, "name": "Slinde" },
+        { "id": 47, "name": "Svelvik" },
+        { "id": 91, "name": "Søve" },
+        { "id": 61, "name": "Åsbakken" }
+    ];
+
+    appleWeatherStationIds = this.appleWeatherStations.map(ws=>ws.id);
+
+    renderWeatherstations = function () {
+        let wsSelect = document.getElementById("weatherStationId");
+        this.appleWeatherStations.forEach((ws) => {
+            wsSelect.options[wsSelect.options.length] = new Option(ws["name"], ws["id"]);
+        });
+    }
+
+    getSelectedWeatherstation()
+    {
+        let wsSelect = document.getElementById("weatherStationId");
+        return wsSelect.options[wsSelect.selectedIndex].value != "-1" ? wsSelect.options[wsSelect.selectedIndex].value : undefined;
+    }
+
+    getSelectedCoordinate()
+    {
+        let longitude = parseFloat(document.getElementById("longitude").value);
+        let latitude = parseFloat(document.getElementById("latitude").value);
+        return (Number.isNaN(longitude) || Number.isNaN(latitude) ? undefined : [longitude, latitude]);
+    }
+
+    getSelectedWeatherdataSourceType()
+    {
+        return document.getElementById("coordinates").checked ? this.WEATHER_DATASOURCE_TYPE_COORDINATES : document.getElementById("weatherstation").checked ? this.WEATHER_DATASOURCE_TYPE_WEATHERSTATION : undefined;
+    }
+
+    async runModel() {
+        this.progressIconRow.style.display = "block";
+        let selectedWeatherStationId = this.getSelectedWeatherstation();
+        let selectedCoordinate = this.getSelectedCoordinate();
+        if(selectedWeatherStationId == undefined && selectedCoordinate == undefined)
+        {
+            return;
+        }
+
+        let startDateHourly = this.getStartDateHourly();
+        let endDateHourly = this.getEndDateHourly();
+        try
+        {
+            let hourlyDataResponse = undefined;
+            if(this.getSelectedWeatherdataSourceType() == this.WEATHER_DATASOURCE_TYPE_WEATHERSTATION && selectedWeatherStationId != undefined)
+            {
+                // Get the hourly data for the past X days
+                hourlyDataResponse = await fetch(
+                    this.weatherStationDataURL + "?weatherStationId=" + selectedWeatherStationId 
+                    + "&elementMeasurementTypes[]=RR&elementMeasurementTypes[]=TM"
+                    + "&timeZone="  + this.TIMEZONE_OSLO 
+                    + "&startDate=" + startDateHourly.format(this.DATE_FORMAT) + "&startTime=0" 
+                    + "&endDate=" + endDateHourly.format(this.DATE_FORMAT) + "&endTime=12"  
+                    + "&logIntervalId=1"
+                );
+            }
+            else if(this.getSelectedWeatherdataSourceType() == this.WEATHER_DATASOURCE_TYPE_COORDINATES && selectedCoordinate != undefined)
+            {
+                hourlyDataResponse = await fetch(
+                    this.gridDataURL + "?longitude=" + selectedCoordinate[0] + "&latitude=" + selectedCoordinate[1]
+                    + "&elementMeasurementTypes[]=RR&elementMeasurementTypes[]=TM"
+                    + "&timeZone="  + document.getElementById("timezone").value
+                    + "&startDate=" + startDateHourly.format(this.DATE_FORMAT) + "&startTime=0" 
+                    + "&endDate=" + endDateHourly.format(this.DATE_FORMAT) + "&endTime=12"  
+                    + "&logIntervalId=1"
+                );
+            }
+            else
+            {
+                console.error("Location not set. Aborting.")
+                return;
+            }
+            if(! hourlyDataResponse || ! hourlyDataResponse.ok){
+                throw new Error("Response status: " + hourlyDataResponse.status);
+            }
+
+            const hourlyData = await hourlyDataResponse.json();
+
+            // Get the daily RR data for the past X days
+            const dailyData = this.getDailyRRData(hourlyData);
+
+            this.renderTable(hourlyData, dailyData);
+
+            this.runHeatSumCalculations();
+            
+        }
+        catch(error)
+        {
+            console.error(error.message);
+        }
+        this.progressIconRow.style.display = "none";
+    }
+
+    async runHeatSumCalculations()
+    {
+        document.getElementById("heatSumContainer").style.display="block";
+        let selectedWeatherStationId = this.getSelectedWeatherstation();
+        let selectedCoordinate = this.getSelectedCoordinate();
+        if(selectedWeatherStationId == undefined && selectedCoordinate == undefined)
+        {
+            return;
+        }
+        // Get daily temperature data for the heat sum
+        const heatSumStartDate = this.setToTZMidnight(moment(document.getElementById("heatSumStartDate").value));
+        const heatSumEndDate = this.setToTZMidnight(moment().tz(this.TIMEZONE_OSLO).subtract(1,"days"));
+        
+        let heatSumDataResponse = undefined;
+        if(this.getSelectedWeatherdataSourceType() == this.WEATHER_DATASOURCE_TYPE_WEATHERSTATION && selectedWeatherStationId != undefined)
+        {
+            heatSumDataResponse = await fetch(
+                this.weatherStationDataURL + "?weatherStationId=" + selectedWeatherStationId 
+                + "&elementMeasurementTypes[]=TM"
+                + "&timeZone="  + this.TIMEZONE_OSLO 
+                + "&startDate=" + heatSumStartDate.format(this.DATE_FORMAT) + "&startTime=0" 
+                + "&endDate=" + heatSumEndDate.format(this.DATE_FORMAT) + "&endTime=23"  
+                + "&logIntervalId=2"
+            );
+        }
+        else if(this.getSelectedWeatherdataSourceType() == this.WEATHER_DATASOURCE_TYPE_COORDINATES && selectedCoordinate != undefined)
+        {
+            heatSumDataResponse = await fetch(
+                this.gridDataURL + "?longitude=" + selectedCoordinate[0] + "&latitude=" + selectedCoordinate[1]
+                + "&elementMeasurementTypes[]=TM"
+                + "&timeZone="  + document.getElementById("timezone").value
+                + "&startDate=" + heatSumStartDate.format(this.DATE_FORMAT) + "&startTime=0" 
+                + "&endDate=" + heatSumEndDate.format(this.DATE_FORMAT) + "&endTime=23"  
+                + "&logIntervalId=2"
+            );
+        }
+        else
+        {
+            console.error("Location not set. Aborting.")
+            return;
+        }
+
+        if(! heatSumDataResponse.ok){
+            throw new Error("Response status: " + heatSumDataResponse.status);
+        }
+
+        const heatSumData = await heatSumDataResponse.json();
+
+        this.renderHeatSumResult(this.calculateHeatSum(heatSumData), heatSumData.length, heatSumStartDate, heatSumEndDate);
+    }
+
+    calculateHeatSum(heatSumData)
+    {
+        let heatSum = 0.0;
+        heatSumData.forEach((obs) =>{
+            heatSum += Math.max(0.0, (obs.value - this.HEATSUM_BASE_TEMP));
+        });
+        return heatSum;
+    }
+
+    renderHeatSumResult(heatSum, numberOfDays, heatSumStartDate, heatSumEndDate)
+    {
+        let weatherStationName = undefined;
+        if(this.getSelectedWeatherdataSourceType() == this.WEATHER_DATASOURCE_TYPE_WEATHERSTATION)
+        {
+            const selectedWeatherstationId = parseInt(this.getSelectedWeatherstation());
+            this.appleWeatherStations.forEach((ws)=>{
+                if(ws.id == selectedWeatherstationId)
+                {
+                    weatherStationName =  ws.name;
+                }
+            });
+        }
+
+        const heatSumMsg = gettext("Heat sum, with a base temperature of") + " " + this.HEATSUM_BASE_TEMP + "&deg;C, " + gettext("calculated for") + " " 
+        + (this.getSelectedWeatherdataSourceType() == this.WEATHER_DATASOURCE_TYPE_WEATHERSTATION ? weatherStationName + " " + gettext("weatherstation") : gettext("selected coordinates"))
+        + " " + gettext("for the period starting with") + " " + heatSumStartDate.format(this.DATE_FORMAT) + " " + gettext("and ending with") + " " + heatSumEndDate.format(this.DATE_FORMAT)
+        + " " + "(" + numberOfDays + " " + gettext("days") + ")"
+        + " " + gettext("is") + ": <strong>" + heatSum.toFixed(1) + " " + gettext("day degrees") + "</strong>";
+        
+        document.getElementById("heatSumResult").innerHTML = heatSumMsg;
+    }
+
+    getDailyRRData(hourlyData)
+    {
+        let RRBuckets = {};
+        for(let i=0; i< hourlyData.length;i++)
+        {
+            let obs = hourlyData[i];
+            if(obs.elementMeasurementTypeId == "RR")
+            {
+                let date = this.setToTZMidnight(moment(obs.timeMeasured));
+                if(RRBuckets[date.unix()] == null)
+                {
+                    RRBuckets[date.unix()] = [];
+                }
+                RRBuckets[date.unix()].push(obs.value);
+            }
+        }
+
+        let dailyRRData = [];
+        Object.keys(RRBuckets).forEach((key) => {
+            let dateBucket = RRBuckets[key];
+            let RRSum = dateBucket.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
+            let RR = {
+                timeMeasured: moment.unix(key).toISOString(),
+                elementMeasurementTypeId: "RR",
+                logIntervalId: 1,
+                value: RRSum
+            }
+            dailyRRData.push(RR);
+        });
+        
+        return dailyRRData;
+    }
+
+    renderTable(hourlyData, dailyData)
+    {
+        document.getElementById("weatherData").style.display="table";
+        let tableBody = document.getElementById("tableBody");
+        tableBody.innerHTML = "";
+        let currentDate = this.getStartDateHourly();
+        let today = this.setToTZMidnight(moment());
+        //console.info("today=" + today.format());
+        while(currentDate < today)
+        {
+            //console.info("currentDate=" + currentDate.format());
+            let nightTemps = this.getNightTempsForDate(moment(currentDate).tz(this.TIMEZONE_OSLO), hourlyData);
+            //console.info(nightTemps);
+            let rowHTML = "<tr><td>" + currentDate.format(this.DATE_FORMAT) + "</td>";
+            
+            for(let i=0; i<nightTemps.length;i++)
+            {
+                rowHTML += "<td>" + nightTemps[i].toFixed(1) + "</td>";
+            }
+            dailyData.forEach((obs) =>{
+                if(moment(obs.timeMeasured).unix() == currentDate.unix())
+                {
+                    rowHTML += "<td>" + obs.value.toFixed(1) + "</td>";
+                }
+            });
+            rowHTML += "</tr>"
+            tableBody.innerHTML += rowHTML;
+            currentDate.add(1,"days");
+        }
+    }
+
+    getStartDateHourly = function()
+    {
+        let daysBack = undefined;
+        document.getElementsByName("radioDays").forEach((radio)=>{
+            if(radio.checked)
+            {
+                daysBack = radio.value;
+            }
+        });
+        return this.setToTZMidnight(moment()).subtract(daysBack,"days");
+    }
+
+    getEndDateHourly()
+    {
+        return moment().tz(this.TIMEZONE_OSLO).hour(12);
+    }
+
+    /**
+     * 
+     * @param date 
+     * @param {Array} weatherData 
+     * @return array[temp@19,temp@20,temp@21,temp@22, temp@23]
+     */
+    getNightTempsForDate(date, weatherData)
+    {
+        // Create an array of the desired timestamps
+        let timestamps = [];
+        let nightTemps = [];
+        for(let i=19;i<=23;i++)
+        {
+            timestamps.push(date.hour(i).minute(0).second(0).millisecond(0).unix());
+        }
+        weatherData.forEach((wd)=>{
+            let timeMeasured = moment(wd.timeMeasured).unix();
+            //console.info(timeMeasured);
+            if(wd.elementMeasurementTypeId == "TM" && timestamps.indexOf(timeMeasured) >=0)
+            {
+                nightTemps[timestamps.indexOf(timeMeasured)] = wd.value;
+                //console.info("Found " + wd.timeMeasured + "at index " + tsArray.indexOf(timeMeasured));
+            }
+        });
+        return nightTemps;
+        //console.info(tsArray);
+    }
+
+    setToTZMidnight(theDate)
+    {
+        return theDate.tz(this.TIMEZONE_OSLO).hour(0).minute(0).second(0).millisecond(0);
+    }
+}
+
+export default CydiaPomonella;
\ No newline at end of file
diff --git a/cydiapomonella/templates/cydiapomonella/index.html b/cydiapomonella/templates/cydiapomonella/index.html
index f2d2ede5546f215dad09f6a0a852b982aa754b3e..b78c32343551239998c71e5eab6098bee7a14ee5 100644
--- a/cydiapomonella/templates/cydiapomonella/index.html
+++ b/cydiapomonella/templates/cydiapomonella/index.html
@@ -1,821 +1,334 @@
 {% extends "base.html" %}
 {% load static %}
 {% comment %}
-
-#
-# Copyright (c) 2018 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/>.
-# 
-
-# Author     :  Bhabesh
-# Start date :  June-2020 
-#
-#
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as
+published by the Free Software Foundation, either version 3 of the
+License, or (at your option) any later version.
+
+This program 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
+GNU Affero General Public License for more details.
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see <http://www.gnu.org/licenses />.
+
+Author: Tor-Einar Skog <tor-einar.skog@nibio.no>
+Created: 2024-10-28
 {% endcomment %}
+
 {% load i18n l10n %}
+
 {% block title%}{% trans "Cydia pomonella" %}{%endblock%}
 
-{% block extendCSS %}
-<link rel="stylesheet"  type="text/css" href="{% static 'css/datatables.min.1.10.21.css' %}"/>
-<link href="{% static "css/3rdparty/jquery-ui.min.css" %}" rel="stylesheet" media="screen" />
+{% block customCSS %}
+<link type="text/css" rel="stylesheet" href="https://logic.testvips.nibio.no/css/3rdparty/leaflet.css" />
+<link type="text/css" rel="stylesheet" href="https://logic.testvips.nibio.no/css/mapModal.css" />
 {% endblock %}
-{% block extendJS %}
-<script src="{% static "js/3rdparty/jquery-ui.min.js" %}"></script>
-<script src="{% static "js/datatables.min.1.10.21.js" %}"></script>
-<script src="{% static "js/handlebars4.7.6.js" %}"></script>
-
-<script src="{% static "js/moment.min.js" %}"></script>
-<script src="{% static "js/moment-timezone.js" %}"></script>
-<script src="{% static "js/moment-timezone-with-data.min.js" %}"></script>
-
 
+{% block extendJS %}
+<script type="text/javascript" src="{% static "js/moment.min.js" %}"></script>
+<script type="text/javascript" src="{% static "js/moment-timezone-with-data.min.js" %}"></script>
 
+<script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>
+<script type="text/javascript" src="{% url "views.settings_js" %}"></script>
+<script type="text/javascript" src="{% static "js/util.js" %}"></script>
 {% endblock %}
-{% block customCSS %}
-    <style>
-        /* Over ride datatable property to maintain default color */
-        .navbar-default {
-            background-color: #fff;
-            border-color:#fff;
-        }
-        
-        /* Text align center - used in datatable */
-        .colCenter {text-align: center;}
-
-        /* Data table odd stripe color */
-/*
-        .table-striped>tbody>tr:nth-child(odd)>th {
-            background-color: #ebf1d4 
-        }
-*/ 
-        /* Data table even stripe color */
-       .table-striped>tbody>tr:nth-child(even)>td {
-        background-color : #eeeeee 
-        }
-
-        body {
-            font-family: 'Source Sans Pro', sans-serif;
-        }
-        
-        table.table > tbody > tr > td {
-            background-color: white;
-            border-bottom: 3px solid #d9e6e4;
-            }
-		#contentContainer {
-			min-height: 250px;
-		}
 
-    </style>
-{% endblock %}
 {% block customJS %}
-{% csrf_token %}
-<script type="text/javascript">
-
-    var CONST_TIMEZONE  =   'Europe/Oslo';
-    var dateToday       =   new Date();
-    var dateYesterday   =   getAdjustDate(dateToday,1); 
-
-    var strEndDate      =   JSON.stringify(dateToday).substring(1,11);   
-    var CON_idSpecial   =   {
-                                    "Helgøy"    :   "536"
-                                ,   "Skiftun"   :   "537"
-                            }
-
-    /* Page onload function */
-    $(function(){
-        /* Calendar will not accept future dates including today */
-        //document.getElementById('idTxtDateInput').setAttribute("max", JSON.stringify(dateYesterday).substring(1,11));
-        $('#idTxtDateInput').removeClass('hasDatepicker');
-    });
-
-    $(document).ajaxStart(function(){
-        // Show image container
-        $("#divIdAjaxLoader").show();
-    });
-
-    $(document).ajaxComplete(function(){
-        // Hide image container
-        $("#divIdAjaxLoader").hide();
-    });
-
-
-    /* Function for check whether the choosed weather station is within special category (e.g. devis) */
-    function isSpecialWeatherStation(paramStationId)
-    {
-        var result = false;
-        $.each( CON_idSpecial, function( key, value ) {
-            if (paramStationId              === value)
-            {
-                result                      =   true;
-                return false; // exit the each loop
-            }
-        });
-        return result;
-    }
-
-
-
-
-    /* Function works on date picker onClose event */
-    function funDtPickerHeatSum()
-    {
-
-        var varWeatherId                =   $('#weatherStationId').find(':selected').val();
-        var strStartDate                =   undefined;
-        var varLogInIntervalHourly      =   '1h';
-        var varLogInIntervalDaily       =   '1d';
-        var varElementMeasurementTypes  =   ['TM'];
-
-        var jsonParamUrlData            =   '';
-        
-        var weatherStationIdParamJSON   =   getJsonData(varWeatherId);
-
-            if(typeof varWeatherId      === "undefined") 
-            {
-                varWeatherId            =   '$(#weatherStationId)';
-            }
-            else{
-                varWeatherId            =   getJsonData(varWeatherId).id;
-            }
-            
-            var startDate               =   new Date($('#idTxtDateInput').val());
-
-
-            if(isSpecialWeatherStation(varWeatherId)) 
-            {
-                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);
-            }
-
-    }
-
-    /* Date input  to get heat sum calculation */
-  /*
-    $('#idTxtDateInput').datepicker({
-        dateFormat: 'yy-mm-dd',
-        showOn: "both",
-        firstDay:1,
-        maxDate : 0,
-        onClose: function( selectedDate ) {
-            funDtPickerHeatSum();
-         }
-    });
-  */
-
-  $('#idTxtDateInput').change(function(){
-        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 varElementMeasurementTypes  =   ['TM','RR'];
-            var varLogInIntervalHourly      =   '1h';
-
-            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); 
-
-            if(isSpecialWeatherStation(varWeatherId)) 
-            {
-                var dateStartDate02         =   getAdjustDate(dateToday, (parseInt(radioDaysValue) + 1)); 
-                    strStartDate            =   JSON.stringify(dateStartDate02).substring(1,11);       
-            }
-
-            jsonParamUrlDataHourly          =  getWeatherDataUrlParam(varWeatherId, strStartDate, strEndDate, varElementMeasurementTypes, varLogInIntervalHourly, CONST_TIMEZONE );
-            
-            getAjaxHourlyData(jsonParamUrlDataHourly,weatherStationIdParamJSON,true);
-
-                //document.querySelector("#idTxtDateInput").valueAsDate = dateStartDate;
-                /*Calling function to calculate and place heatsum value based upon date placed on datepicker*/
-                //funDtPickerHeatSum();
-
-    });
-
-
-    /* Get the parameters of the URL for weather station */
-    function getWeatherDataUrlParam(varWeatherId, paramStartDate, strEndDate, paramElementMeasurementTypes, paramLogInInterval, paramTimeZone )
-    {
-
-
-        var jsonParamUrlDataHourly = '';
-
-        if(isSpecialWeatherStation(varWeatherId)) 
-        {
-            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();
-    });
-
-
-    /* Hourly data and Convert hourly data to daily data */
-    function setConvertHourlyData(data, flagActivate)
-    {
-        resultHeatSumDailyData              =   [];
-        var  tmElementMeasurementType       =   '';
-        var  tmSUM                          =   0.0;
-        var  strDate01_heatSum              =   '';
+<script type="module">
+    import CydiaPomonella from "../static/js/cydiapomonella.js";
+    const cydiaPomonella = new CydiaPomonella();
+    const userSettingsFields = ["latitude","longitude","timezone","weatherStationId","heatSumStartDate"];
+    const userSettingsRadios = ["weatherdataType","radioDays"];
+    window.onload = (event) => {
+        cydiaPomonella.renderWeatherstations();
+        //console.info(getNameSpaced("{{ form_id }}",userSettingsFields.concat(userSettingsRadios)));
+        let userSettings = getLocalSettings(getNameSpaced("{{ form_id }}",userSettingsFields.concat(userSettingsRadios)), false);
         
-        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);
-
-
-        date01                              =   new Date(strDate01);
-        date02                              =   new Date(strDate01);
-
-
-        for (var i=0; i<data.length; i++)
+        // Settings found, render form and run model
+        if(Object.keys(userSettings).length > 0)
         {
-           var varDtStartDate               =   undefined;
-           var radioDaysValue               =   $("input[name='radioDays']:checked").val();
-
-           var varDtData                    =   new Date($.trim(getStrConvertedDate(data[i].timeMeasured).substring(0,11)));
-           if(flagActivate)
-           {
-                varDtStartDate              =   new Date($.trim(getStrConvertedDate(getAdjustDate(new Date(),radioDaysValue)).substring(0,11)));
-           }
-           else
-           {
-                var startDate               = new Date($.trim($('#idTxtDateInput').val()));
-                varDtStartDate              = new Date($.trim(JSON.stringify(getAdjustDate(startDate, 1 )).substring(1,11)));
-           }
-
-            if (varDtData.getTime() >= varDtStartDate.getTime())
+            userSettingsFields.forEach((fieldId) =>{
+                document.getElementById(fieldId).value = userSettings[`{{ form_id }}.${fieldId}`];
+            });
+            userSettingsRadios.forEach((radioName) => {
+                let radioValue = userSettings[`{{ form_id }}.${radioName}`];
+                document.getElementsByName(radioName).forEach((radioElement) => {
+                    radioElement.checked = (radioElement.value == radioValue);
+                });
+            });
+
+            // Check that heat sum start date is in current year. If not: Update to current year
+            let heatSumStartDateElement = document.getElementById("heatSumStartDate");
+            let heatSumStartDate = moment(heatSumStartDateElement.value);
+            if(heatSumStartDate.year() != moment().year())
             {
-
-            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;
-                        }
-                        break;
-                case '20':
-                        if(data[i].elementMeasurementTypeId==='TM')
-                        {
-                            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;
-                        }
-                        break;           
-                case '22':
-                        if(data[i].elementMeasurementTypeId==='TM')
-                        {
-                            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;
-                        }
-                        break;                                   
-
-                default:
-                    break;
+                heatSumStartDate.year(moment().year());
+                heatSumStartDateElement.value = heatSumStartDate.format(cydiaPomonella.DATE_FORMAT);
             }
 
-            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
-                    });
-                }
-                var decimalPlace            =   2;
-
-                /* Avoiding empty data */
-                if($.trim(time19))
-                {
-                    /* Creating JSON list for data table */
-                    resultConvertData.push({
-                                            resultDate: strDate01,
-                                            'time19' : time19,
-                                            'time20' : time20, 
-                                            'time21' : time21,
-                                            'time22' : time22,
-                                            'time23' : time23,
-                                            'rainFall':  rainFall.toFixed(1) 
-                                        });
-                }
-
-                strDate01                   =  JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11);
-                rainFall                    =   0.0;
-
-                tmSUM                       =   0.0;
-                tmElementMeasurementType    = '';
-                strDate01_heatSum           = data[i].timeMeasured;
-            }           
-
 
-            if(data[i].elementMeasurementTypeId === 'RR')
+            if(document.getElementById("coordinates").checked)
             {
-                                rainFall    =   rainFall +  data[i].value; 
+                displayCoordinatesInput();
+                getTimezoneForPoint(inputLatitudeElement.value, inputLongitudeElement.value);
             }
-
-
-
-            /* HEAT SUM -- Daily TM */
-            if(data[i].elementMeasurementTypeId==='TM')
+            else
             {
-                tmElementMeasurementType    =   data[i].elementMeasurementTypeId;
-                tmSUM                       =   tmSUM + data[i].value;
+                displayWeatherstationInput();
             }
 
-            } 
-
-        }
-
-        if(flagActivate)
-        {
-            getWeatherDataTable(resultConvertData);
+            cydiaPomonella.runModel();
         }
-
-        
     }
-
-
-
-    /*function which return decimal with required (e.g. 2) places without rounding */
-    function getDecimalPlace(num, place)
-    {
-        return num.toString().match(/^-?\d+(?:\.\d{0,place})?/)[0];
-    }
-
-    /* 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 counter                         =   undefined;
-        
-        if($.trim(data))
-        {
-            
-            for (var i=0; i<data.length; i++)
-            {
-                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
+    // We need to do it this way to keep the "this" reference of the class
+    window.runModel = function () {cydiaPomonella.runModel()};
+    window.runHeatSumCalculations = function () {cydiaPomonella.runHeatSumCalculations();};
+    
+    window.storeUserSettings = function() {
+        let userSettings = {};
+        userSettingsFields.forEach((fieldId) => {
+            userSettings[`{{ form_id }}.${fieldId}`] = document.getElementById(fieldId).value;
+        });
+        userSettingsRadios.forEach((radioName) => {
+            document.getElementsByName(radioName).forEach((radioElement) => {
+                if(radioElement.checked)
                 {
-                    TM_Daily                =   data[counter].value;
-                    TM_Calc                 =   TM_Daily - TM_BASE;
-                    TM_NON_NEGATIVE         =   TM_NON_NEGATIVE + ((TM_Calc<0) ? 0 : TM_Calc);
-                    ++counter;
+                    userSettings[`{{ form_id }}.${radioName}`] = radioElement.value;
                 }
+            });
 
-            }
-            $('#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('');
-        }
-    }
-
-
-    /* Populate the data table */
-    function getWeatherDataTable(weatherData)
-    {
-        if($.trim(weatherData))
-                            {
-                                $('#idTableWeather').DataTable({
-                                    "sDom"              :   '<t><"clearfix">', 
-									"lengthMenu"        :   [[50, -1], ["All"]],
-                                    "aaData"            :   weatherData,
-                                    "aoColumns"         : 
-                                    [
-                                        {
-                                            "mData"     :   "resultDate",
-                                            "render"    :   function(data, type, full, meta)
-                                                            {
-                                                                return data;
-                                                            },
-                                            "sClass" :  "colCenter",
-                                            "bSortable" : false
-                                        },
-                                        {
-                                            "mData" : "time19",
-                                            "render" :function(data, type, full, meta)
-                                                        {
-                                                            return data
-                                                        },
-                                            "sClass" :  "colCenter",
-                                            "bSortable" : false
-
-                                        },
-                                        {
-                                            "mData" : "time20",
-                                            "render" :function(data, type, full, meta)
-                                                        {
-                                                            return data
-                                                        },
-                                            "sClass" :  "colCenter",                                                        
-                                            "bSortable" : false
-                                        },
-                                         
-                                        {
-                                            "mData" : "time21",
-                                            "render" :function(data, type, full, meta)
-                                                        {
-                                                            return data
-                                                        },
-                                            "sClass" :  "colCenter",                                                        
-                                            "bSortable" : false
-                                        },
- {
-                                            "mData" : "time22",
-                                            "render" :function(data, type, full, meta)
-                                                        {
-                                                            return data
-                                                        },
-                                            "sClass" :  "colCenter",
-                                            "bSortable" : false
-                                        },
-                                        {
-                                            "mData" : "time23",
-                                            "render" :function(data, type, full, meta)
-                                                        {
-                                                            return data
-                                                        },
-                                            "sClass" :  "colCenter",                                                        
-                                            "bSortable" : false
-                                        } ,
-                                        {
-                                            "mData" : "rainFall",
-                                            "render" :function(data, type, full, meta)
-                                                        {
-                                                            return data
-                                                        },
-                                            "sClass" :  "colCenter",                                                        
-                                            "bSortable" : false
-                                        }                                                
-                                    ], 
-                                    destroy             : true
-                                });
-                                $('.dtr-data').addClass('text-wrap');
-                            }
-                            else
-                            {
-                                alert('Error in display of Data');
-
-                            }
+        });
+        storeLocalSettings(userSettings);
     }
-    
-
-    
-
-    /* Fetch hourly data through ajax call */
-    function getAjaxHourlyData(jsonParamUrlDataHourly,idJsonParam, flagActivate)
-    {
-        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                 :   strUrl,
-                        type                :   'GET',
-                        cache               :   false,
-                        data                :   jsonParamUrlDataHourly,
-                        success             :   function (data) {
-                            resultHeatSumDailyData  = []; /* Re initialize */
-                            resultData              = [];
-                            if($.trim(data))
-                            {
-                                $('#idTableWeather').show();
-                                $('#idDivHeatSum').show();
-
-                                $('#divIdErrorWeatherStation').hide();
-                                resultData  =   data;
-                                setConvertHourlyData(resultData, flagActivate);
-
-                                if($.trim(idJsonParam.pas))
-                                {
-                                    
-                                    getHeatSumValue(resultHeatSumDailyData);
-                                    resultHeatSumDailyData  = [];
-                                }
-                                else
-                                {
-                                    funDtPickerHeatSum();
-                                }
-
-                                
-                            }
-                            else{
-                                $('#idDivHeatSum').hide();
-                                $('#divIdErrorWeatherStation').show();
-                                $('#idTableWeather').hide();
-                            }
-                        },
-                        error : function(xhr, status, error)
-                        {
-                            $('#idTableWeather').hide();
-                            $('#idDivHeatSum').hide();
-
-                        }
-            }); 
-
-            return resultData;
 
+    /* ########   MAP UI FUNCTIONALITY  ######### */
+    import MapModal from 'https://logic.testvips.nibio.no/js/mapModal.js';
+    const inputLatitudeElement = document.getElementById("latitude");
+    const inputLongitudeElement = document.getElementById("longitude");
+    const selectWeatherstationElement = document.getElementById("weatherStationId");
+   
+    window.displayWeatherstationInput = function () {
+        document.getElementById("weatherstation").checked = true;
+		document.getElementById('input-weatherstation').style.display="block";
+		document.getElementById('input-coordinates').style.display="none";
+    };
+    window.displayCoordinatesInput = function () {
+        document.getElementById("coordinates").checked = true;
+		document.getElementById('input-weatherstation').style.display="none";
+		document.getElementById('input-coordinates').style.display="block";
+		selectWeatherstationElement.selectedIndex = 0;
     }
 
+    // Callback for coordinates map
+    function selectCoordinates(coordinatesData) {
+		const selectedLatitude = coordinatesData ? coordinatesData.latitude : undefined;
+		const selectedLongitude = coordinatesData ? coordinatesData.longitude : undefined;
 
+		if(selectedLatitude && selectedLongitude) {
+			inputLatitudeElement.value = selectedLatitude;
+			inputLongitudeElement.value = selectedLongitude;
+		}
+        getTimezoneForPoint(selectedLatitude, selectedLongitude);
+        cydiaPomonella.runModel();
+        storeUserSettings();
+	}
+
+    const getTimezoneForPoint = (latitude, longitude) => {
+		getLocationInformation(latitude, longitude).then(locationInfo => {
+			document.getElementById("timezone").value = locationInfo.timezone;
+			document.getElementById("gridPointInfo").innerHTML = `<b>{% trans "Location name" %}</b> ${locationInfo.location}<br>
+																	<b>{% trans "Latitude" %}</b> ${locationInfo.latitude}<br>	
+																	<b>{% trans "Longitude" %}</b> ${locationInfo.longitude}<br>
+																	<b>{% trans "Timezone" %}</b> ${locationInfo.timezone}`
+		});
+	}
+
+    let selectedPoint = null;
+    let selectedFeature = undefined;
+    window.openCoordinatesMap = () => {
+		if (inputLatitudeElement.value && inputLongitudeElement.value) {
+			selectedPoint = 1;
+			selectedFeature = { 
+				"type": "FeatureCollection", "features": [
+					{
+						"type": "Feature",
+						"geometry": {
+							"type": "Point",
+							"coordinates": [parseFloat(inputLongitudeElement.value), parseFloat(inputLatitudeElement.value)]
+						},
+						"properties": {
+							"pointOfInterestId": selectedPoint,
+						}
+					}]
+			};
+		} else {
+			selectedPoint = undefined;
+			selectedFeature = undefined;
+		}
 
-    /* Fetch Daily data through ajax call */
-    function getAjaxDailyData(jsonParamUrlDataHourly,idJsonParam)
-    {
-        var resultData = [];
-            $.ajax({
-                            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)
-                            {
-                                        //TODO
-                            }
-                }); 
-        
-            return resultData;
-    }
-
-
-    /* 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);
-        return result;
-    }
+		// TODO Open map with currently selected language! (not 'nb')
 
-    /* Converted date as per TimeZone */
-    function getStrConvertedDate(existingDate)
-    {
-        return moment.tz(existingDate,CONST_TIMEZONE).format('YYYY-MM-DD HH:mm');
-    }
+		const isPoiMap = false; // Map should enable selection of coordinates (not pois)
+        const allowNewPoints = true; // User should be able to select new pois
+        const coordinatesMapInstance = new MapModal('coordinates-map', selectedFeature, 'nb', isPoiMap, allowNewPoints, selectCoordinates);
+		coordinatesMapInstance.openModal(selectedPoint);
+	}
 
-    /* Date difference */
-    function dateDifferenceInDays(startDate, endDate)
+    function selectPoi(poiData)
     {
-        var strEndDate                      = JSON.stringify(endDate).substring(1,11);
-        var dtEndDate                       = new Date(strEndDate);
-        var result                          = (dtEndDate - startDate)/(1000*60*60*24);
-        return result;
+        const selectedId = poiData ? poiData.pointOfInterestId : undefined;
+		if (selectedId) {
+			const optionIndex = Array.from(selectWeatherstationElement.options).findIndex(option => option.value == selectedId);
+			if (optionIndex !== -1) {
+				selectWeatherstationElement.selectedIndex = optionIndex;
+			} 
+		}
+        cydiaPomonella.runModel();
     }
 
-</script> 
-
+    window.openPoiMap = () => {
+		fetch("https://lmt.nibio.no/services/rest/weatherstation/ipmdecisions", {
+                method: 'GET'
+            })
+            .then(response => response.json())
+            .then(geoJson => {
+                // FILTER with only Ids from the Cydia station list
+                let filteredFeatures = geoJson["features"]
+                .filter(feature => cydiaPomonella.appleWeatherStationIds.indexOf(feature.id) >= 0)
+                .map(feature => {
+                    feature["properties"]["pointOfInterestName"] = feature["properties"]["name"];
+                    feature["properties"]["pointOfInterestId"] = feature["id"];
+                    feature["properties"]["pointOfInterestTypeId"] = 1; // Type = Weather station
+                    return feature;
+                });
+                geoJson["features"] = filteredFeatures;
+				const isPoiMap = true; // Map should enable selection of pois
+		        const allowNewPoints = false; // User should not be able to create new pois
+				const poiMapInstance = new MapModal('poi-map', geoJson, 'nb', isPoiMap, allowNewPoints, selectPoi);
+                const selectedPoiId = cydiaPomonella.getSelectedWeatherstation();
+                poiMapInstance.openModal(selectedPoiId);
+            })
+            .catch(error => {
+                console.error('Unable to retrieve weatherstation geojson', error);
+            });
+	}
+
+</script>
 {% endblock %}
 
 {% block content %}
-
-<div class="col-sm-10">
-    <div id='divIdAjaxLoader' class="alert alert-warning alert-dismissable" style="display: none;" ><span class=".glyphicon .glyphicon-minus-sign"></span> <center><b>{% trans "Loading weather data !! If it takes forever, please contact the VIPS team." %}</b> </center></div>
+<div class="singleBlockContainer">
+<div class="row">
+    <div class="col-md-12">
+        <h1>{% trans "Calculate the risk of attack by the coddling moth" %}</h1>
+        <p>{% trans "Check night temps and rainfall for weather stations and locations in regions with coddling moth." %} <a href="https://www.vips-landbruk.no/information/12/#eplevikler">{% trans "Read more" %}</a>. <br>
+            {% trans "If all criteria for oviposition are met, calculate heat sum from start date below." %}</p>
+    </div>
 </div>
-<div class="clearfix"></div>
 
-<div class="col-md-12" >
-    <h1>{% trans "Calculate the risk of attack by the coddling moth" %}</h1>
+
+<div class="row">
+    <div class="col-sm-10">
+        <div id='divIdErrorWeatherStation' class="alert alert-danger .alert-dismissable" style="display: none;"><span class=".glyphicon .glyphicon-minus-sign"></span> {% trans "No weather data available from the selected weather station" %}</div>
+    </div>
 </div>
-<div class="col-md-12">
-    <h4>Her kan du sjekke kveldstemperatur og nedbør for værstasjoner i regioner med eplevikler. <a href="https://www.vips-landbruk.no/information/12/#eplevikler">Les mer her</a>. <br> Dersom alle kriteriene for egglegging er oppfylt, beregn påløpt varmesum ved å skrive inn startdato nedenfor.</h4>
+<div class="row">
+    <div class="col-md-6">
+        <div class="form-group">
+					<h4>{% trans "I want to use weather data" %}</h4>
+					<div class="radio">
+						<label>
+							<input type="radio" name="weatherdataType" id="coordinates" value="coordinates" onchange="displayCoordinatesInput();storeUserSettings();">
+                            {% trans "for a specific location (coordinates)" %}
+						</label>
+						<div id="input-coordinates" class="form-inline" style="margin-top: 10px; display: none;"">
+                            <input type="hidden" class="form-control" name="latitude" id="latitude" placeholder="Breddegrad" aria-label="Breddegrad">
+                            <input type="hidden" class="form-control" name="longitude" id="longitude" placeholder="Lengdegrad" aria-label="Lengdegrad">
+                            <input type="hidden" class="form-control" name="timezone" id="timezone" placeholder="Tidssone" aria-label="Tidssone">
+                            <div id="gridPointInfo"></div>
+							<button type="button" class="btn btn-primary" onclick="openCoordinatesMap();" style="margin-left: 5px;"><i class="fa fa-map-marker fa-lg"></i>&nbsp;&nbsp;{% trans "Select in map" %}</button>
+						</div>
+						<div id="coordinates-map" class="map-modal"></div>
+					</div>
+					<div class="radio">
+						<label>
+						  <input type="radio" name="weatherdataType" id="weatherstation" value="weatherstation" onchange="displayWeatherstationInput();storeUserSettings();">
+						  {% trans "from a weather station" %}
+						</label>
+						<div id="input-weatherstation" class="form-inline" style="margin-top: 10px;" >
+							<select name="weatherStationName" id="weatherStationId" class="form-control" style="width: 60%;" onchange="runModel();storeUserSettings();">
+                                <option value="-1">-- {% trans "Select weather station" %} --</option>
+                            </select>
+							<button type="button" class="btn btn-primary" onclick="openPoiMap()" style="margin-left: 5px;"><i class="fa fa-map-marker fa-lg"></i>&nbsp;&nbsp;{% trans "Select in map" %}</button>
+						</div>
+						<div id="poi-map" class="map-modal"></div>
+					</div>
+					<span class="help-block" id="{{ form_id }}_latitude_validation"></span>
+					<span class="help-block" id="{{ form_id }}_weatherStationId_validation"></span>
+					<span class="help-block" id="{{ form_id }}_longitude_validation"></span>
+				</div>
+        
+    </div>
+    <div class="col-md-6">
+        <form>
+            <h4>{% trans "I want to get night temperatures and rainfall back in time:" %} </h4>
+            <label class="radio-inline">
+                <input type="radio" name="radioDays" value="7" checked onclick="runModel(); storeUserSettings();">7 {% trans "days" %}
+            </label>
+            <label class="radio-inline">
+                <input type="radio" name="radioDays" value="14" onclick="runModel(); storeUserSettings();">14 {% trans "days" %}
+            </label>
+            <label class="radio-inline">
+                <input type="radio" name="radioDays" value="21" onclick="runModel(); storeUserSettings();">21 {% trans "days" %}
+            </label>
+        </form>
+
+    </div>
 </div>
-<div class="clearfix"></div>
-    <div class="container-fluid">
-    <div class="row">
-        <div class="col-sm-10">
-            <div id='divIdErrorWeatherStation' class="alert alert-danger .alert-dismissable" style="display: none;" ><span class=".glyphicon .glyphicon-minus-sign"></span> {% trans "No weather data available from the selected weather station" %}</div>
-        </div>
+<div class="row" id="progressIconRow" style="margin-bottom: 10px; display: none;">
+    <div class="col-md-6">
+        <button type="button" class="btn btn-info" style="margin-left: 5px;"><i class="fa fa-hourglass-half fa-lg"></i>&nbsp;&nbsp;{% trans "Please wait..." %}</button>
     </div>
-    <div class="row ">
-        <div class="col-sm-4">
-            <select name="weatherStationName" id="weatherStationId" class="form-control">
-                <option value="-1">-- {% trans "Select weather station" %} --</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">
-            <form>
-                <label class="radio-inline">
-                  <input type="radio" name="radioDays" class="clsRadioDays" value="7" checked>7 {% trans "days" %} 
-                </label>
-                <label class="radio-inline">
-                  <input type="radio" name="radioDays" class="clsRadioDays" value="14">14 {% trans "days" %}
-                </label>
-                <label class="radio-inline">
-                  <input type="radio" name="radioDays" class="clsRadioDays" value="21">21 {% trans "days" %}
-                </label>
-              </form>
-    
-        </div>
-    
-        <div class="row">
-            <div class="col-sm-10">
-                <table id="idTableWeather" class="table table-striped table-bordered dt-responsive nowrap collapsed " style="width:fit-content; display: none;">
-                    <thead>
-                        <tr>
-                            <th>{% trans "Date" %}</th>
-                            <th>{% trans "Temp at" %} 19</th>
-                            <th>{% trans "Temp at" %} 20</th>
-                            <th>{% trans "Temp at" %} 21</th>
-                            <th>{% trans "Temp at" %} 22</th>
-                            <th>{% trans "Temp at" %} 23</th>
-                            <th>{% trans "Daily rainfall" %}, mm</th>
-                        </tr>
-                    </thead>
-                 </table>
-    
-            </div>
-    
-        </div>
-    
-    
+</div>
+
+<div class="row">
+    <div class="col-sm-10">
+        <table id="weatherData" class="table table-bordered" style="display: none;">
+            <thead>
+                <tr>
+                    <th>{% trans "Date" %}</th>
+                    <th>{% trans "Temp at" %} 19</th>
+                    <th>{% trans "Temp at" %} 20</th>
+                    <th>{% trans "Temp at" %} 21</th>
+                    <th>{% trans "Temp at" %} 22</th>
+                    <th>{% trans "Temp at" %} 23</th>
+                    <th>{% trans "Daily rainfall" %}, mm</th>
+                </tr>
+            </thead>
+            <tbody id="tableBody"></tbody>
+        </table>
+
     </div>
+
 </div>
 
-<div class="container-fluid" id="idDivHeatSum" style="display: none;">
-    <div class="row ">
+<div class="container-fluid"  id="heatSumContainer" style="display: none;">
+    <div class="row" style="margin-bottom: 20px;">
         <h3>{% trans "Heat sum" %}</h3>
         <form class="form-inline">
             <div class="form-group form-inline">
-
-                <label for="nameTxtDateInput">{% trans "Calculate heat sum from date" %}:</label>
-                <input id="idTxtDateInput" name="nameTxtDateInput" class="form-control" type="date" placeholder="yyyy-mm-dd" onkeydown="return false" value="{% now "Y" %}-05-01" style="line-height: inherit;"/>
+                <label for="heatSumStartDate">{% trans "Calculate heat sum from date" %}:</label>
+                <input id="heatSumStartDate" name="heatSumStartDate" class="form-control" type="date" placeholder="yyyy-mm-dd" onchange="runHeatSumCalculations();storeUserSettings();" value="{% now "Y" %}-05-01" />
             </div>
-            <!-- button type="submit" class="btn btn-default">Submit</button -->
         </form>
     </div>
-    <div><br></div>
-    <div class="row alert alert-success">
-    	{% trans "Heat sum, with a base temperature of 10 degrees Celcius, calculated for " %} <b><span id='idSpanWeatherStationName'>-</span></b>  {% trans "weather station for the period starting with" %}  <b><span id="idSpanStartDate">-</span></b> {% trans "and ending with" %} <b><span id="idSpanEndDate">--</span></b>  (<b><span id="idSpanDateDifference">-</span></b> {% trans "days" %}) {% trans "is" %} : <b><span id="idDivResultNonNegative"></span></b> {% trans "day degrees" %}
-    </div>
-</div>
 
+    <div class="row alert alert-success" id="heatSumResult"></div>
+</div>
 
+<div class="row" style="height: 50px;"></div>
 
+</div>
 {% endblock %}
\ No newline at end of file
diff --git a/cydiapomonella/templates/cydiapomonella/index_old.html b/cydiapomonella/templates/cydiapomonella/index_old.html
new file mode 100644
index 0000000000000000000000000000000000000000..f2d2ede5546f215dad09f6a0a852b982aa754b3e
--- /dev/null
+++ b/cydiapomonella/templates/cydiapomonella/index_old.html
@@ -0,0 +1,821 @@
+{% extends "base.html" %}
+{% load static %}
+{% comment %}
+
+#
+# Copyright (c) 2018 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/>.
+# 
+
+# Author     :  Bhabesh
+# Start date :  June-2020 
+#
+#
+{% endcomment %}
+{% load i18n l10n %}
+{% block title%}{% trans "Cydia pomonella" %}{%endblock%}
+
+{% block extendCSS %}
+<link rel="stylesheet"  type="text/css" href="{% static 'css/datatables.min.1.10.21.css' %}"/>
+<link href="{% static "css/3rdparty/jquery-ui.min.css" %}" rel="stylesheet" media="screen" />
+{% endblock %}
+{% block extendJS %}
+<script src="{% static "js/3rdparty/jquery-ui.min.js" %}"></script>
+<script src="{% static "js/datatables.min.1.10.21.js" %}"></script>
+<script src="{% static "js/handlebars4.7.6.js" %}"></script>
+
+<script src="{% static "js/moment.min.js" %}"></script>
+<script src="{% static "js/moment-timezone.js" %}"></script>
+<script src="{% static "js/moment-timezone-with-data.min.js" %}"></script>
+
+
+
+{% endblock %}
+{% block customCSS %}
+    <style>
+        /* Over ride datatable property to maintain default color */
+        .navbar-default {
+            background-color: #fff;
+            border-color:#fff;
+        }
+        
+        /* Text align center - used in datatable */
+        .colCenter {text-align: center;}
+
+        /* Data table odd stripe color */
+/*
+        .table-striped>tbody>tr:nth-child(odd)>th {
+            background-color: #ebf1d4 
+        }
+*/ 
+        /* Data table even stripe color */
+       .table-striped>tbody>tr:nth-child(even)>td {
+        background-color : #eeeeee 
+        }
+
+        body {
+            font-family: 'Source Sans Pro', sans-serif;
+        }
+        
+        table.table > tbody > tr > td {
+            background-color: white;
+            border-bottom: 3px solid #d9e6e4;
+            }
+		#contentContainer {
+			min-height: 250px;
+		}
+
+    </style>
+{% endblock %}
+{% block customJS %}
+{% csrf_token %}
+<script type="text/javascript">
+
+    var CONST_TIMEZONE  =   'Europe/Oslo';
+    var dateToday       =   new Date();
+    var dateYesterday   =   getAdjustDate(dateToday,1); 
+
+    var strEndDate      =   JSON.stringify(dateToday).substring(1,11);   
+    var CON_idSpecial   =   {
+                                    "Helgøy"    :   "536"
+                                ,   "Skiftun"   :   "537"
+                            }
+
+    /* Page onload function */
+    $(function(){
+        /* Calendar will not accept future dates including today */
+        //document.getElementById('idTxtDateInput').setAttribute("max", JSON.stringify(dateYesterday).substring(1,11));
+        $('#idTxtDateInput').removeClass('hasDatepicker');
+    });
+
+    $(document).ajaxStart(function(){
+        // Show image container
+        $("#divIdAjaxLoader").show();
+    });
+
+    $(document).ajaxComplete(function(){
+        // Hide image container
+        $("#divIdAjaxLoader").hide();
+    });
+
+
+    /* Function for check whether the choosed weather station is within special category (e.g. devis) */
+    function isSpecialWeatherStation(paramStationId)
+    {
+        var result = false;
+        $.each( CON_idSpecial, function( key, value ) {
+            if (paramStationId              === value)
+            {
+                result                      =   true;
+                return false; // exit the each loop
+            }
+        });
+        return result;
+    }
+
+
+
+
+    /* Function works on date picker onClose event */
+    function funDtPickerHeatSum()
+    {
+
+        var varWeatherId                =   $('#weatherStationId').find(':selected').val();
+        var strStartDate                =   undefined;
+        var varLogInIntervalHourly      =   '1h';
+        var varLogInIntervalDaily       =   '1d';
+        var varElementMeasurementTypes  =   ['TM'];
+
+        var jsonParamUrlData            =   '';
+        
+        var weatherStationIdParamJSON   =   getJsonData(varWeatherId);
+
+            if(typeof varWeatherId      === "undefined") 
+            {
+                varWeatherId            =   '$(#weatherStationId)';
+            }
+            else{
+                varWeatherId            =   getJsonData(varWeatherId).id;
+            }
+            
+            var startDate               =   new Date($('#idTxtDateInput').val());
+
+
+            if(isSpecialWeatherStation(varWeatherId)) 
+            {
+                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);
+            }
+
+    }
+
+    /* Date input  to get heat sum calculation */
+  /*
+    $('#idTxtDateInput').datepicker({
+        dateFormat: 'yy-mm-dd',
+        showOn: "both",
+        firstDay:1,
+        maxDate : 0,
+        onClose: function( selectedDate ) {
+            funDtPickerHeatSum();
+         }
+    });
+  */
+
+  $('#idTxtDateInput').change(function(){
+        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 varElementMeasurementTypes  =   ['TM','RR'];
+            var varLogInIntervalHourly      =   '1h';
+
+            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); 
+
+            if(isSpecialWeatherStation(varWeatherId)) 
+            {
+                var dateStartDate02         =   getAdjustDate(dateToday, (parseInt(radioDaysValue) + 1)); 
+                    strStartDate            =   JSON.stringify(dateStartDate02).substring(1,11);       
+            }
+
+            jsonParamUrlDataHourly          =  getWeatherDataUrlParam(varWeatherId, strStartDate, strEndDate, varElementMeasurementTypes, varLogInIntervalHourly, CONST_TIMEZONE );
+            
+            getAjaxHourlyData(jsonParamUrlDataHourly,weatherStationIdParamJSON,true);
+
+                //document.querySelector("#idTxtDateInput").valueAsDate = dateStartDate;
+                /*Calling function to calculate and place heatsum value based upon date placed on datepicker*/
+                //funDtPickerHeatSum();
+
+    });
+
+
+    /* Get the parameters of the URL for weather station */
+    function getWeatherDataUrlParam(varWeatherId, paramStartDate, strEndDate, paramElementMeasurementTypes, paramLogInInterval, paramTimeZone )
+    {
+
+
+        var jsonParamUrlDataHourly = '';
+
+        if(isSpecialWeatherStation(varWeatherId)) 
+        {
+            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();
+    });
+
+
+    /* Hourly data and Convert hourly data to daily data */
+    function setConvertHourlyData(data, flagActivate)
+    {
+        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);
+
+
+        date01                              =   new Date(strDate01);
+        date02                              =   new Date(strDate01);
+
+
+        for (var i=0; i<data.length; i++)
+        {
+           var varDtStartDate               =   undefined;
+           var radioDaysValue               =   $("input[name='radioDays']:checked").val();
+
+           var varDtData                    =   new Date($.trim(getStrConvertedDate(data[i].timeMeasured).substring(0,11)));
+           if(flagActivate)
+           {
+                varDtStartDate              =   new Date($.trim(getStrConvertedDate(getAdjustDate(new Date(),radioDaysValue)).substring(0,11)));
+           }
+           else
+           {
+                var startDate               = new Date($.trim($('#idTxtDateInput').val()));
+                varDtStartDate              = new Date($.trim(JSON.stringify(getAdjustDate(startDate, 1 )).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          =   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;
+                        }
+                        break;           
+                case '21':
+                        if(data[i].elementMeasurementTypeId==='TM')
+                        {
+                            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;
+                        }
+                        break; 
+                case '23':
+                        if(data[i].elementMeasurementTypeId==='TM')
+                        {
+                            time23          =   parseFloat(data[i].value).toFixed(1);
+                            tempval         =   data[i].elementMeasurementTypeId;
+                        }
+                        break;                                   
+
+                default:
+                    break;
+            }
+
+            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
+                    });
+                }
+                var decimalPlace            =   2;
+
+                /* Avoiding empty data */
+                if($.trim(time19))
+                {
+                    /* Creating JSON list for data table */
+                    resultConvertData.push({
+                                            resultDate: strDate01,
+                                            'time19' : time19,
+                                            'time20' : time20, 
+                                            'time21' : time21,
+                                            'time22' : time22,
+                                            'time23' : time23,
+                                            'rainFall':  rainFall.toFixed(1) 
+                                        });
+                }
+
+                strDate01                   =  JSON.stringify(getStrConvertedDate(data[i].timeMeasured)).substring(1,11);
+                rainFall                    =   0.0;
+
+                tmSUM                       =   0.0;
+                tmElementMeasurementType    = '';
+                strDate01_heatSum           = data[i].timeMeasured;
+            }           
+
+
+            if(data[i].elementMeasurementTypeId === 'RR')
+            {
+                                rainFall    =   rainFall +  data[i].value; 
+            }
+
+
+
+            /* HEAT SUM -- Daily TM */
+            if(data[i].elementMeasurementTypeId==='TM')
+            {
+                tmElementMeasurementType    =   data[i].elementMeasurementTypeId;
+                tmSUM                       =   tmSUM + data[i].value;
+            }
+
+            } 
+
+        }
+
+        if(flagActivate)
+        {
+            getWeatherDataTable(resultConvertData);
+        }
+
+        
+    }
+
+
+
+    /*function which return decimal with required (e.g. 2) places without rounding */
+    function getDecimalPlace(num, place)
+    {
+        return num.toString().match(/^-?\d+(?:\.\d{0,place})?/)[0];
+    }
+
+    /* 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 counter                         =   undefined;
+        
+        if($.trim(data))
+        {
+            
+            for (var i=0; i<data.length; i++)
+            {
+                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);
+                    ++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('');
+            $('#idDivResultNonNegative').html('');
+            $('#idSpanDateDifference').html('');
+        }
+    }
+
+
+    /* Populate the data table */
+    function getWeatherDataTable(weatherData)
+    {
+        if($.trim(weatherData))
+                            {
+                                $('#idTableWeather').DataTable({
+                                    "sDom"              :   '<t><"clearfix">', 
+									"lengthMenu"        :   [[50, -1], ["All"]],
+                                    "aaData"            :   weatherData,
+                                    "aoColumns"         : 
+                                    [
+                                        {
+                                            "mData"     :   "resultDate",
+                                            "render"    :   function(data, type, full, meta)
+                                                            {
+                                                                return data;
+                                                            },
+                                            "sClass" :  "colCenter",
+                                            "bSortable" : false
+                                        },
+                                        {
+                                            "mData" : "time19",
+                                            "render" :function(data, type, full, meta)
+                                                        {
+                                                            return data
+                                                        },
+                                            "sClass" :  "colCenter",
+                                            "bSortable" : false
+
+                                        },
+                                        {
+                                            "mData" : "time20",
+                                            "render" :function(data, type, full, meta)
+                                                        {
+                                                            return data
+                                                        },
+                                            "sClass" :  "colCenter",                                                        
+                                            "bSortable" : false
+                                        },
+                                         
+                                        {
+                                            "mData" : "time21",
+                                            "render" :function(data, type, full, meta)
+                                                        {
+                                                            return data
+                                                        },
+                                            "sClass" :  "colCenter",                                                        
+                                            "bSortable" : false
+                                        },
+ {
+                                            "mData" : "time22",
+                                            "render" :function(data, type, full, meta)
+                                                        {
+                                                            return data
+                                                        },
+                                            "sClass" :  "colCenter",
+                                            "bSortable" : false
+                                        },
+                                        {
+                                            "mData" : "time23",
+                                            "render" :function(data, type, full, meta)
+                                                        {
+                                                            return data
+                                                        },
+                                            "sClass" :  "colCenter",                                                        
+                                            "bSortable" : false
+                                        } ,
+                                        {
+                                            "mData" : "rainFall",
+                                            "render" :function(data, type, full, meta)
+                                                        {
+                                                            return data
+                                                        },
+                                            "sClass" :  "colCenter",                                                        
+                                            "bSortable" : false
+                                        }                                                
+                                    ], 
+                                    destroy             : true
+                                });
+                                $('.dtr-data').addClass('text-wrap');
+                            }
+                            else
+                            {
+                                alert('Error in display of Data');
+
+                            }
+    }
+    
+
+    
+
+    /* Fetch hourly data through ajax call */
+    function getAjaxHourlyData(jsonParamUrlDataHourly,idJsonParam, flagActivate)
+    {
+        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                 :   strUrl,
+                        type                :   'GET',
+                        cache               :   false,
+                        data                :   jsonParamUrlDataHourly,
+                        success             :   function (data) {
+                            resultHeatSumDailyData  = []; /* Re initialize */
+                            resultData              = [];
+                            if($.trim(data))
+                            {
+                                $('#idTableWeather').show();
+                                $('#idDivHeatSum').show();
+
+                                $('#divIdErrorWeatherStation').hide();
+                                resultData  =   data;
+                                setConvertHourlyData(resultData, flagActivate);
+
+                                if($.trim(idJsonParam.pas))
+                                {
+                                    
+                                    getHeatSumValue(resultHeatSumDailyData);
+                                    resultHeatSumDailyData  = [];
+                                }
+                                else
+                                {
+                                    funDtPickerHeatSum();
+                                }
+
+                                
+                            }
+                            else{
+                                $('#idDivHeatSum').hide();
+                                $('#divIdErrorWeatherStation').show();
+                                $('#idTableWeather').hide();
+                            }
+                        },
+                        error : function(xhr, status, error)
+                        {
+                            $('#idTableWeather').hide();
+                            $('#idDivHeatSum').hide();
+
+                        }
+            }); 
+
+            return resultData;
+
+    }
+
+
+
+    /* Fetch Daily data through ajax call */
+    function getAjaxDailyData(jsonParamUrlDataHourly,idJsonParam)
+    {
+        var resultData = [];
+            $.ajax({
+                            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)
+                            {
+                                        //TODO
+                            }
+                }); 
+        
+            return resultData;
+    }
+
+
+    /* 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);
+        return result;
+    }
+
+    /* Converted date as per TimeZone */
+    function getStrConvertedDate(existingDate)
+    {
+        return moment.tz(existingDate,CONST_TIMEZONE).format('YYYY-MM-DD HH:mm');
+    }
+
+    /* 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);
+        return result;
+    }
+
+</script> 
+
+{% endblock %}
+
+{% block content %}
+
+<div class="col-sm-10">
+    <div id='divIdAjaxLoader' class="alert alert-warning alert-dismissable" style="display: none;" ><span class=".glyphicon .glyphicon-minus-sign"></span> <center><b>{% trans "Loading weather data !! If it takes forever, please contact the VIPS team." %}</b> </center></div>
+</div>
+<div class="clearfix"></div>
+
+<div class="col-md-12" >
+    <h1>{% trans "Calculate the risk of attack by the coddling moth" %}</h1>
+</div>
+<div class="col-md-12">
+    <h4>Her kan du sjekke kveldstemperatur og nedbør for værstasjoner i regioner med eplevikler. <a href="https://www.vips-landbruk.no/information/12/#eplevikler">Les mer her</a>. <br> Dersom alle kriteriene for egglegging er oppfylt, beregn påløpt varmesum ved å skrive inn startdato nedenfor.</h4>
+</div>
+<div class="clearfix"></div>
+    <div class="container-fluid">
+    <div class="row">
+        <div class="col-sm-10">
+            <div id='divIdErrorWeatherStation' class="alert alert-danger .alert-dismissable" style="display: none;" ><span class=".glyphicon .glyphicon-minus-sign"></span> {% trans "No weather data available from the selected weather station" %}</div>
+        </div>
+    </div>
+    <div class="row ">
+        <div class="col-sm-4">
+            <select name="weatherStationName" id="weatherStationId" class="form-control">
+                <option value="-1">-- {% trans "Select weather station" %} --</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">
+            <form>
+                <label class="radio-inline">
+                  <input type="radio" name="radioDays" class="clsRadioDays" value="7" checked>7 {% trans "days" %} 
+                </label>
+                <label class="radio-inline">
+                  <input type="radio" name="radioDays" class="clsRadioDays" value="14">14 {% trans "days" %}
+                </label>
+                <label class="radio-inline">
+                  <input type="radio" name="radioDays" class="clsRadioDays" value="21">21 {% trans "days" %}
+                </label>
+              </form>
+    
+        </div>
+    
+        <div class="row">
+            <div class="col-sm-10">
+                <table id="idTableWeather" class="table table-striped table-bordered dt-responsive nowrap collapsed " style="width:fit-content; display: none;">
+                    <thead>
+                        <tr>
+                            <th>{% trans "Date" %}</th>
+                            <th>{% trans "Temp at" %} 19</th>
+                            <th>{% trans "Temp at" %} 20</th>
+                            <th>{% trans "Temp at" %} 21</th>
+                            <th>{% trans "Temp at" %} 22</th>
+                            <th>{% trans "Temp at" %} 23</th>
+                            <th>{% trans "Daily rainfall" %}, mm</th>
+                        </tr>
+                    </thead>
+                 </table>
+    
+            </div>
+    
+        </div>
+    
+    
+    </div>
+</div>
+
+<div class="container-fluid" id="idDivHeatSum" style="display: none;">
+    <div class="row ">
+        <h3>{% trans "Heat sum" %}</h3>
+        <form class="form-inline">
+            <div class="form-group form-inline">
+
+                <label for="nameTxtDateInput">{% trans "Calculate heat sum from date" %}:</label>
+                <input id="idTxtDateInput" name="nameTxtDateInput" class="form-control" type="date" placeholder="yyyy-mm-dd" onkeydown="return false" value="{% now "Y" %}-05-01" style="line-height: inherit;"/>
+            </div>
+            <!-- button type="submit" class="btn btn-default">Submit</button -->
+        </form>
+    </div>
+    <div><br></div>
+    <div class="row alert alert-success">
+    	{% trans "Heat sum, with a base temperature of 10 degrees Celcius, calculated for " %} <b><span id='idSpanWeatherStationName'>-</span></b>  {% trans "weather station for the period starting with" %}  <b><span id="idSpanStartDate">-</span></b> {% trans "and ending with" %} <b><span id="idSpanEndDate">--</span></b>  (<b><span id="idSpanDateDifference">-</span></b> {% trans "days" %}) {% trans "is" %} : <b><span id="idDivResultNonNegative"></span></b> {% trans "day degrees" %}
+    </div>
+</div>
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/cydiapomonella/urls.py b/cydiapomonella/urls.py
index a0f60cca70fad7a53271438443a5b172aba70f2a..ed0d4162d5821280bd4981c975bdef99033b2e8b 100644
--- a/cydiapomonella/urls.py
+++ b/cydiapomonella/urls.py
@@ -23,6 +23,8 @@ from django.urls import re_path
 
 from . import views
 
+app_name = "cydiapomonella"
+
 urlpatterns = [
     re_path(r'^$', views.index,name='index'),
 ]
diff --git a/cydiapomonella/views.py b/cydiapomonella/views.py
index d94b97a5064b1490c4df3870f8560e9359a55477..686e79987eb3356c97932f180c2b4783cba92bca 100644
--- a/cydiapomonella/views.py
+++ b/cydiapomonella/views.py
@@ -29,7 +29,7 @@ from django.http import HttpResponse
 def index(request):
     
     context = {
-
+        "form_id": "cydiapomonella"
     }
     return render(request,'cydiapomonella/index.html', context)
     #return HttpResponse("Hello - 01 !!.. This is new app for VIPSWeb")
\ No newline at end of file
diff --git a/observations/locale/bg/LC_MESSAGES/django.po b/observations/locale/bg/LC_MESSAGES/django.po
index 24ae1e292ef96b9e5a0b8f311d6195feeafe6920..3e687a3ce713895c5c3b920d581f4bab7b34114e 100644
--- a/observations/locale/bg/LC_MESSAGES/django.po
+++ b/observations/locale/bg/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-30 08:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -29,29 +29,31 @@ msgid "Description"
 msgstr ""
 
 #: observations/templates/observations/detail.html:36
-#: observations/templates/observations/index.html:46
-#: observations/templates/observations/index.html:74
+#: observations/templates/observations/index.html:60
+#: observations/templates/observations/index.html:61
+#: observations/templates/observations/index.html:89
 #: observations/templates/observations/index_old.html:63
 #: observations/templates/observations/timeseries.html:34
 msgid "Organism"
 msgstr ""
 
 #: observations/templates/observations/detail.html:38
-#: observations/templates/observations/index.html:50
-#: observations/templates/observations/index.html:75
+#: observations/templates/observations/index.html:65
+#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:90
 #: observations/templates/observations/index_old.html:64
 #: observations/templates/observations/timeseries.html:36
 msgid "Crop"
 msgstr ""
 
 #: observations/templates/observations/detail.html:40
-#: observations/templates/observations/index.html:73
+#: observations/templates/observations/index.html:88
 #: observations/templates/observations/index_old.html:62
 msgid "Date of observation"
 msgstr ""
 
 #: observations/templates/observations/detail.html:43
-#: observations/templates/observations/index.html:77
+#: observations/templates/observations/index.html:92
 #: observations/templates/observations/timeseries.html:23
 #: observations/templates/observations/timeseries.html:28
 msgid "Time series"
@@ -95,32 +97,43 @@ msgstr ""
 msgid "Current date"
 msgstr ""
 
-#: observations/templates/observations/index.html:54
-msgid "Crop categories"
+#: observations/templates/observations/index.html:41
+#: observations/templates/observations/index_old.html:49
+msgid "From"
 msgstr ""
 
-#: observations/templates/observations/index.html:59
+#: observations/templates/observations/index.html:45
+#: observations/templates/observations/index_old.html:53
+msgid "To"
+msgstr ""
+
+#: observations/templates/observations/index.html:52
 msgid "Include registrations without pest presence"
 msgstr ""
 
-#: observations/templates/observations/index.html:62
+#: observations/templates/observations/index.html:70
+#: observations/templates/observations/index.html:71
+msgid "Crop categories"
+msgstr ""
+
+#: observations/templates/observations/index.html:76
 msgid "Filter"
 msgstr ""
 
-#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:82
 msgid "No observations found for specified search criteria"
 msgstr ""
 
-#: observations/templates/observations/index.html:69
+#: observations/templates/observations/index.html:84
 msgid "Download as Excel"
 msgstr ""
 
-#: observations/templates/observations/index.html:76
+#: observations/templates/observations/index.html:91
 #: observations/templates/observations/index_old.html:65
 msgid "Heading"
 msgstr ""
 
-#: observations/templates/observations/index.html:78
+#: observations/templates/observations/index.html:93
 msgid "Details"
 msgstr ""
 
@@ -128,14 +141,6 @@ msgstr ""
 msgid "All pests"
 msgstr ""
 
-#: observations/templates/observations/index_old.html:49
-msgid "From"
-msgstr ""
-
-#: observations/templates/observations/index_old.html:53
-msgid "To"
-msgstr ""
-
 #: observations/templates/observations/index_old.html:55
 msgid "Date search"
 msgstr ""
diff --git a/observations/locale/bs/LC_MESSAGES/django.po b/observations/locale/bs/LC_MESSAGES/django.po
index b23165f9ec0230d0ddb1519c6fe01b6e827e0946..c738aed7dbbdb1d6c033a021ae08f6ba1ec82608 100644
--- a/observations/locale/bs/LC_MESSAGES/django.po
+++ b/observations/locale/bs/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-30 08:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -30,29 +30,31 @@ msgid "Description"
 msgstr ""
 
 #: observations/templates/observations/detail.html:36
-#: observations/templates/observations/index.html:46
-#: observations/templates/observations/index.html:74
+#: observations/templates/observations/index.html:60
+#: observations/templates/observations/index.html:61
+#: observations/templates/observations/index.html:89
 #: observations/templates/observations/index_old.html:63
 #: observations/templates/observations/timeseries.html:34
 msgid "Organism"
 msgstr ""
 
 #: observations/templates/observations/detail.html:38
-#: observations/templates/observations/index.html:50
-#: observations/templates/observations/index.html:75
+#: observations/templates/observations/index.html:65
+#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:90
 #: observations/templates/observations/index_old.html:64
 #: observations/templates/observations/timeseries.html:36
 msgid "Crop"
 msgstr ""
 
 #: observations/templates/observations/detail.html:40
-#: observations/templates/observations/index.html:73
+#: observations/templates/observations/index.html:88
 #: observations/templates/observations/index_old.html:62
 msgid "Date of observation"
 msgstr ""
 
 #: observations/templates/observations/detail.html:43
-#: observations/templates/observations/index.html:77
+#: observations/templates/observations/index.html:92
 #: observations/templates/observations/timeseries.html:23
 #: observations/templates/observations/timeseries.html:28
 msgid "Time series"
@@ -96,32 +98,43 @@ msgstr ""
 msgid "Current date"
 msgstr ""
 
-#: observations/templates/observations/index.html:54
-msgid "Crop categories"
+#: observations/templates/observations/index.html:41
+#: observations/templates/observations/index_old.html:49
+msgid "From"
 msgstr ""
 
-#: observations/templates/observations/index.html:59
+#: observations/templates/observations/index.html:45
+#: observations/templates/observations/index_old.html:53
+msgid "To"
+msgstr ""
+
+#: observations/templates/observations/index.html:52
 msgid "Include registrations without pest presence"
 msgstr ""
 
-#: observations/templates/observations/index.html:62
+#: observations/templates/observations/index.html:70
+#: observations/templates/observations/index.html:71
+msgid "Crop categories"
+msgstr ""
+
+#: observations/templates/observations/index.html:76
 msgid "Filter"
 msgstr ""
 
-#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:82
 msgid "No observations found for specified search criteria"
 msgstr ""
 
-#: observations/templates/observations/index.html:69
+#: observations/templates/observations/index.html:84
 msgid "Download as Excel"
 msgstr ""
 
-#: observations/templates/observations/index.html:76
+#: observations/templates/observations/index.html:91
 #: observations/templates/observations/index_old.html:65
 msgid "Heading"
 msgstr ""
 
-#: observations/templates/observations/index.html:78
+#: observations/templates/observations/index.html:93
 msgid "Details"
 msgstr ""
 
@@ -129,14 +142,6 @@ msgstr ""
 msgid "All pests"
 msgstr ""
 
-#: observations/templates/observations/index_old.html:49
-msgid "From"
-msgstr ""
-
-#: observations/templates/observations/index_old.html:53
-msgid "To"
-msgstr ""
-
 #: observations/templates/observations/index_old.html:55
 msgid "Date search"
 msgstr ""
diff --git a/observations/locale/de/LC_MESSAGES/django.po b/observations/locale/de/LC_MESSAGES/django.po
index 24ae1e292ef96b9e5a0b8f311d6195feeafe6920..3e687a3ce713895c5c3b920d581f4bab7b34114e 100755
--- a/observations/locale/de/LC_MESSAGES/django.po
+++ b/observations/locale/de/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-30 08:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -29,29 +29,31 @@ msgid "Description"
 msgstr ""
 
 #: observations/templates/observations/detail.html:36
-#: observations/templates/observations/index.html:46
-#: observations/templates/observations/index.html:74
+#: observations/templates/observations/index.html:60
+#: observations/templates/observations/index.html:61
+#: observations/templates/observations/index.html:89
 #: observations/templates/observations/index_old.html:63
 #: observations/templates/observations/timeseries.html:34
 msgid "Organism"
 msgstr ""
 
 #: observations/templates/observations/detail.html:38
-#: observations/templates/observations/index.html:50
-#: observations/templates/observations/index.html:75
+#: observations/templates/observations/index.html:65
+#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:90
 #: observations/templates/observations/index_old.html:64
 #: observations/templates/observations/timeseries.html:36
 msgid "Crop"
 msgstr ""
 
 #: observations/templates/observations/detail.html:40
-#: observations/templates/observations/index.html:73
+#: observations/templates/observations/index.html:88
 #: observations/templates/observations/index_old.html:62
 msgid "Date of observation"
 msgstr ""
 
 #: observations/templates/observations/detail.html:43
-#: observations/templates/observations/index.html:77
+#: observations/templates/observations/index.html:92
 #: observations/templates/observations/timeseries.html:23
 #: observations/templates/observations/timeseries.html:28
 msgid "Time series"
@@ -95,32 +97,43 @@ msgstr ""
 msgid "Current date"
 msgstr ""
 
-#: observations/templates/observations/index.html:54
-msgid "Crop categories"
+#: observations/templates/observations/index.html:41
+#: observations/templates/observations/index_old.html:49
+msgid "From"
 msgstr ""
 
-#: observations/templates/observations/index.html:59
+#: observations/templates/observations/index.html:45
+#: observations/templates/observations/index_old.html:53
+msgid "To"
+msgstr ""
+
+#: observations/templates/observations/index.html:52
 msgid "Include registrations without pest presence"
 msgstr ""
 
-#: observations/templates/observations/index.html:62
+#: observations/templates/observations/index.html:70
+#: observations/templates/observations/index.html:71
+msgid "Crop categories"
+msgstr ""
+
+#: observations/templates/observations/index.html:76
 msgid "Filter"
 msgstr ""
 
-#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:82
 msgid "No observations found for specified search criteria"
 msgstr ""
 
-#: observations/templates/observations/index.html:69
+#: observations/templates/observations/index.html:84
 msgid "Download as Excel"
 msgstr ""
 
-#: observations/templates/observations/index.html:76
+#: observations/templates/observations/index.html:91
 #: observations/templates/observations/index_old.html:65
 msgid "Heading"
 msgstr ""
 
-#: observations/templates/observations/index.html:78
+#: observations/templates/observations/index.html:93
 msgid "Details"
 msgstr ""
 
@@ -128,14 +141,6 @@ msgstr ""
 msgid "All pests"
 msgstr ""
 
-#: observations/templates/observations/index_old.html:49
-msgid "From"
-msgstr ""
-
-#: observations/templates/observations/index_old.html:53
-msgid "To"
-msgstr ""
-
 #: observations/templates/observations/index_old.html:55
 msgid "Date search"
 msgstr ""
diff --git a/observations/locale/fi/LC_MESSAGES/django.po b/observations/locale/fi/LC_MESSAGES/django.po
index 24ae1e292ef96b9e5a0b8f311d6195feeafe6920..3e687a3ce713895c5c3b920d581f4bab7b34114e 100644
--- a/observations/locale/fi/LC_MESSAGES/django.po
+++ b/observations/locale/fi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-30 08:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -29,29 +29,31 @@ msgid "Description"
 msgstr ""
 
 #: observations/templates/observations/detail.html:36
-#: observations/templates/observations/index.html:46
-#: observations/templates/observations/index.html:74
+#: observations/templates/observations/index.html:60
+#: observations/templates/observations/index.html:61
+#: observations/templates/observations/index.html:89
 #: observations/templates/observations/index_old.html:63
 #: observations/templates/observations/timeseries.html:34
 msgid "Organism"
 msgstr ""
 
 #: observations/templates/observations/detail.html:38
-#: observations/templates/observations/index.html:50
-#: observations/templates/observations/index.html:75
+#: observations/templates/observations/index.html:65
+#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:90
 #: observations/templates/observations/index_old.html:64
 #: observations/templates/observations/timeseries.html:36
 msgid "Crop"
 msgstr ""
 
 #: observations/templates/observations/detail.html:40
-#: observations/templates/observations/index.html:73
+#: observations/templates/observations/index.html:88
 #: observations/templates/observations/index_old.html:62
 msgid "Date of observation"
 msgstr ""
 
 #: observations/templates/observations/detail.html:43
-#: observations/templates/observations/index.html:77
+#: observations/templates/observations/index.html:92
 #: observations/templates/observations/timeseries.html:23
 #: observations/templates/observations/timeseries.html:28
 msgid "Time series"
@@ -95,32 +97,43 @@ msgstr ""
 msgid "Current date"
 msgstr ""
 
-#: observations/templates/observations/index.html:54
-msgid "Crop categories"
+#: observations/templates/observations/index.html:41
+#: observations/templates/observations/index_old.html:49
+msgid "From"
 msgstr ""
 
-#: observations/templates/observations/index.html:59
+#: observations/templates/observations/index.html:45
+#: observations/templates/observations/index_old.html:53
+msgid "To"
+msgstr ""
+
+#: observations/templates/observations/index.html:52
 msgid "Include registrations without pest presence"
 msgstr ""
 
-#: observations/templates/observations/index.html:62
+#: observations/templates/observations/index.html:70
+#: observations/templates/observations/index.html:71
+msgid "Crop categories"
+msgstr ""
+
+#: observations/templates/observations/index.html:76
 msgid "Filter"
 msgstr ""
 
-#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:82
 msgid "No observations found for specified search criteria"
 msgstr ""
 
-#: observations/templates/observations/index.html:69
+#: observations/templates/observations/index.html:84
 msgid "Download as Excel"
 msgstr ""
 
-#: observations/templates/observations/index.html:76
+#: observations/templates/observations/index.html:91
 #: observations/templates/observations/index_old.html:65
 msgid "Heading"
 msgstr ""
 
-#: observations/templates/observations/index.html:78
+#: observations/templates/observations/index.html:93
 msgid "Details"
 msgstr ""
 
@@ -128,14 +141,6 @@ msgstr ""
 msgid "All pests"
 msgstr ""
 
-#: observations/templates/observations/index_old.html:49
-msgid "From"
-msgstr ""
-
-#: observations/templates/observations/index_old.html:53
-msgid "To"
-msgstr ""
-
 #: observations/templates/observations/index_old.html:55
 msgid "Date search"
 msgstr ""
diff --git a/observations/locale/nb/LC_MESSAGES/django.po b/observations/locale/nb/LC_MESSAGES/django.po
index 28cbdc70709129dfddc87768807694f6ca437c7a..edf02a93fac6e57e7b3575fe3df5c03a93065119 100755
--- a/observations/locale/nb/LC_MESSAGES/django.po
+++ b/observations/locale/nb/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-30 08:43+0100\n"
 "PO-Revision-Date: 2024-06-06 13:42+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -30,29 +30,31 @@ msgid "Description"
 msgstr "Beskrivelse"
 
 #: observations/templates/observations/detail.html:36
-#: observations/templates/observations/index.html:46
-#: observations/templates/observations/index.html:74
+#: observations/templates/observations/index.html:60
+#: observations/templates/observations/index.html:61
+#: observations/templates/observations/index.html:89
 #: observations/templates/observations/index_old.html:63
 #: observations/templates/observations/timeseries.html:34
 msgid "Organism"
 msgstr "Organisme"
 
 #: observations/templates/observations/detail.html:38
-#: observations/templates/observations/index.html:50
-#: observations/templates/observations/index.html:75
+#: observations/templates/observations/index.html:65
+#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:90
 #: observations/templates/observations/index_old.html:64
 #: observations/templates/observations/timeseries.html:36
 msgid "Crop"
 msgstr "Kultur"
 
 #: observations/templates/observations/detail.html:40
-#: observations/templates/observations/index.html:73
+#: observations/templates/observations/index.html:88
 #: observations/templates/observations/index_old.html:62
 msgid "Date of observation"
 msgstr "Observasjonsdato"
 
 #: observations/templates/observations/detail.html:43
-#: observations/templates/observations/index.html:77
+#: observations/templates/observations/index.html:92
 #: observations/templates/observations/timeseries.html:23
 #: observations/templates/observations/timeseries.html:28
 msgid "Time series"
@@ -96,32 +98,43 @@ msgstr "Observasjoner"
 msgid "Current date"
 msgstr "Gjeldende dato"
 
-#: observations/templates/observations/index.html:54
-msgid "Crop categories"
-msgstr "Kulturkategorier"
+#: observations/templates/observations/index.html:41
+#: observations/templates/observations/index_old.html:49
+msgid "From"
+msgstr "Fra"
 
-#: observations/templates/observations/index.html:59
+#: observations/templates/observations/index.html:45
+#: observations/templates/observations/index_old.html:53
+msgid "To"
+msgstr "Til"
+
+#: observations/templates/observations/index.html:52
 msgid "Include registrations without pest presence"
 msgstr "Vis registreringer uten funn"
 
-#: observations/templates/observations/index.html:62
+#: observations/templates/observations/index.html:70
+#: observations/templates/observations/index.html:71
+msgid "Crop categories"
+msgstr "Kulturkategorier"
+
+#: observations/templates/observations/index.html:76
 msgid "Filter"
 msgstr "Gjør utvalg"
 
-#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:82
 msgid "No observations found for specified search criteria"
 msgstr "Ingen observasjoner funnet for angitte søkekriterier"
 
-#: observations/templates/observations/index.html:69
+#: observations/templates/observations/index.html:84
 msgid "Download as Excel"
 msgstr "Last ned som Excel"
 
-#: observations/templates/observations/index.html:76
+#: observations/templates/observations/index.html:91
 #: observations/templates/observations/index_old.html:65
 msgid "Heading"
 msgstr "Tittel"
 
-#: observations/templates/observations/index.html:78
+#: observations/templates/observations/index.html:93
 msgid "Details"
 msgstr "Detaljer"
 
@@ -129,14 +142,6 @@ msgstr "Detaljer"
 msgid "All pests"
 msgstr "Alle organismer"
 
-#: observations/templates/observations/index_old.html:49
-msgid "From"
-msgstr "Fra"
-
-#: observations/templates/observations/index_old.html:53
-msgid "To"
-msgstr "Til"
-
 #: observations/templates/observations/index_old.html:55
 msgid "Date search"
 msgstr "Datosøk"
diff --git a/observations/locale/vi/LC_MESSAGES/django.po b/observations/locale/vi/LC_MESSAGES/django.po
index ac8500b2f08bedcbda1a2baafe7ff60b3a1e96e7..1a57d4fcd11ae5925d307f1d009a2a618a534fbb 100644
--- a/observations/locale/vi/LC_MESSAGES/django.po
+++ b/observations/locale/vi/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-30 08:43+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -29,29 +29,31 @@ msgid "Description"
 msgstr ""
 
 #: observations/templates/observations/detail.html:36
-#: observations/templates/observations/index.html:46
-#: observations/templates/observations/index.html:74
+#: observations/templates/observations/index.html:60
+#: observations/templates/observations/index.html:61
+#: observations/templates/observations/index.html:89
 #: observations/templates/observations/index_old.html:63
 #: observations/templates/observations/timeseries.html:34
 msgid "Organism"
 msgstr ""
 
 #: observations/templates/observations/detail.html:38
-#: observations/templates/observations/index.html:50
-#: observations/templates/observations/index.html:75
+#: observations/templates/observations/index.html:65
+#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:90
 #: observations/templates/observations/index_old.html:64
 #: observations/templates/observations/timeseries.html:36
 msgid "Crop"
 msgstr ""
 
 #: observations/templates/observations/detail.html:40
-#: observations/templates/observations/index.html:73
+#: observations/templates/observations/index.html:88
 #: observations/templates/observations/index_old.html:62
 msgid "Date of observation"
 msgstr ""
 
 #: observations/templates/observations/detail.html:43
-#: observations/templates/observations/index.html:77
+#: observations/templates/observations/index.html:92
 #: observations/templates/observations/timeseries.html:23
 #: observations/templates/observations/timeseries.html:28
 msgid "Time series"
@@ -95,32 +97,43 @@ msgstr ""
 msgid "Current date"
 msgstr ""
 
-#: observations/templates/observations/index.html:54
-msgid "Crop categories"
+#: observations/templates/observations/index.html:41
+#: observations/templates/observations/index_old.html:49
+msgid "From"
 msgstr ""
 
-#: observations/templates/observations/index.html:59
+#: observations/templates/observations/index.html:45
+#: observations/templates/observations/index_old.html:53
+msgid "To"
+msgstr ""
+
+#: observations/templates/observations/index.html:52
 msgid "Include registrations without pest presence"
 msgstr ""
 
-#: observations/templates/observations/index.html:62
+#: observations/templates/observations/index.html:70
+#: observations/templates/observations/index.html:71
+msgid "Crop categories"
+msgstr ""
+
+#: observations/templates/observations/index.html:76
 msgid "Filter"
 msgstr ""
 
-#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:82
 msgid "No observations found for specified search criteria"
 msgstr ""
 
-#: observations/templates/observations/index.html:69
+#: observations/templates/observations/index.html:84
 msgid "Download as Excel"
 msgstr ""
 
-#: observations/templates/observations/index.html:76
+#: observations/templates/observations/index.html:91
 #: observations/templates/observations/index_old.html:65
 msgid "Heading"
 msgstr ""
 
-#: observations/templates/observations/index.html:78
+#: observations/templates/observations/index.html:93
 msgid "Details"
 msgstr ""
 
@@ -128,14 +141,6 @@ msgstr ""
 msgid "All pests"
 msgstr ""
 
-#: observations/templates/observations/index_old.html:49
-msgid "From"
-msgstr ""
-
-#: observations/templates/observations/index_old.html:53
-msgid "To"
-msgstr ""
-
 #: observations/templates/observations/index_old.html:55
 msgid "Date search"
 msgstr ""
diff --git a/observations/locale/zh_Hans/LC_MESSAGES/django.po b/observations/locale/zh_Hans/LC_MESSAGES/django.po
index ac151a14fb19b4d34748734796f9058cc02e9eee..1acbd6ab9874a8564171932a9d6703c0d51a8209 100755
--- a/observations/locale/zh_Hans/LC_MESSAGES/django.po
+++ b/observations/locale/zh_Hans/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-08-20 12:20+0200\n"
+"POT-Creation-Date: 2024-10-30 08:43+0100\n"
 "PO-Revision-Date: 2016-10-27 11:26+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -28,29 +28,31 @@ msgid "Description"
 msgstr ""
 
 #: observations/templates/observations/detail.html:36
-#: observations/templates/observations/index.html:46
-#: observations/templates/observations/index.html:74
+#: observations/templates/observations/index.html:60
+#: observations/templates/observations/index.html:61
+#: observations/templates/observations/index.html:89
 #: observations/templates/observations/index_old.html:63
 #: observations/templates/observations/timeseries.html:34
 msgid "Organism"
 msgstr "生物"
 
 #: observations/templates/observations/detail.html:38
-#: observations/templates/observations/index.html:50
-#: observations/templates/observations/index.html:75
+#: observations/templates/observations/index.html:65
+#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:90
 #: observations/templates/observations/index_old.html:64
 #: observations/templates/observations/timeseries.html:36
 msgid "Crop"
 msgstr "作物"
 
 #: observations/templates/observations/detail.html:40
-#: observations/templates/observations/index.html:73
+#: observations/templates/observations/index.html:88
 #: observations/templates/observations/index_old.html:62
 msgid "Date of observation"
 msgstr "观测时间"
 
 #: observations/templates/observations/detail.html:43
-#: observations/templates/observations/index.html:77
+#: observations/templates/observations/index.html:92
 #: observations/templates/observations/timeseries.html:23
 #: observations/templates/observations/timeseries.html:28
 msgid "Time series"
@@ -96,32 +98,43 @@ msgstr "观测"
 msgid "Current date"
 msgstr ""
 
-#: observations/templates/observations/index.html:54
-msgid "Crop categories"
+#: observations/templates/observations/index.html:41
+#: observations/templates/observations/index_old.html:49
+msgid "From"
 msgstr ""
 
-#: observations/templates/observations/index.html:59
+#: observations/templates/observations/index.html:45
+#: observations/templates/observations/index_old.html:53
+msgid "To"
+msgstr ""
+
+#: observations/templates/observations/index.html:52
 msgid "Include registrations without pest presence"
 msgstr ""
 
-#: observations/templates/observations/index.html:62
+#: observations/templates/observations/index.html:70
+#: observations/templates/observations/index.html:71
+msgid "Crop categories"
+msgstr ""
+
+#: observations/templates/observations/index.html:76
 msgid "Filter"
 msgstr ""
 
-#: observations/templates/observations/index.html:66
+#: observations/templates/observations/index.html:82
 msgid "No observations found for specified search criteria"
 msgstr ""
 
-#: observations/templates/observations/index.html:69
+#: observations/templates/observations/index.html:84
 msgid "Download as Excel"
 msgstr ""
 
-#: observations/templates/observations/index.html:76
+#: observations/templates/observations/index.html:91
 #: observations/templates/observations/index_old.html:65
 msgid "Heading"
 msgstr "标题"
 
-#: observations/templates/observations/index.html:78
+#: observations/templates/observations/index.html:93
 #, fuzzy
 #| msgid "View details"
 msgid "Details"
@@ -131,14 +144,6 @@ msgstr "看细节"
 msgid "All pests"
 msgstr "所有病虫害"
 
-#: observations/templates/observations/index_old.html:49
-msgid "From"
-msgstr ""
-
-#: observations/templates/observations/index_old.html:53
-msgid "To"
-msgstr ""
-
 #: observations/templates/observations/index_old.html:55
 msgid "Date search"
 msgstr ""
diff --git a/observations/templates/observations/index.html b/observations/templates/observations/index.html
index 398e1df4c5075c253eedc9e06c86bb23592a77b5..1fd0c2bfd03976adb6b3e9b681871fbd48c4204c 100644
--- a/observations/templates/observations/index.html
+++ b/observations/templates/observations/index.html
@@ -54,7 +54,7 @@
             </div>
         </div>
     </div>
-    
+
     <div class="row mt-2">
         <div class="form-group col-sm-3">
             <label for="observationPestList">{% trans "Organism" %}</label>
@@ -63,7 +63,7 @@
         </div>
         <div class="form-group col-sm-3">
             <label for="observationCropList">{% trans "Crop" %}</label>
-            <select name="cropId" id="observationCropList" class="form-control chosen-select" data-placeholder="{% trans "Crop" %}">    
+            <select name="cropId" id="observationCropList" class="form-control chosen-select" data-placeholder="{% trans "Crop" %}">
             </select>
         </div>
         <div class="form-group col-sm-3">
@@ -170,4 +170,4 @@
         );
 </script>
 
-{% endblock %}
\ No newline at end of file
+{% endblock %}