You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

666 lines
20 KiB
JavaScript

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//初始化
$(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} <br/>{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}<br/>{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} <br/>{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);
}