From eac3bcb4c80514e002cbac94316971c93a4b2f55 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Wed, 30 Oct 2024 09:22:50 +0100
Subject: [PATCH] chore: Reimplement cydiapomonella form

---
 VIPSWeb/locale/bg/LC_MESSAGES/django.po       |  34 +-
 VIPSWeb/locale/bs/LC_MESSAGES/django.po       |  34 +-
 VIPSWeb/locale/de/LC_MESSAGES/django.po       |  34 +-
 VIPSWeb/locale/fi/LC_MESSAGES/django.po       |  34 +-
 VIPSWeb/locale/nb/LC_MESSAGES/django.mo       | Bin 3770 -> 4265 bytes
 VIPSWeb/locale/nb/LC_MESSAGES/django.po       |  58 +-
 VIPSWeb/locale/vi/LC_MESSAGES/django.po       |  34 +-
 VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.mo  | Bin 3276 -> 3522 bytes
 VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.po  |  46 +-
 .../locale/bg/LC_MESSAGES/django.po           |  93 +-
 .../locale/bs/LC_MESSAGES/django.po           |  97 +-
 .../locale/de/LC_MESSAGES/django.po           |  92 +-
 .../locale/fi/LC_MESSAGES/django.po           |  93 +-
 .../locale/nb/LC_MESSAGES/django.mo           | Bin 5017 -> 4549 bytes
 .../locale/nb/LC_MESSAGES/django.po           | 116 ++-
 .../locale/vi/LC_MESSAGES/django.po           |  93 +-
 .../locale/zh_Hans/LC_MESSAGES/django.po      | 116 ++-
 .../locale/bg/LC_MESSAGES/django.po           |  31 +-
 .../locale/bs/LC_MESSAGES/django.po           |  31 +-
 .../locale/de/LC_MESSAGES/django.po           |  31 +-
 .../locale/fi/LC_MESSAGES/django.po           |  31 +-
 .../locale/nb/LC_MESSAGES/django.mo           | Bin 1506 -> 1661 bytes
 .../locale/nb/LC_MESSAGES/django.po           |  44 +-
 .../locale/vi/LC_MESSAGES/django.po           |  31 +-
 .../locale/zh_Hans/LC_MESSAGES/django.po      |  31 +-
 cydiapomonella/static/js/cydiapomonella.js    | 247 +++++
 .../templates/cydiapomonella/index.html       | 860 ++----------------
 .../templates/cydiapomonella/index_old.html   | 821 +++++++++++++++++
 cydiapomonella/views.py                       |   8 +
 observations/locale/bg/LC_MESSAGES/django.po  |  51 +-
 observations/locale/bs/LC_MESSAGES/django.po  |  51 +-
 observations/locale/de/LC_MESSAGES/django.po  |  51 +-
 observations/locale/fi/LC_MESSAGES/django.po  |  51 +-
 observations/locale/nb/LC_MESSAGES/django.po  |  53 +-
 observations/locale/vi/LC_MESSAGES/django.po  |  51 +-
 .../locale/zh_Hans/LC_MESSAGES/django.po      |  51 +-
 36 files changed, 2054 insertions(+), 1445 deletions(-)
 create mode 100644 cydiapomonella/static/js/cydiapomonella.js
 create mode 100644 cydiapomonella/templates/cydiapomonella/index_old.html

diff --git a/VIPSWeb/locale/bg/LC_MESSAGES/django.po b/VIPSWeb/locale/bg/LC_MESSAGES/django.po
index d6868ec0..2aeefa54 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-30 08:43+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:206
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:210
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:214
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:218
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:229
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:240
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:246
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:253
+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/django.po b/VIPSWeb/locale/bs/LC_MESSAGES/django.po
index 8fd8d1ad..07410c4e 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-30 08:43+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:206
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:210
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:214
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:218
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:229
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:240
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:246
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:253
+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/django.po b/VIPSWeb/locale/de/LC_MESSAGES/django.po
index 5d566efd..f34bec25 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-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"
@@ -18,6 +18,38 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: VIPSWeb/local_settings.py:206
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:210
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:214
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:218
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:229
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:240
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:246
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:253
+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/django.po b/VIPSWeb/locale/fi/LC_MESSAGES/django.po
index a8d6ee75..203065e4 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-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"
@@ -18,6 +18,38 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
+#: VIPSWeb/local_settings.py:206
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:210
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:214
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:218
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:229
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:240
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:246
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:253
+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/nb/LC_MESSAGES/django.mo b/VIPSWeb/locale/nb/LC_MESSAGES/django.mo
index 6e6787af22a0b68014df65a1b893ccb2cb96cb74..f4270641c7b7d8cf8bffb7162126d73cfe04eed7 100755
GIT binary patch
delta 1400
zcmdlbyHc_Ko)F7a1_lNOT?PgQ83qQ17DfgJTLuP(H%uT=28IXB3=I4X3=9vM85sB&
z7#Kb>GcfRgq*xdj1Q-|?cv%=26d4#8<X9LOL>L$t99S3_SQ!`?LRlc{qgfajI2jli
zvRD`xgcukYN>~^e*cliY+F2MF#26Ur8Tz3bm$5J~a5FG4>}FwL;9y{2IL-pG_yP+9
zg9HNu!vhwG#Xq4Iu(3i6=3#}1i?K2=NHH)lD6=v!h%zuR*s($!6atmcWMyEGWME(@
zV`X4qVPIgG09IGez%UhR&}vo&20;b}hOMj&3<e+vutHq=gB9W+1~v$vlZ}BvnSp^p
zkd1*siGhK^l#PMGoq>TNf(@d70UHBDGXn#|CN>6!UknTkX6y_M9~l@J3^^DWj6e?L
zgm^5BlYxP~o`HcOjgx^Pkdc8QkCTCcmw|!d02d_a&OzzBT#%r9!^Oa$z`(%ppNoM(
zn1O*ofg9p56K;rsw%ia0`f@|e3FT&B;9_84NQTPiaYI6=jvErvGr1WU>e(0=7?wg6
ztl@?P-5zd8kY3_u0C}3>K2-i0RQww^B<`7cAVDm`1JS3+197N54+DcV0|P@455$~2
z9&lVURP#U_G>He|fVn&j^$g|=3=AuIAU=7>1M$HtsK!rFgZ}d{FsL#xFi7(<FgP<X
zFgWr;EN<mxU|7t+z%YxKfq|cqfx(UsLi_PEFc>p1FvJN!956`$l2+ymFfcHJ5-$S-
z12dSehqxG&;6QwF21rnX*qRIs3|b5j2dObIFz7Hqf=`wKVmT<4gL48j_h>LMFn}@*
zC^vu-7|0AUP|g53oB`qiP`Uw$gQ5>aD}mx4l<Gn83K9UtKZpjUU{JOJWjRoy1Z7Qm
z21s;(vK>eb2&;n#1_lOgC=H@i7$7Mf6!#!LDEBZpCgqowC=_KDXDj3;78El$rsQVk
zWfo8NU{*ItEGo(`Q79@cE>TF!sZ=OQ%`HeRN-QZYN>#|sPf5*Ta84~sP0T4)NX$!7
z$j{6vPEAdjoWrar=vGvkSppGGN-ZkNOr6}#JYO;~wWzoxF-5^Au_RT&DJL^MqeQ_M
zWX@y_7E3$-l8n?Mh`A7*#i>PQnaQce3<0UdB@6-iC5a{ZV4KQP(^E?llX6mv8G>N$
z-ki$9!^-QQ3-U>3c7AqZQOV>2P9r1t(ww6FlC+%CRE6TQ)S}$flFXFig3`R~60i?)
z7`*d~@)YvZ74mbkQp-}ai%TZY=TzZwD=N({0SPA^UN-q4=OO{W!^^;qFNU}<XL1sk
zy_aKN3M?pcQj0*!OR`e)Qj1Gcix`5l6H`*tvkvblN-Y98KD7j*BE9JFj=a3$#O%}}
Okn5pt-Mp5ImjwW1e%MR^

delta 903
zcmZ3fxJ$PFo)F7a1_lNORR#tI83qOh7e)pKQw9cx943$`1A_xI0|Ore1A`+o0|O5O
z1495a1A_nq14Aq`0|P4q14ABEzJ!^9fs=uOp_!S1ft`VYp_iF~L5zWcVJb5Ng9rly
z!y0A=25trhhJ(xu3>*v$3}=}c82A|&>KU#vGcZUnFfcrWTJRrgFb@mFKp_^0#WE}m
z45ADS44Nzu1MQ*WAuJ3GEDQ_`i7X5Zf(#4{X)Fv31`G@g6)X^ktYm>$xDm?V#lpa#
z%)r2Kh=qYciJ_i>;Ta19gF6EQ11BrQfIwCThGqr^hGbR-hF=T}49{5^7(OyEFg#*o
zU@&4}V7S5#b~yt(2gCw#4hDumMg|6X4oFB9azf|^P6h@c1_p+HPKW~*aYFR1=7i|m
z&B?&PRnNe{a2P6aj+22wih+UQ9w#KIesVG}urV+&uyR2(@^C>yK!ytvB1T*gd3&h5
z8&o`u3lc)fQ1umD5Qp?Z<ri{6%wNaFz))|_z`(GJ3*y30To9N2hAL#{W?+zJU|<m7
zhNKT2ZUzQt1_p*8ZiofbxEUB0GcYi$=4N2vXJlaT=Yi1iybKJ+3=9nUd=Q5&=7U7#
z20jJ`Mo6-Pk@es>6J}swV1^2T;t~|kiVP4-<QX8LqQt<!puoVupaN9~qCg1_M1v9<
zKLf;<Tnr2hvLHby2E{cfErSxTI0M8(ASqDDN;0^Cm=NFbGB7a6fqcsV2_8`DhR8xl
zQ0@SwY*20hrC?B^g~%{4O#Z;EKRJv=ZgM-z+{yN=<}3lJ#U-1!u=21@KF4J^*@Rnh
fax(XV$s#;<Ji*zCDXHmMhj$dE7Hyux!^;8ySgB1?

diff --git a/VIPSWeb/locale/nb/LC_MESSAGES/django.po b/VIPSWeb/locale/nb/LC_MESSAGES/django.po
index f1cb3ca4..ca9f0170 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-30 08:43+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:206
+msgid "Risk maps"
+msgstr "Risikokart"
+
+#: VIPSWeb/local_settings.py:210
+msgid "About risk maps"
+msgstr "Om risikokart"
+
+#: VIPSWeb/local_settings.py:214
+msgid "Naerstad Late Blight Model"
+msgstr "Nærstads modell"
+
+#: VIPSWeb/local_settings.py:218
+msgid "Carrot rust fly temperature model"
+msgstr "Gulrotflue svermetidspunktmodell"
+
+#: VIPSWeb/local_settings.py:229
+msgid "Cereals and oilseeds"
+msgstr "Korn og oljevekster"
+
+#: VIPSWeb/local_settings.py:240
+msgid "Potato and vegetables"
+msgstr "Poteter og grønnsaker"
+
+#: VIPSWeb/local_settings.py:246
+msgid "Fruits and berries"
+msgstr "Frukt og bær"
+
+#: VIPSWeb/local_settings.py:253
+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/vi/LC_MESSAGES/django.po b/VIPSWeb/locale/vi/LC_MESSAGES/django.po
index fddb5061..ce2b66db 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-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"
@@ -18,6 +18,38 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+#: VIPSWeb/local_settings.py:206
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:210
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:214
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:218
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:229
+msgid "Cereals and oilseeds"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:240
+msgid "Potato and vegetables"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:246
+msgid "Fruits and berries"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:253
+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/zh_Hans/LC_MESSAGES/django.mo b/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.mo
index ea3b4ec465f5f377c42f225e37df0bc01ecdc5b0..5aff4d0b67b3df1fe4431b16e46306c2539c48b3 100644
GIT binary patch
delta 1071
zcmX>jc}Tkco)F7a1_lNObp{3o83qQ15Jm<DQw9cx9wv||149Bc0|Ore14AM+0|O5O
z1498b1A_nq14At{1A_<y14AD(0|P4q1H)pdx|Pff44e!M3_F+^7=#!Y7!ENrFt9T)
zFkEG3U=U+qV7SZ7z`)JG!0?5cfq{d8p`L+(g@J*efq{XOg@HkWfq_Ai1!9pA3&dc1
z7KnkaP;q}21_n_E28I|Ghy#kC;_WO943Z2C3{zOZMl!5}s@u%Mz+k|@z;KcU;*eh~
zV2c@;SV8=H1_o|c1_osY1_ohP1_mVt1_pCh1_pNq28JkB1_nU}28Knf3=GW-3=CUX
z85n*sFfdrKF)(~&U|=w2XJ9a5U|>+?fOsH+17sirLk0%}!*@_faWF8jF)%P>a6&wk
z52b53A?iCh85r2=85kI5LIoCp1Q-|?HbD8?IT;wZ7#J9ib3%gh5>);vlzsy>@G~bQ
zL_mr`Q6$C%u~?Z4Vv!aX!~s@Z5Odt2;!#`-4D}!vW^q9bDCB|!bvsnSL@ovf6$S=|
zg-`>JLFuzl1Ft~!J>+6wkY-?D_|C<^;0FpxZit0R+zbqr3=9nU+zbp?7#J8{ax*ZT
zVqjp{#{)@koxBY7;KZ_#7vkdGybKJCkaPzpL5T>I(3qhjEDVr@1d1|HI#7frT#!RS
z(FaP5P^I9621<;ebOlPZAaP*^1_pT$1B{ay7*rV;7(j`gmw|ynoPmKs7AygYOOUTX
zTu|-+<pKo;NSXizGbrRhaxg5%07+P&#0-iyDNtf&U|>+2%*t#elv<RUm{Y8fn3tlE
zpP5sfnwm1%gjrG0t*A7!1R|W2T2z#oIysp6poxD;Mrx5lZhlHCR7-JcQCVhkYB57V
zYH<leKz>PLNj})Dvefj{lEkE()Z)z&EC*TmUu@X^ymRH#Nj=Xt?R>s*@8laC3Va*3
zJexNMB($~d*}OTEzj3VAf7-h3$?j>-RxErvuNx#Yr}t^sLWbwlTVKpv{dC=ChNpAp
Xzu4IJbW+cYDQjNz&)K|+Q;8V>BT$|*

delta 829
zcmX>keMYkWo)F7a1_lNOWd;TY83qOh6GjFGeFg>wA106}0|N&$0|Ore0|O^B0|O5O
z1A_!J1A_nq1A{6v0|P4q1A`e<-iDchfs=uO!JC<Zft`VYA(WYcL5zWcA(okeft!JW
zp@f-%frEj8p@Er!fuDhap_7?`L4tvyo?#}`;7w2i_d^Xj3Kc)k%)lVZz`$^anSnus
zfq~%@RGgiKfq{jAfkA|Yfx&=*fkBc5VzCzs#G)W5Kbi&Nxnvdw1|<dthISSP26qMq
zhE*&K41x^x3=E%G7#Nxv7#LVs85n*sFfeqmGBA8(U|?uwV_-01U|=X^hq!nJJH&z=
z><kRw85kH2urn~QF)%Rf;DCh8ekgs010sHt1ETK%l>dQ)fq{#Gf#Ev`1A`C)0|OH$
z0|Q$<0|SF7hye<IPKZIuoDd%yK>2P^`Cv|nfl*NLEKZ0)<xuf1sJdC4kf>P5$-tn(
zz`(E?Dt-Y<Ux(_y$H~A@4+`4XoD2-o3=9m6Tnr3;3=9miTo8xka4|4cGB7YyaxpMm
zVPIhR%*DWPih+UQ1UCbNIs*g4WFCk`yLli!KFY(uzz9h;48jZy4B}9>6qE)<7bu;9
zxX|QP4^AYYgeA`aNoXKRUIvIyK?w%L2Vqd$NrD)lkOC!0C>xa6K+yo=f;=O^z`!8K
zz`&pY5&(IIfq{XU0g_l1LFt775^A7C%neGKf((#&k)9mOY&3ZZv)tsX%==jaQj1GA
ipI|x2GI=Ja{NxjyD><J}Z+$Uy_0x5mH!t8)Vg>+FSxeIZ

diff --git a/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.po b/VIPSWeb/locale/zh_Hans/LC_MESSAGES/django.po
index 59639d50..ab5ded95 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-30 08:43+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:206
+msgid "Risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:210
+msgid "About risk maps"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:214
+msgid "Naerstad Late Blight Model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:218
+msgid "Carrot rust fly temperature model"
+msgstr ""
+
+#: VIPSWeb/local_settings.py:229
+msgid "Cereals and oilseeds"
+msgstr "谷物和油籽"
+
+#: VIPSWeb/local_settings.py:240
+msgid "Potato and vegetables"
+msgstr "土豆和蔬菜"
+
+#: VIPSWeb/local_settings.py:246
+msgid "Fruits and berries"
+msgstr "水果和浆果"
+
+#: VIPSWeb/local_settings.py:253
+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/cerealblotchmodels/locale/bg/LC_MESSAGES/django.po b/cerealblotchmodels/locale/bg/LC_MESSAGES/django.po
index c3253dce..5a6767a2 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-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"
@@ -17,139 +17,102 @@ 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:111
 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
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:133
 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/barleynetblotchform.html:158
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:165
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:176
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:319
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:328
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:358
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:359
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:360
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:361
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:362
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:429
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:363
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:430
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:370
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:378
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:413
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:426
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:433
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:472
 msgid "Select crop"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:500
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:529
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
@@ -191,6 +154,10 @@ msgstr ""
 msgid "Please select"
 msgstr ""
 
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
+msgid "Weather station"
+msgstr ""
+
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
 msgid "Sprayings"
 msgstr ""
diff --git a/cerealblotchmodels/locale/bs/LC_MESSAGES/django.po b/cerealblotchmodels/locale/bs/LC_MESSAGES/django.po
index a53d50ef..a07d0fcb 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-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"
@@ -16,141 +16,104 @@ 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:111
 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
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:133
 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/barleynetblotchform.html:158
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:165
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:176
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:319
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:328
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:358
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:359
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:360
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:361
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:362
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:429
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:363
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:430
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:370
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:378
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:413
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:426
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:433
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:472
 msgid "Select crop"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:500
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:529
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
@@ -192,6 +155,10 @@ msgstr ""
 msgid "Please select"
 msgstr ""
 
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
+msgid "Weather station"
+msgstr ""
+
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
 msgid "Sprayings"
 msgstr ""
diff --git a/cerealblotchmodels/locale/de/LC_MESSAGES/django.po b/cerealblotchmodels/locale/de/LC_MESSAGES/django.po
index 65f927db..5a6767a2 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-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"
@@ -19,138 +19,100 @@ 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:111
 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
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:133
 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/barleynetblotchform.html:158
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:165
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:176
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:319
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:328
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:358
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:359
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:360
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:361
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:362
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:429
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:363
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:430
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:370
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:378
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:413
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:426
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:433
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:472
 msgid "Select crop"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:500
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:529
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
@@ -192,6 +154,10 @@ msgstr ""
 msgid "Please select"
 msgstr ""
 
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
+msgid "Weather station"
+msgstr ""
+
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
 msgid "Sprayings"
 msgstr ""
diff --git a/cerealblotchmodels/locale/fi/LC_MESSAGES/django.po b/cerealblotchmodels/locale/fi/LC_MESSAGES/django.po
index c3253dce..5a6767a2 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-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"
@@ -17,139 +17,102 @@ 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:111
 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
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:133
 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/barleynetblotchform.html:158
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:165
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:176
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:319
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:328
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:358
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:359
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:360
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:361
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:362
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:429
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:363
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:430
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:370
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:378
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:413
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:426
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:433
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:472
 msgid "Select crop"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:500
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:529
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
@@ -191,6 +154,10 @@ msgstr ""
 msgid "Please select"
 msgstr ""
 
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
+msgid "Weather station"
+msgstr ""
+
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
 msgid "Sprayings"
 msgstr ""
diff --git a/cerealblotchmodels/locale/nb/LC_MESSAGES/django.mo b/cerealblotchmodels/locale/nb/LC_MESSAGES/django.mo
index f7de82ce09ce0d8826adf8190a0f8f6ee9b76bd4..7203e90a7a0c5e7602ce5279ad885e3f3845d90b 100755
GIT binary patch
delta 1426
zcmbQKepI>so)F7a1_lNOTLuOO83qOh7A6LUU<L+;H_RYW1_ldO1_n_E1_n!31_m((
z1_pm9oyN+*pv=I)P|M1|z|X+Iu#lC3L6CugVIwO8gDe9B!(mni1`!4ZhKH;S4D1XH
z4BuE87$g`N82&-|;%p2IybKKW4DxIc19aIK7+66LVPjwrW?*1&W@BLBV_;wiXM-4=
z#>T*)&A`A=!3J^A5;g_~aRvs4U2G7GF0nB%$TKi7JZFP=gq<DY5EXU?1_1^J1}Aoi
zgM-;29w}#MVBln^XJF`K2fKt}29#dL4zX|xI|BnZ0|Ub`b_NC>1_p*pQ1Sch3=DD%
z3=AK^1~4!Pa4;}fGB7YmaX{3Ea4;|kF)%PBa6l|7=72b~3(8-_!N4HRz`(GRgMmS+
zo`HekDpcbK4h9A;1_p*dP@0_+5@bT03=C2X3=G<wAQv+*xN$-Z4B%v7P-I|W$bgD>
zaY8Jd!U+k9)tn3rEDQ_`r#T@Zc7c<D;UfbB!!u4u$ll;$V5kSh-E%Gm1|>!YhVNXE
zpp@caU|?flV9@7*M2Q)cw&8(<loON=;DI<Sjt63KB@e{H2|N&oPlcMZjt3HgTcPG0
zg3>2=80x`^<Qxwq$RG1S;{GcS1A`_50|O^7#HYr*kT~?_g~-S7GB9W{FfbJGLM)!m
z%fO((z`(GH7vh1-ypXtl0p;`XK|)TE58`ueK8S;?`061By7NISh~|UDT@I9A&j&GR
z0#w5mJ_ZH{1_p+Me2}<i;)jF?A3wwcGW?LB*W-u8u^&IgL0S9|hk}9|lpCh;L+qIc
z5&)&njr<G@1`G@ghxj2r`OFV-p@;y)Kt%zFxT63hJ0%G~49pUMB*sPo1_n@$T_C`~
zz`?-4utb1?;V%ON!&(7|IjaRB^bSD=21ZaehvaUCdP4>V26YBVa6-ixtQZ&=%o!jq
zgo%M@9R>yl3lIYdt0J*MOi(oFF+d#+$`v3%21qEWFhCMG69WT-8Uxtj_25DSl#f9P
z4io}543P2wRM>#Z0Z^G>3^hcFfq_AT0g|uv86c?|lukg>pil%AV4Mt)5CDmR$`23?
z!l0}S%66ba3zS_!(ICQL&A=eZz`$U}z`$U{zyRWc^EyZasIUQ*iY5$@paqp)AaPR=
z!N9<vJNYGR)8yG~-kV>uRWVL3<Iv|RN=?oz$Sg@L$;{82e3c_(aTq7#<`gb7=E;Y6
qT{iRbl`~GB%CE=cmzt7vct??fMsBX=<hT4ai#r7vH%}8}W&!{TV|)t$

delta 1893
zcmX@AJX5{?o)F7a1_lNOR|W<K83qOh7bXUVL<R<i92Sr$1H%Va1_n_E28NHU3=Con
z3=HgS5L%9nfkBypfx(oGfq|cafgzHOfkB^vfgzKPfkBXgfng>a1A{CB1H)=I1_luZ
z28NSt3=HfH3=H?!7#KiCKVxHHkYHe_XLt>jU}0xq;ALQ7;9-XtD8<gez{<eDpvBI>
zAk4tPV8G76zz1?5JH&!ub_ND*1_p*yc8CKfvNJG<GcYhLXNOq0pPhk0o`Hek3OmGO
zU)UiI669cD5MW?n(B}Yopq_!j0V<Hf0r6QW2Ll5q0|P@32gE_sI2ah%7#J9qK>4dV
z7#O%27#Ma!^&RDaIOrNw`~?RC0}lfO!xyMHBPRoc90LP`Fek)ZBTlf-8EiNi7%b}<
z7#Ko1AqMtyGB5}+Ffh#Kgg9g!C&Wibq5Qj?3=GmBgE<)(q!<_&1h^pjw7D1<xEL51
z%%QXs7sTPdTo8+*xghFGxF8Pb=Yp6!lZ%0&UXg);VIx%HG8e?+yIhc<`@#i@D-mu;
z5KD41Fnk0B9XBK@6nP*~Wx&J0pv1_);J^b3`ea^6h*j`HqOcxHxAH<9*3HYnpbknS
zybSf=I6ue>ap8Ghhyz~nLM&$FgBZld2k{9nl&{7I31VG7hy_+q+JO(^05?8JltlAE
z(oQZP1A`_514APp#OJH|AZg$*Up+*@6+Q+AEd~aL7km&02=g;AD1Z_lKg2+9eo$gz
zU`XJHXl#LsPvwUM=_-Cmh-~49r1Hc35C@*-XJFu9U|_fb<v-+y*!K=<4pY4VB+i8e
zAO@=mKrAvBfEW-h0EvnW0R{#K1_p)>0Z5#m6o3TfRRM@kA4AoB6@a7>Q9+2q4Fw?{
zaub9&ELIR=U#cL)zWNG5h((=(3=9Sg3=Go*AwEA26@MWJalluoxTp}sATuF|!FEEB
z)Ez3sz`)GFz)&It@o|L^1H)fXkPAV~uNQ{UJ;DqOjG%Ia0UULp^baX$^cWZzK#37l
z5J5yBF0^HUqy<nRqz#jR(jW(em^uuQPyrP@h76F90_7A?ZUP0rBLf42BuF6|=3}Ub
zBn&mEgfo-|`2>_gO&Ay$m>3us>=+mrtQjDwU6lb6LZ%FmC;;VkGf=L8mY`50z@?rG
z10;Qb#6X1+h=yTM>1hP=zcB+O|AGn$a|TFCw`5>ouwZ}$u`a0aU|?WSVqjoUVSuDy
zkRdh<kP;2V1|?olnE+ygFsQ)NU|?WyVqjpf2MI7RFjzrpIHjg+JlTe|TsJv8y(qsl
zFGV3Gu_RF;Ex$;iBqLQJDX}OgwNfE3wL~E)C%+^)Lm@XmB{gUA239{7=c4?A&3{>|
z8TpfnQ;W(HOEUBGK)O>Wm$4ff<m8v9rZ5B)r6y+<WR`#>LA-**A`G@dN`7(b<jw3E
z;)%Jb3du$J1qzA93OR|zB?`r<iN*POn<Y7z7+F#hOHwxrayl@pC1$4=mFDFY!=0K`
znVz0hRGOETlbW3kc41Cx-ei9sH#YCmoRZR_%~N<P7zO+x?kvvA2W!or%+05-6_9gy
zM^0r5gI{V&(%~IN3L3e&nsA508DJN>@zuyB=H{j<WP=S=D9+CX1yoUHda6QkYH@yE
d`sM?COpH9i1x1H<RF<TsB$niFKFH6)1OTkm>ofoW

diff --git a/cerealblotchmodels/locale/nb/LC_MESSAGES/django.po b/cerealblotchmodels/locale/nb/LC_MESSAGES/django.po
index f7572e76..1fe093b4 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-30 08:43+0100\n"
 "PO-Revision-Date: 2024-04-04 12:59+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -20,138 +20,100 @@ 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:111
 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
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:133
 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/barleynetblotchform.html:158
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
 msgid "Run model"
 msgstr "Kjør modell"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:165
 msgid "Model is running, please wait"
 msgstr "Modellen kjører, vennligst vent"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:176
 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:319
 msgid "Missing observation information"
 msgstr "Manglende informasjon om feltobservasjoner"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:328
 msgid "Missing spraying information"
 msgstr "Manglende sprøytedata"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:358
 msgid "Temperature, daily mean"
 msgstr "Temperatur, daglig gjennomsnitt"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:359
 msgid "Rain last 28 days"
 msgstr "Regn siste 28 dager"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:360
 msgid "Rain, daily"
 msgstr "Regn, daglig sum"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:361
 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:362
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:429
 msgid "Threshold"
 msgstr "Terskel"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:363
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:430
 msgid "Disease"
 msgstr "Sykdom"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:370
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
 msgid "Time"
 msgstr "Tid"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:378
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
 msgid "Warning status"
 msgstr "Varselstatus"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:413
 msgid "No data returned"
 msgstr "Ingen data returnert"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:426
 msgid "Disease value"
 msgstr "Sykdomsverdi"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:433
 msgid "Barley net blotch development"
 msgstr "Utvikling av byggbrunflekk"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
 msgid "Select weather station"
 msgstr "Velg målestasjon"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:472
 msgid "Select crop"
 msgstr "Velg kultur"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:500
 msgid "Select preparation"
 msgstr "Velg preparat"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:529
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
@@ -197,6 +159,10 @@ msgstr "Land"
 msgid "Please select"
 msgstr "Vennligst velg"
 
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
+msgid "Weather station"
+msgstr "Målestasjon"
+
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
 msgid "Sprayings"
 msgstr "Sprøytinger"
@@ -321,3 +287,27 @@ msgstr "Terskel fuktig periode"
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:446
 msgid "Spraying protection period"
 msgstr "Beskyttet periode ved sprøyting"
+
+#~ 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 8ef4bb73..9e1b0c74 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-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"
@@ -17,139 +17,102 @@ 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:111
 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
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:133
 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/barleynetblotchform.html:158
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
 msgid "Run model"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:165
 msgid "Model is running, please wait"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:176
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:319
 msgid "Missing observation information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:328
 msgid "Missing spraying information"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:358
 msgid "Temperature, daily mean"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:359
 msgid "Rain last 28 days"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:360
 msgid "Rain, daily"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:361
 msgid "Day degrees since sowing"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:362
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:429
 msgid "Threshold"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:363
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:430
 msgid "Disease"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:370
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
 msgid "Time"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:378
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
 msgid "Warning status"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:413
 msgid "No data returned"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:426
 msgid "Disease value"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:433
 msgid "Barley net blotch development"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
 msgid "Select weather station"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:472
 msgid "Select crop"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:500
 msgid "Select preparation"
 msgstr ""
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:529
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
@@ -191,6 +154,10 @@ msgstr ""
 msgid "Please select"
 msgstr ""
 
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
+msgid "Weather station"
+msgstr ""
+
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
 msgid "Sprayings"
 msgstr ""
diff --git a/cerealblotchmodels/locale/zh_Hans/LC_MESSAGES/django.po b/cerealblotchmodels/locale/zh_Hans/LC_MESSAGES/django.po
index 0516bdc5..23557b70 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-30 08:43+0100\n"
 "PO-Revision-Date: 2016-10-07 11:05+0200\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -19,138 +19,100 @@ 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:111
 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
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:133
 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/barleynetblotchform.html:158
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:153
 msgid "Run model"
 msgstr "运行模型"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:115
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:165
 msgid "Model is running, please wait"
 msgstr "模型在运行,请等候"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:126
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:176
 msgid "Scroll past chart by swiping the dotted line on the right"
 msgstr "点击右边点状线看上一幅图"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:152
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:319
 msgid "Missing observation information"
 msgstr "遗失的观测信息"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:161
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:328
 msgid "Missing spraying information"
 msgstr "遗失的喷药信息"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:194
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:358
 msgid "Temperature, daily mean"
 msgstr "日均温"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:195
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:359
 msgid "Rain last 28 days"
 msgstr "过去28天降雨"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:196
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:360
 msgid "Rain, daily"
 msgstr "日降雨"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:197
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:361
 msgid "Day degrees since sowing"
 msgstr "从撒种开始日温度"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:198
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:265
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:362
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:429
 msgid "Threshold"
 msgstr "阈值"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:199
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:266
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:363
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:430
 msgid "Disease"
 msgstr "疾病"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:206
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:370
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:392
 msgid "Time"
 msgstr "时间"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:214
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:378
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:399
 msgid "Warning status"
 msgstr "预警信息"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:249
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:413
 msgid "No data returned"
 msgstr "无数据返回"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:262
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:426
 msgid "Disease value"
 msgstr "疾病值"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:269
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:433
 msgid "Barley net blotch development"
 msgstr "大麦网斑病发展"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:281
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:445
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:316
 msgid "Select weather station"
 msgstr "选择气象站"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:307
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:472
 msgid "Select crop"
 msgstr "选择作物"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:335
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:500
 msgid "Select preparation"
 msgstr "选择准备"
 
-#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:364
+#: cerealblotchmodels/templates/cerealblotchmodels/barleynetblotchform.html:529
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:210
 msgid ""
 "WARNING: We suspect you are using Internet Explorer to view this site. VIPS "
@@ -192,6 +154,10 @@ msgstr ""
 msgid "Please select"
 msgstr ""
 
+#: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:46
+msgid "Weather station"
+msgstr "气象站"
+
 #: cerealblotchmodels/templates/cerealblotchmodels/septoriahumiditymodelform.html:53
 #, fuzzy
 #| msgid "Spraying date"
@@ -329,6 +295,30 @@ msgstr ""
 msgid "Spraying protection period"
 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/cydiapomonella/locale/bg/LC_MESSAGES/django.po b/cydiapomonella/locale/bg/LC_MESSAGES/django.po
index 079deba3..75cad8d1 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-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"
@@ -19,6 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index_new.html:22
 msgid "Cydia pomonella"
 msgstr ""
 
@@ -28,14 +29,17 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index_new.html:42
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index_new.html:51
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index_new.html:57
 msgid "Select weather station"
 msgstr ""
 
@@ -43,10 +47,15 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:768
 #: cydiapomonella/templates/cydiapomonella/index.html:771
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:63
+#: cydiapomonella/templates/cydiapomonella/index_new.html:66
+#: cydiapomonella/templates/cydiapomonella/index_new.html:69
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "days"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index_new.html:81
 msgid "Date"
 msgstr ""
 
@@ -55,18 +64,26 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:785
 #: cydiapomonella/templates/cydiapomonella/index.html:786
 #: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index_new.html:82
+#: cydiapomonella/templates/cydiapomonella/index_new.html:83
+#: cydiapomonella/templates/cydiapomonella/index_new.html:84
+#: cydiapomonella/templates/cydiapomonella/index_new.html:85
+#: cydiapomonella/templates/cydiapomonella/index_new.html:86
 msgid "Temp at"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index_new.html:87
 msgid "Daily rainfall"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index_new.html:102
 msgid "Heat sum"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index_new.html:105
 msgid "Calculate heat sum from date"
 msgstr ""
 
@@ -76,17 +93,29 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "weather station for the period starting with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "and ending with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "is"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "day degrees"
 msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "calculated for "
+msgstr ""
diff --git a/cydiapomonella/locale/bs/LC_MESSAGES/django.po b/cydiapomonella/locale/bs/LC_MESSAGES/django.po
index 562f3be3..83e56be8 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-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"
@@ -20,6 +20,7 @@ msgstr ""
 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index_new.html:22
 msgid "Cydia pomonella"
 msgstr ""
 
@@ -29,14 +30,17 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index_new.html:42
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index_new.html:51
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index_new.html:57
 msgid "Select weather station"
 msgstr ""
 
@@ -44,10 +48,15 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:768
 #: cydiapomonella/templates/cydiapomonella/index.html:771
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:63
+#: cydiapomonella/templates/cydiapomonella/index_new.html:66
+#: cydiapomonella/templates/cydiapomonella/index_new.html:69
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "days"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index_new.html:81
 msgid "Date"
 msgstr ""
 
@@ -56,18 +65,26 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:785
 #: cydiapomonella/templates/cydiapomonella/index.html:786
 #: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index_new.html:82
+#: cydiapomonella/templates/cydiapomonella/index_new.html:83
+#: cydiapomonella/templates/cydiapomonella/index_new.html:84
+#: cydiapomonella/templates/cydiapomonella/index_new.html:85
+#: cydiapomonella/templates/cydiapomonella/index_new.html:86
 msgid "Temp at"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index_new.html:87
 msgid "Daily rainfall"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index_new.html:102
 msgid "Heat sum"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index_new.html:105
 msgid "Calculate heat sum from date"
 msgstr ""
 
@@ -77,17 +94,29 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "weather station for the period starting with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "and ending with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "is"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "day degrees"
 msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "calculated for "
+msgstr ""
diff --git a/cydiapomonella/locale/de/LC_MESSAGES/django.po b/cydiapomonella/locale/de/LC_MESSAGES/django.po
index 079deba3..75cad8d1 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-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"
@@ -19,6 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index_new.html:22
 msgid "Cydia pomonella"
 msgstr ""
 
@@ -28,14 +29,17 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index_new.html:42
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index_new.html:51
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index_new.html:57
 msgid "Select weather station"
 msgstr ""
 
@@ -43,10 +47,15 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:768
 #: cydiapomonella/templates/cydiapomonella/index.html:771
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:63
+#: cydiapomonella/templates/cydiapomonella/index_new.html:66
+#: cydiapomonella/templates/cydiapomonella/index_new.html:69
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "days"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index_new.html:81
 msgid "Date"
 msgstr ""
 
@@ -55,18 +64,26 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:785
 #: cydiapomonella/templates/cydiapomonella/index.html:786
 #: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index_new.html:82
+#: cydiapomonella/templates/cydiapomonella/index_new.html:83
+#: cydiapomonella/templates/cydiapomonella/index_new.html:84
+#: cydiapomonella/templates/cydiapomonella/index_new.html:85
+#: cydiapomonella/templates/cydiapomonella/index_new.html:86
 msgid "Temp at"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index_new.html:87
 msgid "Daily rainfall"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index_new.html:102
 msgid "Heat sum"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index_new.html:105
 msgid "Calculate heat sum from date"
 msgstr ""
 
@@ -76,17 +93,29 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "weather station for the period starting with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "and ending with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "is"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "day degrees"
 msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "calculated for "
+msgstr ""
diff --git a/cydiapomonella/locale/fi/LC_MESSAGES/django.po b/cydiapomonella/locale/fi/LC_MESSAGES/django.po
index 079deba3..75cad8d1 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-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"
@@ -19,6 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index_new.html:22
 msgid "Cydia pomonella"
 msgstr ""
 
@@ -28,14 +29,17 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index_new.html:42
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index_new.html:51
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index_new.html:57
 msgid "Select weather station"
 msgstr ""
 
@@ -43,10 +47,15 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:768
 #: cydiapomonella/templates/cydiapomonella/index.html:771
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:63
+#: cydiapomonella/templates/cydiapomonella/index_new.html:66
+#: cydiapomonella/templates/cydiapomonella/index_new.html:69
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "days"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index_new.html:81
 msgid "Date"
 msgstr ""
 
@@ -55,18 +64,26 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:785
 #: cydiapomonella/templates/cydiapomonella/index.html:786
 #: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index_new.html:82
+#: cydiapomonella/templates/cydiapomonella/index_new.html:83
+#: cydiapomonella/templates/cydiapomonella/index_new.html:84
+#: cydiapomonella/templates/cydiapomonella/index_new.html:85
+#: cydiapomonella/templates/cydiapomonella/index_new.html:86
 msgid "Temp at"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index_new.html:87
 msgid "Daily rainfall"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index_new.html:102
 msgid "Heat sum"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index_new.html:105
 msgid "Calculate heat sum from date"
 msgstr ""
 
@@ -76,17 +93,29 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "weather station for the period starting with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "and ending with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "is"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "day degrees"
 msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "calculated for "
+msgstr ""
diff --git a/cydiapomonella/locale/nb/LC_MESSAGES/django.mo b/cydiapomonella/locale/nb/LC_MESSAGES/django.mo
index e3737a06e70691511f59d9b593a2bca47a1a3e3f..d5e6a992650486d7696f042c6857269c8f4a1359 100644
GIT binary patch
delta 534
zcmaFF{g<cyo)F7a1_lNOVFm^U83qQ1Ees3{vJ4CiK8zqy28IKS5b=YI3=D=03=H=e
z85sB(7#IYY7#R2%7#I|o7#LU>7#Q@K7#KJh7#K{L7#LI-7#M7s7#KVl7#Nb67#O@5
z7#LPFF)&y&Ffe>$Vqg$sU|=v}W?*1vV5n#CWQG_R2&EI585p=37#IqfAqLknGcYhQ
zFfcSRGcf2dFfg<-GcYJIGB9jnW?+zDU|_h)0<rKN3j+fe$Rn%_3_J`B405ax{o1S$
zhZ(R!JZ8ztz@X2-z!1*Lz~IYJ&%n^m%D`X)GKiIdL6CugL5L0PG6oekh=Dq63=F&s
z3=HOM3=EtM3=FPp3=FIc3=IBk5Ql}bK^zdl#=rmyG>~IKAp#0NkVDuQAm)PjAag)8
z2n&G-2L^~GAT|htf|i{D5(1#$1VsxoNCJvM7K4Hv<PeaMz~olOC5u^@82OVEbCOGQ
z5=&B36w>mG6ecq>Hw&2P8XD*t8z>l9Seck<8yHTW#(bL9SkFYyXmScm^W>8(4|$VP
Qi&E3`QcED3R<c?G0JzgL*Z=?k

delta 446
zcmey%^N73to)F7a1_lNOK?Vi}83qQ1B@7G<;tUK7I*cGu28Iqsh<GO>1A`$01H&>#
z1_pix28J7q3=Dh>3=A(A85md?7#O}YGB9v3FfjaKWMJ@MU|?WnVqoxMU|{fLVqmal
zU|^WZ#K0iNz`$^oiGhKgfq~%-6WE-3hA&JE4BQM13@pqLg9Mlv7?>Cs7(|&F7<3pI
z7$le(7!(*87+jed7$g`N7}8i67*rS-80uLV7`Q+VW?^99VPIfb&jQiEhXvx0gDeaT
z`V0&Vr&t&md>I%Rez7nx*f20Kc(6h|+sX=ZNIe6?bXJH#^H~`fI2jliR<SZLure?(
zY+;2sWEU&M!o92v44^;}fQA;xksybI)Ph0;5?%}pYzz={KzvZhfM}2dnL!K&1_oXR
zNXUUgfddp|AYU*{-pjaTavRg_$%V{K0*1N<X1WHJ3I-NdCYIU;Mw6LYPBR<n8Be~<
O(mc6@_3&g@HVXjNNiClM

diff --git a/cydiapomonella/locale/nb/LC_MESSAGES/django.po b/cydiapomonella/locale/nb/LC_MESSAGES/django.po
index 56356a7b..c26b9dc1 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-30 08:43+0100\n"
+"PO-Revision-Date: 2024-10-30 08:46+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
 "Language: nb\n"
@@ -16,27 +16,29 @@ 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_new.html:22
 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."
+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:718
+#: cydiapomonella/templates/cydiapomonella/index_new.html:42
 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_new.html:51
 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_new.html:57
 msgid "Select weather station"
 msgstr "Velg målestasjon"
 
@@ -44,10 +46,15 @@ msgstr "Velg målestasjon"
 #: cydiapomonella/templates/cydiapomonella/index.html:768
 #: cydiapomonella/templates/cydiapomonella/index.html:771
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:63
+#: cydiapomonella/templates/cydiapomonella/index_new.html:66
+#: cydiapomonella/templates/cydiapomonella/index_new.html:69
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "days"
 msgstr "dager"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index_new.html:81
 msgid "Date"
 msgstr "Dato"
 
@@ -56,38 +63,57 @@ msgstr "Dato"
 #: cydiapomonella/templates/cydiapomonella/index.html:785
 #: cydiapomonella/templates/cydiapomonella/index.html:786
 #: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index_new.html:82
+#: cydiapomonella/templates/cydiapomonella/index_new.html:83
+#: cydiapomonella/templates/cydiapomonella/index_new.html:84
+#: cydiapomonella/templates/cydiapomonella/index_new.html:85
+#: cydiapomonella/templates/cydiapomonella/index_new.html:86
 msgid "Temp at"
 msgstr "Temp kl"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index_new.html:87
 msgid "Daily rainfall"
 msgstr "Døgnnedbør"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index_new.html:102
 msgid "Heat sum"
 msgstr "Varmesum"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index_new.html:105
 msgid "Calculate heat sum from date"
 msgstr "Beregn varmesum fra dato"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
-msgid ""
-"Heat sum, with a base temperature of 10 degrees Celcius, calculated for "
+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_new.html:113
 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_new.html:113
 msgid "and ending with"
 msgstr "til og med"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "is"
 msgstr "er"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "day degrees"
 msgstr "graddager"
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "Heat sum, with a base temperature of"
+msgstr "Varmesum, med basistemperatur"
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "calculated for "
+msgstr "beregnet for "
diff --git a/cydiapomonella/locale/vi/LC_MESSAGES/django.po b/cydiapomonella/locale/vi/LC_MESSAGES/django.po
index 5c528fba..353e88c3 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-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"
@@ -19,6 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index_new.html:22
 msgid "Cydia pomonella"
 msgstr ""
 
@@ -28,14 +29,17 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index_new.html:42
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index_new.html:51
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index_new.html:57
 msgid "Select weather station"
 msgstr ""
 
@@ -43,10 +47,15 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:768
 #: cydiapomonella/templates/cydiapomonella/index.html:771
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:63
+#: cydiapomonella/templates/cydiapomonella/index_new.html:66
+#: cydiapomonella/templates/cydiapomonella/index_new.html:69
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "days"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index_new.html:81
 msgid "Date"
 msgstr ""
 
@@ -55,18 +64,26 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:785
 #: cydiapomonella/templates/cydiapomonella/index.html:786
 #: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index_new.html:82
+#: cydiapomonella/templates/cydiapomonella/index_new.html:83
+#: cydiapomonella/templates/cydiapomonella/index_new.html:84
+#: cydiapomonella/templates/cydiapomonella/index_new.html:85
+#: cydiapomonella/templates/cydiapomonella/index_new.html:86
 msgid "Temp at"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index_new.html:87
 msgid "Daily rainfall"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index_new.html:102
 msgid "Heat sum"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index_new.html:105
 msgid "Calculate heat sum from date"
 msgstr ""
 
@@ -76,17 +93,29 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "weather station for the period starting with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "and ending with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "is"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "day degrees"
 msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "calculated for "
+msgstr ""
diff --git a/cydiapomonella/locale/zh_Hans/LC_MESSAGES/django.po b/cydiapomonella/locale/zh_Hans/LC_MESSAGES/django.po
index 5c528fba..353e88c3 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-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"
@@ -19,6 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 
 #: cydiapomonella/templates/cydiapomonella/index.html:29
+#: cydiapomonella/templates/cydiapomonella/index_new.html:22
 msgid "Cydia pomonella"
 msgstr ""
 
@@ -28,14 +29,17 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:718
+#: cydiapomonella/templates/cydiapomonella/index_new.html:42
 msgid "Calculate the risk of attack by the coddling moth"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:727
+#: cydiapomonella/templates/cydiapomonella/index_new.html:51
 msgid "No weather data available from the selected weather station"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:733
+#: cydiapomonella/templates/cydiapomonella/index_new.html:57
 msgid "Select weather station"
 msgstr ""
 
@@ -43,10 +47,15 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:768
 #: cydiapomonella/templates/cydiapomonella/index.html:771
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:63
+#: cydiapomonella/templates/cydiapomonella/index_new.html:66
+#: cydiapomonella/templates/cydiapomonella/index_new.html:69
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "days"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:782
+#: cydiapomonella/templates/cydiapomonella/index_new.html:81
 msgid "Date"
 msgstr ""
 
@@ -55,18 +64,26 @@ msgstr ""
 #: cydiapomonella/templates/cydiapomonella/index.html:785
 #: cydiapomonella/templates/cydiapomonella/index.html:786
 #: cydiapomonella/templates/cydiapomonella/index.html:787
+#: cydiapomonella/templates/cydiapomonella/index_new.html:82
+#: cydiapomonella/templates/cydiapomonella/index_new.html:83
+#: cydiapomonella/templates/cydiapomonella/index_new.html:84
+#: cydiapomonella/templates/cydiapomonella/index_new.html:85
+#: cydiapomonella/templates/cydiapomonella/index_new.html:86
 msgid "Temp at"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:788
+#: cydiapomonella/templates/cydiapomonella/index_new.html:87
 msgid "Daily rainfall"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:803
+#: cydiapomonella/templates/cydiapomonella/index_new.html:102
 msgid "Heat sum"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:807
+#: cydiapomonella/templates/cydiapomonella/index_new.html:105
 msgid "Calculate heat sum from date"
 msgstr ""
 
@@ -76,17 +93,29 @@ msgid ""
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "weather station for the period starting with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
 msgid "and ending with"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "is"
 msgstr ""
 
 #: cydiapomonella/templates/cydiapomonella/index.html:815
+#: cydiapomonella/templates/cydiapomonella/index_new.html:114
 msgid "day degrees"
 msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "Heat sum, with a base temperature of"
+msgstr ""
+
+#: cydiapomonella/templates/cydiapomonella/index_new.html:113
+msgid "calculated for "
+msgstr ""
diff --git a/cydiapomonella/static/js/cydiapomonella.js b/cydiapomonella/static/js/cydiapomonella.js
new file mode 100644
index 00000000..8d34962f
--- /dev/null
+++ b/cydiapomonella/static/js/cydiapomonella.js
@@ -0,0 +1,247 @@
+const weatherStationDataURL = "https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback";
+const gridDataURL = "https://weather.vips.nibio.no/rest/grid/openmeteo/"; // TODO: Revider APIet
+const TIMEZONE = "Europe/Oslo";
+const DATE_FORMAT = "YYYY-MM-DD";
+const HEATSUM_BASE_TEMP = 10.0;
+
+const 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" }
+];
+
+function renderWeatherstations() {
+    let wsSelect = document.getElementById("weatherStationId");
+    appleWeatherStations.forEach((ws) => {
+        wsSelect.options[wsSelect.options.length] = new Option(ws["name"], ws["id"]);
+    });
+}
+
+async function runModel() {
+    let wsSelect = document.getElementById("weatherStationId");
+    let selectedWeatherStationId = wsSelect.options[wsSelect.selectedIndex].value;
+    if(selectedWeatherStationId == "-1")
+    {
+        return;
+    }
+    let startDateHourly = getStartDateHourly();
+    let endDateHourly = getEndDateHourly();
+    try
+    {
+        // Get the hourly data for the past X days
+        const hourlyDataResponse = await fetch(
+            weatherStationDataURL + "?weatherStationId=" + selectedWeatherStationId 
+            + "&elementMeasurementTypes[]=RR&elementMeasurementTypes[]=TM"
+            + "&timeZone="  + TIMEZONE 
+            + "&startDate=" + startDateHourly.format(DATE_FORMAT) + "&startTime=0" 
+            + "&endDate=" + endDateHourly.format(DATE_FORMAT) + "&endTime=12"  
+            + "&logIntervalId=1"
+        );
+        if(! 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 = getDailyRRData(hourlyData);
+
+        renderTable(hourlyData, dailyData);
+
+        runHeatSumCalculations();
+        
+
+        //calculateHeatSum()
+    }
+    catch(error)
+    {
+        console.error(error.message);
+    }
+}
+
+async function runHeatSumCalculations()
+{
+    document.getElementById("heatSumContainer").style.display="block";
+    let wsSelect = document.getElementById("weatherStationId");
+    let selectedWeatherStationId = wsSelect.options[wsSelect.selectedIndex].value;
+    if(selectedWeatherStationId == "-1")
+    {
+        return;
+    }
+    // Get daily temperature data for the heat sum
+    const heatSumStartDate = setToTZMidnight(moment(document.getElementById("heatSumStartDate").value));
+    const heatSumEndDate = setToTZMidnight(moment().tz(TIMEZONE).subtract(1,"days"));
+    
+    const heatSumDataResponse = await fetch(
+        weatherStationDataURL + "?weatherStationId=" + selectedWeatherStationId 
+        + "&elementMeasurementTypes[]=TM"
+        + "&timeZone="  + TIMEZONE 
+        + "&startDate=" + heatSumStartDate.format(DATE_FORMAT) + "&startTime=0" 
+        + "&endDate=" + heatSumEndDate.format(DATE_FORMAT) + "&endTime=23"  
+        + "&logIntervalId=2"
+    );
+
+    if(! heatSumDataResponse.ok){
+        throw new Error("Response status: " + heatSumDataResponse.status);
+    }
+
+    const heatSumData = await heatSumDataResponse.json();
+
+    renderHeatSumResult(selectedWeatherStationId, calculateHeatSum(heatSumData), heatSumData.length, heatSumStartDate, heatSumEndDate);
+}
+
+function calculateHeatSum(heatSumData)
+{
+    let heatSum = 0.0;
+    heatSumData.forEach((obs) =>{
+        heatSum += Math.max(0.0, (obs.value - HEATSUM_BASE_TEMP));
+    });
+    return heatSum;
+}
+
+function renderHeatSumResult(selectedWeatherStationId, heatSum, numberOfDays, heatSumStartDate, heatSumEndDate)
+{
+    document.getElementById("heatSumBaseTemp").innerHTML=HEATSUM_BASE_TEMP;
+    appleWeatherStations.forEach((ws)=>{
+        if(ws.id == parseInt(selectedWeatherStationId))
+        {
+            document.getElementById("selectedWeatherStationName").innerHTML = ws.name;
+        }
+    });
+    document.getElementById("heatSumStartDateDisplay").innerHTML = heatSumStartDate.format(DATE_FORMAT);
+    document.getElementById("heatSumEndDateDisplay").innerHTML = heatSumEndDate.format(DATE_FORMAT);
+    document.getElementById("numberOfDays").innerHTML = numberOfDays;
+    document.getElementById("heatSum").innerHTML = heatSum.toFixed(1);
+}
+
+function getDailyRRData(hourlyData)
+{
+    let RRBuckets = {};
+    for(let i=0; i< hourlyData.length;i++)
+    {
+        let obs = hourlyData[i];
+        if(obs.elementMeasurementTypeId == "RR")
+        {
+            let date = 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;
+}
+
+function renderTable(hourlyData, dailyData)
+{
+    document.getElementById("weatherData").style.display="block";
+    let tableBody = document.getElementById("tableBody");
+    tableBody.innerHTML = "";
+    let currentDate = getStartDateHourly();
+    let today = setToTZMidnight(moment());
+    //console.info("today=" + today.format());
+    while(currentDate < today)
+    {
+        //console.info("currentDate=" + currentDate.format());
+        let nightTemps = getNightTempsForDate(moment(currentDate).tz(TIMEZONE), hourlyData);
+        //console.info(nightTemps);
+        let rowHTML = "<tr><td>" + currentDate.format(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");
+    }
+}
+
+function getStartDateHourly()
+{
+    let daysBack = undefined;
+    document.getElementsByName("radioDays").forEach((radio)=>{
+        if(radio.checked)
+        {
+            daysBack = radio.value;
+        }
+    });
+    return setToTZMidnight(moment()).subtract(daysBack,"days");
+}
+
+function getEndDateHourly()
+{
+    return moment().tz(TIMEZONE).hour(12);
+}
+
+/**
+ * 
+ * @param date 
+ * @param {Array} weatherData 
+ * @return array[temp@19,temp@20,temp@21,temp@22, temp@23]
+ */
+function 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);
+}
+
+function setToTZMidnight(theDate)
+{
+    return theDate.tz(TIMEZONE).hour(0).minute(0).second(0).millisecond(0);
+}
\ No newline at end of file
diff --git a/cydiapomonella/templates/cydiapomonella/index.html b/cydiapomonella/templates/cydiapomonella/index.html
index f2d2ede5..d0f9921e 100644
--- a/cydiapomonella/templates/cydiapomonella/index.html
+++ b/cydiapomonella/templates/cydiapomonella/index.html
@@ -1,821 +1,117 @@
 {% 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" />
-{% 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>
-
-
-
+<script src="{% static "js/cydiapomonella.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);
-        }
-
-        
+    window.onload = (event) => {
+        renderWeatherstations();
     }
-
-
-
-    /*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> 
-
+</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="row">
+    <div class="col-md-12">
+        <h1>{% trans "Calculate the risk of attack by the coddling moth" %}</h1>
+        <p>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.</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>
-<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-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="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">
+    <div class="col-sm-4">
+        <select name="weatherStationName" id="weatherStationId" class="form-control" onchange="runModel();">
+            <option value="-1">-- {% trans "Select weather station" %} --</option>
+        </select>
     </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 class="col-sm-6">
+        <form>
+            <label class="radio-inline">
+                <input type="radio" name="radioDays" value="7" checked onclick="runModel()">7 {% trans "days" %}
+            </label>
+            <label class="radio-inline">
+                <input type="radio" name="radioDays" value="14" onclick="runModel()">14 {% trans "days" %}
+            </label>
+            <label class="radio-inline">
+                <input type="radio" name="radioDays" value="21" onclick="runModel()">21 {% trans "days" %}
+            </label>
+        </form>
+
+    </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()" 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" %}
+        {% trans "Heat sum, with a base temperature of" %} <span id="heatSumBaseTemp"></span>&deg;C, {% trans  "calculated for " %} <b><span id='selectedWeatherStationName'>-</span></b> {% trans "weather station for the period starting with" %} <b><span id="heatSumStartDateDisplay">-</span></b> {% trans "and ending with" %} <b><span
+                id="heatSumEndDateDisplay">--</span></b> (<b><span id="numberOfDays">-</span></b> {% trans "days" %}) {% trans "is" %} : <b><span id="heatSum"></span></b> {% trans "day degrees" %}
     </div>
 </div>
 
+<div class="row" style="height: 50px;"></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 00000000..f2d2ede5
--- /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/views.py b/cydiapomonella/views.py
index d94b97a5..3dceb66b 100644
--- a/cydiapomonella/views.py
+++ b/cydiapomonella/views.py
@@ -32,4 +32,12 @@ def index(request):
 
     }
     return render(request,'cydiapomonella/index.html', context)
+    #return HttpResponse("Hello - 01 !!.. This is new app for VIPSWeb")
+
+def index_new(request):
+    
+    context = {
+
+    }
+    return render(request,'cydiapomonella/index_new.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 24ae1e29..3e687a3c 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 b23165f9..c738aed7 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 24ae1e29..3e687a3c 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 24ae1e29..3e687a3c 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 28cbdc70..edf02a93 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 ac8500b2..1a57d4fc 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 ac151a14..1acbd6ab 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 ""
-- 
GitLab