diff --git a/applefruitmoth/static/applefruitmoth/js/applefruitmoth.js b/applefruitmoth/static/applefruitmoth/js/applefruitmoth.js
new file mode 100644
index 0000000000000000000000000000000000000000..3384a0016511db4158e70a9ff8295ec23ee98bae
--- /dev/null
+++ b/applefruitmoth/static/applefruitmoth/js/applefruitmoth.js
@@ -0,0 +1,357 @@
+
+document.addEventListener('DOMContentLoaded', setBasis);
+document.title="Døgngrader";
+
+
+
+var stations = new Array();
+var serverUri = "https://coremanager.testvips.nibio.no";
+//var serverUri = "http://localhost:8080/VIPSCore";
+var runUri= serverUri + "/models/DAYDEGREES/run"; 
+
+var emptyChart;
+
+
+
+
+function setBasis () {
+		
+	let path = "https://lmt.nibio.no/services/rest/weatherstation/mapweatherstations";
+	
+    $.getJSON(path, function( mapStations ) {	
+	
+		allStations = mapStations;
+		
+		allStations.sort(function(a,b) {
+			return a.name.toString().localeCompare(b.name.toString());
+		});
+		
+		for(var i=0;i<allStations.length;i++){
+			stations[i]=([mapStations[i].weatherstationId, mapStations[i].name]);
+			
+		}
+		
+		for (let i = 0; i < stations.length; i++ ) {
+			let option = document.createElement("option");
+			option.text = stations[i][1];
+			option.value = stations[i][0];
+			document.getElementById("weatherstation").appendChild(option);
+		}
+		
+		emptyChart = true;
+		
+		setStartText();
+		displayResults(emptyChart);
+    });
+
+}
+
+
+function getBasis () {
+	
+	var basisTemp = document.getElementById('temp').value;
+	var startTime = document.getElementById('startdate').value;
+	var endTime = document.getElementById('enddate').value;
+	var weatherStation = document.getElementById('weatherstation').value;
+	
+	var temperature = [];
+	
+	weatherstationId = weatherStation;
+	 
+	if (basisTemp > 20 || basisTemp < 0) {
+    	alert("Basistemperaturen er usannsynlig");
+    	return false;
+    }
+	
+	 
+	if (startTime > endTime) {
+    	alert("Datoen er ikke gyldig");
+    	return false;
+    }
+    
+    emptyChart = false;
+    
+    $.getJSON("https://lmt.nibio.no/services/rest/vips/getdata/forecastfallback?weatherStationId="+weatherStation+"&elementMeasurementTypes[]=TM&logInterval=1d&startDate="+startTime+"&startTime=00&endDate="+endTime+"&endTime=23&timeZone=Europe/Oslo", function( observations ) { 
+    		$.getJSON("https://lmt.nibio.no/services/rest/weatherstation/getstation?weatherStationId="+weatherStation, function( weatherstation ) {
+    			allObservations = weatherstation; 
+            	var name = String(weatherstation.name);
+    			runModel(basisTemp, observations, name, startTime, endTime);
+    });
+    });
+    
+}
+
+/**
+ * Calls the dayDegreemodel in the VIPS forecasting system
+ * Displays data when results are returned
+ */
+function runModel (basisTemp, data, name, start, end) {
+	
+	var modelConfig = {
+		"loginInfo":{
+			"username":"testuser",
+			"password":"testpass"
+		},
+		"modelId":"DAYDEGREES",
+		"configParameters":{
+			"basisTemp": basisTemp,
+			"observations": data
+		}
+	};
+
+    var request = $.ajax({
+        type:"POST",
+        url: runUri,
+        data: JSON.stringify(modelConfig),
+        dataType: "json",
+        contentType: "application/json; charset=utf-8",
+    })
+    .done(function(data, textStatus, jqXHR) {
+		displayResults(data, basisTemp, name, start, end);
+	})
+	.fail(function( jqXHR, textStatus,errorThrown ) {
+		alert( "Request failed: " + errorThrown );
+	})
+	.always(function() {
+		alert( "complete" );
+	})
+	;
+}
+
+function displayResults(data, basisTemp, name, start, end) {
+	
+			let date = new Array();
+			let series = [];
+			let time = new Array();
+			let temperature = new Array();
+			let forecast = new Array();
+			
+			
+			if(!emptyChart) {
+				for (var i = 0; i < data.length; i++){
+					
+		        	var localTime = new Date(data[i].validTimeStart);
+		        	const offset = localTime.getTimezoneOffset()
+					localTime= new Date(localTime.getTime() - (offset*60*1000))
+						
+					if(localTime < moment()){
+						temperature.push(parseInt((data[i].allValues).match(/[-+]?([0-9]*\.[0-9]+|[0-9]+)/)));
+						forecast.push(null);
+					} else{
+						forecast.push(parseInt((data[i].allValues).match(/[-+]?([0-9]*\.[0-9]+|[0-9]+)/)));
+					}
+				
+		    	    localTime = localTime.toISOString().split('T')[0];
+		        	time.push(localTime);
+				}
+				// Fill the gap between temperature and forecast
+				let index = temperature.length-1;
+				forecast[index]=temperature[index];
+			
+				const lastValue = forecast[forecast.length -1];
+			
+				// Set x-axis interval to 7 days
+    			var maxTicksLimit = time.length / 7;
+    	    	var rotation = 0;
+    			if(maxTicksLimit > 10) {
+					rotation = 20;
+					maxTicksLimit = 11;
+				}
+				
+				document.getElementById("textInfo").innerText = "";		  
+			
+				let infotext = document.createElement("p");
+				var text1 = "<p>Varmesum, med basistemperatur " + basisTemp + " °C beregnet ut fra middeltemperatur i 2m høyde for " + name + " værstasjon for perioden fra og med " + start + " til og med " + end + " er: </p>";
+				var text2 = "<p><b>" + lastValue + "</b> døgngrader\n\n</p>";			  	
+			
+	    		infotext = text1 + text2;
+		
+				document.getElementById("textInfo").innerHTML=infotext;
+				
+			} else{
+				for (var i = 0; i < 10; i++){
+					time.push(null);
+					forecast.push(null);
+					name = 'Alvdal';
+					start = '-';
+					end = '-'; 
+				}
+			}
+				
+			
+			
+			
+			var chartExist = Chart.getChart("daydegreesum");
+			
+			if(chartExist != undefined){
+				chartExist.destroy();
+			}
+			
+			var ctx = document.getElementById("daydegreesum").getContext('2d');
+			
+		
+			series[0] = {
+					label: "Døgngrader",
+					data: temperature,
+					borderColor: '#ff0000',
+					borderWidth: 2,
+					spanGaps: true,
+					fill: {
+						target: 174,
+						above: 'rgb(255, 0, 0)',   // Area will be red above the origin
+                		below: 'rgb(0, 0, 255)'    // And blue below the origin
+                	}
+			};
+			
+			series[1] = {
+					label: "Døgngrader prognose",
+					data: forecast,
+					borderColor: '#ff0000',
+					borderDash: [3, 3],
+					borderWidth: 2,
+					spanGaps: true
+			};
+					
+			var data = {
+					labels: time,
+					datasets: series
+			};
+				
+			var text = String("Varmesum for " + name + " i perioden " + start + " til " + end );
+			
+			new Chart(ctx, {
+				type: 'line',
+			    data: data,
+			    options: {
+			    	scales: {
+						x: {
+							ticks: {
+								maxTicksLimit: maxTicksLimit,
+								maxRotation: rotation
+							}
+						},
+		    			y: {
+		    				display: true,
+		    				title: {
+		    					display: true,
+		    					text: '°C'
+		    				}
+		    			},
+		    		},
+		    		elements: {
+		    			point:{
+		    				radius: 0
+		    			}
+		    		},	    		
+		    		plugins: {
+		    			title: {
+		    				display: true,
+		    				text: text,
+		    				fontSize: 18
+		    			},
+		    			legend: {
+		    				display: true,
+		    				labels: {
+		    					boxHeight: 1
+		    				},
+		    				position: 'bottom'
+		    			},
+		    			tooltip: {
+							intersect: false,
+							displayColors: false,
+		    				callbacks: {
+								title: function () {
+									return '';
+								},
+								label: function (context) {
+									const date = context.label;
+									const value = context.parsed.y;
+									return `${date} er varmesummen ${value} °C`;
+								}
+							}
+		    			 },
+		    			 annotation: {
+							annotations: [{
+								type: 'line',
+								mode: 'horizontal',
+								scaleID: 'y',
+								value: 174,
+								borderColor: 'grey',
+								borderWidth: 2,
+								borderDash: [5, 5],
+								label: {
+          							color: 'grey',
+          							backgroundColor: 'transparent',
+          							content: 'Sverming',
+          							font: {
+            							size: 14
+            						},
+            						enabled: true,
+            						position: 'end',
+            						xAdjust: 10,
+            						yAdjust: -10
+            					}
+							}, {
+								type: 'line',
+								mode: 'horizontal',
+								scaleID: 'y',
+								value: 320,
+								borderColor: 'grey',
+								borderWidth: 2,
+								borderDash: [5, 5],
+								label: {
+          							color: 'grey',
+          							backgroundColor: 'transparent',
+          							content: 'Egglegging',
+          							font: {
+            							size: 14
+            						},
+            						enabled: true,
+            						position: 'end',
+            						xAdjust: 10,
+            						yAdjust: -10
+            					}
+							}, {
+								type: 'line',
+								mode: 'horizontal',
+								scaleID: 'y',
+								value: 565,
+								borderColor: 'grey',
+								borderWidth: 2,
+								borderDash: [5, 5],
+								label: {
+          							color: 'grey',
+          							backgroundColor: 'transparent',
+          							content: 'Klekking',
+          							font: {
+            							size: 14
+            						},
+            						enabled: true,
+            						position: 'end',
+            						xAdjust: 10,
+            						yAdjust: -10
+            					}
+							}
+							]
+						}
+					}
+				}
+			  });
+			  
+			 
+			
+	
+}
+
+function setStartText (){
+			
+			document.getElementById("textInfo").innerText = "";		  
+			
+			let infotext = document.createElement("p");
+			infotext = "<p>Varmesum, med basistemperatur 0 °C beregnes ut fra middeltemperatur i 2m høyde for valgt værstasjon for en gitt periode. </p>";		  	
+			
+			document.getElementById("textInfo").innerHTML=infotext;
+	
+}
+
+
diff --git a/applefruitmoth/templates/applefruitmoth/index.html b/applefruitmoth/templates/applefruitmoth/index.html
index 4d2f2218113268e6c719dc2d301d7b74bff8724c..1749e12e2bc321cb516ce6543da4b936f22ee58b 100755
--- a/applefruitmoth/templates/applefruitmoth/index.html
+++ b/applefruitmoth/templates/applefruitmoth/index.html
@@ -67,22 +67,90 @@
 	</div>
 </div>
 
+<div class="singleBlockContainer">
+	<br><h2>Døgngrader for rognebærmøll</h2><br>
+	<div class="row">
+  	<div class="col-md-12">
+  		<div class="form-group">
+  		    <p>Utviklinga til rognebærmøll er avhengig av temperatur, slik at utviklingsfarten og tidspunkt for tiltak variere mellom ulike distrikt. For å vurdere tidspunktet må du ha notert når rogna sto i full blom og rekne ut varmesum etter det.</p> 
+			<div class="row"><br><br>
+			<div style="font-size:75%;" id="setBasis"></div>
+			    
+			    <div class="col-md-3">		
+			    	<div class="form-group">
+						<label for="weatherstation">Målestasjon</label>
+						<select id="weatherstation" class="form-control"></select>
+					</div>
+			    
+			    	<div class="form-group">
+			    		<label for="temp">Basistemperatur, °C</label>
+						<input type="text" value=0.0  id="temp" class="form-control">
+					</div>
+					
+					<div class="form-group">
+						<label for="startdate">Dato for full blom i rogn</label>
+						<input type="date" id="startdate" class="form-control">
+					</div>
+					
+					<div class="form-group">
+						<label for="enddate">Sluttdato, med prognose 9 døgn frem i tid</label>
+						<input type="date" value=moment().add(7,'days').format('YYYY-MM-DD'); id="enddate" class="form-control">
+					</div>
+			    
+  	    			<br>
+  	    			<div class="form-group">
+  	    				<button type="button" class="btn btn-primary" onclick="getBasis(this)">Beregn</button>
+  	    				<br><br><br>
+  	    			</div>	
+  	    		
+				</div>
+  	    		
+  	    		<div class="col-md-8">
+  	    			<div class="col-md-1"></div>
+  	    			<div class="col-md-10">
+  						<div class="form-group" id="textInfo" ></div>
+  					</div>
+  					<div class="col-md-1"></div>
+  				</div>
+  	    		
+  	    		</div>	
+  	    		<br>
+  	    	</div>
+  	    	
+  	    </div>
+  	</div>
+  	
+  	<div class="row">
+  		<div class="col-md-1"></div>
+		<div class="col-md-10">
+  			<canvas id="daydegreesum" height="150"></canvas>
+  		</div>
+  		<div class="col-md-1"></div>
+  	</div><br>
+</div>
+
 
 {% endblock %}
 {% block customCSS %}
 <link rel="stylesheet" href="{% static "css/3rdparty/ol.css" %}" type="text/css">
 {% endblock %}
 {% block customJS %}
+<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
+<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-annotation@1.0.2"></script>
 <script type="text/javascript" src="{% static "js/3rdparty/ol.js" %}"></script>
 <script type="text/javascript" src="{% url "javascript-catalog" %}"></script>
 <script type="text/javascript" src="{% url "views.settings_js" %}"></script>
 <script type="text/javascript" src="{% static "js/util.js" %}"></script>
 <script type="text/javascript" src="{% static "applefruitmoth/js/map.js" %}"></script>
+<script type="text/javascript" src="{% static "applefruitmoth/js/test.js" %}"></script>
+<script src="{% static "js/3rdparty/moment-with-locales.min.js" %}"></script>
 <script type="text/javascript">
+	
 	$(document).ready(function() {
 		
 		
 		initMap("appleFruitMothForecastMap","{{settings.MAP_ATTRIBUTION|safe}}");
+		
 	});
 </script>
 {% endblock %}
\ No newline at end of file