將Highcharts圖表數據生成Table表格

  有的時候,咱們不單單須要漂亮的統計圖來顯示統計結果,還須要在統計圖下方一個表格能夠更加直觀的展示各種數據。既然統計圖都顯示出來了,那咱們能夠根據統計圖的各元素生成表格了。html

  首先,先顯示統計圖。ios

  Html----經過一個查詢按鈕,根據查詢條件,查詢知足條件的數據,顯示到統計圖中。ajax

<a onclick="Query();" >查詢</a>
<center>
   <div id="chartPro" style="width: 80%"></div>
   <div id="container" style="width:700px;hight:70px"></div>
</center>

  JS------生成統計圖,生成表格json

 1      function Query(){
 2          /* 獲取查詢條件------start------ */
 3          var tradTp=document.getElementById( "tradTp").value;//所屬行業
 4          var county=document.getElementById( "county").value;//所屬區縣
 5          var replDtS=document.getElementById("replDtS").value;//批覆時間,開始
 6          var replDtE=document.getElementById("replDtE").value;//批覆時間,結束
 7          var radios = document.getElementsByName('type');
 8          var countyRad=radios[0];
 9          var trapTpRad=radios[1];
10          var chartTp;
11          if(countyRad.checked==true){
12              chartTp=countyRad.value;
13          }
14          if(trapTpRad.checked==true){
15              chartTp=trapTpRad.value;
16          }
17          /* 獲取查詢條件------end------ */
18           $.ajax({
19              type:"post",
20              dataType:"json",
21              data: {"project.tradTp":tradTp,"project.county":county,"project.replDtS":replDtS,"project.replDtE":replDtE,"project.chartTp":chartTp},
22              async:false,
23             url : "<%=basePath%>wiassess/projectMgr/projectMgrAction!getProjectChart.action",
24             success : function(result) {
25                 var jsonData = result;
26                 var xdata = jsonData.xdata;  //獲取橫座標數組
27                 var data = jsonData.data;    //獲取顯示數據
28                 var titleTm = jsonData.title; //獲取標題
29                 var chart = new Highcharts.Chart(  //生成統計圖表
30                         {
31                             chart : {
32                                 renderTo : 'chartPro',  //指向要生成圖表的div的Id
33                                 type : 'column',        //柱形圖類型
34                                 margin : 75,            //如下是樣式設置
35                                 options3d : {
36                                     enabled : true,
37                                     alpha : 0,
38                                     beta : 0,
39                                     depth : 50,
40                                     viewDistance : 25
41                                 }
42                             },
43 
44                             title : {
45                                 text : titleTm    //顯示標題
46                             },
47                             credits : {//不顯示highchart超連接
48                                 enabled : false
49                             },
50                             plotOptions : {
51                                 column : {
52                                     depth : 10,
53                                     value : 0,
54                                     width : 1
55                                 }
56                             
57                             },
58                             yAxis : {
59                                 title : {
60                                     text : '單位:立方米'
61                                 }
62                             },
63                             xAxis : {
64                                 categories : xdata
65                             },
66                             tooltip : {  //鼠標移至柱形圖上提示數據格式
67                                 shared : true,
68                                 useHTML : true,
69                                 headerFormat : '<small>{point.key}</small><table>',
70                                 pointFormat : '<tr><td style="color: {series.color}">{series.name}: </td>'
71                                         + '<td style="text-align: right"><b>{point.y} 立方米</b></td></tr>',
72                                 footerFormat : '</table>',
73                                 valueDecimals : 2
74                             },
75                             series: [{
76                                 name:'取水總量',
77                                 data: data
78                             }]
79                         });
80             },
81             error: function(){
82                 alert('獲取失敗!');
83             }
84         });
85          //生成表格
86         HighchartsToTable($("#chartPro"),$("#container"),("(單位:立方米)"));
87     }

   下面是這篇博客的主題了,生成表格的JS文件chartToTable.js數組

  

 1     /**
 2      * 將Highcharts圖表數據生成Table表格
 3      * @param div  統計圖表的div的Id
 4      * @param table  要生成表格的div的Id
 5      * @param unitName  各個統計圖的單位信息
 6      */
 7     function HighchartsToTable(div,table,unitName) {
 8         //獲取圖表對象
 9         var chart = div.highcharts();
10         if (chart != null) {
11             //獲取X軸集合對象
12             var categories = chart.xAxis[0].categories;
13             //獲取series集合
14             var seriesList = chart.series;
15             //獲取標題
16             var title = chart.title.textStr;
17             //先清空原表格內容
18             table.html("");
19             //獲取表格div對象
20             var tableObj = table;
21             //定義行元素<tr></tr>
22             var tr;
23             //定義表格體<table></table>
24             var tab;
25             tab = $("<table cellspacing='1' cellpadding='1'  width='100%' style=\"border:solid #add9c0; border-width:1px 0px 0px 1px;text-align:center;margin: 2px;\" ></table>")
26             tab.appendTo(tableObj);
27             //第一行,放置標題
28             tr = $("<tr></tr>");
29             tr.appendTo(tab);
30             var td = $("<td colspan='" + categories.length + 1 + "' style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;\" >" + title +"<b style=\"font-size:14px;font-family:'Times New Roman','Microsoft YaHei';float:right\">"+unitName+"</b>"+ "</td>");
31             td.appendTo(tr);
32             //下一行,放置數據
33             tr = $("<tr ></tr>")
34             tr.appendTo(tab);
35             td = $("<td style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;\"></td>");
36             td.appendTo(tr);
37             for ( var i = 0; i < categories.length; i++) {
38                 td = $("<td style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;\">" + categories[i] + "</td>");
39                 td.appendTo(tr);
40             }
41             //分批插入數據
42             for ( var i = 0; i < seriesList.length; i++) {
43                 tr = $("<tr></tr>");
44                 tr.appendTo(tab);
45                 //先加入一個序列名稱
46                 td = $("<td style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;\">" + seriesList[i].name + "</td>");
47                 td.appendTo(tr);
48                 //遍歷數據點追加數據值
49                 for ( var j = 0; j < seriesList[i].data.length; j++) {
50                     td = $("<td style=\"border:solid #add9c0; border-width:0px 1px 1px 0px; padding:5px 0px;align:center\">" + seriesList[i].data[j].y + "</td>");
51                     td.appendTo(tr);
52                 }
53             }
54         } else {
55             alert("獲取圖表對象失敗!");
56             }
57     }
58     

 

  統計圖生成表格的大概思路就是,獲取統計圖上的數據,而後生成一個表格,在表格裏遍歷獲取到的數據。生成的表格的樣式能夠單獨放在style文件裏,我這裏尚未整理,因此全寫在動態生的html裏,瞭解了大概思路,就能夠根據具體狀況生成你想要的表格了。具體樣式以下。(部分有關係統業務的地方打了馬賽克,大概看個樣子吧,嘻嘻)app

相關文章
相關標籤/搜索