| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- 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;
|