82 lines
3.0 KiB
Java
82 lines
3.0 KiB
Java
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.getCustomLegendItems = exports.getLegendItems = exports.getLegendLayout = void 0;
|
||
var util_1 = require("@antv/util");
|
||
var constant_1 = require("../constant");
|
||
var attr_1 = require("./attr");
|
||
var marker_1 = require("./marker");
|
||
function setMarkerSymbol(marker) {
|
||
var symbol = marker.symbol;
|
||
if (util_1.isString(symbol) && marker_1.MarkerSymbols[symbol]) {
|
||
marker.symbol = marker_1.MarkerSymbols[symbol];
|
||
}
|
||
}
|
||
/**
|
||
* @ignore
|
||
* get the legend layout from direction
|
||
* @param direction
|
||
* @returns layout 'horizontal' | 'vertical'
|
||
*/
|
||
function getLegendLayout(direction) {
|
||
return direction.startsWith(constant_1.DIRECTION.LEFT) || direction.startsWith(constant_1.DIRECTION.RIGHT) ? 'vertical' : 'horizontal';
|
||
}
|
||
exports.getLegendLayout = getLegendLayout;
|
||
/**
|
||
* @ignore
|
||
* get the legend items
|
||
* @param view
|
||
* @param geometry
|
||
* @param attr
|
||
* @param themeMarker
|
||
* @param userMarker
|
||
* @returns legend items
|
||
*/
|
||
function getLegendItems(view, geometry, attr, themeMarker, userMarker) {
|
||
var scale = attr.getScale(attr.type);
|
||
if (scale.isCategory) {
|
||
var field_1 = scale.field;
|
||
var colorAttr_1 = geometry.getAttribute('color');
|
||
var shapeAttr_1 = geometry.getAttribute('shape');
|
||
var defaultColor_1 = view.getTheme().defaultColor;
|
||
var isInPolar_1 = geometry.coordinate.isPolar;
|
||
return scale.getTicks().map(function (tick) {
|
||
var _a;
|
||
var text = tick.text, scaleValue = tick.value;
|
||
var name = text;
|
||
var value = scale.invert(scaleValue);
|
||
// 通过过滤图例项的数据,来看是否 unchecked
|
||
var unchecked = view.filterFieldData(field_1, [(_a = {}, _a[field_1] = value, _a)]).length === 0;
|
||
// @ts-ignore
|
||
var color = attr_1.getMappingValue(colorAttr_1, value, defaultColor_1);
|
||
var shape = attr_1.getMappingValue(shapeAttr_1, value, 'point');
|
||
var marker = geometry.getShapeMarker(shape, {
|
||
color: color,
|
||
isInPolar: isInPolar_1,
|
||
});
|
||
// the marker configure order should be ensure
|
||
marker = util_1.deepMix({}, themeMarker, marker, userMarker);
|
||
setMarkerSymbol(marker);
|
||
return { id: value, name: name, value: value, marker: marker, unchecked: unchecked };
|
||
});
|
||
}
|
||
return [];
|
||
}
|
||
exports.getLegendItems = getLegendItems;
|
||
/**
|
||
* @ignore
|
||
* custom legend 的 items 获取
|
||
* @param themeMarker
|
||
* @param userMarker
|
||
* @param customItems
|
||
*/
|
||
function getCustomLegendItems(themeMarker, userMarker, customItems) {
|
||
// 如果有自定义的 item,那么就直接使用,并合并主题的 marker 配置
|
||
return customItems.map(function (item) {
|
||
var marker = util_1.deepMix({}, themeMarker, userMarker, item.marker);
|
||
setMarkerSymbol(marker);
|
||
item.marker = marker;
|
||
return item;
|
||
});
|
||
}
|
||
exports.getCustomLegendItems = getCustomLegendItems;
|
||
//# sourceMappingURL=legend.js.map |