ExtJs整合Echarts的示例代碼
由于Echarts不提供表格功能,想要實(shí)現(xiàn)上圖下表,需要自己增加一個(gè)table標(biāo)簽。
ExtJs整合Echarts
從Echarts官網(wǎng)下載js文件通過(guò)import引用 新建一個(gè)頁(yè)面,通過(guò)豎直放置的兩個(gè)div排版,上方預(yù)留給Echarts,下方預(yù)留給table標(biāo)簽
initPanel : function() { if (this.panel) { return } var panel = new Ext.Panel({ id : 'echart', html : '<div id="mainEchart" style="height:50%;border:1px solid #ccc;padding:10px;"></div>' + '<div id="mainTable" style="position:relative;text-align:center;padding:10px;">' +'<label for="mainTable"><h1>檔案調(diào)用次數(shù)表</h1></label>' +'<table id="content-table" border="1" style="width:100%;text-align:center;">' + '<tr><th>月份</th><th>調(diào)用次數(shù)</th></tr>', buttonAlign : 'center', autoScroll : true,//允許滾動(dòng) bodyStyle : 'overflow-x:hidden; overflow-y:scroll' //開啟豎直滾動(dòng)條,關(guān)閉水平滾動(dòng)條 }); this.panel = panel; return this.panel; }
Echarts初始化和數(shù)據(jù)加載
官方聲明一次性只能生成一個(gè)echarts,定義相關(guān)的樣式,并且從后臺(tái)查詢數(shù)據(jù)提供給echarts
initData : function(id, personName, year) { this.id = id; var div = document.getElementById("mainEchart"); var myChart = echarts.init(div); // myChart.showLoading({ // text: "圖表數(shù)據(jù)正在努力加載..." // }); this.myChart = myChart; // 初始化數(shù)據(jù) var data = []; var yearStr = ""; var flag = false; var monthData = []; var res = QueryData();//調(diào)用數(shù)據(jù)查詢,涉及項(xiàng)目名,略 for (var i = 0; i < res.json.body.length; i++) { var map = res.json.body[i]; monthData.push(map.MM);//月份 data.push(map.DYCS);//調(diào)用次數(shù) } var options = { arg : { id : this.id }, noDataLoadingOption : { text : '暫無(wú)數(shù)據(jù)', effect : 'bubble', effectOption : { effect : { n : 0 } } }, title : { text : personName + "的檔案調(diào)用情況", x : 'west' }, tooltip : { trigger : 'axis' }, legend : { data : ['調(diào)用次數(shù)'] }, toolbox : { show : true, feature : { mark : { show : true }, dataView : { //重寫dataView //在切換視圖的時(shí)候能夠以<table>的形式顯示 show : true, readOnly : true, optionToContent : function(opt) { var axisData = opt.xAxis[0].data; var series = opt.series; var table = '<table style="width:100%;text-align:center" border="1"><tbody><tr>' + '<td>時(shí)間</td>' + '<td>' + series[0].name + '</td>' // + '<td>' // + series[1].name // + '</td>' + '</tr>'; for (var i = 0, l = axisData.length; i < l; i++) { table += '<tr>' + '<td>' + axisData[i] + '</td>' + '<td>' + series[0].data[i] + '</td>' // + '<td>' + series[1].data[i] // + '</td>' + '</tr>'; } table += '</tbody></table>'; return table; } }, magicType : { show : true, type : ['line', 'bar'] }, restore : { show : true }, saveAsImage : { show : true } } }, calculable : true, xAxis : [{ type : 'category', data : monthData }], yAxis : [{ type : 'value', splitArea : { show : true } }], series : [{ name : '調(diào)用次數(shù)', type : 'bar', barWidth : 35, data : data, itemStyle : {//修改柱狀圖的顏色并在頂部顯示數(shù)值 normal : { color : '#3575a8', label : { show : true, position : 'top', formatter : '{c}'//'\n{c}' } } } }] }; myChart.setOption(options, true); myChart.on('click', function eConsole(param) { }); this.tableData(personName, monthData, data) //表格的加載 }
表格數(shù)據(jù)的賦值
表格部分就是簡(jiǎn)單的html賦值,沒(méi)什么好多講的,注意拼接完后刷新一下html即可。 代碼如下:
tableData : function(personName, monthData, data) { // 表格部分 var html = '<div id="mainTable" style="position:relative;text-align:center;padding:10px;">' +'<label for="mainTable"><h1>' + personName + '檔案調(diào)用情況表</h1></label>' +'<table id="content-table" border="1" style="width: 100%;text-align: center;">' + '<tr style="height: 30px;text-align:center;"><th>月份</th><th>調(diào)用次數(shù)</th></tr>'; // if(monthData.length != data.length) // throw new Error("數(shù)據(jù)條數(shù)不對(duì),請(qǐng)檢查!"); for (var i = 0; i < data.length; i++) { html += '<tr style="height: 30px;text-align: center;">' +'<td id="data-month-'+i+'">' + monthData[i] + '</td><td id="data-value-'+i+'">' + data[i] + '</td></tr>' } html += '</table></div>'; document.getElementById('mainTable').innerHTML = html; }
以上就可完成數(shù)據(jù)的聯(lián)動(dòng),希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js優(yōu)化針對(duì)IE6.0起作用(詳細(xì)整理)
js優(yōu)化針對(duì)IE6.0起作用,總結(jié)一下幾點(diǎn):字符串拼接、for 循環(huán)、減少頁(yè)面的重繪、減少作用域鏈上的查找次數(shù)、避免雙重解釋等等,需要了解的朋友可以參考下,或許會(huì)有所幫助2012-12-12JS中如何實(shí)現(xiàn)點(diǎn)擊a標(biāo)簽返回頁(yè)面頂部的問(wèn)題
這篇文章主要介紹了JS中實(shí)現(xiàn)點(diǎn)擊a標(biāo)簽返回頁(yè)面頂部的問(wèn)題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-01-01js實(shí)現(xiàn)鼠標(biāo)跟隨運(yùn)動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)鼠標(biāo)跟隨運(yùn)動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09詳解JS實(shí)現(xiàn)簡(jiǎn)單的時(shí)分秒倒計(jì)時(shí)代碼
這篇文章主要介紹了JS時(shí)分秒倒計(jì)時(shí)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04html向js方法傳遞參數(shù)具體實(shí)現(xiàn)
html如何向js方法傳遞參數(shù),在本文將為大家詳細(xì)介紹下html注冊(cè)事件向引用方法中的傳參問(wèn)題,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08js 圖片隨機(jī)不定向浮動(dòng)的實(shí)現(xiàn)代碼
這篇文章介紹了js圖片隨機(jī)不定向浮動(dòng)的實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-07-07Clipboard.js 無(wú)需Flash的JavaScript復(fù)制粘貼庫(kù)
這篇文章主要介紹了JavaScript 內(nèi)容復(fù)制(無(wú)需flash) Clipboard.js使用方法,需要的朋友可以參考下2015-10-10