UNPKG

c3

Version:

D3-based reusable chart library

63 lines (59 loc) 1.67 kB
import { ChartInternal } from './core' import { notEmpty } from './util' ChartInternal.prototype.generateColor = function() { var $$ = this, config = $$.config, d3 = $$.d3, colors = config.data_colors, pattern = notEmpty(config.color_pattern) ? config.color_pattern : d3.schemeCategory10, callback = config.data_color, ids = [] return function(d) { var id = d.id || (d.data && d.data.id) || d, color // if callback function is provided if (colors[id] instanceof Function) { color = colors[id](d) } // if specified, choose that color else if (colors[id]) { color = colors[id] } // if not specified, choose from pattern else { if (ids.indexOf(id) < 0) { ids.push(id) } color = pattern[ids.indexOf(id) % pattern.length] colors[id] = color } return callback instanceof Function ? callback(color, d) : color } } ChartInternal.prototype.generateLevelColor = function() { var $$ = this, config = $$.config, colors = config.color_pattern, threshold = config.color_threshold, asValue = threshold.unit === 'value', values = threshold.values && threshold.values.length ? threshold.values : [], max = threshold.max || 100 return notEmpty(threshold) && notEmpty(colors) ? function(value) { var i, v, color = colors[colors.length - 1] for (i = 0; i < values.length; i++) { v = asValue ? value : (value * 100) / max if (v < values[i]) { color = colors[i] break } } return color } : null }