//初始化
$(function(){
//上方组图
//加载权限操作饼图
systemOperPieEchart();
//加载在线用户统计折线图
aLineLineEchart();
//加载在线用户统计柱状图
aLineBarEchart();
//下方组图
//服务器监控1 仪表盘
serverListenGaugeEchart1();
//服务器监控2 仪表盘
serverListenGaugeEchart2();
//服务器监控3 多环形
serverListenGaugeEchart3();
})
//定时刷新数据
//1
setInterval(function () {
systemOperPieEchart();
},1000);
//2
setInterval(function () {
aLineLineEchart();
},1000);
//3
setInterval(function () {
aLineBarEchart();
},1000);
//4
setInterval(function () {
serverListenGaugeEchart1();
},1000);
//5
setInterval(function () {
serverListenGaugeEchart2();
},60000);
//6
setInterval(function () {
serverListenGaugeEchart3();
},1000);
/*****************************************工具类公共方法***************************************************/
//工具栏公共方法
var toolbox = {
feature: {
dataView: {//数据视图工具,可以展现当前图表所用的数据,编辑后可以动态更新。
show: true,//是否显示组件。
readOnly: false
},
saveAsImage: {}
}
};
//工具栏公共方法1折线图和柱状图
var toolbox1 = {
feature: {
dataView: {//数据视图工具,可以展现当前图表所用的数据,编辑后可以动态更新。
show: true,//是否显示组件。
readOnly: false
},
magicType:{//动态类型切换 示例:feature: { magicType: {type: ['line', 'bar', 'stack', 'tiled']}}
show:true,
type:['line','bar']
},
restore: {},
saveAsImage: {}
}
};
/************************************加载动态数据***********************************************/
//加载权限操作饼图
function systemOperPieEchart(){
var myChart = echarts.init(document.getElementById('systemOperDivMain'));
//设置实际值
myChart.setOption({
legend: {
top:46,
data:['无异常','异常','锁定']
},
color: ['#008000','#F7464A','#FFC870'],
});
$.ajax({
type:'get',
url:path+'/getEcharts1',
dataType:'json',
success:function(data){
if(data.code == 100){
var data = data.extend.list;
getPieEcharts(myChart,'',data);
}else{
toastr.error(data.msg);
}
}
})
/*var data = [
{value:335,name:'无异常'},
{value:310,name:'异常'},
{value:234,name:'锁定'},
];*/
}
//加载在线用户统计折线图
function aLineLineEchart(){
var myChart = echarts.init(document.getElementById('alineLineDivMain'));
var name1 = '意向客户';
var name2 = '签约客户';
var name3 = '长期客户';
var name4 = '流失客户';
var names = [name1,name2,name3,name4];
myChart.setOption({
legend: {
data:names
},
color: ['#CC324B','#FFCE55','#8CC474','#5DB2FF'],
});
$.ajax({
type:'get',
url:path+'/getEcharts2',
dataType:'json',
sync:false,
success:function(data){
if(data.code == 100){
//最大登录数
var maxCountList = data.extend.list.maxCountList;
$("#maxCountList").text(maxCountList);
//日期集合
var xAsisData = data.extend.list.dayList;
var intentionalList = data.extend.list.intentionalList;
var contractedList = data.extend.list.contractedList;
var longTermList = data.extend.list.longTermList;
var lossList = data.extend.list.lossList;
var data = [
{
name:name1,
type:'line',
data:intentionalList
},
{
name:name2,
type:'line',
data:contractedList
},
{
name:name3,
type:'line',
data:longTermList
},
{
name:name4,
type:'line',
data:lossList
},
];
getLineEcharts(myChart,xAsisData,data);
}
}
})
//$("#alineLineDivMain canvas").attr("height",190);
}
//加载在线用户统计柱状图
function aLineBarEchart(){
var myChart = echarts.init(document.getElementById('alineBarDivMain'));
myChart.setOption({
title:{
text:'本月拜访量趋势图',
x:'left'
},
});
var xAsisData,echartData;
$.ajax({
type:'get',
url:path+'/getEcharts3',
dataType:'json',
sync:false,
success:function(data){
if(data.code == 100){
//最大登录数
var maxCountList = data.extend.list.maxCountList;
$("#loginCount").text(maxCountList);
//日期集合
xAsisData = data.extend.list.dayList;
echartData = data.extend.list.dataList;
var color = '#D55462';
getBarEcharts(myChart,xAsisData,echartData,color);
}
}
})
//$("#alineBarDivMain canvas").attr("height",190)
}
//加载服务器监控1仪表盘
function serverListenGaugeEchart1(){
var myChart = echarts.init(document.getElementById('serverListenGaugeDiv1'));
var name = 'cpu使用率';
var color = [[0.2,'#90EE90'],[0.4, '#FFA500'],[0.8,'#87CEEB'],[1, '#FF4500']];
$.ajax({
type:'get',
url:path+'/getEcharts4',
dataType:'json',
sync:false,
success:function(data){
if(data.code == 100){
var data = data.extend.list;
gaugeEchart1(myChart,name,color,data);
}
}
})
}
//加载服务器监控2仪表盘
function serverListenGaugeEchart2(){
var myChart = echarts.init(document.getElementById('serverListenGaugeDiv2'));
//设置实际值
var color = [[0.4, '#2EC7C9'], [0.7, '#5AB1EF'], [1, '#D87A80']];
$.ajax({
type:'get',
url:path+'/getEcharts5',
dataType:'json',
sync:false,
success:function(data){
if(data.code == 100){
var value = data.extend.temperature;
var data = [{value: value, name: 'cpu温度'}];
getGaugeEcharts(myChart,'cpu温度',data,color);
}
}
})
}
//加载服务器监控3仪表盘
function serverListenGaugeEchart3(){
var myChart = echarts.init(document.getElementById('serverListenGaugeDiv3'));
var text = '内存使用率';
var name1 = '总内存';
var name2 = '物理内存';
var name3 = '使用中';
var name = [name1,name2,name3];
var color1 = '#2EC7C9';
var color2 = '#B6A2DE';
var color3 = '#5AB1EF';
var color = [color1,color2,color3];
$.ajax({
type:'get',
url:path+'/getEcharts6',
dataType:'json',
sync:false,
success:function(data){
if(data.code == 100){
var value = data.extend.list;
var data = Math.round((value[2]/value[1])*100) + "%";
gaugeEchart3(myChart,text,name,color,value,data);
}
}
})
}
/**************************************基本代码*************************************************/
/**
* myChart:实例化对象 name:饼图名称 data:动态数据var data = [
{value:335, name:'无异常'},
{value:310, name:'异常'},
{value:234, name:'锁定'},
];
* */
function getPieEcharts(myChart,name,data){
// 基于准备好的dom,初始化echarts实例
// 指定图表的配置项和数据
var option = {
tooltip: {
trigger: 'item',
formatter: "{a}
{b}: {c} ({d}%)"
},
legend: {
orient: 'vertical',
x: 'right',
},
toolbox:toolbox,
series: [
{
name:name,
type:'pie',
radius: ['40%', '70%'],
avoidLabelOverlap: false,
label: {
normal: {
show: false,
position: 'center'
},
emphasis: {
show: true,
textStyle: {
fontSize: '30',
fontWeight: 'bold'
}
}
},
labelLine: {
normal: {
show: false
}
},
data:data,
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
}
/**
* myChart:实例化对象 xAsisData:x轴数据 data:动态数据var data = [
{value:335, name:'无异常'},
{value:310, name:'异常'},
{value:234, name:'锁定'},
];
* */
function getLineEcharts(myChart,xAsisData,data){
var option = {
tooltip: {
trigger: 'axis'
},
toolbox:toolbox1,
xAxis: {
type: 'category',
boundaryGap: false,
data: xAsisData
},
yAxis: {
type: 'value'
},
series: data
};
myChart.setOption(option);
}
/**
* myChart:实例化对象 xAsisData:x轴数据 var xAsisData = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30];
var data = [120, 200, 150, 80, 70, 110, 130];
* */
//加载柱状图
function getBarEcharts(myChart,xAsisData,data,color){
var option = {
tooltip : {
trigger: 'axis',
axisPointer : { // 坐标轴指示器,坐标轴触发有效
type : 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
color:color,
toolbox:toolbox1,
xAxis: {
type: 'category',
data: xAsisData
},
yAxis: {
type: 'value'
},
series: [{
data:data,
type: 'bar'
}]
};
myChart.setOption(option);
}
//加载仪表图1
function gaugeEchart1(myChart,name,color,data){
var labelTop = {
normal : {
label : {
show : true,
position : 'center',
formatter : '{b}',
textStyle: {
baseline : 'bottom',
fontSize : '12',
fontWeight : 'bold'
}
},
labelLine : {
show : false
}
}
};
var labelFromatter = {
normal : {
label : {
formatter : function (a,b,c,d){return (100 - d).toFixed(2) + '%'},
textStyle: {
baseline : 'top',
fontSize : '12',
fontWeight : 'bold'
}
}
},
}
var labelBottom = {
normal : {
label : {
show : true,
position : 'center'
},
labelLine : {
show : false
}
},
emphasis: {
}
};
var option= {
tooltip : {
formatter: "{a}
{b}:{c}%"
},
toolbox:toolbox,
series : [
{
name:name,
type:'gauge',
center : ['50%', '50%'], // 默认全局居中
radius : '90%',
startAngle: 140,
endAngle : -140,
min: 0, // 最小值
max: 100, // 最大值
precision: 0, // 小数精度,默认为0,无小数点
splitNumber: 10, // 分割段数,默认为5
axisLine: { // 坐标轴线
show: true, // 默认显示,属性show控制显示与否
lineStyle: { // 属性lineStyle控制线条样式
color: color,
width: 28
}
},
axisTick: { // 坐标轴小标记
show: true, // 属性show控制显示与否,默认不显示
splitNumber: 5, // 每份split细分多少段
length :8, // 属性length控制线长
lineStyle: { // 属性lineStyle控制线条样式
color: '#eee',
width: 1,
type: 'solid'
}
},
axisLabel: { // 坐标轴文本标签,详见axis.axisLabel
show: true,
formatter: function(v){
switch (v+''){
case '10': return '弱';
case '30': return '低';
case '60': return '中';
case '90': return '高';
default: return '';
}
},
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: '#333',
fontSize : 10
}
},
splitLine: { // 分隔线
show: true, // 默认显示,属性show控制显示与否
length :13, // 属性length控制线长
lineStyle: { // 属性lineStyle(详见lineStyle)控制线条样式
color: '#eee',
width: 2,
type: 'solid'
}
},
pointer : {
length : '80%',
width : 8,
color : 'auto'
},
title : {
show : true,
offsetCenter: ['-75%', -10], // x, y,单位px
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: '#333',
fontSize : 14
}
},
detail : {
show : true,
backgroundColor: 'rgba(0,0,0,0)',
borderWidth: 0,
borderColor: '#ccc',
width: 0,
height:0,
offsetCenter: ['-70%', 10], // x, y,单位px
formatter:'{value}%',
textStyle: { // 其余属性默认使用全局文本样式,详见TEXTSTYLE
color: 'auto',
fontSize : 26
}
},
data:[{value:data, name: name}]
}
] };
myChart.setOption(option);
}
/**
* myChart:实例化对象 name:图名,
var color = [[0.4, '#2EC7C9'], [0.7, '#5AB1EF'], [1, '#D87A80']];
var data = [{value: 50, name: 'cpu温度'}];
* */
//加载仪表盘2
function getGaugeEcharts(myChart,name,data,color){
var option = {
tooltip : {
formatter: "{a}
{b} : {c}℃"
},
toolbox: toolbox,
series: [
{
name: name,
type: 'gauge',
radius:'90%',
axisLabel:{
distance:-20
},
axisLine: { // 坐标轴线
lineStyle: { // 属性lineStyle控制线条样式
color: color,
width:10
}
},
detail: {formatter:'{value}℃'},
data: data
}
]
};
myChart.setOption(option);
}
//加载三环形图
function gaugeEchart3(myChart,text,name,color,value,data){
var total = value[0] * 2;
var placeHolderStyle = {
normal: {
label: {
show: false,
},
labelLine: {
show: false,
}
}
};
var option={
title : {
text: text,//主标题
subtext: data,//副标题
textStyle: {//主标题样式
fontWeight: 'bold',
fontSize: 14
},
subtextStyle: {//副标题样式
fontSize: 20,
fontWeight: 'bold',
},
left:'center',
top: 'middle'
},
tooltip: {
show: true,
trigger: 'item',//提示框触发类型,item数据项图形触发,主要应用于无类目轴的图表(散点图、饼形图等)
formatter: function(params, ticket, callback) {//第一个参数数据集、第二个参数是异步回调标志、第三个参数是异步回调
return params.seriesName + ": " + params.value + "G";//系列名称:数据值
}
},
toolbox: toolbox,
color:color,//调色盘颜色列表,默认情况下图例和饼形环图颜色使用
legend: {
top: "44px",
left: "50%",
itemHeight: 20,//图例的高度
data: name,//图例的数据数组
selectedMode: true,//图例选择模式
orient: "vertical"//图例布局方式
},
series: [
{
name: name[0],
type: 'pie',
clockWise: false, //顺时加载
hoverAnimation: false, //鼠标移入变大
radius: [100, 120],
itemStyle: placeHolderStyle,
label: {
normal: {
show: false,
}
},
data: [{
value: value[0],
itemStyle: {
normal: {
color: color[0]
}
}
},
{
value: total-value[0],
itemStyle: {
normal: {
color: 'transparent'
}
}
}]
},
{
name: name[1],
type: 'pie',
clockWise: false, //顺时加载
hoverAnimation: false, //鼠标移入变大
radius: [80, 100],
itemStyle: placeHolderStyle,
data: [{
value: value[1],
itemStyle: {
normal: {
color: color[1]
}
}
},
{
value: total-value[1],
itemStyle: {
normal: {
color: 'transparent'
}
}
}]
},
{
name: name[2],
type: 'pie',
clockWise: false, //顺时加载
hoverAnimation: false, //鼠标移入变大
radius: [60, 80],
itemStyle: placeHolderStyle,
data: [{
value: value[2],
itemStyle: {
normal: {
color: color[2]
}
}
},
{
value: total-value[2],
itemStyle: {
normal: {
color: 'transparent'
}
}
}]
}]
};
myChart.setOption(option);
}