| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var tslib_1 = require("tslib");
- var util_1 = require("../../../util");
- var line_1 = require("../guides/line");
- var test_1 = require("../utils/test");
- var bounds_1 = require("../utils/bounds");
- var methods = {
- parity: function (items, _a) {
- var _b = _a.seq, seq = _b === void 0 ? 2 : _b;
- return items.filter(function (item, i) { return (i % seq ? ((0, util_1.hide)(item), false) : true); });
- },
- };
- var filterDefined = function (arr) { return arr.filter(util_1.defined); };
- function hideLabels(labels, overlapCfg, attr, utils) {
- var count = labels.length;
- var keepHeader = overlapCfg.keepHeader, keepTail = overlapCfg.keepTail;
- if (count <= 1 || (count === 2 && keepHeader && keepTail))
- return;
- var parityHide = methods.parity;
- var reset = function (els) { return (els.forEach(utils.show), els); };
- var seq = 2;
- var source = labels.slice();
- var target = labels.slice();
- var minLabelWidth = Math.min.apply(Math, tslib_1.__spreadArray([1], tslib_1.__read(labels.map(function (d) { return (0, bounds_1.getBBox)(d).width; })), false));
- if (attr.type === 'linear' && ((0, line_1.isAxisHorizontal)(attr) || (0, line_1.isAxisVertical)(attr))) {
- var minX = (0, util_1.getLocalBBox)(labels[0]).left;
- var maxX = (0, util_1.getLocalBBox)(labels[count - 1]).right;
- var distance = Math.abs(maxX - minX) || 1;
- seq = Math.max(Math.floor((count * minLabelWidth) / distance), seq);
- }
- var first;
- var last;
- if (keepHeader)
- first = source.splice(0, 1)[0];
- if (keepTail) {
- last = source.splice(-1, 1)[0];
- source.reverse();
- }
- reset(source);
- while (seq < labels.length &&
- (0, test_1.boundTest)(filterDefined(last ? tslib_1.__spreadArray(tslib_1.__spreadArray([last], tslib_1.__read(target), false), [first], false) : tslib_1.__spreadArray([first], tslib_1.__read(target), false)), attr, overlapCfg === null || overlapCfg === void 0 ? void 0 : overlapCfg.margin).length) {
- // 每两步,减一个 (不需要考虑保留 first)
- if (last && !first && seq % 2 === 0) {
- var rest = source.splice(0, 1);
- rest.forEach(utils.hide);
- }
- else if (last && first) {
- // 如果有 first 的话,每一步,减一个(增加迭代次数)
- var rest = source.splice(0, 1);
- rest.forEach(utils.hide);
- }
- target = parityHide(reset(source), { seq: seq });
- seq++;
- }
- }
- exports.default = hideLabels;
- //# sourceMappingURL=autoHide.js.map
|