luci-base: generalize random color generation
authorAnsuel Smith <redacted>
Tue, 17 Nov 2020 23:48:08 +0000 (00:48 +0100)
committerAnsuel Smith <redacted>
Tue, 17 Nov 2020 23:48:16 +0000 (00:48 +0100)
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 <redacted>
modules/luci-base/htdocs/luci-static/resources/firewall.js
modules/luci-base/htdocs/luci-static/resources/tools/prng.js

index b1c7de435887ec99493c0d95b99b7754909c142a..2e032ca2d5c7f5d601cb7ab78344b471ab0d38b0 100644 (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);
 }
 
 
index 752dc75ce857c8dbc8a5b6fe8b29bcceaf50e1f4..b916cc77925ce61991170c35f54bb01a0c1546a0 100644 (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);
        }
 });
git clone https://git.99rst.org/PROJECT