cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
155 lines (154 loc) • 5.9 kB
JavaScript
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 };