Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
added service targets to organisation
  • Loading branch information
temi committed Nov 22, 2024
1 parent 468e159 commit aafa048
Show file tree
Hide file tree
Showing 10 changed files with 535 additions and 6 deletions.
2 changes: 2 additions & 0 deletions grails-app/assets/javascripts/organisation-manifest.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@
//= require sites.js
//= require reporting.js
//= require document.js
//= require organisationService.js
//= require services.js
//= require organisation.js
55 changes: 55 additions & 0 deletions grails-app/assets/javascripts/organisation.js
Original file line number Diff line number Diff line change
Expand Up @@ -548,6 +548,8 @@ OrganisationPageViewModel = function (props, options) {
}
}
};
var organisationService = new OrganisationService(options);
self.periods = organisationService.getBudgetHeaders();

self.initialise = function() {
$.fn.dataTable.moment( 'dd-MM-yyyy' );
Expand Down Expand Up @@ -634,6 +636,32 @@ OrganisationPageViewModel = function (props, options) {
self.reportingEnabled = ko.observable();
self.selectedOrganisationReportCategories = ko.observableArray();

// List of service / target measure
self.allTargetMeasures = [];
var services = options.services || [];
for (var i=0; i<services.length; i++) {
if (services[i].scores) {
for (var j=0; j<services[i].scores.length; j++) {
self.allTargetMeasures.push( {
label:services[i].name+' - '+services[i].scores[j].label,
serviceId:services[i].id,
scoreId:services[i].scores[j].scoreId,
service:services[i],
score:services[i].scores[j],
value:services[i].scores[j].scoreId
});
}
}
}

self.allTargetMeasures = _.sortBy(self.allTargetMeasures, 'label');
var propDetails = props && props.custom && props.custom.details || {};
self.selectedTargetMeasures = ko.observableArray();
var details = new DetailsViewModel(propDetails, props, self.periods, self.allTargetMeasures, options);
updatedTargetMeasures(details);
self.reportingTargets = ko.observable(details);
self.isProjectDetailsLocked = ko.observable(false);

var setStartAndEndDateDefaults = function() {
var currentConfig = parsedConfig();
if (!currentConfig || !currentConfig.organisationReports || currentConfig.organisationReports.length == 0) {
Expand Down Expand Up @@ -692,6 +720,26 @@ OrganisationPageViewModel = function (props, options) {
reportService.regenerateReports(data,options.regenerateOrganisationReportsUrl);
};

function updatedTargetMeasures (details) {
var reportingTargets = details,
selectedServices = reportingTargets.services.services(),
allServices = self.allTargetMeasures;

_.each(allServices, function (service) {
var found = _.find(selectedServices, function (selectedService) {
return selectedService.scoreId() === service.scoreId;
});

if (!found) {
reportingTargets.services.addServiceTarget(service);
}
})
}

self.attachValidation = function() {
$("#organisation-targets").validationEngine('attach', {validationAttribute: "data-validation-engine"});
};

self.saveOrganisationConfiguration = function() {
var currentConfig = parsedConfig();
if (!currentConfig) {
Expand All @@ -713,6 +761,13 @@ OrganisationPageViewModel = function (props, options) {
return saveOrganisation(json);
};

self.saveCustomFields = function() {
if ($("#organisation-targets form").validationEngine('validate')) {
var json = JSON.parse(self.reportingTargets().modelAsJSON());
return saveOrganisation(json);
}
};


var saveOrganisation = function(json) {
return $.ajax({
Expand Down
36 changes: 36 additions & 0 deletions grails-app/assets/javascripts/organisationService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
function OrganisationService(organisation, options) {
var self = this;
var defaults = {
excludeFinancialYearData : false
};

var config = _.defaults(options, defaults);

self.getBudgetHeaders = function() {
if (config.excludeFinancialYearData) {
return []; // Return a single period header for the organisation
}
var headers = [];
var startYr = moment(organisation.plannedStartDate).format('YYYY');
var endYr = moment(organisation.plannedEndDate).format('YYYY');
var startMonth = moment(organisation.plannedStartDate).format('M');
var endMonth = moment(organisation.plannedEndDate).format('M');

//Is startYr is between jan to june?
if(startMonth >= 1 && startMonth <= 6 ){
startYr--;
}

//Is the end year is between july to dec?
if(endMonth >= 7 && endMonth <= 12 ){
endYr++;
}

var count = endYr - startYr;
for (i = 0; i < count; i++){
headers.push(startYr + '/' + ++startYr);
}

return headers;
};
}
Loading

0 comments on commit aafa048

Please sign in to comment.