var echarts = require("../../echarts"); var List = require("../../data/List"); var _model = require("../../util/model"); var defaultEmphasis = _model.defaultEmphasis; var completeDimensions = require("../../data/helper/completeDimensions"); var FunnelSeries = echarts.extendSeriesModel({ type: 'series.funnel', init: function (option) { FunnelSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item // Use a function instead of direct access because data reference may changed this.legendDataProvider = function () { return this.getRawData(); }; // Extend labelLine emphasis this._defaultLabelLine(option); }, getInitialData: function (option, ecModel) { var dimensions = completeDimensions(['value'], option.data); var list = new List(dimensions, this); list.initData(option.data); return list; }, _defaultLabelLine: function (option) { // Extend labelLine emphasis defaultEmphasis(option.labelLine, ['show']); var labelLineNormalOpt = option.labelLine.normal; var labelLineEmphasisOpt = option.labelLine.emphasis; // Not show label line if `label.normal.show = false` labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.normal.show; labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.label.emphasis.show; }, // Overwrite getDataParams: function (dataIndex) { var data = this.getData(); var params = FunnelSeries.superCall(this, 'getDataParams', dataIndex); var sum = data.getSum('value'); // Percent is 0 if sum is 0 params.percent = !sum ? 0 : +(data.get('value', dataIndex) / sum * 100).toFixed(2); params.$vars.push('percent'); return params; }, defaultOption: { zlevel: 0, // 一级层叠 z: 2, // 二级层叠 legendHoverLink: true, left: 80, top: 60, right: 80, bottom: 60, // width: {totalWidth} - left - right, // height: {totalHeight} - top - bottom, // 默认取数据最小最大值 // min: 0, // max: 100, minSize: '0%', maxSize: '100%', sort: 'descending', // 'ascending', 'descending' gap: 0, funnelAlign: 'center', label: { normal: { show: true, position: 'outer' // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调 }, emphasis: { show: true } }, labelLine: { normal: { show: true, length: 20, lineStyle: { // color: 各异, width: 1, type: 'solid' } }, emphasis: {} }, itemStyle: { normal: { // color: 各异, borderColor: '#fff', borderWidth: 1 }, emphasis: {// color: 各异, } } } }); var _default = FunnelSeries; module.exports = _default;