通过柱状图展示用户在线情况
配置项如下
//获取当前日期
function getNowFormatDate() {
var date = new Date();
var seperator1 = "/";
var year = date.getFullYear();
var month = date.getMonth() + 1;
var strDate = date.getDate();
if (month >= 1 && month <= 9) {
month = "0" + month;
}
if (strDate >= 0 && strDate <= 9) {
strDate = "0" + strDate;
}
var currentdate = year + seperator1 + month + seperator1 + strDate;
return currentdate;
}
var data = [];
//开始时间和结束时间
var endTime = getNowFormatDate() + ' 18:00';
var startTime = getNowFormatDate() + ' 8:00';
//Y 坐标的值
var categories = ['王伟', '李明', '张三', '李四', '王五']
// 人员状态
var types = [{
name: '在线',
color: '#46BCFF'
},
{
name: '离线',
color: '#FF5959'
},
{
name: '暂停',
color: '#D9D9D9'
},
{
name: '延时服务在线',
color: '#00FAFC'
}
];
//服务端获取数据组装数据
// data.push({
// name: typeItem.name,
// value: [
// index,
// baseTime,
// baseTime += duration,
// duration
// ],
// itemStyle: {
// normal: {
// color: typeItem.color
// }
// }
// });
//模拟数据
data = [{
name: '在线',
value: [0, '2018/12/4 8:00', '2018/12/4 9:12'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
{
name: '离线',
value: [0, '2018/12/4 9:12', '2018/12/4 9:30'],
itemStyle: {
normal: {
color: '#FF5959'
}
}
},
{
name: '暂停',
value: [0, '2018/12/4 9:30', '2018/12/4 10:30'],
itemStyle: {
normal: {
color: '#D9D9D9'
}
}
},
{
name: '延时服务在线',
value: [0, '2018/12/4 10:30', '2018/12/4 19:00'],
itemStyle: {
normal: {
color: '#00FAFC'
}
}
},
{
name: '在线',
value: [1, '2018/12/4 8:00', '2018/12/4 9:12'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
{
name: '离线',
value: [1, '2018/12/4 9:12', '2018/12/4 9:30'],
itemStyle: {
normal: {
color: '#FF5959'
}
}
},
{
name: '暂停',
value: [1, '2018/12/4 9:30', '2018/12/4 10:30'],
itemStyle: {
normal: {
color: '#D9D9D9'
}
}
},
{
name: '延时服务在线',
value: [1, '2018/12/4 10:30', '2018/12/4 12:00'],
itemStyle: {
normal: {
color: '#00FAFC'
}
}
}, {
name: '在线',
value: [1, '2018/12/4 14:00', '2018/12/4 18:12'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
{
name: '暂停',
value: [1, '2018/12/4 12:00', '2018/12/4 14:00'],
itemStyle: {
normal: {
color: '#D9D9D9'
}
}
},
{
name: '在线',
value: [2, '2018/12/4 8:00', '2018/12/4 9:12'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
{
name: '离线',
value: [2, '2018/12/4 9:12', '2018/12/4 9:30'],
itemStyle: {
normal: {
color: '#FF5959'
}
}
},
{
name: '暂停',
value: [2, '2018/12/4 9:30', '2018/12/4 10:30'],
itemStyle: {
normal: {
color: '#D9D9D9'
}
}
},
{
name: '延时服务在线',
value: [2, '2018/12/4 10:30', '2018/12/4 12:00'],
itemStyle: {
normal: {
color: '#00FAFC'
}
}
}, {
name: '在线',
value: [2, '2018/12/4 14:00', '2018/12/4 18:12'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
{
name: '暂停',
value: [2, '2018/12/4 12:00', '2018/12/4 14:00'],
itemStyle: {
normal: {
color: '#D9D9D9'
}
}
}, {
name: '在线',
value: [3, '2018/12/4 8:00', '2018/12/4 12:00'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
{
name: '离线',
value: [3, '2018/12/4 12:00', '2018/12/4 13:30'],
itemStyle: {
normal: {
color: '#FF5959'
}
}
},
{
name: '暂停',
value: [3, '2018/12/4 13:30', '2018/12/4 14:00'],
itemStyle: {
normal: {
color: '#D9D9D9'
}
}
},
{
name: '延时服务在线',
value: [3, '2018/12/4 14:00', '2018/12/4 14:02'],
itemStyle: {
normal: {
color: '#00FAFC'
}
}
}, {
name: '在线',
value: [3, '2018/12/4 14:02', '2018/12/4 17:12'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
{
name: '离线',
value: [3, '2018/12/4 17:12', '2018/12/4 18:00'],
itemStyle: {
normal: {
color: '#D9D9D9'
}
}
},
{
name: '在线',
value: [4, '2018/12/4 8:00', '2018/12/4 9:00'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
{
name: '离线',
value: [4, '2018/12/4 9:00', '2018/12/4 10:30'],
itemStyle: {
normal: {
color: '#FF5959'
}
}
},
{
name: '暂停',
value: [4, '2018/12/4 10:30', '2018/12/4 11:00'],
itemStyle: {
normal: {
color: '#D9D9D9'
}
}
},
{
name: '延时服务在线',
value: [4, '2018/12/4 11:00', '2018/12/4 13:00'],
itemStyle: {
normal: {
color: '#00FAFC'
}
}
}, {
name: '在线',
value: [4, '2018/12/4 13:00', '2018/12/4 14:00'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
{
name: '离线',
value: [4, '2018/12/4 14:00', '2018/12/4 15:00'],
itemStyle: {
normal: {
color: '#D9D9D9'
}
}
}, {
name: '延时服务在线',
value: [4, '2018/12/4 15:00', '2018/12/4 16:00'],
itemStyle: {
normal: {
color: '#00FAFC'
}
}
}, {
name: '在线',
value: [4, '2018/12/4 16:00', '2018/12/4 18:00'],
itemStyle: {
normal: {
color: '#46BCFF'
}
}
},
]
function renderItem(params, api) {
var categoryIndex = api.value(0);
var start = api.coord([api.value(1), categoryIndex]);
var end = api.coord([api.value(2), categoryIndex]);
var height = api.size([0, 1])[1] * 0.6;
return {
type: 'rect',
shape: echarts.graphic.clipRectByRect({
x: start[0],
y: start[1] - height / 2,
width: end[0] - start[0],
height: height
}, {
x: params.coordSys.x,
y: params.coordSys.y,
width: params.coordSys.width,
height: params.coordSys.height
}),
style: api.style()
};
}
option = {
//提示框组件
tooltip: {
formatter: function(params) {
//拼接显示参数
return params.marker + params.name + ' : ' + params.value[1] + ' - ' + params.value[2];
}
},
title: {
text: '',
left: 'center'
},
//图例相关属性
legend: {
data: types,
selectedMode: false,
},
//区域缩放 (请勿修改)
dataZoom: [{
type: 'slider',
filterMode: 'weakFilter',
showDataShadow: false,
top: 400,
height: 10,
borderColor: 'transparent',
backgroundColor: '#e2e2e2',
handleIcon: 'M10.7,11.9H9.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z', // jshint ignore:line
handleSize: 20,
handleStyle: {
shadowBlur: 6,
shadowOffsetX: 1,
shadowOffsetY: 2,
shadowColor: '#aaa'
},
labelFormatter: ''
}, {
type: 'inside',
filterMode: 'weakFilter'
}],
//图表高
grid: {
height: 300
},
//X轴属性
xAxis: {
type: 'time',
min: startTime,
max: endTime,
scale: true
},
//Y轴属性
yAxis: {
data: categories
},
series: [{
name: types[0].name,
type: 'bar',
data: [],
color: '#46BCFF'
},
{
name: types[1].name,
type: 'bar',
data: [],
color: '#FF5959'
},
{
name: types[2].name,
type: 'bar',
data: [],
color: '#D9D9D9'
},
{
name: types[3].name,
type: 'bar',
data: [],
color: '#00FAFC'
},
{
type: 'custom',
//开发者自己提供图形渲染的逻辑。这个渲染逻辑一般命名为 renderItem
renderItem: renderItem,
itemStyle: {
normal: {
//图形透明度
opacity: 1.0
}
},
encode: {
// 表示维度 1、2映射到 x 轴。
x: [1, 2],
y: 0,
},
data: data
}
]
};