接上一篇中记录Echarts进度环使用不同状态不同进度环颜色及圈内文字--采用单实例业务进行说明

Posted 毛豆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接上一篇中记录Echarts进度环使用不同状态不同进度环颜色及圈内文字--采用单实例业务进行说明相关的知识,希望对你有一定的参考价值。

接上一篇中记录Echarts进度环使用

此处处理不同状态下不同进度环颜色及圈内文字等的相关处理,采用实际案例源码说明

-----------------偶是华丽丽分割线---------------------------------------------------

 形如实现这样-等等的效果 示例如图:

 

业务上此处拿一个有期限任务实例举例说明

业务简要说明:

【任务按时间 可分为 未开始--进行中--已结束 3大状态//其中已开始任务中任务状态又需要根据完成情况(提交与否)显示对应圈内文字】

 

核心地方如图已标出

接下来我们可以自定义这两处加入业务判断处理,从而实现不同状态下 展示不同 环形颜色文字等颜色等

//

///接下来贴出 简单实例的相关demo

 

说明:代码中部分业务数据未给出;

主要说明下实现方式

  1 //渲染环形进度条
  2 function RenderNut(startnum, listlength) {
  3     // 路径配置
  4     require.config({
  5         paths: {
  6             echarts: \'../../Common/echarts/build/dist\'
  7         }
  8     });
  9 
 10     // 使用
 11     require(
 12         [
 13         \'echarts\',
 14             \'echarts/chart/pie\' // 使用柱状图就加载bar模块,按需加载
 15             ],
 16             function (ec) {
 17 
 18             //
 19             var labelTop0 = {//作答中,颜色为green
 20                 normal: {
 21                     color: \'green\',
 22                     label: {
 23                         show: true,//标签是否显示
 24                         position: \'center\',//饼图可选为:\'outer\'(外部) | \'inner\'(内部)/饼图可选为:\'outer\'(外部) | \'inner\'(内部)
 25                         formatter: \'{b}\',//饼图、雷达图、仪表盘、漏斗图: a(系列名称),b(数据项名称),c(数值), d(饼图:百分比 | 雷达图:指标名称)
 26                         textStyle: {
 27                             baseline: \'bottom\',
 28                             color: \'green\'
 29                         }
 30                     },
 31                     labelLine: {
 32                         show: false
 33                     }
 34                 }
 35             };
 36             var labelTop1 = {//已提交,颜色为#fb8800
 37                 normal: {
 38                     color: \'#fb8800\',
 39                     label: {
 40                         show: true,
 41                         position: \'center\',
 42                         formatter: \'{b}\',
 43                         textStyle: {
 44                             baseline: \'bottom\',
 45                             color: \'#fb8800\'
 46                         }
 47                     },
 48                     labelLine: {
 49                         show: false
 50                     }
 51                 }
 52             };
 53             var labelTop2 = {//未开始/已结束状态下,颜色为gray
 54                 normal: {
 55                     color: \'gray\',
 56                     label: {
 57                         show: true,//标签是否显示
 58                         position: \'center\',
 59                         formatter: \'{b}\',
 60                         textStyle: {
 61                             baseline: \'bottom\',
 62                             color: \'Gray\'
 63                         }
 64                     },
 65                     labelLine: {
 66                         show: false
 67                     }
 68                 }
 69             };
 70             //---------------------------------------------------
 71             var labelFromatter0 = { //XXX状态下,颜色为绿色
 72                 normal: {
 73                     label: {
 74                         //函数中会读取 option中 data中数据进行计算
 75                         formatter: function (params) {
 76                             return (params.series.data[0].value * 100 / (params.series.data[0].value + params.series.data[1].value)).toFixed(0) + \'%\'
 77                         },
 78                         textStyle: {
 79                             baseline: \'top\',
 80                             color: \'green\'
 81                         }
 82                     }
 83                 }
 84             };
 85             var labelFromatter1 = {//XX状态下,颜色为#fb8800
 86                 normal: {
 87                     label: {
 88                         formatter: function (params) {
 89                             return (params.series.data[0].value * 100 / (params.series.data[0].value + params.series.data[1].value)).toFixed(0) + \'%\'
 90                         },
 91                         textStyle: {
 92                             baseline: \'top\',
 93                             color: \'#FB8800\'
 94                         }
 95                     }
 96                 }
 97             };
 98             var labelFromatter2 = {//XX状态下,颜色为gray
 99                 normal: {
100                     label: {
101                         formatter: function (params) {
102                             return (params.series.data[0].value * 100 / (params.series.data[0].value + params.series.data[1].value)).toFixed(0) + \'%\'
103                         },
104                         textStyle: {
105                             baseline: \'top\',
106                             color: \'Gray\'
107                         }
108                     }
109                 }
110             };
111             var labelBottom = {
112                 normal: {
113                     color: \'#ccc\',
114                     label: {
115                         show: true,
116                         position: \'center\'
117                     },
118                     labelLine: {
119                         show: false
120                     }
121                 },
122                 emphasis: {
123                     color: \'rgba(0,0,0,0)\'
124                 }
125             };
126             // 基于准备好的dom,初始化echarts图表
127             // for (var i = startnum; i < listlength; i++) {
128             // 可以是一个或者多个--根据实际应用动态绑定ID
129             var myChart = ec.init(document.getElementById("html中给定的Dom节点ID");
130 
131                 // 从接口读出的 任务属性数据
132                 // 任务期限【开始时间 startTime //结束时间 endTime // 服务器当前时间: TimeNow】
133                 // 任务完成状态【提交标志 submitFlag】此处submitFlag 1为已提交(具体业务按实际处理)
134                 // 此处测试需要 可给的假数据 
135                 
136                 var numarr = new Array();//用于存放 进度环展示数据【numarr[0]分子代表已完成XX//numarr[1]分母 代表总数】
137 
138                 //根据按作业期限分类处理
139                 if (Math.round((new Date(startTime || \'\').getTime()) / 1000) - Math.round((new Date(TimeNow).getTime()) / 1000) > 0) {
140                     //未开始作业,颜色变为灰色
141                     numarr[0] = 0;
142                     numarr[1] = totalnum;
143                     showname = "未开始";
144                     labelTop = labelTop2;
145                     labelFromatter = labelFromatter2;
146                 }
147                 else if (Math.round((new Date(endTime || \'\').getTime()) / 1000) - Math.round((new Date(TimeNow).getTime()) / 1000) <= 0) {
148                     //已结束作业显示进度环/灰色
149                         if (submitFlag == 1) {//已提交
150                             numarr[0] = donum;
151                             numarr[1] = totalnum;
152                             showname = "已提交";
153                         }
154                         else {
155                             numarr[0] = donum;
156                             numarr[1] = totalnum;
157                             showname = "已作答";
158                         }
159                     }
160                     labelTop = labelTop2;
161                     labelFromatter = labelFromatter2;
162                 }
163                 else {
164                     //期限内根据提交状态
165                         if (submitFlag == 1) {//已提交
166                             numarr[0] = donum;
167                             numarr[1] = totalnum;
168                             showname = "已提交";
169                             labelTop = labelTop1;
170                             labelFromatter = labelFromatter1;
171                         }
172                         else {
173                             numarr[0] = donum;
174                             numarr[1] = totalnum;
175                             showname = "已作答";
176                             labelFromatter = labelFromatter0;
177                             labelTop = labelTop0;
178                         }
179                   
180                 }
181                 var option = {
182                     tooltip: {
183                         show: false
184                     },
185                     series: [
186                     {
187                         "center": [\'50%\', \'50%\'],
188                         "type": "pie",
189                         "radius": [40, 45],
190                         "itemStyle": labelFromatter,
191                             "clockWise": true,//是否顺时针
192                             "selectedMode": null,//选中模式,默认关闭,可选single,multiple
193                             "data": [
194                             {
195                                 name: showname, value: parseInt(numarr[0]), itemStyle: labelTop
196                             },
197                             { name: \'未作答\', value: parseInt(numarr[1]) - parseInt(numarr[0]), itemStyle: labelBottom }
198                             ]
199                         }
200                         ]
201                     };
202                 // 为echarts对象加载数据 
203                 myChart.setOption(option);
204             // }
205         }
206         );
207 }

 

 

以上是关于接上一篇中记录Echarts进度环使用不同状态不同进度环颜色及圈内文字--采用单实例业务进行说明的主要内容,如果未能解决你的问题,请参考以下文章

vue+ECharts组件封装及饼图实现圆环进度条

方法的重载

angular中对echarts图表进行封装(环形进度条、双Y轴折线区域图)

echarts实践-图表划分区域并设置不同颜色

Jira 6.3.6使用openldap进行认证——方法二

训练记录PART1