import ColorManager from './colorManager'; import { globalStyle } from '../models/options'; import { SeriesCategory } from '../constants'; import Chart from '../core/chart'; class StyleManager { private colorManager: ColorManager; private globalStyle: globalStyle = { colors: [] as string[], }; constructor(private chart: Chart) {} public setup(colors: string[]) { // 1.颜色 this.setupColor(colors); // 2.其他... return this.globalStyle; } private setupColor(colors: string[]) { const { series, graphs } = this.chart; this.colorManager = new ColorManager(); // 注册全局调色盘 this.colorManager.registe(colors); /** * 从调色盘为本图表配色 * 1.line图等根据series数组数量配色、pie图等根据series[0]的data数组长度配色 * 2.需要区分series类型进行配色,区分字段采用graphInstance上的isSingleSeries枚举字段 */ const serieRepresent = graphs[0]; const isSingleSeries = serieRepresent?.graphInstance?.seriesCategory === SeriesCategory.SINGLE; const count = isSingleSeries ? series[0].data.length : series.length; const chartColors = this.colorManager.pick({ count }); this.globalStyle.colors = chartColors; } } export default StyleManager;