Name
sn_chg_score.ChangeSuccessGroupScoreSNC
Description
Provides functions that can be used to retreive Change success score data and associated metrics for a group. To modify behavior, use the provided ChangeSuccessGroupScore extension to override functions defined within this script include.
Script
var ChangeSuccessGroupScoreSNC = Class.create();
ChangeSuccessGroupScoreSNC.prototype = {
initialize: function(groupId) {
this.NO_RATING_MSG = gs.getMessage("No rating found");
this.NO_RATING_COLOR = "#E6E8EA";
this.groupId = groupId || null;
this.groupGr = this._getGroup();
this.checkSecurity = true;
this.changeSuccessScoreUtils = new sn_chg_score.ChangeSuccessScoreUtils();
},
setWithSecurity: function(trueOrFalse) {
this.checkSecurity = this.changeSuccessScoreUtils.isTrue(trueOrFalse);
return this;
},
getScoreAndIndicators: function() {
var scoreDetails = this.getSuccessScoreData();
if (scoreDetails === null)
return scoreDetails;
var ratingGr = this._getRating(scoreDetails.score);
if (ratingGr) {
scoreDetails.displayValue = ratingGr.getDisplayValue();
scoreDetails.backgroundColor = ratingGr.getValue("color");
} else {
scoreDetails.displayValue = this.NO_RATING_MSG;
scoreDetails.backgroundColor = this.COLOR;
}
scoreDetails.metrics = this.getChangeSuccessIndicatorData();
return scoreDetails;
},
getSuccessScoreData: function() {
var scoreData = {"canRead": true};
if (this.groupGr === null || (this.checkSecurity && !this.groupGr.canRead())) {
scoreData.canRead = false;
return scoreData;
}
scoreData.hasScore = false;
var scoreResult = this._getBreakdownScore(this.changeSuccessScoreUtils.PA_CHANGE_SUCCESS_SCORE_INDICATOR_ID,
this.changeSuccessScoreUtils.PA_CHANGE_SCORE_GROUP_BREAKDOWN_ID,
this.groupId);
if (!scoreResult)
return scoreData;
scoreData.score = scoreResult.value;
scoreData.scoreFormatted = scoreResult.value_formatted;
scoreData.delta = gs.nil(scoreResult.change) ? "0" : scoreResult.change;
scoreData.deltaFormatted = scoreResult.change_formatted;
scoreData.hasScore = !global.ChangeCommon.isNil(scoreData.score);
return scoreData;
},
getChangeSuccessIndicatorData: function() {
var changeSuccessIndicatorData = [];
if (this.groupId === null)
return changeSuccessIndicatorData;
var paIndicatorTagGr = new GlideRecord("pa_m2m_indicator_tags");
paIndicatorTagGr.addQuery("tag", this.changeSuccessScoreUtils.PA_CHANGE_SCORE_INDICATOR_GROUP_ID);
paIndicatorTagGr.orderBy("order");
paIndicatorTagGr.query();
while (paIndicatorTagGr.next()) {
var scoreResult = this._getBreakdownScore(paIndicatorTagGr.getValue("indicator"),
this.changeSuccessScoreUtils.PA_CHANGE_SCORE_GROUP_BREAKDOWN_ID,
this.groupId, new global.ChangeSuccessScoreGlobalUtils().getIndicatorScoresDomain());
if (!scoreResult)
continue;
var data = {};
data.name = scoreResult.indicator.display_value;
data.value = scoreResult.value;
data.valueFormatted = scoreResult.value_formatted;
data.delta = gs.nil(scoreResult.change) ? "0" : scoreResult.change;
data.deltaFormatted = scoreResult.change_formatted;
changeSuccessIndicatorData.push(data);
}
return changeSuccessIndicatorData;
},
_getBreakdownScore: function(indicatorId, breakdownId, breakdownValue, domain) {
if (!indicatorId || !breakdownId || !breakdownValue)
return null;
var scorecard = new PAScorecard();
scorecard.addParam("sysparm_display", "all");
scorecard.addParam("uuid", indicatorId + ":" + breakdownId + ":" + breakdownValue + (domain ? ";" + domain : ""));
var scoreResults = scorecard.query();
if (!scoreResults || scoreResults.length === 0)
return null;
return scoreResults[0];
},
_getRating: function(score) {
if (!score || isNaN(score))
return null;
var ratingGr = new GlideRecord(this.changeSuccessScoreUtils.CHG_SUCCESS_SCORE_RATING);
ratingGr.addActiveQuery();
ratingGr.addQuery("score_start", "<=", score);
ratingGr.addQuery("score_end", ">=", score);
ratingGr.orderBy("score_start");
ratingGr.query();
while (ratingGr.next())
if (score <= ratingGr.getValue("score_end"))
return ratingGr;
return null;
},
_getGroup: function() {
var groupGr = new GlideRecord("sys_user_group");
if (!groupGr.get(this.groupId))
return null;
return groupGr;
},
type: 'ChangeSuccessGroupScoreSNC'
};
Sys ID
698c93f973405010491d235f04f6a72e