UNPKG

@antv/f6-plugin

Version:
196 lines (162 loc) 5.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _tslib = require("tslib"); var _ui = require("./ui"); var _base = _interopRequireDefault(require("../base")); var _util = require("@antv/util"); var _dispatcher = require("./dispatcher"); var _const = require("./utils/const"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var TimeBar = /** @class */ function (_super) { (0, _tslib.__extends)(TimeBar, _super); function TimeBar(cfg) { return _super.call(this, cfg) || this; } TimeBar.prototype.getDefaultCfgs = function () { return { className: 'f6-component-timebar', padding: 10, type: 'trend', data: [], trend: { smooth: true }, controllerCfg: { speed: 1 }, slider: { start: _const.SLIDER_START, end: _const.SLIDER_END }, tick: { start: _const.SLIDER_START, end: _const.SLIDER_END }, filterEdge: false }; }; TimeBar.prototype.init = function () { var _this = this; setTimeout(function () { _this.render(); _this.initEvent(); }); }; TimeBar.prototype.filterData = function (evt) { var _a; var value = evt.value; var trendData = this.get('data'); if (!trendData || trendData.length === 0) { console.warn('请配置 TimeBar 组件的数据'); return; } var rangeChange = this.get('rangeChange'); var graph = this.get('graph'); var min = Math.round(trendData.length * value[0]); var max = Math.round(trendData.length * value[1]); max = max >= trendData.length ? trendData.length - 1 : max; min = min >= trendData.length ? trendData.length - 1 : min; var tickLabelFormatter = (_a = this._cfgs.tick) === null || _a === void 0 ? void 0 : _a.tickLabelFormatter; var minText = tickLabelFormatter ? tickLabelFormatter(trendData[min]) : trendData[min].date; var maxText = tickLabelFormatter ? tickLabelFormatter(trendData[max]) : trendData[max].date; if (rangeChange) { rangeChange(graph, minText, maxText); } else { // 自动过滤数据,并渲染 graph if (!this.cacheGraphData || this.cacheGraphData.nodes && this.cacheGraphData.nodes.length === 0) { this.cacheGraphData = graph.get('data'); // graph.save() as GraphData; } // 过滤不在 min 和 max 范围内的节点 var filterData = this.cacheGraphData.nodes.filter(function (d) { return d.date >= trendData[min].date && d.date <= trendData[max].date; }); var nodeIds_1 = filterData.map(function (node) { return node.id; }); var fileterEdges = []; if (this.cacheGraphData.edges) { // 过滤 source 或 target 不在 min 和 max 范围内的边 fileterEdges = this.cacheGraphData.edges.filter(function (edge) { return nodeIds_1.includes(edge.source) && nodeIds_1.includes(edge.target); }); if (this.get('filterEdge')) { fileterEdges = fileterEdges.filter(function (edge) { return edge.date >= trendData[min].date && edge.date <= trendData[max].date; }); } } graph.changeData({ nodes: filterData, edges: fileterEdges }); } }; TimeBar.prototype.render = function () { var _a = this._cfgs, data = _a.data, width = _a.width, padding = _a.padding, type = _a.type, trend = _a.trend, slider = _a.slider, controllerCfg = _a.controllerCfg, tick = _a.tick, sliderTick = _a.sliderTick; var graph = this.get('graph'); var group = graph.get('uiGroup'); var timebar = null; switch (type) { case 'trend': timebar = (0, _ui.createTrendUI)({ group: group, width: width, padding: padding, data: data, trend: trend, slider: slider, controllerCfg: controllerCfg, sliderTick: sliderTick }); break; case 'tick': timebar = (0, _ui.createTickUI)({ group: group, width: width, padding: padding, tick: tick, data: data, controllerCfg: controllerCfg }); break; case 'simple': timebar = (0, _ui.createSimpleTimeBarUI)({ group: group, width: width, padding: padding, slider: slider, data: data, controllerCfg: controllerCfg, sliderTick: sliderTick }); break; } // 移动到左下角 var graphHeight = graph.get('height'); group.translate(0, graphHeight - timebar.height); }; TimeBar.prototype.initEvent = function () { (0, _dispatcher.subscribe)('RANGE_CHANGE', (0, _util.throttle)(this.filterData.bind(this), 200, { trailing: true, leading: true })); }; TimeBar.prototype.destroy = function () { (0, _dispatcher.unsubscribeAll)(); }; return TimeBar; }(_base.default); var _default = TimeBar; exports.default = _default;