這次是利用mui框架實現一個手機移動端的項目。基本的框架已經實現,主要來獲取數據實現一個圖表的展示。
首先引入插件:echarts.js
<script src="../resources/js/echarts.js" type="text/javascript" charset="utf-8" ></script>
然后再html頁面,給圖表一個空間,以便放置圖表:
<div class="pie_menu"> <div class="left_menu" id="left_menu"></div> </div> <div class="pie_menu"> <div class="right_menu" id="right_menu"></div> </div>
需要做兩個圖表,所以就開了兩個空間
接下來是獲取數據部分:
$(function(){ mui.init();//初始化mui var leftPie;//部門:第一個空間 var rightPie;//類型:第二個空間 var data = [];//第一個空間的數據配置 var data2 = [];//第二個空間的數據配置 function setOption(data){ var leftMenu = echarts.init(document.getElementById('left_menu')); var rightMenu = echarts.init(document.getElementById('right_menu')); window.onresize = (leftMenu.resize && rightMenu.resize);//圖表隨着屏幕變化而變化 //類型圖表配置 rightOption = { //類型 title : { text: '點統計(按類型)',//圖表標題 x:'center' //圖表位置樣式 }, tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" //鼠標懸浮顯示數據 }, legend: { //圖標,圖示 orient: 'vertical', bottom:30, left: 'left', data: data //此數據和series內的數據相同(此項是獲取之后的數據) }, color:[ '#EB7C30' , '#5A99D3'], //顏色指定 series : [ { name: '點統計', type: 'pie', radius : '55%', center: ['55%', '50%'], label: { normal: { formatter: "{c}\n({d}%)", //在圖標上顯示的數據 show: true, position: 'inner',//文字顯示位置 textStyle: { fontSize: '14', fontWeight: 'normal' } } }, data:data,//此項同是獲取的數據 itemStyle: { emphasis: { //餅圖或柱狀圖顯示的樣式 shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] } //部門圖表數據配置 leftOption = { //部門 title : { text: '點統計(按部門)',//標題 x:'center' //樣式 }, tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" //懸浮顯示數據 a:代表標題;b代表name值;c代表name的value值;d代表百分比數值;這四個各有各的好處,可嘗試,主要是數據顯示啦 }, legend: { //圖標,圖示 orient: 'vertical', bottom:30, left: 'left', data: data2 }, color:['#5A99D3', '#FFBF00','#A5A5A5','#EB7C30'], //顏色指定 series : [ { name: '監控點統計', type: 'pie', radius : '55%', center: ['55%', '50%'], label: { normal: { formatter: "{c}\n({d}%)", //在圖標上顯示的數據 show: true, position: 'inner',//文字顯示位置 textStyle: { fontSize: '14', fontWeight: 'normal' } } }, data:data2, itemStyle: { emphasis: { //餅圖或柱狀圖顯示的樣式 shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] } leftMenu.setOption(leftOption);//部門配置設置 rightMenu.setOption(rightOption);//類型 } //獲取數據 function getMapData(limit){ $.buslongAjax({ url : $.operaData.monitorypoint.url, data : $.operaData.monitorypoint.param, dataType:'JSON', success:function(objdata){ var label = []; var allData = [] if(objdata){ $.each(objdata,function(i,p){ console.log(objdata);//可打印獲取的數據 label = i ;// allData ={'name':i,'value':p};//設置鍵值對形式 //以下是做的一個判斷,兩個空間放置不同的數據,因后台數據傳過來的是一整套,就自己判斷來顯示數據了。 leftPie = $("#left_menu"); rightPie = $("#right_menu"); if(rightPie){ //如果按照類型 if(allData.name == "applicationnum" || allData.name == "platformnum"){ if(allData.name == "applicationnum" ){ allData.name = "平台類"; }if(allData.name == "platformnum"){ allData.name = "應用類"; } var oneData = {}; var oneData = {name:allData.name,value:allData.value}; data.push(oneData);//將數據填到data里面 } } if(leftPie){ //如果按照部門 if(allData.name == "itzhicheng" || allData.name == "jingfen" || allData.name == "xitong" || allData.name == "yewuyunying"){ if(allData.name == "itzhicheng" ){ allData.name = "IT支撐中心"; }if(allData.name == "jingfen"){ allData.name = "經分支撐中心"; }if(allData.name == "xitong" ){ allData.name = "系統維護中心"; }if(allData.name == "yewuyunying"){ allData.name = "業務運營中心"; } var oneData = {}; var oneData = {name:allData.name,value:allData.value}; data2.push(oneData);//將數據添到另一個空間的data2里面 } } }); } //option.series[0].data=data; setOption(data);//執行setOption函數。傳參,將數據傳到配置信息內 } }); } getMapData(2); })
好了,到了此處數據也獲取下來了,也顯示到頁面中了,最終效果為:
雖然有點丑,哈哈,但是后邊再調節吧,第一次做這種圖表,還挺有意思的,圖表還有另外一個插件,Highcharts,這個也挺有意思,有時間可以去學習玩玩。
整的來說,就是引入插件,寫入HTML以及樣式,配置圖表信息(網上有很多解析),獲取數據並且加以顯示。哦啦
大神們有更好的方法,求推薦呀~~~!