From 1db8e08d8ee5ce72711d6a9144d0d43f61a4b6b9 Mon Sep 17 00:00:00 2001 From: temi Date: Fri, 1 Nov 2024 16:41:02 +1100 Subject: [PATCH 1/3] #1724 - added statewide property - added behaviour changes based on national and statewide selection - electorate selection automatically adds its states --- grails-app/assets/javascripts/projects.js | 58 ++++++++++++ .../au/org/ala/merit/ProjectController.groovy | 4 +- grails-app/views/project/_editProject.gsp | 93 +++++++++++-------- grails-app/views/project/_projectSites.gsp | 3 +- grails-app/views/project/index.gsp | 2 +- 5 files changed, 115 insertions(+), 45 deletions(-) diff --git a/grails-app/assets/javascripts/projects.js b/grails-app/assets/javascripts/projects.js index 9f417bf96..1569dc5c1 100644 --- a/grails-app/assets/javascripts/projects.js +++ b/grails-app/assets/javascripts/projects.js @@ -178,12 +178,60 @@ function ProjectViewModel(project) { self.contractEndDate = ko.observable(project.contractEndDate).extend({simpleDate: false}); self.geographicInfo = { nationwide: ko.observable(project.geographicInfo.nationwide || false), + statewide: ko.observable(project.geographicInfo.statewide || false), isDefault: ko.observable(project.geographicInfo.isDefault || false), primaryState: ko.observable(project.geographicInfo.primaryState), primaryElectorate: ko.observable(project.geographicInfo.primaryElectorate), otherStates: ko.observableArray(project.geographicInfo.otherStates || []), otherElectorates: ko.observableArray(project.geographicInfo.otherElectorates || []) }; + self.geographicInfo.nationwide.subscribe(function(newValue) { + if (newValue) { + self.geographicInfo.statewide(false); + self.geographicInfo.primaryState(""); + self.geographicInfo.primaryElectorate(""); + self.geographicInfo.otherStates([]); + self.geographicInfo.otherElectorates([]); + } + }); + + self.geographicInfo.statewide.subscribe(function(newValue) { + if (newValue) { + self.geographicInfo.nationwide(false); + self.geographicInfo.primaryElectorate(""); + self.geographicInfo.otherStates([]); + self.geographicInfo.otherElectorates([]); + } + }); + + self.geographicInfo.primaryElectorate.subscribe(function(newValue) { + if (newValue) { + var electorate = findElectorate(newValue); + if (electorate && electorate.state && electorate.state.length > 0) { + self.geographicInfo.primaryState(electorate.state[0]); + // if state is set to primary state, remove it from other states + if (self.geographicInfo.otherStates.indexOf(electorate.state[0]) > -1) { + self.geographicInfo.otherStates.remove(electorate.state[0]); + } + } + } + }); + + // automatically add states of selected electorates to other states field + self.geographicInfo.otherElectorates.subscribe(function(newValue) { + if (newValue) { + var otherElectorates = self.geographicInfo.otherElectorates(); + otherElectorates && _.each(otherElectorates, function(name) { + var electorate = findElectorate(name); + var states = electorate && electorate.state; + _.each(states, function(state) { + if (state && self.geographicInfo.otherStates.indexOf(state) === -1 && self.geographicInfo.primaryState() !== state) { + self.geographicInfo.otherStates.push(state); + } + }) + }); + } + }); self.transients.programs = []; self.transients.subprograms = {}; self.transients.subprogramsToDisplay = ko.computed(function () { @@ -191,6 +239,14 @@ function ProjectViewModel(project) { }); self.transients.fixedProjectDuration = ko.observable(false); + + function findElectorate(electorateName) { + var electorates = self.transients.electorates.originalElectorateList; + return electorates && _.find(electorates, function(electorate) { + return electorate.name === electorateName; + }); + }; + var isBeforeToday = function(date) { return moment(date) < moment().startOf('day'); }; @@ -448,6 +504,7 @@ function ProjectViewModel(project) { }); self.transients.electorates(electorates); + self.transients.electorates.originalElectorateList = data; }); $.when(promise1, promse2).done(self.loadGeographicInfo); @@ -455,6 +512,7 @@ function ProjectViewModel(project) { self.loadGeographicInfo = function () { self.geographicInfo.nationwide(project.geographicInfo.nationwide); + self.geographicInfo.statewide(project.geographicInfo.statewide); self.geographicInfo.isDefault(project.geographicInfo.isDefault); self.geographicInfo.primaryState(project.geographicInfo.primaryState); self.geographicInfo.primaryElectorate(project.geographicInfo.primaryElectorate); diff --git a/grails-app/controllers/au/org/ala/merit/ProjectController.groovy b/grails-app/controllers/au/org/ala/merit/ProjectController.groovy index 9b369a3ac..5e615c014 100644 --- a/grails-app/controllers/au/org/ala/merit/ProjectController.groovy +++ b/grails-app/controllers/au/org/ala/merit/ProjectController.groovy @@ -1227,8 +1227,8 @@ class ProjectController { render reportData as JSON } - def spatialFeatures (String layerId) { - webService.proxyGetRequest(response, grailsApplication.config.getProperty('ecodata.baseUrl') + "spatial/features?layerId=${layerId}", false, true, 120000) + def spatialFeatures (String layerId, String intersectWith) { + webService.proxyGetRequest(response, grailsApplication.config.getProperty('ecodata.baseUrl') + "spatial/features?layerId=${layerId}&intersectWith=${intersectWith?:''}", false, true, 120000) return null } diff --git a/grails-app/views/project/_editProject.gsp b/grails-app/views/project/_editProject.gsp index 80562028b..7de30e7e3 100644 --- a/grails-app/views/project/_editProject.gsp +++ b/grails-app/views/project/_editProject.gsp @@ -264,24 +264,66 @@
-
- + From 82706759b5ed452026aacb2aa99dbcd8a1575042 Mon Sep 17 00:00:00 2001 From: temi Date: Mon, 4 Nov 2024 10:43:49 +1100 Subject: [PATCH 3/3] #1724 - fixes a test fail --- grails-app/views/project/_geographicInfo.gsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grails-app/views/project/_geographicInfo.gsp b/grails-app/views/project/_geographicInfo.gsp index faf8b6239..86943cddc 100644 --- a/grails-app/views/project/_geographicInfo.gsp +++ b/grails-app/views/project/_geographicInfo.gsp @@ -1,5 +1,5 @@ - +

Geographic range