Name
sn_risk.RiskHeatmapBase
Description
No description available
Script
var RiskHeatmapBase = Class.create();
RiskHeatmapBase.prototype = {
initialize: function() {},
getRiskHeatmapData: function(heatmapType, filter, includeColor) {
if (!gs.hasRole('sn_risk.reader'))
return '';
return this._getRiskHeatmapData(heatmapType, filter, includeColor);
},
getRiskHeatmapXAxisCategories: function() {
if (!gs.hasRole('sn_risk.reader'))
return '';
return this._getRiskHeatmapXAxisCategories();
},
getRiskHeatmapYAxisCategories: function() {
if (!gs.hasRole('sn_risk.reader'))
return '';
return this._getRiskHeatmapYAxisCategories();
},
_getRiskHeatmapXAxisCategories: function() {
var likelihood = new GlideRecord('sn_risk_criteria');
likelihood.addQuery('type', 'likelihood');
likelihood.orderByDesc('order');
likelihood.query();
var likelihoodCategories = [];
while (likelihood.next())
likelihoodCategories.push(likelihood.getValue('display_value'));
return likelihoodCategories;
},
_getRiskHeatmapYAxisCategories: function() {
var impact = new GlideRecord('sn_risk_criteria');
impact.addQuery('type', 'impact');
impact.orderByDesc('order');
impact.query();
var impactCategories = [];
while (impact.next())
impactCategories.push(impact.getValue('display_value'));
return impactCategories;
},
_getRiskHeatmapData: function(heatmapType, filter, includeColor) {
var riskData = [];
var riskImpactFieldName = '';
var riskLikelihoodFieldName = '';
if (heatmapType == 'inherent') {
riskImpactFieldName = 'impact';
riskLikelihoodFieldName = 'likelihood';
} else if (heatmapType == 'residual') {
riskImpactFieldName = 'residual_impact';
riskLikelihoodFieldName = 'residual_likelihood';
} else
return riskData;
var likelihood = new GlideRecord('sn_risk_criteria');
likelihood.addQuery('type', 'likelihood');
likelihood.orderByDesc('order');
likelihood.query();
for (var i = 0; i < likelihood.getRowCount(); i++) {
likelihood.next();
var impact = new GlideRecord('sn_risk_criteria');
impact.addQuery('type', 'impact');
impact.orderByDesc('order');
impact.query();
for (var j = 0; j < impact.getRowCount(); j++) {
impact.next();
var risk = new GlideAggregate('sn_risk_risk');
var count = 0;
risk.addQuery(riskImpactFieldName, impact.getUniqueValue());
risk.addQuery(riskLikelihoodFieldName, likelihood.getUniqueValue());
risk.addQuery('state', '!=', 'retired');
if (filter)
risk.addEncodedQuery(filter);
risk.addAggregate('COUNT');
risk.query();
if (risk.next())
count = parseInt(risk.getAggregate('COUNT'));
var riskColor = this._getRiskColor(impact.getUniqueValue(), likelihood.getUniqueValue());
var riskUrl = 'sn_risk_risk_list.do?sysparm_query=' + riskImpactFieldName + '%3D' + impact.getUniqueValue() +
'%5E' + riskLikelihoodFieldName + '%3D' + likelihood.getUniqueValue();
if (filter)
riskUrl += '%5E' + filter;
if (includeColor)
riskData.push({
x: i,
y: j,
value: count,
color: riskColor.color,
tooltipHeading: riskColor.colorName,
url: riskUrl
});
else
riskData.push({
x: i,
y: j,
value: count,
url: riskUrl
});
}
}
return riskData;
},
_getRiskColor: function(impact, likelihood) {
var colorSetting = new GlideRecord('sn_risk_color_setting');
colorSetting.addQuery('impact', impact);
colorSetting.addQuery('likelihood', likelihood);
colorSetting.setLimit(1);
colorSetting.query();
if (colorSetting.next()) {
var colorDetails = {
color: (colorSetting.color.color + ''),
colorName: (colorSetting.color.name + '')
};
return colorDetails;
}
return {
color: '#ff402c' //defaut set to be red
};
},
type: 'RiskHeatmapBase'
};
Sys ID
8b36922a535332003b638e56a11c0873