-
Notifications
You must be signed in to change notification settings - Fork 5
/
test.js
39 lines (36 loc) · 1.19 KB
/
test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/**
*
* @param int value
* @param object limits: minColor, maxColor, minValue, maxValue
* @returns array rgba
*/
function getValueColor(value, limits) {
var minColor = hexToRgb(limits.minColor),
maxColor = hexToRgb(limits.maxColor),
valueOffset = (value - limits.minValue) / Math.abs(limits.maxValue - limits.minValue), // %
R = (maxColor.r - minColor.r) * valueOffset + minColor.r,
G = (maxColor.g - minColor.g) * valueOffset + minColor.g,
B = (maxColor.b - minColor.b) * valueOffset + minColor.b;
return rgbToHex(R, G, B);
function hexToRgb(hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
function rgbToHex(r, g, b) {
return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
}
}
function getOrdinalNumber(n) {
if (n < 11 || n > 13) {
switch (n % 10) {
case 1: return n + 'st';
case 2: return n + 'nd';
case 3: return n + 'rd';
}
}
return n + 'th';
}