From 7c475445a93099fffaf126cce0218ed96b234665 Mon Sep 17 00:00:00 2001 From: lewa <lene.wasskog@nibio.no> Date: Thu, 20 Jun 2024 10:02:43 +0200 Subject: [PATCH] fix(observations): Ensure that pois of all relevant types are displayed in form POIs of type 'trap' were not included in the select list. This made it impossible to approve observations registered on such locations. --- .../vips/logic/i18n/vipslogictexts.properties | 2 + .../logic/i18n/vipslogictexts_bs.properties | 2 + .../logic/i18n/vipslogictexts_hr.properties | 2 + .../logic/i18n/vipslogictexts_nb.properties | 2 + .../logic/i18n/vipslogictexts_sr.properties | 2 + .../i18n/vipslogictexts_zh_CN.properties | 2 + src/main/webapp/templates/observationForm.ftl | 65 ++++++++++--------- 7 files changed, 46 insertions(+), 31 deletions(-) diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties index 371c54a8..80a357d2 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties @@ -308,6 +308,8 @@ fieldSowingDate = Field sowing date fields = Fields +traps = Traps + filter = Filter filterList = Filter list diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties index e95e775b..87647c45 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_bs.properties @@ -306,6 +306,8 @@ fieldSowingDate = Field sowing date fields = Fields +traps = Traps + filter = Filter filterList = Filter list diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties index 994f99da..351048a4 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_hr.properties @@ -306,6 +306,8 @@ fieldSowingDate = Field sowing date fields = Fields +traps = Traps + filter = Filter filterList = Filter list diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties index e8bdd398..1e03844c 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties @@ -308,6 +308,8 @@ fieldSowingDate = S\u00e5dato for felt fields = Felt +traps = Feller + filter = Filter filterList = Filtr\u00e9r lista diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties index 33ee218c..1a791041 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_sr.properties @@ -306,6 +306,8 @@ fieldSowingDate = Field sowing date fields = Fields +traps = Traps + filter = Filter filterList = Filter list diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties index e5f1e363..0384f07d 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_zh_CN.properties @@ -304,6 +304,8 @@ fieldSowingDate = Field sowing date fields = Fields +traps = Traps + filter = \u8fc7\u6ee4\u5668 filterList = Filter list diff --git a/src/main/webapp/templates/observationForm.ftl b/src/main/webapp/templates/observationForm.ftl index d34ca3f4..4945cddf 100755 --- a/src/main/webapp/templates/observationForm.ftl +++ b/src/main/webapp/templates/observationForm.ftl @@ -230,38 +230,41 @@ var allPois = []; - /** - * Fetches locations, farms, fields and weather stations, renders the list - */ - function refreshLocationPointOfInterests(pointOfInterestId) + /** + * Fetches locations, farms, fields, traps and weather stations, renders the list + */ + function refreshLocationPointOfInterests(selectedPointOfInterestId) { - var poiTypes = ["${i18nBundle.genericPlaces}","${i18nBundle.weatherStations}","${i18nBundle.farms}","${i18nBundle.fields}"]; - $.getJSON("/rest/poi/user", function( json ) { - allPois = json; - var theList = document.getElementById("locationPointOfInterestId"); - theList.options.length = 1; - // Locations first, weather stations next - for(var h=0;h<poiTypes.length;h++) - { - var option = new Option("-- " + poiTypes[h] + " --","-1"); - theList.options[theList.options.length] = option; - for(var i=0;i< allPois.length;i++) - { - var poi = allPois[i]; - if(poi.pointOfInterestTypeId == h) - { - var option = new Option(poi.name, poi.pointOfInterestId); - if(poi.pointOfInterestId == pointOfInterestId) - { - option.selected=true; - } - theList.options[theList.options.length] = option; - } - } - } - showCorrectMap(); + const poiTypes = { + 0: "${i18nBundle.genericPlaces}", + 1: "${i18nBundle.weatherStations}", + 2: "${i18nBundle.farms}", + 3: "${i18nBundle.fields}", + 5: "${i18nBundle.traps}" + }; + $.getJSON("/rest/poi/user", function(json) { + const allPois = json; + const poiListElement = document.getElementById("locationPointOfInterestId"); + poiListElement.options.length = 1; + // Iterate through each point of interest type + for (const [typeId, typeName] of Object.entries(poiTypes)) { + poiListElement.options[poiListElement.options.length] = new Option("-- " + typeName + " --", "-1"); + + // Iterate through all POIs and add them to the list if they match the type + for (let i = 0; i < allPois.length; i++) { + const poi = allPois[i]; + + if (poi.pointOfInterestTypeId == typeId) { + const poiOption = new Option(poi.name, poi.pointOfInterestId); + if (poi.pointOfInterestId === selectedPointOfInterestId) { + poiOption.selected = true; } - ); + poiListElement.options[poiListElement.options.length] = poiOption; + } + } + } + showCorrectMap(); + }); } @@ -515,7 +518,7 @@ <input type="hidden" name="observationData" value=""/> <input type="hidden" name="observationId" value="${observation.observationId!"-1"}"/> <!--button type="button" onclick="var theForm=document.getElementById('observationForm');theForm['geoInfo'].value=getFeatures();try{mw.save();theForm['observationData'].value=JSON.stringify(mw.toInspect);return validateForm(theForm) && validateGIS(theForm);}catch(e){console.log(e.message);console.log(e);return false;}">Test</button--> - <#if observation.user?has_content> + <#if observation.user?has_content> <div class="form-group"> <label>${i18nBundle.observer}: ${observation.user.firstName} ${observation.user.lastName}</label> </div> -- GitLab