1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.getLegendThemeCfg = exports.getCustomLegendItems = exports.getLegendItems = exports.getLegendLayout = void 0;
|
4 | var tslib_1 = require("tslib");
|
5 | var util_1 = require("@antv/util");
|
6 | var constant_1 = require("../constant");
|
7 | var attr_1 = require("./attr");
|
8 | var helper_1 = require("./helper");
|
9 | var marker_1 = require("./marker");
|
10 |
|
11 | var STROKES_SYMBOLS = ['line', 'cross', 'tick', 'plus', 'hyphen'];
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | function handleUserMarkerStyle(markerStyle, style) {
|
19 | if ((0, util_1.isFunction)(style)) {
|
20 | return style(markerStyle);
|
21 | }
|
22 | return (0, util_1.deepMix)({}, markerStyle, style);
|
23 | }
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | function adpatorMarkerStyle(marker, color) {
|
31 | var symbol = marker.symbol;
|
32 | if ((0, util_1.isString)(symbol) && STROKES_SYMBOLS.indexOf(symbol) !== -1) {
|
33 | var markerStyle = (0, util_1.get)(marker, 'style', {});
|
34 | var lineWidth = (0, util_1.get)(markerStyle, 'lineWidth', 1);
|
35 | var stroke = markerStyle.stroke || markerStyle.fill || color;
|
36 | marker.style = (0, util_1.deepMix)({}, marker.style, { lineWidth: lineWidth, stroke: stroke, fill: null });
|
37 | }
|
38 | }
|
39 |
|
40 |
|
41 |
|
42 |
|
43 | function setMarkerSymbol(marker) {
|
44 | var symbol = marker.symbol;
|
45 | if ((0, util_1.isString)(symbol) && marker_1.MarkerSymbols[symbol]) {
|
46 | marker.symbol = marker_1.MarkerSymbols[symbol];
|
47 | }
|
48 | }
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 | function getLegendLayout(direction) {
|
56 | return direction.startsWith(constant_1.DIRECTION.LEFT) || direction.startsWith(constant_1.DIRECTION.RIGHT) ? 'vertical' : 'horizontal';
|
57 | }
|
58 | exports.getLegendLayout = getLegendLayout;
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 | function getLegendItems(view, geometry, attr, themeMarker, userMarker) {
|
70 | var scale = attr.getScale(attr.type);
|
71 | if (scale.isCategory) {
|
72 | var field_1 = scale.field;
|
73 | var colorAttr_1 = geometry.getAttribute('color');
|
74 | var shapeAttr_1 = geometry.getAttribute('shape');
|
75 | var defaultColor_1 = view.getTheme().defaultColor;
|
76 | var isInPolar_1 = geometry.coordinate.isPolar;
|
77 | return scale.getTicks().map(function (tick, index) {
|
78 | var _a;
|
79 | var text = tick.text, scaleValue = tick.value;
|
80 | var name = text;
|
81 | var value = scale.invert(scaleValue);
|
82 |
|
83 | var unchecked = view.filterFieldData(field_1, [(_a = {}, _a[field_1] = value, _a)]).length === 0;
|
84 | (0, util_1.each)(view.views, function (subView) {
|
85 | var _a;
|
86 | if (!subView.filterFieldData(field_1, [(_a = {}, _a[field_1] = value, _a)]).length) {
|
87 | unchecked = true;
|
88 | }
|
89 | });
|
90 |
|
91 | var color = (0, attr_1.getMappingValue)(colorAttr_1, value, defaultColor_1);
|
92 | var shape = (0, attr_1.getMappingValue)(shapeAttr_1, value, 'point');
|
93 | var marker = geometry.getShapeMarker(shape, {
|
94 | color: color,
|
95 | isInPolar: isInPolar_1,
|
96 | });
|
97 | var markerCfg = userMarker;
|
98 | if ((0, util_1.isFunction)(markerCfg)) {
|
99 | markerCfg = markerCfg(name, index, (0, tslib_1.__assign)({ name: name, value: value }, (0, util_1.deepMix)({}, themeMarker, marker)));
|
100 | }
|
101 |
|
102 | marker = (0, util_1.deepMix)({}, themeMarker, marker, (0, helper_1.omit)((0, tslib_1.__assign)({}, markerCfg), ['style']));
|
103 | adpatorMarkerStyle(marker, color);
|
104 | if (markerCfg && markerCfg.style) {
|
105 |
|
106 | marker.style = handleUserMarkerStyle(marker.style, markerCfg.style);
|
107 | }
|
108 | setMarkerSymbol(marker);
|
109 | return { id: value, name: name, value: value, marker: marker, unchecked: unchecked };
|
110 | });
|
111 | }
|
112 | return [];
|
113 | }
|
114 | exports.getLegendItems = getLegendItems;
|
115 |
|
116 |
|
117 |
|
118 |
|
119 |
|
120 |
|
121 |
|
122 |
|
123 | function getCustomLegendItems(themeMarker, userMarker, customItems) {
|
124 |
|
125 | return customItems.map(function (item, index) {
|
126 | var markerCfg = userMarker;
|
127 | if ((0, util_1.isFunction)(markerCfg)) {
|
128 | markerCfg = markerCfg(item.name, index, (0, util_1.deepMix)({}, themeMarker, item));
|
129 | }
|
130 | var itemMarker = (0, util_1.isFunction)(item.marker)
|
131 | ? item.marker(item.name, index, (0, util_1.deepMix)({}, themeMarker, item))
|
132 | : item.marker;
|
133 | var marker = (0, util_1.deepMix)({}, themeMarker, markerCfg, itemMarker);
|
134 | setMarkerSymbol(marker);
|
135 | item.marker = marker;
|
136 | return item;
|
137 | });
|
138 | }
|
139 | exports.getCustomLegendItems = getCustomLegendItems;
|
140 |
|
141 |
|
142 |
|
143 |
|
144 |
|
145 |
|
146 |
|
147 | function getLegendThemeCfg(theme, direction) {
|
148 | var legendTheme = (0, util_1.get)(theme, ['components', 'legend'], {});
|
149 | return (0, util_1.deepMix)({}, (0, util_1.get)(legendTheme, ['common'], {}), (0, util_1.deepMix)({}, (0, util_1.get)(legendTheme, [direction], {})));
|
150 | }
|
151 | exports.getLegendThemeCfg = getLegendThemeCfg;
|
152 |
|
\ | No newline at end of file |