From fccc8a6e2109483ce9e7eb465794233aa0703631 Mon Sep 17 00:00:00 2001 From: goorpy Date: Wed, 24 Apr 2013 16:53:41 -0300 Subject: [PATCH 1/2] Override colors array after extend in parseOptions (Realted to flot issue #1031: https://github.com/flot/flot/issues/1031) Currently, if the user declares a custom color palette with less than 5 colors (say, n), $.extend(true, options, opts) only modifies the first n colors of the default palette and leaves the last 5-n in place. When the number of series is >n, colors are used that are not part of user-defined palette, contrary to description of colors array in API. This line overrides the extended colors array and replaces it with exactly the user-defined colors array, when present. Afterwards, the user color palette is respected by the auto tinting/shading system for when there are more series than colors. --- jquery.flot.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/jquery.flot.js b/jquery.flot.js index eb73cd7..d739bdf 100644 --- a/jquery.flot.js +++ b/jquery.flot.js @@ -641,6 +641,8 @@ Licensed under the MIT license. function parseOptions(opts) { $.extend(true, options, opts); + + if (opts.colors) options.colors = opts.colors; if (options.xaxis.color == null) options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString(); From c20370ab57327100daf09828dd0a9e811b026cac Mon Sep 17 00:00:00 2001 From: goorpy Date: Sun, 28 Apr 2013 04:43:13 -0300 Subject: [PATCH 2/2] Add comment and desired structure to colors patch Per request from dnschnur (https://github.com/flot/flot/pull/1034#issuecomment-17119203), I have: - Added a comment explaining the purpose of the new check/override - Changed the structure to match preferred standard structure --- jquery.flot.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jquery.flot.js b/jquery.flot.js index d739bdf..447714a 100644 --- a/jquery.flot.js +++ b/jquery.flot.js @@ -642,7 +642,11 @@ Licensed under the MIT license. $.extend(true, options, opts); - if (opts.colors) options.colors = opts.colors; + //Override options.colors after $.extend if user has set colors, because extend does not clear out excess + //default colors if user defines color palette smaller than default palette size (currently 5). + if (opts.colors) { + options.colors = opts.colors; + } if (options.xaxis.color == null) options.xaxis.color = $.color.parse(options.grid.color).scale('a', 0.22).toString();