From cfaa2c2ab4c9bd0f0347a0e1614a2ddf31ab618c Mon Sep 17 00:00:00 2001 From: chrisala Date: Tue, 10 Dec 2024 14:58:06 +1100 Subject: [PATCH] Support blanks and allow them to be excluded from the average #3369 --- grails-app/assets/javascripts/services.js | 29 +++++++++++++++---- grails-app/views/organisation/_admin.gsp | 2 +- .../{_budget.gsp => _funding.gsp} | 2 +- .../adhoc/disableRcsReportingTemporarily.js | 27 +++++++++++++++++ 4 files changed, 53 insertions(+), 7 deletions(-) rename grails-app/views/organisation/{_budget.gsp => _funding.gsp} (84%) create mode 100644 src/main/scripts/releases/4.1/adhoc/disableRcsReportingTemporarily.js diff --git a/grails-app/assets/javascripts/services.js b/grails-app/assets/javascripts/services.js index 45d87c6fe..bf37e74ef 100644 --- a/grails-app/assets/javascripts/services.js +++ b/grails-app/assets/javascripts/services.js @@ -83,10 +83,29 @@ function OrganisationServicesViewModel(serviceIds, allServices, outputTargets, p if (periods.length === 0) return; - var sum = sumOfPeriodTargets(); - var avg = sum / periods.length; + + // TODO make the behaviour of the total configurable so we can make this more reusable + var avg = averageOfPeriodTargets(); + target.target(avg); } + + function averageOfPeriodTargets() { + // For RCS reporting, targets are evaluated each year so we don't want to include undefined + // targets in the average. + var sum = 0; + var count = 0; + _.each(target.periodTargets, function (periodTarget) { + var target = parseInt(periodTarget.target()); + if (!_.isNaN(target)) { + sum += target + count++; + } + }); + + return sum/count; + } + function sumOfPeriodTargets() { var sum = 0; _.each(target.periodTargets, function (periodTarget) { @@ -113,14 +132,14 @@ function OrganisationServicesViewModel(serviceIds, allServices, outputTargets, p return target.scoreId() == outputTarget.scoreId; }); _.each(periods, function (period, i) { - var periodTarget = 0; + var periodTarget = null; if (currentTarget) { var currentPeriodTarget = _.find(currentTarget.periodTargets || [], function (periodTarget) { - return periodTarget.period == period; + return periodTarget.period == period.value; }) || {}; periodTarget = currentPeriodTarget.target; } - target.periodTargets[i].target(periodTarget || 0); + target.periodTargets[i].target(periodTarget); // subscribe after setting the initial value !subscribed && target.periodTargets[i].target.subscribe(evaluateAndAssignAverage); }); diff --git a/grails-app/views/organisation/_admin.gsp b/grails-app/views/organisation/_admin.gsp index 70b08edbf..042795d82 100644 --- a/grails-app/views/organisation/_admin.gsp +++ b/grails-app/views/organisation/_admin.gsp @@ -157,7 +157,7 @@

Total funding

- +

Service Targets

diff --git a/grails-app/views/organisation/_budget.gsp b/grails-app/views/organisation/_funding.gsp similarity index 84% rename from grails-app/views/organisation/_budget.gsp rename to grails-app/views/organisation/_funding.gsp index da7a4dc4f..bb870c7d3 100644 --- a/grails-app/views/organisation/_budget.gsp +++ b/grails-app/views/organisation/_funding.gsp @@ -1,7 +1,7 @@
- +

${explanation}

diff --git a/src/main/scripts/releases/4.1/adhoc/disableRcsReportingTemporarily.js b/src/main/scripts/releases/4.1/adhoc/disableRcsReportingTemporarily.js new file mode 100644 index 000000000..4155b04dd --- /dev/null +++ b/src/main/scripts/releases/4.1/adhoc/disableRcsReportingTemporarily.js @@ -0,0 +1,27 @@ + +load( "../../../utils/audit.js"); + +let adminUserId = '' + +function findRcsReportConfig(reports) { + for (let i=0; i