http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/bootstrap-colorpicker.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/bootstrap-colorpicker.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/bootstrap-colorpicker.js
new file mode 100644
index 0000000..2200b0c
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/bootstrap-colorpicker.js
@@ -0,0 +1,949 @@
+/*!
+ * Bootstrap Colorpicker
+ * http://mjolnic.github.io/bootstrap-colorpicker/
+ *
+ * Originally written by (c) 2012 Stefan Petre
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0.txt
+ *
+ * @todo Update DOCS
+ */
+(function($) {
+    'use strict';
+
+    // Color object
+    var Color = function(val) {
+        this.value = {
+            h: 0,
+            s: 0,
+            b: 0,
+            a: 1
+        };
+        this.origFormat = null; // original string format
+        if (val) {
+            if (val.toLowerCase !== undefined) {
+                this.setColor(val);
+            } else if (val.h !== undefined) {
+                this.value = val;
+            }
+        }
+    };
+
+    Color.prototype = {
+        constructor: Color,
+        _sanitizeNumber: function(val) {
+            if (typeof val === 'number') {
+                return val;
+            }
+            if (isNaN(val) || (val === null) || (val === '') || (val === 
undefined)) {
+                return 1;
+            }
+            if (val.toLowerCase !== undefined) {
+                return parseFloat(val);
+            }
+            return 1;
+        },
+        //parse a string to HSB
+        setColor: function(strVal) {
+            strVal = strVal.toLowerCase();
+            this.value = this.stringToHSB(strVal) ||  {
+                h: 0,
+                s: 0,
+                b: 0,
+                a: 1
+            };
+        },
+        stringToHSB: function(strVal) {
+            strVal = strVal.toLowerCase();
+            var that = this,
+                result = false;
+            $.each(this.stringParsers, function(i, parser) {
+                var match = parser.re.exec(strVal),
+                    values = match && parser.parse.apply(that, [match]),
+                    format = parser.format || 'rgba';
+                if (values) {
+                    if (format.match(/hsla?/)) {
+                        result = that.RGBtoHSB.apply(that, 
that.HSLtoRGB.apply(that, values));
+                    } else {
+                        result = that.RGBtoHSB.apply(that, values);
+                    }
+                    that.origFormat = format;
+                    return false;
+                }
+                return true;
+            });
+            return result;
+        },
+        setHue: function(h) {
+            this.value.h = 1 - h;
+        },
+        setSaturation: function(s) {
+            this.value.s = s;
+        },
+        setBrightness: function(b) {
+            this.value.b = 1 - b;
+        },
+        setAlpha: function(a) {
+            this.value.a = parseInt((1 - a) * 100, 10) / 100;
+        },
+        toRGB: function(h, s, v, a) {
+            h = h || this.value.h;
+            s = s || this.value.s;
+            v = v || this.value.b;
+            a = a || this.value.a;
+
+            var r, g, b, i, f, p, q, t;
+            if (h && s === undefined && v === undefined) {
+                s = h.s, v = h.v, h = h.h;
+            }
+            i = Math.floor(h * 6);
+            f = h * 6 - i;
+            p = v * (1 - s);
+            q = v * (1 - f * s);
+            t = v * (1 - (1 - f) * s);
+            switch (i % 6) {
+                case 0:
+                    r = v, g = t, b = p;
+                    break;
+                case 1:
+                    r = q, g = v, b = p;
+                    break;
+                case 2:
+                    r = p, g = v, b = t;
+                    break;
+                case 3:
+                    r = p, g = q, b = v;
+                    break;
+                case 4:
+                    r = t, g = p, b = v;
+                    break;
+                case 5:
+                    r = v, g = p, b = q;
+                    break;
+            }
+            return {
+                r: Math.floor(r * 255),
+                g: Math.floor(g * 255),
+                b: Math.floor(b * 255),
+                a: a
+            };
+        },
+        toHex: function(h, s, b, a) {
+            var rgb = this.toRGB(h, s, b, a);
+            return '#' + ((1 << 24) | (parseInt(rgb.r) << 16) | 
(parseInt(rgb.g) << 8) | parseInt(rgb.b)).toString(16).substr(1);
+        },
+        toHSL: function(h, s, b, a) {
+            h = h || this.value.h;
+            s = s || this.value.s;
+            b = b || this.value.b;
+            a = a || this.value.a;
+
+            var H = h,
+                L = (2 - s) * b,
+                S = s * b;
+            if (L > 0 && L <= 1) {
+                S /= L;
+            } else {
+                S /= 2 - L;
+            }
+            L /= 2;
+            if (S > 1) {
+                S = 1;
+            }
+            return {
+                h: H,
+                s: S,
+                l: L,
+                a: a
+            };
+        },
+        RGBtoHSB: function(r, g, b, a) {
+            r /= 255;
+            g /= 255;
+            b /= 255;
+
+            var H, S, V, C;
+            V = Math.max(r, g, b);
+            C = V - Math.min(r, g, b);
+            H = (C === 0 ? null :
+                V === r ? (g - b) / C :
+                V === g ? (b - r) / C + 2 :
+                (r - g) / C + 4
+            );
+            H = ((H + 360) % 6) * 60 / 360;
+            S = C === 0 ? 0 : C / V;
+            return {
+                h: this._sanitizeNumber(H),
+                s: S,
+                b: V,
+                a: this._sanitizeNumber(a)
+            };
+        },
+        HueToRGB: function(p, q, h) {
+            if (h < 0) {
+                h += 1;
+            } else if (h > 1) {
+                h -= 1;
+            }
+            if ((h * 6) < 1) {
+                return p + (q - p) * h * 6;
+            } else if ((h * 2) < 1) {
+                return q;
+            } else if ((h * 3) < 2) {
+                return p + (q - p) * ((2 / 3) - h) * 6;
+            } else {
+                return p;
+            }
+        },
+        HSLtoRGB: function(h, s, l, a) {
+            if (s < 0) {
+                s = 0;
+            }
+            var q;
+            if (l <= 0.5) {
+                q = l * (1 + s);
+            } else {
+                q = l + s - (l * s);
+            }
+
+            var p = 2 * l - q;
+
+            var tr = h + (1 / 3);
+            var tg = h;
+            var tb = h - (1 / 3);
+
+            var r = Math.round(this.HueToRGB(p, q, tr) * 255);
+            var g = Math.round(this.HueToRGB(p, q, tg) * 255);
+            var b = Math.round(this.HueToRGB(p, q, tb) * 255);
+            return [r, g, b, this._sanitizeNumber(a)];
+        },
+        toString: function(format) {
+            format = format ||  'rgba';
+            switch (format) {
+                case 'rgb':
+                    {
+                        var rgb = this.toRGB();
+                        return 'rgb(' + rgb.r + ',' + rgb.g + ',' + rgb.b + 
')';
+                    }
+                    break;
+                case 'rgba':
+                    {
+                        var rgb = this.toRGB();
+                        return 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + 
',' + rgb.a + ')';
+                    }
+                    break;
+                case 'hsl':
+                    {
+                        var hsl = this.toHSL();
+                        return 'hsl(' + Math.round(hsl.h * 360) + ',' + 
Math.round(hsl.s * 100) + '%,' + Math.round(hsl.l * 100) + '%)';
+                    }
+                    break;
+                case 'hsla':
+                    {
+                        var hsl = this.toHSL();
+                        return 'hsla(' + Math.round(hsl.h * 360) + ',' + 
Math.round(hsl.s * 100) + '%,' + Math.round(hsl.l * 100) + '%,' + hsl.a + ')';
+                    }
+                    break;
+                case 'hex':
+                    {
+                        return this.toHex();
+                    }
+                    break;
+                default:
+                    {
+                        return false;
+                    }
+                    break;
+            }
+        },
+        // a set of RE's that can match strings and generate color tuples.
+        // from John Resig color plugin
+        // https://github.com/jquery/jquery-color/
+        stringParsers: [{
+            re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,
+            format: 'hex',
+            parse: function(execResult) {
+                return [
+                    parseInt(execResult[1], 16),
+                    parseInt(execResult[2], 16),
+                    parseInt(execResult[3], 16),
+                    1
+                ];
+            }
+        }, {
+            re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,
+            format: 'hex',
+            parse: function(execResult) {
+                return [
+                    parseInt(execResult[1] + execResult[1], 16),
+                    parseInt(execResult[2] + execResult[2], 16),
+                    parseInt(execResult[3] + execResult[3], 16),
+                    1
+                ];
+            }
+        }, {
+            re: /rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,
+            format: 'rgb',
+            parse: function(execResult) {
+                return [
+                    execResult[1],
+                    execResult[2],
+                    execResult[3],
+                    1
+                ];
+            }
+        }, {
+            re: 
/rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,
+            format: 'rgb',
+            parse: function(execResult) {
+                return [
+                    2.55 * execResult[1],
+                    2.55 * execResult[2],
+                    2.55 * execResult[3],
+                    1
+                ];
+            }
+        }, {
+            re: 
/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
+            format: 'rgba',
+            parse: function(execResult) {
+                return [
+                    execResult[1],
+                    execResult[2],
+                    execResult[3],
+                    execResult[4]
+                ];
+            }
+        }, {
+            re: 
/rgba\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
+            format: 'rgba',
+            parse: function(execResult) {
+                return [
+                    2.55 * execResult[1],
+                    2.55 * execResult[2],
+                    2.55 * execResult[3],
+                    execResult[4]
+                ];
+            }
+        }, {
+            re: 
/hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,
+            format: 'hsl',
+            parse: function(execResult) {
+                return [
+                    execResult[1] / 360,
+                    execResult[2] / 100,
+                    execResult[3] / 100,
+                    execResult[4]
+                ];
+            }
+        }, {
+            re: 
/hsla\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
+            format: 'hsla',
+            parse: function(execResult) {
+                return [
+                    execResult[1] / 360,
+                    execResult[2] / 100,
+                    execResult[3] / 100,
+                    execResult[4]
+                ];
+            }
+        }, {
+            //predefined color name
+            re: /^([a-z]{3,})$/,
+            format: 'alias',
+            parse: function(execResult) {
+                var hexval = this.colorNameToHex(execResult[0]) ||  '#000000';
+                var match = this.stringParsers[0].re.exec(hexval),
+                    values = match && this.stringParsers[0].parse.apply(this, 
[match]);
+                return values;
+            }
+        }],
+        colorNameToHex: function(name) {
+            // 140 predefined colors from the HTML Colors spec
+            var colors = {
+                "aliceblue": "#f0f8ff",
+                "antiquewhite": "#faebd7",
+                "aqua": "#00ffff",
+                "aquamarine": "#7fffd4",
+                "azure": "#f0ffff",
+                "beige": "#f5f5dc",
+                "bisque": "#ffe4c4",
+                "black": "#000000",
+                "blanchedalmond": "#ffebcd",
+                "blue": "#0000ff",
+                "blueviolet": "#8a2be2",
+                "brown": "#a52a2a",
+                "burlywood": "#deb887",
+                "cadetblue": "#5f9ea0",
+                "chartreuse": "#7fff00",
+                "chocolate": "#d2691e",
+                "coral": "#ff7f50",
+                "cornflowerblue": "#6495ed",
+                "cornsilk": "#fff8dc",
+                "crimson": "#dc143c",
+                "cyan": "#00ffff",
+                "darkblue": "#00008b",
+                "darkcyan": "#008b8b",
+                "darkgoldenrod": "#b8860b",
+                "darkgray": "#a9a9a9",
+                "darkgreen": "#006400",
+                "darkkhaki": "#bdb76b",
+                "darkmagenta": "#8b008b",
+                "darkolivegreen": "#556b2f",
+                "darkorange": "#ff8c00",
+                "darkorchid": "#9932cc",
+                "darkred": "#8b0000",
+                "darksalmon": "#e9967a",
+                "darkseagreen": "#8fbc8f",
+                "darkslateblue": "#483d8b",
+                "darkslategray": "#2f4f4f",
+                "darkturquoise": "#00ced1",
+                "darkviolet": "#9400d3",
+                "deeppink": "#ff1493",
+                "deepskyblue": "#00bfff",
+                "dimgray": "#696969",
+                "dodgerblue": "#1e90ff",
+                "firebrick": "#b22222",
+                "floralwhite": "#fffaf0",
+                "forestgreen": "#228b22",
+                "fuchsia": "#ff00ff",
+                "gainsboro": "#dcdcdc",
+                "ghostwhite": "#f8f8ff",
+                "gold": "#ffd700",
+                "goldenrod": "#daa520",
+                "gray": "#808080",
+                "green": "#008000",
+                "greenyellow": "#adff2f",
+                "honeydew": "#f0fff0",
+                "hotpink": "#ff69b4",
+                "indianred ": "#cd5c5c",
+                "indigo ": "#4b0082",
+                "ivory": "#fffff0",
+                "khaki": "#f0e68c",
+                "lavender": "#e6e6fa",
+                "lavenderblush": "#fff0f5",
+                "lawngreen": "#7cfc00",
+                "lemonchiffon": "#fffacd",
+                "lightblue": "#add8e6",
+                "lightcoral": "#f08080",
+                "lightcyan": "#e0ffff",
+                "lightgoldenrodyellow": "#fafad2",
+                "lightgrey": "#d3d3d3",
+                "lightgreen": "#90ee90",
+                "lightpink": "#ffb6c1",
+                "lightsalmon": "#ffa07a",
+                "lightseagreen": "#20b2aa",
+                "lightskyblue": "#87cefa",
+                "lightslategray": "#778899",
+                "lightsteelblue": "#b0c4de",
+                "lightyellow": "#ffffe0",
+                "lime": "#00ff00",
+                "limegreen": "#32cd32",
+                "linen": "#faf0e6",
+                "magenta": "#ff00ff",
+                "maroon": "#800000",
+                "mediumaquamarine": "#66cdaa",
+                "mediumblue": "#0000cd",
+                "mediumorchid": "#ba55d3",
+                "mediumpurple": "#9370d8",
+                "mediumseagreen": "#3cb371",
+                "mediumslateblue": "#7b68ee",
+                "mediumspringgreen": "#00fa9a",
+                "mediumturquoise": "#48d1cc",
+                "mediumvioletred": "#c71585",
+                "midnightblue": "#191970",
+                "mintcream": "#f5fffa",
+                "mistyrose": "#ffe4e1",
+                "moccasin": "#ffe4b5",
+                "navajowhite": "#ffdead",
+                "navy": "#000080",
+                "oldlace": "#fdf5e6",
+                "olive": "#808000",
+                "olivedrab": "#6b8e23",
+                "orange": "#ffa500",
+                "orangered": "#ff4500",
+                "orchid": "#da70d6",
+                "palegoldenrod": "#eee8aa",
+                "palegreen": "#98fb98",
+                "paleturquoise": "#afeeee",
+                "palevioletred": "#d87093",
+                "papayawhip": "#ffefd5",
+                "peachpuff": "#ffdab9",
+                "peru": "#cd853f",
+                "pink": "#ffc0cb",
+                "plum": "#dda0dd",
+                "powderblue": "#b0e0e6",
+                "purple": "#800080",
+                "red": "#ff0000",
+                "rosybrown": "#bc8f8f",
+                "royalblue": "#4169e1",
+                "saddlebrown": "#8b4513",
+                "salmon": "#fa8072",
+                "sandybrown": "#f4a460",
+                "seagreen": "#2e8b57",
+                "seashell": "#fff5ee",
+                "sienna": "#a0522d",
+                "silver": "#c0c0c0",
+                "skyblue": "#87ceeb",
+                "slateblue": "#6a5acd",
+                "slategray": "#708090",
+                "snow": "#fffafa",
+                "springgreen": "#00ff7f",
+                "steelblue": "#4682b4",
+                "tan": "#d2b48c",
+                "teal": "#008080",
+                "thistle": "#d8bfd8",
+                "tomato": "#ff6347",
+                "turquoise": "#40e0d0",
+                "violet": "#ee82ee",
+                "wheat": "#f5deb3",
+                "white": "#ffffff",
+                "whitesmoke": "#f5f5f5",
+                "yellow": "#ffff00",
+                "yellowgreen": "#9acd32"
+            };
+
+            if (typeof colors[name.toLowerCase()] !== 'undefined') {
+                return colors[name.toLowerCase()];
+            }
+            return false;
+        }
+    };
+
+
+    var defaults = {
+        horizontal: false, // horizontal mode layout ?
+        inline: false, //forces to show the colorpicker as an inline element
+        color: false, //forces a color
+        format: false, //forces a format
+        input: 'input', // children input selector
+        container: false, // container selector
+        component: '.add-on, .input-group-addon', // children component 
selector
+        sliders: {
+            saturation: {
+                maxLeft: 100,
+                maxTop: 100,
+                callLeft: 'setSaturation',
+                callTop: 'setBrightness'
+            },
+            hue: {
+                maxLeft: 0,
+                maxTop: 100,
+                callLeft: false,
+                callTop: 'setHue'
+            },
+            alpha: {
+                maxLeft: 0,
+                maxTop: 100,
+                callLeft: false,
+                callTop: 'setAlpha'
+            }
+        },
+        slidersHorz: {
+            saturation: {
+                maxLeft: 100,
+                maxTop: 100,
+                callLeft: 'setSaturation',
+                callTop: 'setBrightness'
+            },
+            hue: {
+                maxLeft: 100,
+                maxTop: 0,
+                callLeft: 'setHue',
+                callTop: false
+            },
+            alpha: {
+                maxLeft: 100,
+                maxTop: 0,
+                callLeft: 'setAlpha',
+                callTop: false
+            }
+        },
+        template: '<div class="colorpicker dropdown-menu">' +
+            '<div class="colorpicker-saturation"><i><b></b></i></div>' +
+            '<div class="colorpicker-hue"><i></i></div>' +
+            '<div class="colorpicker-alpha"><i></i></div>' +
+            '<div class="colorpicker-color"><div /></div>' +
+            '</div>'
+    };
+
+    var Colorpicker = function(element, options) {
+        this.element = $(element).addClass('colorpicker-element');
+        this.options = $.extend({}, defaults, this.element.data(), options);
+        this.component = this.options.component;
+        this.component = (this.component !== false) ? 
this.element.find(this.component) : false;
+        if (this.component && (this.component.length === 0)) {
+            this.component = false;
+        }
+        this.container = (this.options.container === true) ? this.element : 
this.options.container;
+        this.container = (this.container !== false) ? $(this.container) : 
false;
+
+        // Is the element an input? Should we search inside for any input?
+        this.input = this.element.is('input') ? this.element : 
(this.options.input ?
+            this.element.find(this.options.input) : false);
+        if (this.input && (this.input.length === 0)) {
+            this.input = false;
+        }
+        // Set HSB color
+        this.color = new Color(this.options.color !== false ? 
this.options.color : this.getValue());
+        this.format = this.options.format !== false ? this.options.format : 
this.color.origFormat;
+
+        // Setup picker
+        this.picker = $(this.options.template);
+        if (this.options.inline) {
+            this.picker.addClass('colorpicker-inline colorpicker-visible');
+        } else {
+            this.picker.addClass('colorpicker-hidden');
+        }
+        if (this.options.horizontal) {
+            this.picker.addClass('colorpicker-horizontal');
+        }
+        if (this.format === 'rgba' || this.format === 'hsla') {
+            this.picker.addClass('colorpicker-with-alpha');
+        }
+        this.picker.on('mousedown.colorpicker', $.proxy(this.mousedown, this));
+        this.picker.appendTo(this.container ? this.container : $('body'));
+
+        // Bind events
+        if (this.input !== false) {
+            this.input.on({
+                'keyup.colorpicker': $.proxy(this.keyup, this)
+            });
+            if (this.component === false) {
+                this.element.on({
+                    'focus.colorpicker': $.proxy(this.show, this)
+                });
+            }
+            if (this.options.inline === false) {
+                this.element.on({
+                    'focusout.colorpicker': $.proxy(this.hide, this)
+                });
+            }
+        }
+
+        if (this.component !== false) {
+            this.component.on({
+                'click.colorpicker': $.proxy(this.show, this)
+            });
+        }
+
+        if ((this.input === false) && (this.component === false)) {
+            this.element.on({
+                'click.colorpicker': $.proxy(this.show, this)
+            });
+        }
+        this.update();
+
+        $($.proxy(function() {
+            this.element.trigger('create');
+        }, this));
+    };
+
+    Colorpicker.version = '2.0.0-beta';
+
+    Colorpicker.Color = Color;
+
+    Colorpicker.prototype = {
+        constructor: Colorpicker,
+        destroy: function() {
+            this.picker.remove();
+            this.element.removeData('colorpicker').off('.colorpicker');
+            if (this.input !== false) {
+                this.input.off('.colorpicker');
+            }
+            if (this.component !== false) {
+                this.component.off('.colorpicker');
+            }
+            this.element.removeClass('colorpicker-element');
+            this.element.trigger({
+                type: 'destroy'
+            });
+        },
+        reposition: function() {
+            if (this.options.inline !== false) {
+                return false;
+            }
+            var offset = this.component ? this.component.offset() : 
this.element.offset();
+            this.picker.css({
+                top: offset.top + (this.component ? 
this.component.outerHeight() : this.element.outerHeight()),
+                left: offset.left
+            });
+        },
+        show: function(e) {
+            if (this.isDisabled()) {
+                return false;
+            }
+            
this.picker.addClass('colorpicker-visible').removeClass('colorpicker-hidden');
+            this.reposition();
+            $(window).on('resize.colorpicker', $.proxy(this.reposition, this));
+            if (!this.hasInput() && e) {
+                if (e.stopPropagation && e.preventDefault) {
+                    e.stopPropagation();
+                    e.preventDefault();
+                }
+            }
+            if (this.options.inline === false) {
+                $(window.document).on({
+                    'mousedown.colorpicker': $.proxy(this.hide, this)
+                });
+            }
+            this.element.trigger({
+                type: 'showPicker',
+                color: this.color
+            });
+        },
+        hide: function() {
+            
this.picker.addClass('colorpicker-hidden').removeClass('colorpicker-visible');
+            $(window).off('resize.colorpicker', this.reposition);
+            $(document).off({
+                'mousedown.colorpicker': this.hide
+            });
+            this.update();
+            this.element.trigger({
+                type: 'hidePicker',
+                color: this.color
+            });
+        },
+        updateData: function(val) {
+            val = val ||  this.color.toString(this.format);
+            this.element.data('color', val);
+            return val;
+        },
+        updateInput: function(val) {
+            val = val ||  this.color.toString(this.format);
+            if (this.input !== false) {
+                this.input.prop('value', val);
+            }
+            return val;
+        },
+        updatePicker: function(val) {
+            if (val !== undefined) {
+                this.color = new Color(val);
+            }
+            var sl = (this.options.horizontal === false) ? 
this.options.sliders : this.options.slidersHorz;
+            var icns = this.picker.find('i');
+            if (icns.length === 0) {
+                return;
+            }
+            if (this.options.horizontal === false) {
+                sl = this.options.sliders;
+                icns.eq(1).css('top', sl.hue.maxTop * (1 - 
this.color.value.h)).end()
+                    .eq(2).css('top', sl.alpha.maxTop * (1 - 
this.color.value.a));
+            } else {
+                sl = this.options.slidersHorz;
+                icns.eq(1).css('left', sl.hue.maxLeft * (1 - 
this.color.value.h)).end()
+                    .eq(2).css('left', sl.alpha.maxLeft * (1 - 
this.color.value.a));
+            }
+            icns.eq(0).css({
+                'top': sl.saturation.maxTop - this.color.value.b * 
sl.saturation.maxTop,
+                'left': this.color.value.s * sl.saturation.maxLeft
+            });
+            this.picker.find('.colorpicker-saturation').css('backgroundColor', 
this.color.toHex(this.color.value.h, 1, 1, 1));
+            this.picker.find('.colorpicker-alpha').css('backgroundColor', 
this.color.toHex());
+            this.picker.find('.colorpicker-color, .colorpicker-color 
div').css('backgroundColor', this.color.toString(this.format));
+            return val;
+        },
+        updateComponent: function(val) {
+            val = val ||  this.color.toString(this.format);
+            if (this.component !== false) {
+                var icn = this.component.find('i').eq(0);
+                if (icn.length > 0) {
+                    icn.css({
+                        'backgroundColor': val
+                    });
+                } else {
+                    this.component.css({
+                        'backgroundColor': val
+                    });
+                }
+            }
+            return val;
+        },
+        update: function(force) {
+            var val = this.updateComponent();
+            if ((this.getValue(false) !== false) || (force === true)) {
+                // Update input/data only if the current value is not blank
+                this.updateInput(val);
+                this.updateData(val);
+            }
+            this.updatePicker();
+            return val;
+
+        },
+        setValue: function(val) { // set color manually
+            this.color = new Color(val);
+            this.update();
+            this.element.trigger({
+                type: 'changeColor',
+                color: this.color,
+                value: val
+            });
+        },
+        getValue: function(defaultValue) {
+            defaultValue = (defaultValue === undefined) ? '#000000' : 
defaultValue;
+            var val;
+            if (this.hasInput()) {
+                val = this.input.val();
+            } else {
+                val = this.element.data('color');
+            }
+            if ((val === undefined) || (val === '') || (val === null)) {
+                // if not defined or empty, return default
+                val = defaultValue;
+            }
+            return val;
+        },
+        hasInput: function() {
+            return (this.input !== false);
+        },
+        isDisabled: function() {
+            if (this.hasInput()) {
+                return (this.input.prop('disabled') === true);
+            }
+            return false;
+        },
+        disable: function() {
+            if (this.hasInput()) {
+                this.input.prop('disabled', true);
+                return true;
+            }
+            return false;
+        },
+        enable: function() {
+            if (this.hasInput()) {
+                this.input.prop('disabled', false);
+                return true;
+            }
+            return false;
+        },
+        currentSlider: null,
+        mousePointer: {
+            left: 0,
+            top: 0
+        },
+        mousedown: function(e) {
+            e.stopPropagation();
+            e.preventDefault();
+
+            var target = $(e.target);
+
+            //detect the slider and set the limits and callbacks
+            var zone = target.closest('div');
+            var sl = this.options.horizontal ? this.options.slidersHorz : 
this.options.sliders;
+            if (!zone.is('.colorpicker')) {
+                if (zone.is('.colorpicker-saturation')) {
+                    this.currentSlider = $.extend({}, sl.saturation);
+                } else if (zone.is('.colorpicker-hue')) {
+                    this.currentSlider = $.extend({}, sl.hue);
+                } else if (zone.is('.colorpicker-alpha')) {
+                    this.currentSlider = $.extend({}, sl.alpha);
+                } else {
+                    return false;
+                }
+                var offset = zone.offset();
+                //reference to guide's style
+                this.currentSlider.guide = zone.find('i')[0].style;
+                this.currentSlider.left = e.pageX - offset.left;
+                this.currentSlider.top = e.pageY - offset.top;
+                this.mousePointer = {
+                    left: e.pageX,
+                    top: e.pageY
+                };
+                //trigger mousemove to move the guide to the current position
+                $(document).on({
+                    'mousemove.colorpicker': $.proxy(this.mousemove, this),
+                    'mouseup.colorpicker': $.proxy(this.mouseup, this)
+                }).trigger('mousemove');
+            }
+            return false;
+        },
+        mousemove: function(e) {
+            e.stopPropagation();
+            e.preventDefault();
+            var left = Math.max(
+                0,
+                Math.min(
+                    this.currentSlider.maxLeft,
+                    this.currentSlider.left + ((e.pageX || 
this.mousePointer.left) - this.mousePointer.left)
+                )
+            );
+            var top = Math.max(
+                0,
+                Math.min(
+                    this.currentSlider.maxTop,
+                    this.currentSlider.top + ((e.pageY || 
this.mousePointer.top) - this.mousePointer.top)
+                )
+            );
+            this.currentSlider.guide.left = left + 'px';
+            this.currentSlider.guide.top = top + 'px';
+            if (this.currentSlider.callLeft) {
+                this.color[this.currentSlider.callLeft].call(this.color, left 
/ 100);
+            }
+            if (this.currentSlider.callTop) {
+                this.color[this.currentSlider.callTop].call(this.color, top / 
100);
+            }
+            this.update(true);
+
+            this.element.trigger({
+                type: 'changeColor',
+                color: this.color
+            });
+            return false;
+        },
+        mouseup: function(e) {
+            e.stopPropagation();
+            e.preventDefault();
+            $(document).off({
+                'mousemove.colorpicker': this.mousemove,
+                'mouseup.colorpicker': this.mouseup
+            });
+            return false;
+        },
+        keyup: function(e) {
+            if ((e.keyCode === 38)) {
+                if (this.color.value.a < 1) {
+                    this.color.value.a = Math.round((this.color.value.a + 
0.01) * 100) / 100;
+                }
+                this.update(true);
+            } else if ((e.keyCode === 40)) {
+                if (this.color.value.a > 0) {
+                    this.color.value.a = Math.round((this.color.value.a - 
0.01) * 100) / 100;
+                }
+                this.update(true);
+            } else {
+                var val = this.input.val();
+                this.color = new Color(val);
+                if (this.getValue(false) !== false) {
+                    this.updateData();
+                    this.updateComponent();
+                    this.updatePicker();
+                }
+            }
+            this.element.trigger({
+                type: 'changeColor',
+                color: this.color,
+                value: val
+            });
+        }
+    };
+
+    $.colorpicker = Colorpicker;
+
+    $.fn.colorpicker = function(option) {
+        return this.each(function() {
+            var $this = $(this),
+                inst = $this.data('colorpicker'),
+                options = ((typeof option === 'object') ? option : {});
+            if ((!inst) && (typeof option !== 'string')) {
+                $this.data('colorpicker', new Colorpicker(this, options));
+            } else {
+                if (typeof option === 'string') {
+                    inst[option].apply(inst, 
Array.prototype.slice.call(arguments, 1));
+                }
+            }
+        });
+    };
+
+    $.fn.colorpicker.constructor = Colorpicker;
+
+})(window.jQuery);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/bootstrap-colorpicker.min.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/bootstrap-colorpicker.min.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/bootstrap-colorpicker.min.js
new file mode 100644
index 0000000..bc4fba9
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/bootstrap-colorpicker.min.js
@@ -0,0 +1 @@
+!function(a){"use strict";var 
b=function(a){this.value={h:0,s:0,b:0,a:1},this.origFormat=null,a&&(void 
0!==a.toLowerCase?this.setColor(a):void 
0!==a.h&&(this.value=a))};b.prototype={constructor:b,_sanitizeNumber:function(a){return"number"==typeof
 a?a:isNaN(a)||null===a||""===a||void 0===a?1:void 
0!==a.toLowerCase?parseFloat(a):1},setColor:function(a){a=a.toLowerCase(),this.value=this.stringToHSB(a)||{h:0,s:0,b:0,a:1}},stringToHSB:function(b){b=b.toLowerCase();var
 c=this,d=!1;return a.each(this.stringParsers,function(a,e){var 
f=e.re.exec(b),g=f&&e.parse.apply(c,[f]),h=e.format||"rgba";return 
g?(d=h.match(/hsla?/)?c.RGBtoHSB.apply(c,c.HSLtoRGB.apply(c,g)):c.RGBtoHSB.apply(c,g),c.origFormat=h,!1):!0}),d},setHue:function(a){this.value.h=1-a},setSaturation:function(a){this.value.s=a},setBrightness:function(a){this.value.b=1-a},setAlpha:function(a){this.value.a=parseInt(100*(1-a),10)/100},toRGB:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var
 e
 ,f,g,h,i,j,k,l;switch(a&&void 0===b&&void 
0===c&&(b=a.s,c=a.v,a=a.h),h=Math.floor(6*a),i=6*a-h,j=c*(1-b),k=c*(1-i*b),l=c*(1-(1-i)*b),h%6){case
 0:e=c,f=l,g=j;break;case 1:e=k,f=c,g=j;break;case 2:e=j,f=c,g=l;break;case 
3:e=j,f=k,g=c;break;case 4:e=l,f=j,g=c;break;case 
5:e=c,f=j,g=k}return{r:Math.floor(255*e),g:Math.floor(255*f),b:Math.floor(255*g),a:d}},toHex:function(a,b,c,d){var
 
e=this.toRGB(a,b,c,d);return"#"+(1<<24|parseInt(e.r)<<16|parseInt(e.g)<<8|parseInt(e.b)).toString(16).substr(1)},toHSL:function(a,b,c,d){a=a||this.value.h,b=b||this.value.s,c=c||this.value.b,d=d||this.value.a;var
 e=a,f=(2-b)*c,g=b*c;return 
g/=f>0&&1>=f?f:2-f,f/=2,g>1&&(g=1),{h:e,s:g,l:f,a:d}},RGBtoHSB:function(a,b,c,d){a/=255,b/=255,c/=255;var
 e,f,g,h;return 
g=Math.max(a,b,c),h=g-Math.min(a,b,c),e=0===h?null:g===a?(b-c)/h:g===b?(c-a)/h+2:(a-b)/h+4,e=(e+360)%6*60/360,f=0===h?0:h/g,{h:this._sanitizeNumber(e),s:f,b:g,a:this._sanitizeNumber(d)}},HueToRGB:function(a,b,c){return
 0>c?c+=1:c>1&&(c-=1),1>6*c?a+(b-a)
 
*c*6:1>2*c?b:2>3*c?a+(b-a)*(2/3-c)*6:a},HSLtoRGB:function(a,b,c,d){0>b&&(b=0);var
 e;e=.5>=c?c*(1+b):c+b-c*b;var 
f=2*c-e,g=a+1/3,h=a,i=a-1/3,j=Math.round(255*this.HueToRGB(f,e,g)),k=Math.round(255*this.HueToRGB(f,e,h)),l=Math.round(255*this.HueToRGB(f,e,i));return[j,k,l,this._sanitizeNumber(d)]},toString:function(a){switch(a=a||"rgba"){case"rgb":var
 b=this.toRGB();return"rgb("+b.r+","+b.g+","+b.b+")";case"rgba":var 
b=this.toRGB();return"rgba("+b.r+","+b.g+","+b.b+","+b.a+")";case"hsl":var 
c=this.toHSL();return"hsl("+Math.round(360*c.h)+","+Math.round(100*c.s)+"%,"+Math.round(100*c.l)+"%)";case"hsla":var
 
c=this.toHSL();return"hsla("+Math.round(360*c.h)+","+Math.round(100*c.s)+"%,"+Math.round(100*c.l)+"%,"+c.a+")";case"hex":return
 
this.toHex();default:return!1}},stringParsers:[{re:/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,format:"hex",parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16),1]}},{re:/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,format:"hex"
 
,parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16),1]}},{re:/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*?\)/,format:"rgb",parse:function(a){return[a[1],a[2],a[3],1]}},{re:/rgb\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,format:"rgb",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],1]}},{re:/rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"rgba",parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/hsl\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*?\)/,format:"hsl",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/hsla\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,format:"h
 
sla",parse:function(a){return[a[1]/360,a[2]/100,a[3]/100,a[4]]}},{re:/^([a-z]{3,})$/,format:"alias",parse:function(a){var
 
b=this.colorNameToHex(a[0])||"#000000",c=this.stringParsers[0].re.exec(b),d=c&&this.stringParsers[0].parse.apply(this,[c]);return
 d}}],colorNameToHex:function(a){var 
b={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"
 
#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred
 ":"#cd5c5c","indigo 
":"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",med
 
iumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",w
 
heat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};return"undefined"!=typeof
 b[a.toLowerCase()]?b[a.toLowerCase()]:!1}};var 
c={horizontal:!1,inline:!1,color:!1,format:!1,input:"input",container:!1,component:".add-on,
 
.input-group-addon",sliders:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setHue"},alpha:{maxLeft:0,maxTop:100,callLeft:!1,callTop:"setAlpha"}},slidersHorz:{saturation:{maxLeft:100,maxTop:100,callLeft:"setSaturation",callTop:"setBrightness"},hue:{maxLeft:100,maxTop:0,callLeft:"setHue",callTop:!1},alpha:{maxLeft:100,maxTop:0,callLeft:"setAlpha",callTop:!1}},template:'<div
 class="colorpicker dropdown-menu"><div 
class="colorpicker-saturation"><i><b></b></i></div><div 
class="colorpicker-hue"><i></i></div><div 
class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div 
/></div></div>'},d=function(d,e){this.element=a(d).addClass("color
 
picker-element"),this.options=a.extend({},c,this.element.data(),e),this.component=this.options.component,this.component=this.component!==!1?this.element.find(this.component):!1,this.component&&0===this.component.length&&(this.component=!1),this.container=this.options.container===!0?this.element:this.options.container,this.container=this.container!==!1?a(this.container):!1,this.input=this.element.is("input")?this.element:this.options.input?this.element.find(this.options.input):!1,this.input&&0===this.input.length&&(this.input=!1),this.color=new
 
b(this.options.color!==!1?this.options.color:this.getValue()),this.format=this.options.format!==!1?this.options.format:this.color.origFormat,this.picker=a(this.options.template),this.options.inline?this.picker.addClass("colorpicker-inline
 
colorpicker-visible"):this.picker.addClass("colorpicker-hidden"),this.options.horizontal&&this.picker.addClass("colorpicker-horizontal"),("rgba"===this.format||"hsla"===this.format)&&this.picker.addClass("col
 
orpicker-with-alpha"),this.picker.on("mousedown.colorpicker",a.proxy(this.mousedown,this)),this.picker.appendTo(this.container?this.container:a("body")),this.input!==!1&&(this.input.on({"keyup.colorpicker":a.proxy(this.keyup,this)}),this.component===!1&&this.element.on({"focus.colorpicker":a.proxy(this.show,this)}),this.options.inline===!1&&this.element.on({"focusout.colorpicker":a.proxy(this.hide,this)})),this.component!==!1&&this.component.on({"click.colorpicker":a.proxy(this.show,this)}),this.input===!1&&this.component===!1&&this.element.on({"click.colorpicker":a.proxy(this.show,this)}),this.update(),a(a.proxy(function(){this.element.trigger("create")},this))};d.version="2.0.0-beta",d.Color=b,d.prototype={constructor:d,destroy:function(){this.picker.remove(),this.element.removeData("colorpicker").off(".colorpicker"),this.input!==!1&&this.input.off(".colorpicker"),this.component!==!1&&this.component.off(".colorpicker"),this.element.removeClass("colorpicker-element"),this.element.t
 
rigger({type:"destroy"})},reposition:function(){if(this.options.inline!==!1)return!1;var
 
a=this.component?this.component.offset():this.element.offset();this.picker.css({top:a.top+(this.component?this.component.outerHeight():this.element.outerHeight()),left:a.left})},show:function(b){return
 
this.isDisabled()?!1:(this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"),this.reposition(),a(window).on("resize.colorpicker",a.proxy(this.reposition,this)),!this.hasInput()&&b&&b.stopPropagation&&b.preventDefault&&(b.stopPropagation(),b.preventDefault()),this.options.inline===!1&&a(window.document).on({"mousedown.colorpicker":a.proxy(this.hide,this)}),this.element.trigger({type:"showPicker",color:this.color}),void
 
0)},hide:function(){this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"),a(window).off("resize.colorpicker",this.reposition),a(document).off({"mousedown.colorpicker":this.hide}),this.update(),this.element.trigger({type:"hidePicker",colo
 r:this.color})},updateData:function(a){return 
a=a||this.color.toString(this.format),this.element.data("color",a),a},updateInput:function(a){return
 
a=a||this.color.toString(this.format),this.input!==!1&&this.input.prop("value",a),a},updatePicker:function(a){void
 0!==a&&(this.color=new b(a));var 
c=this.options.horizontal===!1?this.options.sliders:this.options.slidersHorz,d=this.picker.find("i");return
 
0!==d.length?(this.options.horizontal===!1?(c=this.options.sliders,d.eq(1).css("top",c.hue.maxTop*(1-this.color.value.h)).end().eq(2).css("top",c.alpha.maxTop*(1-this.color.value.a))):(c=this.options.slidersHorz,d.eq(1).css("left",c.hue.maxLeft*(1-this.color.value.h)).end().eq(2).css("left",c.alpha.maxLeft*(1-this.color.value.a))),d.eq(0).css({top:c.saturation.maxTop-this.color.value.b*c.saturation.maxTop,left:this.color.value.s*c.saturation.maxLeft}),this.picker.find(".colorpicker-saturation").css("backgroundColor",this.color.toHex(this.color.value.h,1,1,1)),this.picker.find(".colorpick
 
er-alpha").css("backgroundColor",this.color.toHex()),this.picker.find(".colorpicker-color,
 .colorpicker-color 
div").css("backgroundColor",this.color.toString(this.format)),a):void 
0},updateComponent:function(a){if(a=a||this.color.toString(this.format),this.component!==!1){var
 
b=this.component.find("i").eq(0);b.length>0?b.css({backgroundColor:a}):this.component.css({backgroundColor:a})}return
 a},update:function(a){var 
b=this.updateComponent();return(this.getValue(!1)!==!1||a===!0)&&(this.updateInput(b),this.updateData(b)),this.updatePicker(),b},setValue:function(a){this.color=new
 
b(a),this.update(),this.element.trigger({type:"changeColor",color:this.color,value:a})},getValue:function(a){a=void
 0===a?"#000000":a;var b;return 
b=this.hasInput()?this.input.val():this.element.data("color"),(void 
0===b||""===b||null===b)&&(b=a),b},hasInput:function(){return 
this.input!==!1},isDisabled:function(){return 
this.hasInput()?this.input.prop("disabled")===!0:!1},disable:function(){return 
this.hasI
 nput()?(this.input.prop("disabled",!0),!0):!1},enable:function(){return 
this.hasInput()?(this.input.prop("disabled",!1),!0):!1},currentSlider:null,mousePointer:{left:0,top:0},mousedown:function(b){b.stopPropagation(),b.preventDefault();var
 
c=a(b.target),d=c.closest("div"),e=this.options.horizontal?this.options.slidersHorz:this.options.sliders;if(!d.is(".colorpicker")){if(d.is(".colorpicker-saturation"))this.currentSlider=a.extend({},e.saturation);else
 
if(d.is(".colorpicker-hue"))this.currentSlider=a.extend({},e.hue);else{if(!d.is(".colorpicker-alpha"))return!1;this.currentSlider=a.extend({},e.alpha)}var
 
f=d.offset();this.currentSlider.guide=d.find("i")[0].style,this.currentSlider.left=b.pageX-f.left,this.currentSlider.top=b.pageY-f.top,this.mousePointer={left:b.pageX,top:b.pageY},a(document).on({"mousemove.colorpicker":a.proxy(this.mousemove,this),"mouseup.colorpicker":a.proxy(this.mouseup,this)}).trigger("mousemove")}return!1},mousemove:function(a){a.stopPropagation(),a.preventDefa
 ult();var 
b=Math.max(0,Math.min(this.currentSlider.maxLeft,this.currentSlider.left+((a.pageX||this.mousePointer.left)-this.mousePointer.left))),c=Math.max(0,Math.min(this.currentSlider.maxTop,this.currentSlider.top+((a.pageY||this.mousePointer.top)-this.mousePointer.top)));return
 
this.currentSlider.guide.left=b+"px",this.currentSlider.guide.top=c+"px",this.currentSlider.callLeft&&this.color[this.currentSlider.callLeft].call(this.color,b/100),this.currentSlider.callTop&&this.color[this.currentSlider.callTop].call(this.color,c/100),this.update(!0),this.element.trigger({type:"changeColor",color:this.color}),!1},mouseup:function(b){return
 
b.stopPropagation(),b.preventDefault(),a(document).off({"mousemove.colorpicker":this.mousemove,"mouseup.colorpicker":this.mouseup}),!1},keyup:function(a){if(38===a.keyCode)this.color.value.a<1&&(this.color.value.a=Math.round(100*(this.color.value.a+.01))/100),this.update(!0);else
 if(40===a.keyCode)this.color.value.a>0&&(this.color.value.a=Math.round(10
 0*(this.color.value.a-.01))/100),this.update(!0);else{var 
c=this.input.val();this.color=new 
b(c),this.getValue(!1)!==!1&&(this.updateData(),this.updateComponent(),this.updatePicker())}this.element.trigger({type:"changeColor",color:this.color,value:c})}},a.colorpicker=d,a.fn.colorpicker=function(b){return
 this.each(function(){var c=a(this),e=c.data("colorpicker"),f="object"==typeof 
b?b:{};e||"string"==typeof b?"string"==typeof 
b&&e[b].apply(e,Array.prototype.slice.call(arguments,1)):c.data("colorpicker",new
 d(this,f))})},a.fn.colorpicker.constructor=d}(window.jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/alpha-horizontal.png
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/alpha-horizontal.png
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/alpha-horizontal.png
new file mode 100644
index 0000000..d0a65c0
Binary files /dev/null and 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/alpha-horizontal.png
 differ

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/hue-horizontal.png
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/hue-horizontal.png
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/hue-horizontal.png
new file mode 100644
index 0000000..a0d9add
Binary files /dev/null and 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/hue-horizontal.png
 differ

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/saturation.png
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/saturation.png
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/saturation.png
new file mode 100644
index 0000000..594ae50
Binary files /dev/null and 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/colorpicker/img/saturation.png
 differ

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/dataTables.bootstrap.css
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/dataTables.bootstrap.css
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/dataTables.bootstrap.css
new file mode 100644
index 0000000..27036b0
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/dataTables.bootstrap.css
@@ -0,0 +1,223 @@
+div.dataTables_length label {
+       font-weight: normal;
+       float: left;
+       text-align: left;
+}
+
+div.dataTables_length select {
+       width: 75px;
+}
+
+div.dataTables_filter label {
+       font-weight: normal;
+       float: right;
+}
+
+div.dataTables_filter input {
+       width: 16em;
+}
+
+div.dataTables_info {
+       padding-top: 8px;
+}
+
+div.dataTables_paginate {
+       float: right;
+       margin: 0;
+}
+
+div.dataTables_paginate ul.pagination {
+       margin: 2px 0;
+       white-space: nowrap;
+}
+
+table.dataTable,
+table.dataTable td,
+table.dataTable th {
+       -webkit-box-sizing: content-box;
+       -moz-box-sizing: content-box;
+       box-sizing: content-box;
+}
+
+
+table.dataTable {
+       clear: both;
+       margin-top: 6px !important;
+       margin-bottom: 6px !important;
+       max-width: none !important;
+}
+
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+       cursor: pointer;
+}
+
+table.dataTable thead .sorting { background: url('images/sort_both.png') 
no-repeat center right; }
+table.dataTable thead .sorting_asc { background: url('images/sort_asc.png') 
no-repeat center right; }
+table.dataTable thead .sorting_desc { background: url('images/sort_desc.png') 
no-repeat center right; }
+
+table.dataTable thead .sorting_asc_disabled { background: 
url('images/sort_asc_disabled.png') no-repeat center right; }
+table.dataTable thead .sorting_desc_disabled { background: 
url('images/sort_desc_disabled.png') no-repeat center right; }
+
+table.dataTable th:active {
+       outline: none;
+}
+
+/* Scrolling */
+div.dataTables_scrollHead table {
+       margin-bottom: 0 !important;
+       border-bottom-left-radius: 0;
+       border-bottom-right-radius: 0;
+}
+
+div.dataTables_scrollHead table thead tr:last-child th:first-child,
+div.dataTables_scrollHead table thead tr:last-child td:first-child {
+       border-bottom-left-radius: 0 !important;
+       border-bottom-right-radius: 0 !important;
+}
+
+div.dataTables_scrollBody table {
+       border-top: none;
+       margin-top: 0 !important;
+       margin-bottom: 0 !important;
+}
+
+div.dataTables_scrollBody tbody tr:first-child th,
+div.dataTables_scrollBody tbody tr:first-child td {
+       border-top: none;
+}
+
+div.dataTables_scrollFoot table {
+       margin-top: 0 !important;
+       border-top: none;
+}
+
+
+
+
+/*
+ * TableTools styles
+ */
+.table tbody tr.active td,
+.table tbody tr.active th {
+       background-color: #08C;
+       color: white;
+}
+
+.table tbody tr.active:hover td,
+.table tbody tr.active:hover th {
+       background-color: #0075b0 !important;
+}
+
+.table tbody tr.active a {
+       color: white;
+}
+
+.table-striped tbody tr.active:nth-child(odd) td,
+.table-striped tbody tr.active:nth-child(odd) th {
+       background-color: #017ebc;
+}
+
+table.DTTT_selectable tbody tr {
+       cursor: pointer;
+}
+
+div.DTTT .btn {
+       color: #333 !important;
+       font-size: 12px;
+}
+
+div.DTTT .btn:hover {
+       text-decoration: none !important;
+}
+
+ul.DTTT_dropdown.dropdown-menu {
+  z-index: 2003;
+}
+
+ul.DTTT_dropdown.dropdown-menu a {
+       color: #333 !important; /* needed only when demo_page.css is included */
+}
+
+ul.DTTT_dropdown.dropdown-menu li {
+       position: relative;
+}
+
+ul.DTTT_dropdown.dropdown-menu li:hover a {
+       background-color: #0088cc;
+       color: white !important;
+}
+
+div.DTTT_collection_background {
+       z-index: 2002;  
+}
+
+/* TableTools information display */
+div.DTTT_print_info.modal {
+       height: 150px;
+       margin-top: -75px;
+       text-align: center;
+}
+
+div.DTTT_print_info h6 {
+       font-weight: normal;
+       font-size: 28px;
+       line-height: 28px;
+       margin: 1em;
+}
+
+div.DTTT_print_info p {
+       font-size: 14px;
+       line-height: 20px;
+}
+
+
+
+/*
+ * FixedColumns styles
+ */
+div.DTFC_LeftHeadWrapper table,
+div.DTFC_LeftFootWrapper table,
+div.DTFC_RightHeadWrapper table,
+div.DTFC_RightFootWrapper table,
+table.DTFC_Cloned tr.even {
+    background-color: white;
+}
+ 
+div.DTFC_RightHeadWrapper table ,
+div.DTFC_LeftHeadWrapper table {
+    margin-bottom: 0 !important;
+    border-top-right-radius: 0 !important;
+    border-bottom-left-radius: 0 !important;
+    border-bottom-right-radius: 0 !important;
+}
+ 
+div.DTFC_RightHeadWrapper table thead tr:last-child th:first-child,
+div.DTFC_RightHeadWrapper table thead tr:last-child td:first-child,
+div.DTFC_LeftHeadWrapper table thead tr:last-child th:first-child,
+div.DTFC_LeftHeadWrapper table thead tr:last-child td:first-child {
+    border-bottom-left-radius: 0 !important;
+    border-bottom-right-radius: 0 !important;
+}
+ 
+div.DTFC_RightBodyWrapper table,
+div.DTFC_LeftBodyWrapper table {
+    border-top: none;
+    margin-bottom: 0 !important;
+}
+ 
+div.DTFC_RightBodyWrapper tbody tr:first-child th,
+div.DTFC_RightBodyWrapper tbody tr:first-child td,
+div.DTFC_LeftBodyWrapper tbody tr:first-child th,
+div.DTFC_LeftBodyWrapper tbody tr:first-child td {
+    border-top: none;
+}
+ 
+div.DTFC_RightFootWrapper table,
+div.DTFC_LeftFootWrapper table {
+    border-top: none;
+}
+

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/dataTables.bootstrap.js
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/dataTables.bootstrap.js
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/dataTables.bootstrap.js
new file mode 100644
index 0000000..87b317c
--- /dev/null
+++ 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/dataTables.bootstrap.js
@@ -0,0 +1,250 @@
+/* Set the defaults for DataTables initialisation */
+$.extend( true, $.fn.dataTable.defaults, {
+       "sDom":
+               "<'row'<'col-xs-6'l><'col-xs-6'f>r>"+
+               "t"+
+               "<'row'<'col-xs-6'i><'col-xs-6'p>>",
+       "oLanguage": {
+               "sLengthMenu": "_MENU_ records per page"
+       }
+} );
+
+
+/* Default class modification */
+$.extend( $.fn.dataTableExt.oStdClasses, {
+       "sWrapper": "dataTables_wrapper form-inline",
+       "sFilterInput": "form-control input-sm",
+       "sLengthSelect": "form-control input-sm"
+} );
+
+// In 1.10 we use the pagination renderers to draw the Bootstrap paging,
+// rather than  custom plug-in
+if ( $.fn.dataTable.Api ) {
+       $.fn.dataTable.defaults.renderer = 'bootstrap';
+       $.fn.dataTable.ext.renderer.pageButton.bootstrap = function ( settings, 
host, idx, buttons, page, pages ) {
+               var api = new $.fn.dataTable.Api( settings );
+               var classes = settings.oClasses;
+               var lang = settings.oLanguage.oPaginate;
+               var btnDisplay, btnClass;
+
+               var attach = function( container, buttons ) {
+                       var i, ien, node, button;
+                       var clickHandler = function ( e ) {
+                               e.preventDefault();
+                               if ( e.data.action !== 'ellipsis' ) {
+                                       api.page( e.data.action ).draw( false );
+                               }
+                       };
+
+                       for ( i=0, ien=buttons.length ; i<ien ; i++ ) {
+                               button = buttons[i];
+
+                               if ( $.isArray( button ) ) {
+                                       attach( container, button );
+                               }
+                               else {
+                                       btnDisplay = '';
+                                       btnClass = '';
+
+                                       switch ( button ) {
+                                               case 'ellipsis':
+                                                       btnDisplay = '&hellip;';
+                                                       btnClass = 'disabled';
+                                                       break;
+
+                                               case 'first':
+                                                       btnDisplay = 
lang.sFirst;
+                                                       btnClass = button + 
(page > 0 ?
+                                                               '' : ' 
disabled');
+                                                       break;
+
+                                               case 'previous':
+                                                       btnDisplay = 
lang.sPrevious;
+                                                       btnClass = button + 
(page > 0 ?
+                                                               '' : ' 
disabled');
+                                                       break;
+
+                                               case 'next':
+                                                       btnDisplay = lang.sNext;
+                                                       btnClass = button + 
(page < pages-1 ?
+                                                               '' : ' 
disabled');
+                                                       break;
+
+                                               case 'last':
+                                                       btnDisplay = lang.sLast;
+                                                       btnClass = button + 
(page < pages-1 ?
+                                                               '' : ' 
disabled');
+                                                       break;
+
+                                               default:
+                                                       btnDisplay = button + 1;
+                                                       btnClass = page === 
button ?
+                                                               'active' : '';
+                                                       break;
+                                       }
+
+                                       if ( btnDisplay ) {
+                                               node = $('<li>', {
+                                                               'class': 
classes.sPageButton+' '+btnClass,
+                                                               
'aria-controls': settings.sTableId,
+                                                               'tabindex': 
settings.iTabIndex,
+                                                               'id': idx === 0 
&& typeof button === 'string' ?
+                                                                       
settings.sTableId +'_'+ button :
+                                                                       null
+                                                       } )
+                                                       .append( $('<a>', {
+                                                                       'href': 
'#'
+                                                               } )
+                                                               .html( 
btnDisplay )
+                                                       )
+                                                       .appendTo( container );
+
+                                               settings.oApi._fnBindAction(
+                                                       node, {action: button}, 
clickHandler
+                                               );
+                                       }
+                               }
+                       }
+               };
+
+               attach(
+                       $(host).empty().html('<ul 
class="pagination"/>').children('ul'),
+                       buttons
+               );
+       }
+}
+else {
+       // Integration for 1.9-
+       $.fn.dataTable.defaults.sPaginationType = 'bootstrap';
+
+       /* API method to get paging information */
+       $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
+       {
+               return {
+                       "iStart":         oSettings._iDisplayStart,
+                       "iEnd":           oSettings.fnDisplayEnd(),
+                       "iLength":        oSettings._iDisplayLength,
+                       "iTotal":         oSettings.fnRecordsTotal(),
+                       "iFilteredTotal": oSettings.fnRecordsDisplay(),
+                       "iPage":          oSettings._iDisplayLength === -1 ?
+                               0 : Math.ceil( oSettings._iDisplayStart / 
oSettings._iDisplayLength ),
+                       "iTotalPages":    oSettings._iDisplayLength === -1 ?
+                               0 : Math.ceil( oSettings.fnRecordsDisplay() / 
oSettings._iDisplayLength )
+               };
+       };
+
+       /* Bootstrap style pagination control */
+       $.extend( $.fn.dataTableExt.oPagination, {
+               "bootstrap": {
+                       "fnInit": function( oSettings, nPaging, fnDraw ) {
+                               var oLang = oSettings.oLanguage.oPaginate;
+                               var fnClickHandler = function ( e ) {
+                                       e.preventDefault();
+                                       if ( 
oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
+                                               fnDraw( oSettings );
+                                       }
+                               };
+
+                               $(nPaging).append(
+                                       '<ul class="pagination">'+
+                                               '<li class="prev disabled"><a 
href="#">&larr; '+oLang.sPrevious+'</a></li>'+
+                                               '<li class="next disabled"><a 
href="#">'+oLang.sNext+' &rarr; </a></li>'+
+                                       '</ul>'
+                               );
+                               var els = $('a', nPaging);
+                               $(els[0]).bind( 'click.DT', { action: 
"previous" }, fnClickHandler );
+                               $(els[1]).bind( 'click.DT', { action: "next" }, 
fnClickHandler );
+                       },
+
+                       "fnUpdate": function ( oSettings, fnDraw ) {
+                               var iListLength = 5;
+                               var oPaging = 
oSettings.oInstance.fnPagingInfo();
+                               var an = oSettings.aanFeatures.p;
+                               var i, ien, j, sClass, iStart, iEnd, 
iHalf=Math.floor(iListLength/2);
+
+                               if ( oPaging.iTotalPages < iListLength) {
+                                       iStart = 1;
+                                       iEnd = oPaging.iTotalPages;
+                               }
+                               else if ( oPaging.iPage <= iHalf ) {
+                                       iStart = 1;
+                                       iEnd = iListLength;
+                               } else if ( oPaging.iPage >= 
(oPaging.iTotalPages-iHalf) ) {
+                                       iStart = oPaging.iTotalPages - 
iListLength + 1;
+                                       iEnd = oPaging.iTotalPages;
+                               } else {
+                                       iStart = oPaging.iPage - iHalf + 1;
+                                       iEnd = iStart + iListLength - 1;
+                               }
+
+                               for ( i=0, ien=an.length ; i<ien ; i++ ) {
+                                       // Remove the middle elements
+                                       $('li:gt(0)', 
an[i]).filter(':not(:last)').remove();
+
+                                       // Add the new list items and their 
event handlers
+                                       for ( j=iStart ; j<=iEnd ; j++ ) {
+                                               sClass = (j==oPaging.iPage+1) ? 
'class="active"' : '';
+                                               $('<li '+sClass+'><a 
href="#">'+j+'</a></li>')
+                                                       .insertBefore( 
$('li:last', an[i])[0] )
+                                                       .bind('click', function 
(e) {
+                                                               
e.preventDefault();
+                                                               
oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * 
oPaging.iLength;
+                                                               fnDraw( 
oSettings );
+                                                       } );
+                                       }
+
+                                       // Add / remove disabled classes from 
the static elements
+                                       if ( oPaging.iPage === 0 ) {
+                                               $('li:first', 
an[i]).addClass('disabled');
+                                       } else {
+                                               $('li:first', 
an[i]).removeClass('disabled');
+                                       }
+
+                                       if ( oPaging.iPage === 
oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
+                                               $('li:last', 
an[i]).addClass('disabled');
+                                       } else {
+                                               $('li:last', 
an[i]).removeClass('disabled');
+                                       }
+                               }
+                       }
+               }
+       } );
+}
+
+
+/*
+ * TableTools Bootstrap compatibility
+ * Required TableTools 2.1+
+ */
+if ( $.fn.DataTable.TableTools ) {
+       // Set the classes that TableTools uses to something suitable for 
Bootstrap
+       $.extend( true, $.fn.DataTable.TableTools.classes, {
+               "container": "DTTT btn-group",
+               "buttons": {
+                       "normal": "btn btn-default",
+                       "disabled": "disabled"
+               },
+               "collection": {
+                       "container": "DTTT_dropdown dropdown-menu",
+                       "buttons": {
+                               "normal": "",
+                               "disabled": "disabled"
+                       }
+               },
+               "print": {
+                       "info": "DTTT_print_info modal"
+               },
+               "select": {
+                       "row": "active"
+               }
+       } );
+
+       // Have the collection use a bootstrap compatible dropdown
+       $.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {
+               "collection": {
+                       "container": "ul",
+                       "button": "li",
+                       "liner": "a"
+               }
+       } );
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/images/sort_asc.png
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/images/sort_asc.png
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/images/sort_asc.png
new file mode 100644
index 0000000..a88d797
Binary files /dev/null and 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/images/sort_asc.png
 differ

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/f6922c96/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/images/sort_asc_disabled.png
----------------------------------------------------------------------
diff --git 
a/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/images/sort_asc_disabled.png
 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/images/sort_asc_disabled.png
new file mode 100644
index 0000000..4e144cf
Binary files /dev/null and 
b/modules/webconfig/nodejs/node_modules/admin-lte/plugins/datatables/images/sort_asc_disabled.png
 differ

Reply via email to