luci-base: generalize random color generation

Generation of pseudo random hex color from a string can be useful also for other task. Generalize it to make it available also for other purpose.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
This commit is contained in:
Ansuel Smith 2020-11-18 00:48:08 +01:00
parent 1da9df8376
commit 44d02afab1
No known key found for this signature in database
GPG key ID: AC001D09ADBFEAD7
2 changed files with 19 additions and 15 deletions

View file

@ -57,21 +57,7 @@ function getColorForName(forName) {
else if (forName == 'wan')
return '#f09090';
random.seed(parseInt(sfh(forName), 16));
var r = random.get(128),
g = random.get(128),
min = 0,
max = 128;
if ((r + g) < 128)
min = 128 - r - g;
else
max = 255 - r - g;
var b = min + Math.floor(random.get() * (max - min));
return '#%02x%02x%02x'.format(0xff - r, 0xff - g, 0xff - b);
return random.derive_color(forName);
}

View file

@ -89,5 +89,23 @@ return L.Class.extend({
}
return Math.floor(r * (u - l + 1)) + l;
},
derive_color: function(string) {
this.seed(parseInt(sfh(string), 16));
var r = this.get(128),
g = this.get(128),
min = 0,
max = 128;
if ((r + g) < 128)
min = 128 - r - g;
else
max = 255 - r - g;
var b = min + Math.floor(this.get() * (max - min));
return '#%02x%02x%02x'.format(0xff - r, 0xff - g, 0xff - b);
}
});