UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

155 lines (154 loc) 5.9 kB
import { isFunction, extend, createHashMap } from "../../../zrender/lib/core/util.mjs"; import makeStyleMapper from "../model/mixin/makeStyleMapper.mjs"; import { ITEM_STYLE_KEY_MAP } from "../model/mixin/itemStyle.mjs"; import { LINE_STYLE_KEY_MAP } from "../model/mixin/lineStyle.mjs"; import Model from "../model/Model.mjs"; import { makeInner } from "../util/model.mjs"; var inner = makeInner(); var defaultStyleMappers = { itemStyle: makeStyleMapper(ITEM_STYLE_KEY_MAP, true), lineStyle: makeStyleMapper(LINE_STYLE_KEY_MAP, true) }; var defaultColorKey = { lineStyle: "stroke", itemStyle: "fill" }; function getStyleMapper(seriesModel, stylePath) { var styleMapper = seriesModel.visualStyleMapper || defaultStyleMappers[stylePath]; if (!styleMapper) { console.warn("Unknown style type '" + stylePath + "'."); return defaultStyleMappers.itemStyle; } return styleMapper; } function getDefaultColorKey(seriesModel, stylePath) { var colorKey = seriesModel.visualDrawType || defaultColorKey[stylePath]; if (!colorKey) { console.warn("Unknown style type '" + stylePath + "'."); return "fill"; } return colorKey; } var seriesStyleTask = { createOnAllSeries: true, performRawSeries: true, reset: function(seriesModel, ecModel) { var data = seriesModel.getData(); var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; var styleModel = seriesModel.getModel(stylePath); var getStyle = getStyleMapper(seriesModel, stylePath); var globalStyle = getStyle(styleModel); var decalOption = styleModel.getShallow("decal"); if (decalOption) { data.setVisual("decal", decalOption); decalOption.dirty = true; } var colorKey = getDefaultColorKey(seriesModel, stylePath); var color = globalStyle[colorKey]; var colorCallback = isFunction(color) ? color : null; var hasAutoColor = globalStyle.fill === "auto" || globalStyle.stroke === "auto"; if (!globalStyle[colorKey] || colorCallback || hasAutoColor) { var colorPalette = seriesModel.getColorFromPalette( seriesModel.name, null, ecModel.getSeriesCount() ); if (!globalStyle[colorKey]) { globalStyle[colorKey] = colorPalette; data.setVisual("colorFromPalette", true); } globalStyle.fill = globalStyle.fill === "auto" || isFunction(globalStyle.fill) ? colorPalette : globalStyle.fill; globalStyle.stroke = globalStyle.stroke === "auto" || isFunction(globalStyle.stroke) ? colorPalette : globalStyle.stroke; } data.setVisual("style", globalStyle); data.setVisual("drawType", colorKey); if (!ecModel.isSeriesFiltered(seriesModel) && colorCallback) { data.setVisual("colorFromPalette", false); return { dataEach: function(data2, idx) { var dataParams = seriesModel.getDataParams(idx); var itemStyle = extend({}, globalStyle); itemStyle[colorKey] = colorCallback(dataParams); data2.setItemVisual(idx, "style", itemStyle); } }; } } }; var sharedModel = new Model(); var dataStyleTask = { createOnAllSeries: true, performRawSeries: true, reset: function(seriesModel, ecModel) { if (seriesModel.ignoreStyleOnData || ecModel.isSeriesFiltered(seriesModel)) { return; } var data = seriesModel.getData(); var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; var getStyle = getStyleMapper(seriesModel, stylePath); var colorKey = data.getVisual("drawType"); return { dataEach: data.hasItemOption ? function(data2, idx) { var rawItem = data2.getRawDataItem(idx); if (rawItem && rawItem[stylePath]) { sharedModel.option = rawItem[stylePath]; var style = getStyle(sharedModel); var existsStyle = data2.ensureUniqueItemVisual(idx, "style"); extend(existsStyle, style); if (sharedModel.option.decal) { data2.setItemVisual(idx, "decal", sharedModel.option.decal); sharedModel.option.decal.dirty = true; } if (colorKey in style) { data2.setItemVisual(idx, "colorFromPalette", false); } } } : null }; } }; var dataColorPaletteTask = { performRawSeries: true, overallReset: function(ecModel) { var paletteScopeGroupByType = createHashMap(); ecModel.eachSeries(function(seriesModel) { var colorBy = seriesModel.getColorBy(); if (seriesModel.isColorBySeries()) { return; } var key = seriesModel.type + "-" + colorBy; var colorScope = paletteScopeGroupByType.get(key); if (!colorScope) { colorScope = {}; paletteScopeGroupByType.set(key, colorScope); } inner(seriesModel).scope = colorScope; }); ecModel.eachSeries(function(seriesModel) { if (seriesModel.isColorBySeries() || ecModel.isSeriesFiltered(seriesModel)) { return; } var dataAll = seriesModel.getRawData(); var idxMap = {}; var data = seriesModel.getData(); var colorScope = inner(seriesModel).scope; var stylePath = seriesModel.visualStyleAccessPath || "itemStyle"; var colorKey = getDefaultColorKey(seriesModel, stylePath); data.each(function(idx) { var rawIdx = data.getRawIndex(idx); idxMap[rawIdx] = idx; }); dataAll.each(function(rawIdx) { var idx = idxMap[rawIdx]; var fromPalette = data.getItemVisual(idx, "colorFromPalette"); if (fromPalette) { var itemStyle = data.ensureUniqueItemVisual(idx, "style"); var name_1 = dataAll.getName(rawIdx) || rawIdx + ""; var dataCount = dataAll.count(); itemStyle[colorKey] = seriesModel.getColorFromPalette(name_1, colorScope, dataCount); } }); }); } }; export { dataColorPaletteTask, dataStyleTask, seriesStyleTask };