extjs 插入echarts柱状图(附带一个饼图)

效果图如下:


[javascript] view plain copy
  1. var ecfaultlevel = Ext.create(  
  2.         'Ext.panel.Panel',  
  3.         {  
  4.             title : '事件级别',  
  5.             items : [ {  
  6.                 xtype:'panel',  
  7.                 html : '<div id="faultlevel" style="width: 680px;height: 272px;"></div>',  
  8.             listeners : {  
  9.                 afterrender : function() {  
  10.                     /*chartstart*/  
  11.                     var overTimeChart = echarts.init(document  
  12.                             .getElementById("faultlevel"));  
  13.                       
  14.                     var dataMap = {};  
  15.                     var piearray=new Array();  
  16.                     var piearraycount=0;  
  17.                       
  18.                     /*piestart*/  
  19.                     Ext.Ajax.request( {  
  20.                         url : 'faultGroupByFaultLevel.action',  
  21.                         method : 'post',  
  22.                         success : function(response,options) {  
  23.                             var result = Ext.JSON.decode(response.responseText);  
  24.                             for (var i = 0; i < result.root.length; i++) {  
  25.                                 var faultpandectdto=result.root[i].maxLevel;  
  26.                                 var faultpanfaultNum=result.root[i].faultNum;  
  27.                                 if("5"==faultpandectdto){//通知  
  28.                                     piearray[piearraycount] =result.root[i];  
  29.                                 }  
  30.                                   
  31.                                 if("10"==faultpandectdto){//一般  
  32.                                     piearray[piearraycount] =result.root[i];  
  33.                                 }  
  34.                                   
  35.                                 if("15"==faultpandectdto){//重要  
  36.                                     piearray[piearraycount] =result.root[i];  
  37.                                 }  
  38.                                   
  39.                                 if("20"==faultpandectdto){//紧急  
  40.                                     piearray[piearraycount] =result.root[i];  
  41.                                 }  
  42.                                 piearraycount++;  
  43.                             }  
  44.                               
  45.                             var pieArrayLevel=new Array();  
  46.                             pieArrayLevel[0]="5";  
  47.                             pieArrayLevel[1]="10";  
  48.                             pieArrayLevel[2]="15";  
  49.                             pieArrayLevel[3]="20";  
  50.                             piearray = getAddZeroLevel(pieArrayLevel,piearray);  
  51.                             dataMap.dataTI = dataFormatter({  
  52.                                 // max : 25000,  
  53.                                 2005: [4854.33, 1658.19, 3340.54],//  
  54.                                 2004: [4092.27, 1319.76, 2805.47],//  
  55.                                 2003: [3435.95, 1150.81, 2439.68],//  
  56.                                 2002: piearray//实时饼图数据  
  57.                             });  
  58.                               
  59.                         }  
  60.                     });  
  61.                     /*pieend*/  
  62.                       
  63.                     /*load datachart start*/  
  64.                     Ext.Ajax.request( {  
  65.                     url : 'faultLevelRealTime.action',  
  66.                     method : 'post',  
  67.                     success : function(response,options) {  
  68.                         var result = Ext.JSON.decode(response.responseText);  
  69.                           
  70.                         //新建一个实时的数组存储实时通知数据信息  
  71.                         var  realDataGDPAdversion=new Array();  
  72.                         var realDataGDPAdversioncount=0;  
  73.                           
  74.                         var  realDataGDPAComme=new Array();  
  75.                         var realDataGDPACommecount=0;  
  76.                           
  77.                         var  realDataGDPAImpoert=new Array();  
  78.                         var realDataGDPAImpoertcount=0;  
  79.                           
  80.                         var  realDataGDPJinJi=new Array();  
  81.                         var realDataGDPJinJicount=0;  
  82.                           
  83.                           
  84.                         var dayarray = new Array();  
  85.                         var weekarray = new Array();  
  86.                         var montharray = new Array();  
  87.                         for (var i = 0; i < result.root.length; i++) {  
  88.                             var faultpandectdto=result.root[i].maxLevel;  
  89.                             var faultpanfaultNum=result.root[i].faultNum;  
  90.                             if(i==0){  
  91.                                 dayarray = result.root[i].daylist;  
  92.                                 weekarray = result.root[i].weeklist;  
  93.                                 montharray = result.root[i].monthlist;  
  94.                             }  
  95.                             if("5"==faultpandectdto){//通知  
  96.                                 realDataGDPAdversion[realDataGDPAdversioncount] = result.root[i];  
  97.                                 realDataGDPAdversioncount++;  
  98.                             }  
  99.                               
  100.                             if("10"==faultpandectdto){//一般  
  101.                                 realDataGDPAComme[realDataGDPACommecount] = result.root[i];  
  102.                                 realDataGDPACommecount++;  
  103.                             }  
  104.                               
  105.                             if("15"==faultpandectdto){//重要  
  106.                                 realDataGDPAImpoert[realDataGDPAImpoertcount] = result.root[i];  
  107.                                 realDataGDPAImpoertcount++;  
  108.                             }  
  109.                               
  110.                             if("20"==faultpandectdto){//紧急  
  111.                                 realDataGDPJinJi[realDataGDPJinJicount] = result.root[i];  
  112.                                 realDataGDPJinJicount++;  
  113.                             }  
  114.                         }  
  115.                         var realDataGDPJinJiTemp = new Array();  
  116.                         realDataGDPJinJiTemp[0]="服务器";  
  117.                         realDataGDPJinJiTemp[1]="存储";  
  118.                         realDataGDPJinJiTemp[2]="网络设备";  
  119.                         realDataGDPJinJiTemp[3]="安全设备";  
  120.                           
  121.                         realDataGDPJinJi = getAddZero(realDataGDPJinJiTemp,realDataGDPJinJi);  
  122.                         realDataGDPAImpoert= getAddZero(realDataGDPJinJiTemp,realDataGDPAImpoert);  
  123.                         realDataGDPAComme= getAddZero(realDataGDPJinJiTemp,realDataGDPAComme);  
  124.                         realDataGDPAdversion= getAddZero(realDataGDPJinJiTemp,realDataGDPAdversion);  
  125.                           
  126.                           
  127.                           
  128.                           
  129.                           
  130.                           
  131.                           
  132.                           
  133.                           
  134.                         /*处理一天的数据进行赋值*/  
  135.                         var  dayDataGDPAdversion=new Array();  
  136.                         var dayDataGDPAdversioncount=0;  
  137.                           
  138.                         var  dayDataGDPAComme=new Array();  
  139.                         var dayDataGDPACommecount=0;  
  140.                           
  141.                         var  dayDataGDPAImpoert=new Array();  
  142.                         var dayDataGDPAImpoertcount=0;  
  143.                           
  144.                         var  dayDataGDPJinJi=new Array();  
  145.                         var dayDataGDPJinJicount=0;  
  146.                           
  147.                         for (var i = 0; i < dayarray.length; i++) {  
  148.                             var faultpandectdto=dayarray[i].maxLevel;  
  149.                             var faultpanfaultNum=dayarray[i].faultNum;  
  150.                             if("5"==faultpandectdto){//通知  
  151.                                 dayDataGDPAdversion[dayDataGDPAdversioncount] = dayarray[i];  
  152.                                 dayDataGDPAdversioncount++;  
  153.                             }  
  154.                               
  155.                             if("10"==faultpandectdto){//一般  
  156.                                 dayDataGDPAComme[dayDataGDPACommecount] = dayarray[i];  
  157.                                 dayDataGDPACommecount++;  
  158.                             }  
  159.                               
  160.                             if("15"==faultpandectdto){//重要  
  161.                                 dayDataGDPAImpoert[dayDataGDPAImpoertcount] = dayarray[i];  
  162.                                 dayDataGDPAImpoertcount++;  
  163.                             }  
  164.                               
  165.                             if("20"==faultpandectdto){//紧急  
  166.                                 dayDataGDPJinJi[dayDataGDPJinJicount] = dayarray[i];  
  167.                                 dayDataGDPJinJicount++;  
  168.                             }  
  169.                         }  
  170.                         dayDataGDPAdversion = getAddZero(realDataGDPJinJiTemp,dayDataGDPAdversion);  
  171.                         dayDataGDPAComme = getAddZero(realDataGDPJinJiTemp,dayDataGDPAComme);  
  172.                         dayDataGDPAImpoert = getAddZero(realDataGDPJinJiTemp,dayDataGDPAImpoert);  
  173.                         dayDataGDPJinJi = getAddZero(realDataGDPJinJiTemp,dayDataGDPJinJi);  
  174.                           
  175.                           
  176.                         /*处理一周的数据进行赋值*/  
  177.                         var  weekDataGDPAdversion=new Array();  
  178.                         var weekDataGDPAdversioncount=0;  
  179.                           
  180.                         var  weekDataGDPAComme=new Array();  
  181.                         var weekDataGDPACommecount=0;  
  182.                           
  183.                         var  weekDataGDPAImpoert=new Array();  
  184.                         var weekDataGDPAImpoertcount=0;  
  185.                           
  186.                         var  weekDataGDPJinJi=new Array();  
  187.                         var weekDataGDPJinJicount=0;  
  188.                           
  189.                         for (var i = 0; i < weekarray.length; i++) {  
  190.                             var faultpandectdto=weekarray[i].maxLevel;  
  191.                             var faultpanfaultNum=weekarray[i].faultNum;  
  192.                             if("5"==faultpandectdto){//通知  
  193.                                 weekDataGDPAdversion[weekDataGDPAdversioncount] = weekarray[i];  
  194.                                 weekDataGDPAdversioncount++;  
  195.                             }  
  196.                               
  197.                             if("10"==faultpandectdto){//一般  
  198.                                 weekDataGDPAComme[weekDataGDPACommecount] = weekarray[i];  
  199.                                 weekDataGDPACommecount++;  
  200.                             }  
  201.                               
  202.                             if("15"==faultpandectdto){//重要  
  203.                                 weekDataGDPAImpoert[weekDataGDPAImpoertcount] = weekarray[i];  
  204.                                 weekDataGDPAImpoertcount++;  
  205.                             }  
  206.                               
  207.                             if("20"==faultpandectdto){//紧急  
  208.                                 weekDataGDPJinJi[weekDataGDPJinJicount] = weekarray[i];  
  209.                                 weekDataGDPJinJicount++;  
  210.                             }  
  211.                         }  
  212.                           
  213.                         weekDataGDPAdversion = getAddZero(realDataGDPJinJiTemp,weekDataGDPAdversion);  
  214.                         weekDataGDPAComme = getAddZero(realDataGDPJinJiTemp,weekDataGDPAComme);  
  215.                         weekDataGDPAImpoert = getAddZero(realDataGDPJinJiTemp,weekDataGDPAImpoert);  
  216.                         weekDataGDPJinJi = getAddZero(realDataGDPJinJiTemp,weekDataGDPJinJi);  
  217.                           
  218.                         /*处理一月的数据进行赋值*/  
  219.                         var  monthDataGDPAdversion=new Array();  
  220.                         var monthDataGDPAdversioncount=0;  
  221.                           
  222.                         var  monthDataGDPAComme=new Array();  
  223.                         var monthDataGDPACommecount=0;  
  224.                           
  225.                         var  monthDataGDPAImpoert=new Array();  
  226.                         var monthDataGDPAImpoertcount=0;  
  227.                           
  228.                         var  monthDataGDPJinJi=new Array();  
  229.                         var monthDataGDPJinJicount=0;  
  230.                           
  231.                         for (var i = 0; i < montharray.length; i++) {  
  232.                             var faultpandectdto=montharray[i].maxLevel;  
  233.                             var faultpanfaultNum=montharray[i].faultNum;  
  234.                             if("5"==faultpandectdto){//通知  
  235.                                 monthDataGDPAdversion[monthDataGDPAdversioncount] = montharray[i];  
  236.                                 monthDataGDPAdversioncount++;  
  237.                             }  
  238.                               
  239.                             if("10"==faultpandectdto){//一般  
  240.                                 monthDataGDPAComme[monthDataGDPACommecount] = montharray[i];  
  241.                                 monthDataGDPACommecount++;  
  242.                             }  
  243.                               
  244.                             if("15"==faultpandectdto){//重要  
  245.                                 monthDataGDPAImpoert[monthDataGDPAImpoertcount] = montharray[i];  
  246.                                 monthDataGDPAImpoertcount++;  
  247.                             }  
  248.                               
  249.                             if("20"==faultpandectdto){//紧急  
  250.                                 monthDataGDPJinJi[monthDataGDPJinJicount] = montharray[i];  
  251.                                 monthDataGDPJinJicount++;  
  252.                             }  
  253.                         }  
  254.                           
  255.                         monthDataGDPAdversion = getAddZero(realDataGDPJinJiTemp,monthDataGDPAdversion);  
  256.                         monthDataGDPAComme = getAddZero(realDataGDPJinJiTemp,monthDataGDPAComme);  
  257.                         monthDataGDPAImpoert = getAddZero(realDataGDPJinJiTemp,monthDataGDPAImpoert);  
  258.                         monthDataGDPJinJi = getAddZero(realDataGDPJinJiTemp,monthDataGDPJinJi);  
  259.                           
  260.                           
  261.                           
  262.                           
  263.                         dataMap.dataEstate = dataFormatter({  
  264.                             // max : 3600,  
  265.                             2005:monthDataGDPAImpoert,//当月重要  
  266.                             2004: weekDataGDPAImpoert,//本周重要  
  267.                             2003: dayDataGDPAImpoert,//当天重要  
  268.                             2002: realDataGDPAImpoert//实时重要  
  269.                         });  
  270.                         dataMap.dataFinancial = dataFormatter({  
  271.                             // max : 3200,  
  272.                             2005:monthDataGDPAComme,//当月一般  
  273.                             2004:weekDataGDPAComme,//本周一般  
  274.                             2003: dayDataGDPAComme,//当天一般  
  275.                             2002: realDataGDPAComme//实时一般  
  276.                         });  
  277.                         dataMap.dataGDP = dataFormatter({  
  278.                             // max : 60000,  
  279.                             2005: monthDataGDPAdversion,//当月通知的数据  
  280.                             2004: weekDataGDPAdversion,//本周通知的数据  
  281.                             2003: dayDataGDPAdversion,//当天通知的数据  
  282.                             2002:  realDataGDPAdversion//实时通知  
  283.                         });  
  284.                         dataMap.dataSI = dataFormatter({  
  285.                             // max : 26600,  
  286.                             2005: monthDataGDPJinJi,//本月紧急  
  287.                             2004: weekDataGDPJinJi,//本周紧急  
  288.                             2003: dayDataGDPJinJi,//当天紧急  
  289.                             2002: realDataGDPJinJi//实时紧急  
  290.                         });  
  291.                           
  292.                           
  293.                           
  294.                         option = {  
  295.                                 baseOption: {  
  296.                                     timeline: {  
  297.                                         axisType: 'category',  
  298.                                         autoPlay: true,  
  299.                                         playInterval: 1000,  
  300.                                         data: [  
  301.                                                 '实时', {  
  302.                                                     value: '当天',  
  303.                                                     tooltip: {  
  304.                                                         formatter: '一般达到一个高度'  
  305.                                                     },  
  306.                                                     symbol: 'diamond',  
  307.                                                     symbolSize: 16  
  308.                                                 },  
  309.                                                 '本周', {  
  310.                                                     value: '当月',  
  311.                                                     tooltip: {  
  312.                                                         formatter: function(  
  313.                                                             params) {  
  314.                                                             return params.name + '紧急达到又一个高度';  
  315.                                                         }  
  316.                                                     },  
  317.                                                     symbol: 'diamond',  
  318.                                                     symbolSize: 18  
  319.                                                 },  
  320.                                             ]  
  321.                                     },  
  322.                                   
  323.                                     tooltip: {},  
  324.                                     legend: {  
  325.                                         x: 'right',  
  326.                                         data: ['通知''一般''重要''紧急' ],  
  327.                                         selected: {  
  328.                             '紧急'true  
  329.                         }  
  330.                                     },  
  331.                                     calculable: true,  
  332.                                     grid: {  
  333.                                         top: 80,  
  334.                                         bottom: 100  
  335.                                     },  
  336.                                     xAxis: [{  
  337.                                         'type''category',  
  338.                                         'axisLabel': {  
  339.                                             'interval': 0  
  340.                                         },  
  341.                                         'data': ['服务器''存储''网络设备''安全设备',  
  342.                                         ],  
  343.                                         splitLine: {  
  344.                                             show: false  
  345.                                         }  
  346.                                     }],  
  347.                                     yAxis: [{  
  348.                                         type: 'value',  
  349.                                         name: '数量(个)'  
  350.                                     }],  
  351.                                     series: [{  
  352.                                         name: '通知',  
  353.                                         type: 'bar'  
  354.                                     }, {  
  355.                                         name: '一般',  
  356.                                         type: 'bar'  
  357.                                     }, {  
  358.                                         name: '重要',  
  359.                                         type: 'bar'  
  360.                                     }, {  
  361.                                         name: '紧急',  
  362.                                         type: 'bar'  
  363.                                     }, {  
  364.                                         name: '总数占比',  
  365.                                         type: 'pie',  
  366.                                         center: ['75%''30%'],  
  367.                                         radius: '28%'  
  368.                                     }]  
  369.                                 },  
  370.                                 options: [  
  371.                     {  
  372.                         title: {text: '实时宏观显示'},  
  373.                         series: [  
  374.                             {data: dataMap.dataGDP['2002']},  
  375.                             {data: dataMap.dataFinancial['2002']},  
  376.                             {data: dataMap.dataEstate['2002']},  
  377.                             {data: dataMap.dataSI['2002']},  
  378.                             {data: dataMap.dataTI['2002']}  
  379.                         ]  
  380.                     },  
  381.                     {  
  382.                         title : {text: '当天宏观显示'},  
  383.                         series : [  
  384.                             {data: dataMap.dataGDP['2003']},  
  385.                             {data: dataMap.dataFinancial['2003']},  
  386.                             {data: dataMap.dataEstate['2003']},  
  387.                             {data: dataMap.dataSI['2003']}  
  388.                         ]  
  389.                     },  
  390.                     {  
  391.                         title : {text: '本周宏观显示'},  
  392.                         series : [  
  393.                             {data: dataMap.dataGDP['2004']},  
  394.                             {data: dataMap.dataFinancial['2004']},  
  395.                             {data: dataMap.dataEstate['2004']},  
  396.                             {data: dataMap.dataSI['2004']}  
  397.                         ]  
  398.                     },  
  399.                     {  
  400.                         title : {text: '当月宏观显示'},  
  401.                         series : [  
  402.                             {data: dataMap.dataGDP['2005']},  
  403.                             {data: dataMap.dataFinancial['2005']},  
  404.                             {data: dataMap.dataEstate['2005']},  
  405.                             {data: dataMap.dataSI['2005']}  
  406.                         ]  
  407.                     }  
  408.                 ]  
  409.                                 };  
  410.                                         overTimeChart.setOption(option);  
  411.                       
  412.                     /*chartend*/  
  413.                           
  414.                     },  
  415.                     failure : function() {  
  416.                         alert("加载错误");  
  417.                     }  
  418.                 });  
  419.                     /*load datachart end*/  
  420.                     function dataFormatter(obj) {  
  421.                         var pList = ['通知''一般''重要''紧急'  
  422.                         ];  
  423.                         var temp;  
  424.                         for (var year = 2002; year <= 2005; year++) {  
  425.                             var max = 0;  
  426.                             var sum = 0;  
  427.                             temp = obj[year];  
  428.                             for (var i = 0, l = temp.length; i < l; i++) {  
  429.                                 max = Math.max(max, temp[i]);  
  430.                                 sum += temp[i];  
  431.                                 obj[year][i] = {  
  432.                                     name: pList[i],  
  433.                                     value: temp[i]  
  434.                                 }  
  435.                             }  
  436.                             obj[year + 'max'] = Math.floor(max / 100) * 100;  
  437.                             obj[year + 'sum'] = sum;  
  438.                         }  
  439.                         return obj;  
  440.                     }  
  441.                           
  442.                 }}}]  
  443.               
  444.             });  
  445.                       
  446.   
  447. function getTotalNumber(tzarr){  
  448. var countsss=0;  
  449. for(var i=0;i<tzarr.length;i++){  
  450.     countsss+=tzarr[i];  
  451. }  
  452. return countsss;  
  453. }  
  454.   
  455.   
  456. /*将数据补零*/  
  457. function getAddZero(equipmentNameArr,tArr){  
  458. var nmb=new Array();  
  459. var countarray=0;  
  460. for(var j=0;j<equipmentNameArr.length;j++){  
  461.     var ttt = equipmentNameArr[j];  
  462.     var kkk=0;  
  463.     for(var k =0;k<tArr.length;k++){  
  464.         var objectKkk = tArr[k].name;  
  465.         var objectnumber= tArr[k].faultNum;  
  466.         if(ttt == objectKkk){  
  467.             nmb[countarray] = objectnumber;  
  468.             countarray++;  
  469.         }else{  
  470.             kkk++;  
  471.         }  
  472.     }  
  473.     if(kkk==tArr.length){  
  474.         nmb[countarray] = 0;  
  475.         countarray++;  
  476.     }  
  477.       
  478. }  
  479. return nmb;  
  480. };  
  481.   
  482. /*将数据补零*/  
  483. function getAddZeroLevel(equipmentNameArr,tArr){  
  484. var nmb=new Array();  
  485. var countarray=0;  
  486. for(var j=0;j<equipmentNameArr.length;j++){  
  487.     var ttt = equipmentNameArr[j];  
  488.     var kkk=0;  
  489.     for(var k =0;k<tArr.length;k++){  
  490.         var objectKkk = tArr[k].maxLevel;  
  491.         var objectnumber= tArr[k].faultNum;  
  492.         if(ttt == objectKkk){  
  493.             nmb[countarray] = objectnumber;  
  494.             countarray++;  
  495.         }else{  
  496.             kkk++;  
  497.         }  
  498.     }  
  499.     if(kkk==tArr.length){  
  500.         nmb[countarray] = 0;  
  501.         countarray++;  
  502.     }  
  503.       
  504. }  
  505. return nmb;  
  506. };  

猜你喜欢

转载自blog.csdn.net/qq_36090419/article/details/80511620