Skip to content

Instantly share code, notes, and snippets.

@KeithNdhlovu
Created March 30, 2017 09:22
Show Gist options
  • Save KeithNdhlovu/29076168e2f0e16b000605ac6ad19248 to your computer and use it in GitHub Desktop.
Save KeithNdhlovu/29076168e2f0e16b000605ac6ad19248 to your computer and use it in GitHub Desktop.
/**
* Generates a color between green and red to specify the risk of the compliance.
*
* @param percentage value Will be used to calculate risk.
* @return Risk color.
*/
$scope.rangeColor = function(pct) {
var percentColors = [
{ pct: 0, color: { r: 0xff, g: 0x00, b: 0 } },
{ pct: 50, color: { r: 0xff, g: 0xff, b: 0 } },
{ pct: 100, color: { r: 0x00, g: 0xff, b: 0 } }
];
for (var i = 1; i < percentColors.length - 1; i++) {
if (pct < percentColors[i].pct) {
break;
}
}
var lower = percentColors[i - 1];
var upper = percentColors[i];
var range = upper.pct - lower.pct;
var rangePct = (pct - lower.pct) / range;
var pctLower = 1 - rangePct;
var pctUpper = rangePct;
var color = {
r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper),
g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper),
b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper)
};
return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';
// or output as hex if preferred
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment