UNPKG

4.75 kBSource Map (JSON)View Raw
1{"version":3,"file":"sibling-filter.js","sourceRoot":"","sources":["../../../../src/interaction/action/element/sibling-filter.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEnH;;;GAGG;AACH;IAA4B,iCAAM;IAAlC;QAAA,qEA0EC;QAzEW,cAAQ,GAAG,KAAK,CAAC;;IAyE7B,CAAC;IAxEC;;OAEG;IACI,8BAAM,GAAb;QACE,iBAAiB;QACjB,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;iBAAM;gBACL,IAAI,CAAC,YAAY,EAAE,CAAC;aACrB;SACF;IACH,CAAC;IACD,cAAc;IACN,sCAAc,GAAtB;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/B,IAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;SACR;QACD,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;QACtC,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1C,IAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,UAAC,EAAE;YAClC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,IAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,UAAC,OAAO;YACrB,IAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,EAAE,UAAC,EAAE;gBAChB,IAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;gBAClC,2CAA2C;gBAC3C,IAAI,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;oBAChD,EAAE,CAAC,IAAI,EAAE,CAAC;iBACX;qBAAM;oBACL,EAAE,CAAC,IAAI,EAAE,CAAC;iBACX;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;IACP,oCAAY,GAApB;QAAA,iBAiBC;QAhBC,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC/B,IAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,UAAC,OAAO;YACrB,IAAM,YAAY,GAAG,sBAAsB,CAAC,KAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACvE,IAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,YAAY,EAAE;gBAChB,oCAAoC;gBACpC,IAAI,CAAC,QAAQ,EAAE,UAAC,EAAE;oBAChB,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;wBAC7B,EAAE,CAAC,IAAI,EAAE,CAAC;qBACX;yBAAM;wBACL,EAAE,CAAC,IAAI,EAAE,CAAC;qBACX;gBACH,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,6BAAK,GAAZ;QACE,IAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,EAAE,UAAC,OAAO;YACrB,IAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,EAAE,UAAC,EAAE;gBAChB,EAAE,CAAC,IAAI,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACH,oBAAC;AAAD,CAAC,AA1ED,CAA4B,MAAM,GA0EjC;AAED,eAAe,aAAa,CAAC","sourcesContent":["import { each } from '@antv/util';\nimport Action from '../base';\nimport { getElements, getMaskedElements, getSiblingMaskElements, getSilbings, isInRecords, isMask } from '../util';\n\n/**\n * Sibling filter\n * @ignore\n */\nclass SiblingFilter extends Action {\n protected byRecord = false;\n /**\n * 过滤隐藏图形\n */\n public filter() {\n // 仅考虑 mask 导致的过滤\n if (isMask(this.context)) {\n if (this.byRecord) {\n this.filterByRecord();\n } else {\n this.filterByBBox();\n }\n }\n }\n // 根据框选的记录来做过滤\n private filterByRecord() {\n const view = this.context.view;\n const maskElements = getMaskedElements(this.context, 10);\n if (!maskElements) {\n return;\n }\n const xFiled = view.getXScale().field;\n const yField = view.getYScales()[0].field;\n const records = maskElements.map((el) => {\n return el.getModel().data;\n });\n const siblings = getSilbings(view);\n each(siblings, (sibling) => {\n const elements = getElements(sibling);\n each(elements, (el) => {\n const record = el.getModel().data;\n // records.includes(record) 不生效,应该是数据的引用被改了\n if (isInRecords(records, record, xFiled, yField)) {\n el.show();\n } else {\n el.hide();\n }\n });\n });\n }\n\n // 根据被框选的包围盒做过滤\n private filterByBBox() {\n const view = this.context.view;\n const siblings = getSilbings(view);\n each(siblings, (sibling) => {\n const maskElements = getSiblingMaskElements(this.context, sibling, 10);\n const elements = getElements(sibling);\n if (maskElements) {\n // mask 过小时返回为 null,不能是空数组,否则同未框选到混淆\n each(elements, (el) => {\n if (maskElements.includes(el)) {\n el.show();\n } else {\n el.hide();\n }\n });\n }\n });\n }\n\n /**\n * 清理所有隐藏的图形\n */\n public reset() {\n const siblings = getSilbings(this.context.view);\n each(siblings, (sibling) => {\n const elements = getElements(sibling);\n each(elements, (el) => {\n el.show();\n });\n });\n }\n}\n\nexport default SiblingFilter;\n"]}
\No newline at end of file