echarts报表展示

总结了一下,echarts公共可配置x项和一些私有配置项,看代码做生气

let echarts = require('echarts/lib/echarts');
const draw={

//基础属性配置项公有
drawBase(currentAttr){
var base={};
return base={
title : {
           text: currentAttr.baseAttr.title,
           subtext:currentAttr.baseAttr.subTitle,
           x:'center'
       },
       backgroundColor:currentAttr.baseAttr.bgColor,
       textStyle:{
        color:currentAttr.baseAttr.color,
        fontStyle:currentAttr.baseAttr.style,
        fontWeight:currentAttr.baseAttr.weight,
        fontFamily:currentAttr.baseAttr.family,
        fontSize:currentAttr.baseAttr.size
       },
       color:currentAttr.styleAttr.color,
       calculable: false,
       toolbox: {
       show : currentAttr.toolAttr.isShow,
       feature : {
           dataView : {show:currentAttr.toolAttr.dataViewShow, readOnly: false},
           restore : {show: currentAttr.toolAttr.restoreShow},
           saveAsImage : {show: currentAttr.toolAttr.saveAsImageShow}
       }
   },
   legend:{
    show:currentAttr.lgendAttr.isShow,
    orient: currentAttr.lgendAttr.orient,
    x:currentAttr.lgendAttr.x+'px',
    y:currentAttr.lgendAttr.y+'px',
    data:currentAttr.lgendAttr.data
   },
   brush: {
       toolbox: currentAttr.toolAttr.brush,
       // ['rect', 'polygon', 'lineX', 'lineY', 'keep', 'clear'],
       xAxisIndex: 0
   }
}
},
setTooltip(currentAttr){
return  currentAttr.style.commonStyle.tooltip;
},
isDataZoom(currentAttr){
return currentAttr.style.commonStyle.dataZoom;
},
isMarkPoint(currentAttr){
var markPoint=null;
if(currentAttr.style.lineStyle.markPoint){
    markPoint=[{type: 'max', name: '最大值'},{type: 'min', name: '最小值'}]
    }
    return markPoint
},
isMarkLine(currentAttr){
var markLine=null;
if(currentAttr.style.lineStyle.markLine){
    markLine=[{type: 'average', name: '平均值'}]
    }
},
isSplitLine(isSplitLine){
if(isSplitLine=='noPlitLines'){
return [false,false]
}else if(isSplitLine=='yPlitLines'){
return [true,false]
}else if(isSplitLine=='xPlitLines'){
return [false,true]
}else{
return [true,true]
}
},
setVisualMap(currentAttr){
var visualMap={};
return visualMap={
show:currentAttr.mapAttr.isShow,
    dimension: 1,
       type: 'continuous',
       text: ['High','Low'],
       itemHeight: currentAttr.mapAttr.itemHeight,
       calculable: currentAttr.mapAttr.calculable,
       min: currentAttr.mapAttr.max,
       max: currentAttr.mapAttr.min,
       top: currentAttr.mapAttr.top,
       left: currentAttr.mapAttr.left,
       inRange: {
           colorLightness: currentAttr.mapAttr.colorLightness
       },
       outOfRange: {
           color: currentAttr.mapAttr.outOfRangeColor
       },
       controller: {
           inRange: {
               color: currentAttr.mapAttr.inRangeColor
           }
       }
}
},
isLineArea(type){
if(type='lineArea'){
return  {normal: {}};
}else{
return null
}
},
setSeries(currentAttr,type){

//判断是否为组合图
if(type.constructor != Array){
if(type=='bar'||type=='panel'){
var series=[]
       for(let key in currentAttr.data){
        series.push({
        name:key,
        type:type,
               data: currentAttr.data[key],
               stack:currentAttr.style.barStyle.stack,
               barWidth: currentAttr.style.barStyle.barWith,
        })
       }  
}else if(type=='line'||type=='lineArea'){
var series=[]
       for(let key in currentAttr.data){
        series.push({
        name:key,
        type:'line',
        areaStyle: this.isLineArea(type),
               smooth:currentAttr.style.lineStyle.smooth,
               step:currentAttr.style.lineStyle.step,
               data: currentAttr.data[key],
               markPoint:this.isMarkPoint(currentAttr),
               markLine:this.isMarkLine(currentAttr)
        })
       }
}else if(type=='scatter'){
var series=[]
for(let key in currentAttr.data){
        series.push({
        name:key,
        type:'scatter',
        symbolSize: function(data){
        if(currentAttr.style.scatterStyle.scatterType=='same'){
        return currentAttr.style.scatterStyle.size
        }else{      
        console.log(data)  
                          let size=data[1]/(currentAttr.style.scatterStyle.scale*5);
                           if(size<20){
                               size=20;
                           }
                           return size
        }
                        },


               data: currentAttr.data[key],
               markPoint:this.isMarkPoint(currentAttr),
               markLine:this.isMarkLine(currentAttr)
        })
       }
}
}else{
var series=[]
       for(let key in currentAttr.data){
        series.push({
        name:key,
        type:type[0],
               smooth:currentAttr.style.lineStyle.smooth,
               step:currentAttr.style.lineStyle.step,
               data: currentAttr.data[key],
               markPoint:this.isMarkPoint(currentAttr),
               markLine:this.isMarkLine(currentAttr)
        },{
        name:key,
        type:type[1],
               data: currentAttr.data[key],
               stack:currentAttr.style.barStyle.stack,
               barWidth: currentAttr.style.barStyle.barWith,
        })
       }  
}
        return series
},
drawPie(option,currentAttr){
   document.querySelector('.pieChart').style.height = 400 + 'px';
   document.querySelector('.pieChart').style.width = 100 + '%';
   var pieView =echarts.init(document.querySelector('.pieChart'));
   var baseObj=this.drawBase(currentAttr)    
   option = {
       ...baseObj,
       tooltip : {
           trigger: 'item',
           formatter: "{a} <br/>{b} : {c} ({d}%)"
       },
       series : [
           {
               name: '',
               type: 'pie',
               radius : '55%',
               center: ['50%', '60%'],
               data:currentAttr.data,
               itemStyle: {
                   emphasis: {
                       shadowBlur: 10,
                       shadowOffsetX: 0,
                       shadowColor: 'rgba(0, 0, 0, 0.5)'
                   }
               },
animationType:currentAttr.style.pieStyle.animationType,
roseType:currentAttr.style.pieStyle.roseType,
radius:[currentAttr.style.pieStyle.radius[0],currentAttr.style.pieStyle.radius[1]]
           },
       ]
   };
        return [pieView,option]
    },
    drawLine(option,currentAttr){
   document.querySelector('.lineChart').style.height = 400 + 'px';
   document.querySelector('.lineChart').style.width = 100 + '%';
   var pieView =echarts.init(document.querySelector('.lineChart'));
   var baseObj=this.drawBase(currentAttr)
   option = {
    ...baseObj,
   tooltip: this.setTooltip(currentAttr),
   visualMap: this.setVisualMap(currentAttr),
   xAxis:  {
        type : 'category',
name : currentAttr.style.commonStyle.xName,
                data :currentAttr.axis,
                splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[0]
                },
                axisTick: {
                    alignWithLabel: true
                }


   },
   yAxis: {
       type : 'value',
min:parseInt(currentAttr.style.commonStyle.min),
splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[1]
                },
name:currentAttr.style.commonStyle.yName


   },
   dataZoom:this.isDataZoom(currentAttr),
   series:this.setSeries(currentAttr,'line'),
   };
        return [pieView,option]
    },
    drawBar(option,currentAttr){
        document.querySelector('.barChart').style.height = 400 + 'px';
        document.querySelector('.barChart').style.width = 100 + '%';
        var pieView =echarts.init(document.querySelector('.barChart'));
        var baseObj=this.drawBase(currentAttr)
        option = {
        ...baseObj,
            tooltip :this.setTooltip(currentAttr),
   visualMap: this.setVisualMap(currentAttr),
            xAxis:  {
       type : 'category',
name : currentAttr.style.commonStyle.xName,
                data :currentAttr.axis,
                splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[0]
                },
                axisTick: {
                    alignWithLabel: true
                }


   },
   yAxis: {
       type : 'value',
       splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[1]
                },
min:parseInt(currentAttr.style.commonStyle.min),
name:currentAttr.style.commonStyle.yName


   },
   dataZoom:this.isDataZoom(currentAttr),
            series :this.setSeries(currentAttr,'bar'),
        };
        return [pieView,option]
    },
    drawPanel(option,currentAttr){
   document.querySelector('.panelChart').style.height = 400 + 'px';
   document.querySelector('.panelChart').style.width = 100 + '%';
   var pieView =echarts.init(document.querySelector('.panelChart'));
   var baseObj=this.drawBase(currentAttr)
   option = {
    ...baseObj,
    xAxis:  {         
    type : 'value',
    splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[0]
                },
min:parseInt(currentAttr.style.commonStyle.min),
name:currentAttr.style.commonStyle.xName
   },
   yAxis: {
    type : 'category',
    splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[1]
                },
name : currentAttr.style.commonStyle.yName,
                data :currentAttr.axis,
                axisTick: {
                    alignWithLabel: true
                }
   },
   tooltip:this.setTooltip(currentAttr),
   visualMap: this.setVisualMap(currentAttr,'bar'),
   dataZoom:this.isDataZoom(currentAttr),
   series:this.setSeries(currentAttr,'bar'),
};
        return [pieView,option]
    },
    drawGauge(option,currentAttr){
   document.querySelector('.gaugeChart').style.height = 400 + 'px';
   document.querySelector('.gaugeChart').style.width = 100 + '%';
   var pieView =echarts.init(document.querySelector('.gaugeChart'));   
   var baseObj=this.drawBase(currentAttr)
   option = {
    ...baseObj,
   tooltip : {
       formatter: "{a} <br/>{b} : {c}%"
   },
   series: [
       {
           name: name,
           type: 'gauge',
           detail: {formatter:'{value}%'},
data: currentAttr.data,
startAngle:currentAttr.style.gaugeType.startAngle,
endAngle:currentAttr.style.gaugeType.endAngle,
axisLine:{
lineStyle:{
color:[[currentAttr.style.gaugeType.axisLine.lineStyle.color[0][0], currentAttr.style.gaugeType.axisLine.lineStyle.color[0][1]], [currentAttr.style.gaugeType.axisLine.lineStyle.color[1][0], currentAttr.style.gaugeType.axisLine.lineStyle.color[1][1]], [currentAttr.style.gaugeType.axisLine.lineStyle.color[2][0], currentAttr.style.gaugeType.axisLine.lineStyle.color[2][1]]],
width:currentAttr.style.gaugeType.axisLine.lineStyle.width
}
},
axisTick:{
splitNumber:currentAttr.style.gaugeType.axisTick.splitNumber,
length:currentAttr.style.gaugeType.axisTick.length
},
axisLabel:{
distance:currentAttr.style.gaugeType.axisLabel.distance
},
splitNumber:currentAttr.style.gaugeType.splitNumber,
splitLine:{
length:currentAttr.style.gaugeType.splitLine.length
},
pointer:{
length:currentAttr.style.gaugeType.pointer.length,
width:currentAttr.style.gaugeType.pointer.width
},
radius:currentAttr.style.gaugeType.radius
       }
   ]
};
        return [pieView,option]
    },
    DrawLineArea(option,currentAttr){
   document.querySelector('.lineAreaChart').style.height = 400 + 'px';
   document.querySelector('.lineAreaChart').style.width = 100 + '%';
   var pieView =echarts.init(document.querySelector('.lineAreaChart'));
   var baseObj=this.drawBase(currentAttr)  
   option = {
    ...baseObj,
    tooltip:this.setTooltip(currentAttr),
   visualMap: this.setVisualMap(currentAttr),
  xAxis:  {
       type : 'category',
       splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[0]
                },
name : currentAttr.style.commonStyle.xName,
                data :currentAttr.axis,
                axisTick: {
                    alignWithLabel: true
                }


   },
   yAxis: {
       type : 'value',
       splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[1]
                },
min:parseInt(currentAttr.style.commonStyle.min),
name:currentAttr.style.commonStyle.yName


   },
   dataZoom:this.isDataZoom(currentAttr),
   series:this.setSeries(currentAttr,'lineArea'),
   };
        return [pieView,option]
    },
    drawScatter(option,currentAttr){
   document.querySelector('.scatterChart').style.height = 400 + 'px';
   document.querySelector('.scatterChart').style.width = 100 + '%';
   var pieView =echarts.init(document.querySelector('.scatterChart'));
   var baseObj=this.drawBase(currentAttr)    
   option = {
    ...baseObj,
   tooltip: this.setTooltip(currentAttr),
   visualMap:this.setVisualMap(currentAttr),
   xAxis:  {
       type : 'category',
       splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[0]
                },
name : currentAttr.style.commonStyle.xName,
                data :currentAttr.axis,
                axisTick: {
                    alignWithLabel: true
                }


   },
   yAxis: {
       type : 'value',
       splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[1]
                },
min:parseInt(currentAttr.style.commonStyle.min),
name:currentAttr.style.commonStyle.yName


   },
   dataZoom:this.isDataZoom(currentAttr),
   series:this.setSeries(currentAttr,'scatter'),
   };
        return [pieView,option]
    },
    drawBarLine(option,currentAttr){
        document.querySelector('.barLineChart').style.height = 400 + 'px';
        document.querySelector('.barLineChart').style.width = 100 + '%';
        var pieView =echarts.init(document.querySelector('.barLineChart'));
        var baseObj=this.drawBase(currentAttr)   
        option = {
        ...baseObj,
            tooltip:this.setTooltip(currentAttr),
   visualMap: this.setVisualMap(currentAttr),
           xAxis:  {
       type : 'category',
       splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[0]
                },
name : currentAttr.style.commonStyle.xName,
                data :currentAttr.axis,
                axisTick: {
                    alignWithLabel: true
                }


   },
   yAxis: {
       type : 'value',
       splitLine:{
                show:this.isSplitLine(currentAttr.style.commonStyle.isSplitLine)[1]
                },
min:parseInt(currentAttr.style.commonStyle.min),
name:currentAttr.style.commonStyle.yName


   },
   dataZoom:this.isDataZoom(currentAttr),
            series:this.setSeries(currentAttr,['line','bar']),
        };
        return [pieView,option]
    }
}
export default draw

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值