diff --git a/ui/js/class.coverride.js b/ui/js/class.coverride.js index f6516438e1c..ae6656bd425 100644 --- a/ui/js/class.coverride.js +++ b/ui/js/class.coverride.js @@ -289,14 +289,21 @@ jQuery(function ($) { updateOverride: function($override, option, value) { var opt = $override.data('options'), field_name = opt['makeName'](option, opt.getId($override)); - $('[name="' + field_name + '"]', $override).val(value); switch (option) { case 'timeshift': + $('[name="' + field_name + '"]', $override).val(value); + break; + case 'color': + console.log($('[name="' + field_name + '"]', $override), value); + + $('[name="' + field_name + '"]', $override).colorpicker('setColor', value); break; default: + $('[name="' + field_name + '"]', $override).val(value); + var visible_name = (typeof opt.captions[option] !== 'undefined') ? opt.captions[option] : option, visible_value = (typeof opt.captions[option + value] !== 'undefined') ? opt.captions[option + value] diff --git a/ui/js/colorpicker.js b/ui/js/colorpicker.js index a1b892d3801..3ad182d1489 100644 --- a/ui/js/colorpicker.js +++ b/ui/js/colorpicker.js @@ -21,9 +21,9 @@ const ZBX_TEXTAREA_COLOR_WIDTH = 96; (function($) { - var overlay, + var $overlay, + element, colorbox, - input, $overlay_input, $overlay_colorbox, $button_use_default, @@ -49,26 +49,85 @@ const ZBX_TEXTAREA_COLOR_WIDTH = 96; use_default: false, onUpdate: null }, + /** * Click handler for every colorpicker cell. * * @param {string} color */ setColorHandler = function (color) { - methods.set_color(color); - input.trigger('change'); + setColor(element, color); + $(element).trigger('change'); methods.hide(); }, + /** + * Initialization of colorpicker overlay. + * + * @param object options + * @param array options.palette Every nested array contains hex color for one cell. + * @param string|object options.appendTo Target element where overlay should be appended. + */ + init = function (options) { + options = $.extend({}, defaults, options || {}); + + /* + * Initialization of each separate colorpicker element. + * + * @param {object} options + * @param {bool} options.use_default Target element where overlay should be appended. + * @param {callable} options.onUpdate Callback function to execute once color has changed. + */ + return this.each((_, element) => { + if ($(element).data('colorpicker')) { + return; + } + + makeOverlay(options); + + $('