效果图如下:
var ecfaultlevel = Ext.create(
'Ext.panel.Panel',
{
title : '事件级别',
items : [ {
xtype:'panel',
html : '<div id="faultlevel" style="width: 680px;height: 272px;"></div>',
listeners : {
afterrender : function() {
/*chartstart*/
var overTimeChart = echarts.init(document
.getElementById("faultlevel"));
var dataMap = {};
var piearray=new Array();
var piearraycount=0;
/*piestart*/
Ext.Ajax.request( {
url : 'faultGroupByFaultLevel.action',
method : 'post',
success : function(response,options) {
var result = Ext.JSON.decode(response.responseText);
for (var i = 0; i < result.root.length; i++) {
var faultpandectdto=result.root[i].maxLevel;
var faultpanfaultNum=result.root[i].faultNum;
if("5"==faultpandectdto){//通知
piearray[piearraycount] =result.root[i];
}
if("10"==faultpandectdto){//一般
piearray[piearraycount] =result.root[i];
}
if("15"==faultpandectdto){//重要
piearray[piearraycount] =result.root[i];
}
if("20"==faultpandectdto){//紧急
piearray[piearraycount] =result.root[i];
}
piearraycount++;
}
var pieArrayLevel=new Array();
pieArrayLevel[0]="5";
pieArrayLevel[1]="10";
pieArrayLevel[2]="15";
pieArrayLevel[3]="20";
piearray = getAddZeroLevel(pieArrayLevel,piearray);
dataMap.dataTI = dataFormatter({
// max : 25000,
2005: [4854.33, 1658.19, 3340.54],//
2004: [4092.27, 1319.76, 2805.47],//
2003: [3435.95, 1150.81, 2439.68],//
2002: piearray//实时饼图数据
});
}
});
/*pieend*/
/*load datachart start*/
Ext.Ajax.request( {
url : 'faultLevelRealTime.action',
method : 'post',
success : function(response,options) {
var result = Ext.JSON.decode(response.responseText);
//新建一个实时的数组存储实时通知数据信息
var realDataGDPAdversion=new Array();
var realDataGDPAdversioncount=0;
var realDataGDPAComme=new Array();
var realDataGDPACommecount=0;
var realDataGDPAImpoert=new Array();
var realDataGDPAImpoertcount=0;
var realDataGDPJinJi=new Array();
var realDataGDPJinJicount=0;
var dayarray = new Array();
var weekarray = new Array();
var montharray = new Array();
for (var i = 0; i < result.root.length; i++) {
var faultpandectdto=result.root[i].maxLevel;
var faultpanfaultNum=result.root[i].faultNum;
if(i==0){
dayarray = result.root[i].daylist;
weekarray = result.root[i].weeklist;
montharray = result.root[i].monthlist;
}
if("5"==faultpandectdto){//通知
realDataGDPAdversion[realDataGDPAdversioncount] = result.root[i];
realDataGDPAdversioncount++;
}
if("10"==faultpandectdto){//一般
realDataGDPAComme[realDataGDPACommecount] = result.root[i];
realDataGDPACommecount++;
}
if("15"==faultpandectdto){//重要
realDataGDPAImpoert[realDataGDPAImpoertcount] = result.root[i];
realDataGDPAImpoertcount++;
}
if("20"==faultpandectdto){//紧急
realDataGDPJinJi[realDataGDPJinJicount] = result.root[i];
realDataGDPJinJicount++;
}
}
var realDataGDPJinJiTemp = new Array();
realDataGDPJinJiTemp[0]="服务器";
realDataGDPJinJiTemp[1]="存储";
realDataGDPJinJiTemp[2]="网络设备";
realDataGDPJinJiTemp[3]="安全设备";
realDataGDPJinJi = getAddZero(realDataGDPJinJiTemp,realDataGDPJinJi);
realDataGDPAImpoert= getAddZero(realDataGDPJinJiTemp,realDataGDPAImpoert);
realDataGDPAComme= getAddZero(realDataGDPJinJiTemp,realDataGDPAComme);
realDataGDPAdversion= getAddZero(realDataGDPJinJiTemp,realDataGDPAdversion);
/*处理一天的数据进行赋值*/
var dayDataGDPAdversion=new Array();
var dayDataGDPAdversioncount=0;
var dayDataGDPAComme=new Array();
var dayDataGDPACommecount=0;
var dayDataGDPAImpoert=new Array();
var dayDataGDPAImpoertcount=0;
var dayDataGDPJinJi=new Array();
var dayDataGDPJinJicount=0;
for (var i = 0; i < dayarray.length; i++) {
var faultpandectdto=dayarray[i].maxLevel;
var faultpanfaultNum=dayarray[i].faultNum;
if("5"==faultpandectdto){//通知
dayDataGDPAdversion[dayDataGDPAdversioncount] = dayarray[i];
dayDataGDPAdversioncount++;
}
if("10"==faultpandectdto){//一般
dayDataGDPAComme[dayDataGDPACommecount] = dayarray[i];
dayDataGDPACommecount++;
}
if("15"==faultpandectdto){//重要
dayDataGDPAImpoert[dayDataGDPAImpoertcount] = dayarray[i];
dayDataGDPAImpoertcount++;
}
if("20"==faultpandectdto){//紧急
dayDataGDPJinJi[dayDataGDPJinJicount] = dayarray[i];
dayDataGDPJinJicount++;
}
}
dayDataGDPAdversion = getAddZero(realDataGDPJinJiTemp,dayDataGDPAdversion);
dayDataGDPAComme = getAddZero(realDataGDPJinJiTemp,dayDataGDPAComme);
dayDataGDPAImpoert = getAddZero(realDataGDPJinJiTemp,dayDataGDPAImpoert);
dayDataGDPJinJi = getAddZero(realDataGDPJinJiTemp,dayDataGDPJinJi);
/*处理一周的数据进行赋值*/
var weekDataGDPAdversion=new Array();
var weekDataGDPAdversioncount=0;
var weekDataGDPAComme=new Array();
var weekDataGDPACommecount=0;
var weekDataGDPAImpoert=new Array();
var weekDataGDPAImpoertcount=0;
var weekDataGDPJinJi=new Array();
var weekDataGDPJinJicount=0;
for (var i = 0; i < weekarray.length; i++) {
var faultpandectdto=weekarray[i].maxLevel;
var faultpanfaultNum=weekarray[i].faultNum;
if("5"==faultpandectdto){//通知
weekDataGDPAdversion[weekDataGDPAdversioncount] = weekarray[i];
weekDataGDPAdversioncount++;
}
if("10"==faultpandectdto){//一般
weekDataGDPAComme[weekDataGDPACommecount] = weekarray[i];
weekDataGDPACommecount++;
}
if("15"==faultpandectdto){//重要
weekDataGDPAImpoert[weekDataGDPAImpoertcount] = weekarray[i];
weekDataGDPAImpoertcount++;
}
if("20"==faultpandectdto){//紧急
weekDataGDPJinJi[weekDataGDPJinJicount] = weekarray[i];
weekDataGDPJinJicount++;
}
}
weekDataGDPAdversion = getAddZero(realDataGDPJinJiTemp,weekDataGDPAdversion);
weekDataGDPAComme = getAddZero(realDataGDPJinJiTemp,weekDataGDPAComme);
weekDataGDPAImpoert = getAddZero(realDataGDPJinJiTemp,weekDataGDPAImpoert);
weekDataGDPJinJi = getAddZero(realDataGDPJinJiTemp,weekDataGDPJinJi);
/*处理一月的数据进行赋值*/
var monthDataGDPAdversion=new Array();
var monthDataGDPAdversioncount=0;
var monthDataGDPAComme=new Array();
var monthDataGDPACommecount=0;
var monthDataGDPAImpoert=new Array();
var monthDataGDPAImpoertcount=0;
var monthDataGDPJinJi=new Array();
var monthDataGDPJinJicount=0;
for (var i = 0; i < montharray.length; i++) {
var faultpandectdto=montharray[i].maxLevel;
var faultpanfaultNum=montharray[i].faultNum;
if("5"==faultpandectdto){//通知
monthDataGDPAdversion[monthDataGDPAdversioncount] = montharray[i];
monthDataGDPAdversioncount++;
}
if("10"==faultpandectdto){//一般
monthDataGDPAComme[monthDataGDPACommecount] = montharray[i];
monthDataGDPACommecount++;
}
if("15"==faultpandectdto){//重要
monthDataGDPAImpoert[monthDataGDPAImpoertcount] = montharray[i];
monthDataGDPAImpoertcount++;
}
if("20"==faultpandectdto){//紧急
monthDataGDPJinJi[monthDataGDPJinJicount] = montharray[i];
monthDataGDPJinJicount++;
}
}
monthDataGDPAdversion = getAddZero(realDataGDPJinJiTemp,monthDataGDPAdversion);
monthDataGDPAComme = getAddZero(realDataGDPJinJiTemp,monthDataGDPAComme);
monthDataGDPAImpoert = getAddZero(realDataGDPJinJiTemp,monthDataGDPAImpoert);
monthDataGDPJinJi = getAddZero(realDataGDPJinJiTemp,monthDataGDPJinJi);
dataMap.dataEstate = dataFormatter({
// max : 3600,
2005:monthDataGDPAImpoert,//当月重要
2004: weekDataGDPAImpoert,//本周重要
2003: dayDataGDPAImpoert,//当天重要
2002: realDataGDPAImpoert//实时重要
});
dataMap.dataFinancial = dataFormatter({
// max : 3200,
2005:monthDataGDPAComme,//当月一般
2004:weekDataGDPAComme,//本周一般
2003: dayDataGDPAComme,//当天一般
2002: realDataGDPAComme//实时一般
});
dataMap.dataGDP = dataFormatter({
// max : 60000,
2005: monthDataGDPAdversion,//当月通知的数据
2004: weekDataGDPAdversion,//本周通知的数据
2003: dayDataGDPAdversion,//当天通知的数据
2002: realDataGDPAdversion//实时通知
});
dataMap.dataSI = dataFormatter({
// max : 26600,
2005: monthDataGDPJinJi,//本月紧急
2004: weekDataGDPJinJi,//本周紧急
2003: dayDataGDPJinJi,//当天紧急
2002: realDataGDPJinJi//实时紧急
});
option = {
baseOption: {
timeline: {
axisType: 'category',
autoPlay: true,
playInterval: 1000,
data: [
'实时', {
value: '当天',
tooltip: {
formatter: '一般达到一个高度'
},
symbol: 'diamond',
symbolSize: 16
},
'本周', {
value: '当月',
tooltip: {
formatter: function(
params) {
return params.name + '紧急达到又一个高度';
}
},
symbol: 'diamond',
symbolSize: 18
},
]
},
tooltip: {},
legend: {
x: 'right',
data: ['通知', '一般', '重要', '紧急' ],
selected: {
'紧急': true
}
},
calculable: true,
grid: {
top: 80,
bottom: 100
},
xAxis: [{
'type': 'category',
'axisLabel': {
'interval': 0
},
'data': ['服务器', '存储', '网络设备', '安全设备',
],
splitLine: {
show: false
}
}],
yAxis: [{
type: 'value',
name: '数量(个)'
}],
series: [{
name: '通知',
type: 'bar'
}, {
name: '一般',
type: 'bar'
}, {
name: '重要',
type: 'bar'
}, {
name: '紧急',
type: 'bar'
}, {
name: '总数占比',
type: 'pie',
center: ['75%', '30%'],
radius: '28%'
}]
},
options: [
{
title: {text: '实时宏观显示'},
series: [
{data: dataMap.dataGDP['2002']},
{data: dataMap.dataFinancial['2002']},
{data: dataMap.dataEstate['2002']},
{data: dataMap.dataSI['2002']},
{data: dataMap.dataTI['2002']}
]
},
{
title : {text: '当天宏观显示'},
series : [
{data: dataMap.dataGDP['2003']},
{data: dataMap.dataFinancial['2003']},
{data: dataMap.dataEstate['2003']},
{data: dataMap.dataSI['2003']}
]
},
{
title : {text: '本周宏观显示'},
series : [
{data: dataMap.dataGDP['2004']},
{data: dataMap.dataFinancial['2004']},
{data: dataMap.dataEstate['2004']},
{data: dataMap.dataSI['2004']}
]
},
{
title : {text: '当月宏观显示'},
series : [
{data: dataMap.dataGDP['2005']},
{data: dataMap.dataFinancial['2005']},
{data: dataMap.dataEstate['2005']},
{data: dataMap.dataSI['2005']}
]
}
]
};
overTimeChart.setOption(option);
/*chartend*/
},
failure : function() {
alert("加载错误");
}
});
/*load datachart end*/
function dataFormatter(obj) {
var pList = ['通知', '一般', '重要', '紧急'
];
var temp;
for (var year = 2002; year <= 2005; year++) {
var max = 0;
var sum = 0;
temp = obj[year];
for (var i = 0, l = temp.length; i < l; i++) {
max = Math.max(max, temp[i]);
sum += temp[i];
obj[year][i] = {
name: pList[i],
value: temp[i]
}
}
obj[year + 'max'] = Math.floor(max / 100) * 100;
obj[year + 'sum'] = sum;
}
return obj;
}
}}}]
});
function getTotalNumber(tzarr){
var countsss=0;
for(var i=0;i<tzarr.length;i++){
countsss+=tzarr[i];
}
return countsss;
}
/*将数据补零*/
function getAddZero(equipmentNameArr,tArr){
var nmb=new Array();
var countarray=0;
for(var j=0;j<equipmentNameArr.length;j++){
var ttt = equipmentNameArr[j];
var kkk=0;
for(var k =0;k<tArr.length;k++){
var objectKkk = tArr[k].name;
var objectnumber= tArr[k].faultNum;
if(ttt == objectKkk){
nmb[countarray] = objectnumber;
countarray++;
}else{
kkk++;
}
}
if(kkk==tArr.length){
nmb[countarray] = 0;
countarray++;
}
}
return nmb;
};
/*将数据补零*/
function getAddZeroLevel(equipmentNameArr,tArr){
var nmb=new Array();
var countarray=0;
for(var j=0;j<equipmentNameArr.length;j++){
var ttt = equipmentNameArr[j];
var kkk=0;
for(var k =0;k<tArr.length;k++){
var objectKkk = tArr[k].maxLevel;
var objectnumber= tArr[k].faultNum;
if(ttt == objectKkk){
nmb[countarray] = objectnumber;
countarray++;
}else{
kkk++;
}
}
if(kkk==tArr.length){
nmb[countarray] = 0;
countarray++;
}
}
return nmb;
};