0f93556389a59b446e3fb8637cca6c544990ac47a85daefd91016d1025c5fa7ad70c867f33e522abd59f7741bea5bbbc260cfcf432dc4f7a8f1a267826ea74 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { colorConfig } from '../config'
  2. import { deepClone } from '@jiaminghi/c-render/lib/plugin/util'
  3. import { deepMerge } from '../util'
  4. export function mergeColor (chart, option = {}) {
  5. const defaultColor = deepClone(colorConfig, true)
  6. let { color, series } = option
  7. if (!series) series = []
  8. if (!color) color = []
  9. option.color = color = deepMerge(defaultColor, color)
  10. if (!series.length) return
  11. const colorNum = color.length
  12. series.forEach((item, i) => {
  13. if (item.color) return
  14. item.color = color[i % colorNum]
  15. })
  16. const pies = series.filter(({ type }) => type === 'pie')
  17. pies.forEach(pie => pie.data.forEach((di, i) => (di.color = color[i % colorNum])))
  18. const gauges = series.filter(({ type }) => type === 'gauge')
  19. gauges.forEach(gauge => gauge.data.forEach((di, i) => (di.color = color[i % colorNum])))
  20. const barWithIndependentColor = series
  21. .filter(({ type, independentColor }) => type === 'bar' && independentColor)
  22. barWithIndependentColor.forEach(bar => {
  23. if (bar.independentColors) return
  24. bar.independentColors = color
  25. })
  26. }