接上一篇中记录Echarts进度环使用【不同状态不同进度环颜色及圈内文字】--采用单实例业务进行说明
接上一篇中记录Echarts进度环使用
此处处理不同状态下不同进度环颜色及圈内文字等的相关处理,采用实际案例源码说明
-----------------偶是华丽丽分割线---------------------------------------------------
形如实现这样-等等的效果 示例如图:

业务上此处拿一个有期限任务实例举例说明
业务简要说明:
【任务按时间 可分为 未开始--进行中--已结束 3大状态//其中已开始任务中任务状态又需要根据完成情况(提交与否)显示对应圈内文字】

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

//

///接下来贴出 简单实例的相关demo
说明:代码中部分业务数据未给出;
主要说明下实现方式
//渲染环形进度条
function RenderNut(startnum, listlength) {
// 路径配置
require.config({
paths: {
echarts: '../../Common/echarts/build/dist'
}
}); // 使用
require(
[
'echarts',
'echarts/chart/pie' // 使用柱状图就加载bar模块,按需加载
],
function (ec) { //
var labelTop0 = {//作答中,颜色为green
normal: {
color: 'green',
label: {
show: true,//标签是否显示
position: 'center',//饼图可选为:'outer'(外部) | 'inner'(内部)/饼图可选为:'outer'(外部) | 'inner'(内部)
formatter: '{b}',//饼图、雷达图、仪表盘、漏斗图: a(系列名称),b(数据项名称),c(数值), d(饼图:百分比 | 雷达图:指标名称)
textStyle: {
baseline: 'bottom',
color: 'green'
}
},
labelLine: {
show: false
}
}
};
var labelTop1 = {//已提交,颜色为#fb8800
normal: {
color: '#fb8800',
label: {
show: true,
position: 'center',
formatter: '{b}',
textStyle: {
baseline: 'bottom',
color: '#fb8800'
}
},
labelLine: {
show: false
}
}
};
var labelTop2 = {//未开始/已结束状态下,颜色为gray
normal: {
color: 'gray',
label: {
show: true,//标签是否显示
position: 'center',
formatter: '{b}',
textStyle: {
baseline: 'bottom',
color: 'Gray'
}
},
labelLine: {
show: false
}
}
};
//---------------------------------------------------
var labelFromatter0 = { //XXX状态下,颜色为绿色
normal: {
label: {
//函数中会读取 option中 data中数据进行计算
formatter: function (params) {
return (params.series.data[0].value * 100 / (params.series.data[0].value + params.series.data[1].value)).toFixed(0) + '%'
},
textStyle: {
baseline: 'top',
color: 'green'
}
}
}
};
var labelFromatter1 = {//XX状态下,颜色为#fb8800
normal: {
label: {
formatter: function (params) {
return (params.series.data[0].value * 100 / (params.series.data[0].value + params.series.data[1].value)).toFixed(0) + '%'
},
textStyle: {
baseline: 'top',
color: '#FB8800'
}
}
}
};
var labelFromatter2 = {//XX状态下,颜色为gray
normal: {
label: {
formatter: function (params) {
return (params.series.data[0].value * 100 / (params.series.data[0].value + params.series.data[1].value)).toFixed(0) + '%'
},
textStyle: {
baseline: 'top',
color: 'Gray'
}
}
}
};
var labelBottom = {
normal: {
color: '#ccc',
label: {
show: true,
position: 'center'
},
labelLine: {
show: false
}
},
emphasis: {
color: 'rgba(0,0,0,0)'
}
};
// 基于准备好的dom,初始化echarts图表
// for (var i = startnum; i < listlength; i++) {
// 可以是一个或者多个--根据实际应用动态绑定ID
var myChart = ec.init(document.getElementById("Html中给定的Dom节点ID"); // 从接口读出的 任务属性数据
// 任务期限【开始时间 startTime //结束时间 endTime // 服务器当前时间: TimeNow】
// 任务完成状态【提交标志 submitFlag】此处submitFlag 1为已提交(具体业务按实际处理)
// 此处测试需要 可给的假数据 var numarr = new Array();//用于存放 进度环展示数据【numarr[0]分子代表已完成XX//numarr[1]分母 代表总数】 //根据按作业期限分类处理
if (Math.round((new Date(startTime || '').getTime()) / 1000) - Math.round((new Date(TimeNow).getTime()) / 1000) > 0) {
//未开始作业,颜色变为灰色
numarr[0] = 0;
numarr[1] = totalnum;
showname = "未开始";
labelTop = labelTop2;
labelFromatter = labelFromatter2;
}
else if (Math.round((new Date(endTime || '').getTime()) / 1000) - Math.round((new Date(TimeNow).getTime()) / 1000) <= 0) {
//已结束作业显示进度环/灰色
if (submitFlag == 1) {//已提交
numarr[0] = donum;
numarr[1] = totalnum;
showname = "已提交";
}
else {
numarr[0] = donum;
numarr[1] = totalnum;
showname = "已作答";
}
}
labelTop = labelTop2;
labelFromatter = labelFromatter2;
}
else {
//期限内根据提交状态
if (submitFlag == 1) {//已提交
numarr[0] = donum;
numarr[1] = totalnum;
showname = "已提交";
labelTop = labelTop1;
labelFromatter = labelFromatter1;
}
else {
numarr[0] = donum;
numarr[1] = totalnum;
showname = "已作答";
labelFromatter = labelFromatter0;
labelTop = labelTop0;
} }
var option = {
tooltip: {
show: false
},
series: [
{
"center": ['50%', '50%'],
"type": "pie",
"radius": [40, 45],
"itemStyle": labelFromatter,
"clockWise": true,//是否顺时针
"selectedMode": null,//选中模式,默认关闭,可选single,multiple
"data": [
{
name: showname, value: parseInt(numarr[0]), itemStyle: labelTop
},
{ name: '未作答', value: parseInt(numarr[1]) - parseInt(numarr[0]), itemStyle: labelBottom }
]
}
]
};
// 为echarts对象加载数据
myChart.setOption(option);
// }
}
);
}
接上一篇中记录Echarts进度环使用【不同状态不同进度环颜色及圈内文字】--采用单实例业务进行说明的更多相关文章
- 完善ext.grid.panel中的查询功能(紧接上一篇)
今天的代码主要是实现,Ext.grid.panel中的查询,其实我也是一名extjs新手,开始想的实现方式是另外再创建一个新的grid类来存放查询出的数据(就是有几个分类查询就创建几个grid类),这 ...
- Java进阶篇设计模式之十二 ---- 备忘录模式和状态模式
前言 在上一篇中我们学习了行为型模式的策略模式(Strategy Pattern)和模板模式(Template Pattern).本篇则来学习下行为型模式的两个模式,备忘录模式(Memento Pat ...
- 【接上一篇】winform中dataGridView高度和宽度自适应填充完数据的高度和宽度,即dataGridView根据数据自适应大小
上一篇:winform中dataGridView高度自适应填充完数据的高度 winform中dataGridView高度自适应填充完数据的高度,就是dataGridView自身不产生滚动条,自己的高度 ...
- FORM实现中打开图片,链接,文档(参考自itpub上一篇帖子,整理而来)
FORM实现中打开图片,链接,文档 参考自itpub上一篇帖子,整理而来 1.添加PL程序库D2kwutil.pll 2.主要实现程序 /*过程参数说明: v_application --打开文件的应 ...
- Spring整合Struts2框架的第一种方式(Action由Struts2框架来创建)。在我的上一篇博文中介绍的通过web工厂的方式获取servcie的方法因为太麻烦,所以开发的时候不会使用。
1. spring整合struts的基本操作见我的上一篇博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2 ...
- thinkPHP中的文章详情页实现“上一篇下一篇”功能经验分享
前段时间在公司中接触到了用thinkPHP搭建的项目,其中涉及到了文章详情页上一篇下一篇翻页的功能实现效果. 因为刚接触这套框架和PHP,所以整理一下实现该功能的经验方法. 如果有不到位的地方,欢迎指 ...
- 接上一篇:vue零基础入门记录
上一篇的vue项目已经搭建运行了起来,我用惯了idea这里也用的idea打开的项目.貌似其他软件写前端更好. 打开项目的项目路径是这样的 写惯了后台,第一眼看的时候感觉这个项目路径很乱,后面才知道我们 ...
- Thinkphp 3.2中文章详情页的上一篇 下一篇文章功能
额 简单2句话解释下 获取上一篇文章的原理,其实就是以当前文章的id为起点进行进行查询,例如id=5的文章 select * from article where (article_id<5 ...
- 记录下vue 中引用echarts 出现 "TypeError: Cannot read property 'getAttribute' of undefined"问题
今天做项目,用echarts展示数据 ,自己测试 先测试 了下.写的代码html: <div ref="myChart" style="height:300px;w ...
随机推荐
- ioS开发之CoreLocation(GPS定位)
1.概述 在iOS开发中,要想加入地图和定位功能这2大功能,必须基于2个框架进行开发 (1)Map Kit :用于地图展示 (2)Core Location :用于地理定位 2个热门专业术语: LBS ...
- Linux下快速搭建php开发环境
php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...
- iPhone与iWatch连接、控制、数据传递(Swift)
最近在做一个项目,涉及到iPhone设备和手表传输数据.控制彼此界面跳转,在网上找了很多资料,发现国内的网站这方面介绍的不多,而国外的网站写的也不是很全,所以在这写这篇博客,给大家参考一下,望大神指点 ...
- IOS开发创建开发证书及发布App应用(四)——创建配置概要文件
4.创建配置概要文件 继续上一篇所讲,今天写的这个是创建配置概要文件 依然在个人中心创建证书这里, 如果不知道的,可以查看以前写的 配置概要文件也分为两种 1)创建开发配置概要文件 2)创建发布配置概 ...
- 树莓派Raspberry实践笔记-简单方法安装minicom
[原创链接]:http://www.cnblogs.com/atsats/p/6665566.html 本文结合最新的Raspbain jessie,使用图形化的方式安装一款软件:串口调试工具mini ...
- POPTEST学员就业面试题目!!!!!
POPTEST学员就业面试题目!!!!! poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.(欢迎大家咨询软件测试工程师就业培训 ...
- c++:自己动手实现线程安全的c++单例类
前段时间使用c++做项目开发,需要根据根据配置文件路径加载全局配置文件,并对外提供唯一访问点.面对这样一个需求,自然的就想到了使用单例模式来创建一个单例配置对象,供外部调用.一开始想使用boost中自 ...
- finally块执行时间
finally块在代码中什么时候被执行? 在Java语言的异常处理中,finally块的作用十九为了保证无论出现什么情况,finally块里面的代码一定会被执行.由于程序执行return就以为这结束对 ...
- redis的安装和测试
redis一直都是调用别人部署好的,近日想要自己从灵开始搭建一次.其中也生出不少枝节,与各位猿友共同分享,望少走些弯路! 1.提前准备的资源 redis安装包(本人上传到csdn不需积分即可下载): ...
- Spring Boot 配置文件 – 在坑中实践
摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 仓廪实而知礼节,衣食足而知荣辱 - 管仲 』 本文提纲 一.自动配置 二.自定义 ...