UNPKG

3.2 kBJavaScriptView Raw
1import { __extends, __read } from "tslib";
2import { each } from '@antv/util';
3import Action from '../base';
4import { getDelegationObject, getElements, getElementValue, getScaleByField, isList, isSlider, isMask, getMaskedElements, } from '../util';
5/**
6 * 元素过滤的 Action,控制元素的显示隐藏
7 * @ignore
8 */
9var ElementFilter = /** @class */ (function (_super) {
10 __extends(ElementFilter, _super);
11 function ElementFilter() {
12 return _super !== null && _super.apply(this, arguments) || this;
13 }
14 /**
15 * 过滤
16 */
17 ElementFilter.prototype.filter = function () {
18 var delegateObject = getDelegationObject(this.context);
19 var view = this.context.view;
20 var elements = getElements(view);
21 if (isMask(this.context)) {
22 var maskElements_1 = getMaskedElements(this.context, 10);
23 if (maskElements_1) {
24 each(elements, function (el) {
25 if (maskElements_1.includes(el)) {
26 el.show();
27 }
28 else {
29 el.hide();
30 }
31 });
32 }
33 }
34 else if (delegateObject) {
35 var component = delegateObject.component;
36 var field_1 = component.get('field');
37 // 列表类的组件能够触发
38 if (isList(delegateObject)) {
39 if (field_1) {
40 var unCheckedItems = component.getItemsByState('unchecked');
41 var scale_1 = getScaleByField(view, field_1);
42 var names_1 = unCheckedItems.map(function (item) { return item.name; });
43 // 直接控制显示、隐藏
44 each(elements, function (el) {
45 var value = getElementValue(el, field_1);
46 var text = scale_1.getText(value);
47 if (names_1.indexOf(text) >= 0) {
48 el.hide();
49 }
50 else {
51 el.show();
52 }
53 });
54 }
55 }
56 else if (isSlider(delegateObject)) {
57 var range = component.getValue();
58 var _a = __read(range, 2), min_1 = _a[0], max_1 = _a[1];
59 each(elements, function (el) {
60 var value = getElementValue(el, field_1);
61 if (value >= min_1 && value <= max_1) {
62 el.show();
63 }
64 else {
65 el.hide();
66 }
67 });
68 }
69 }
70 };
71 /**
72 * 清除过滤
73 */
74 ElementFilter.prototype.clear = function () {
75 var elements = getElements(this.context.view);
76 each(elements, function (el) {
77 el.show();
78 });
79 };
80 /**
81 * 恢复发生的过滤,保持同 data-filter 命名的一致
82 */
83 ElementFilter.prototype.reset = function () {
84 this.clear();
85 };
86 return ElementFilter;
87}(Action));
88export default ElementFilter;
89//# sourceMappingURL=filter.js.map
\No newline at end of file