UNPKG

@antv/g2plot

Version:

G2 Plot, a market of plots built with the Grammar of Graphics'

55 lines 1.78 kB
import * as _ from '@antv/util'; import { compare } from '../../base/controller/state'; var POSITION_MAPPER = ['xField', 'yField', 'angleField']; function onActive(plot, condition) { var props = plot.options; // 获取state condition对应在画布的位置,只有在state condition对应字段为位置映射字段时,tooltip才会对齐进行响应 if (shouldActive(props, condition)) { var data = props.data; _.each(data, function (d) { if (compare(d, condition)) { var point = plot.view.getXY(d); // 调用showTooltip方法 plot.view.on('tooltip:create', function (e) { processState(condition, e, false); }); plot.view.showTooltip(point); } }); } } function onDisable(plot, condition) { plot.view.on('tooltip:change', function (e) { processState(condition, e, true); }); } function processState(condition, e, inverse) { var expected = inverse ? false : true; var originItems = _.clone(e.items); e.items.splice(0); _.each(originItems, function (item) { var origin = item.point._origin; if (compare(origin, condition) === expected) { e.items.push(item); } }); } function shouldActive(props, condition) { var fields = getPositionField(props); return !_.isFunction(condition) && fields.indexOf(condition.name); } function getPositionField(props) { var fields = []; _.each(POSITION_MAPPER, function (v) { if (_.has(props, v)) { fields.push(v); } }); return fields; } export default { active: onActive, selected: onActive, disable: onDisable, }; //# sourceMappingURL=state.js.map