ehcarts實現實時時鐘

儀表盤參數配置項

  • series 系列列表
    可以添加多個系列列表
  • series.min 最小數據值
    數據項的最小取值
  • series. max 最大數據值
    數據項的最大取值
  • series. splitNumber 錶盤刻度的分割段數
    把整個錶盤均分爲幾大段
  • series.detail 儀表盤詳情
    用於顯示數據,也就是指針指向的數值
  • series.radius 儀表盤半徑
    可以是相對於容器高寬中較小的一項的一半的百分比,也可以是絕對的數值。
  • series.center 儀表中心位置
    center:[“50%”,“50%”],
  • series.startAngle: 儀表盤起始角度。
    圓心 正右手側爲0度,正上方爲90度,正左手側爲180度。
  • series.endAngle:儀表盤結束角度。
  • series.data數據項數據
  • series.title對數據項名進設置
  • series.axisLine 儀表盤軸線相關配置
    也就是設置儀表盤的圓環
  • series.axisTick 刻度樣式
    對splitNumber分的每一段進行在劃分
  • series. axisLabel刻度標籤。
    splitNumber分割線的標籤顯示與樣式設置
  • series. pointer指針樣式設置

效果圖:

在這裏插入圖片描述

代碼:

<!DOCTYPE html>
<html lang="en">
<head>
	<title>clock</title>
	<meta charset="utf-8">
	<script src="static/js/echarts.min3.js"></script>
</head>
<body>
	<div id="main" style="width: 200px;height: 200px;background-color:pink             ;">
		
	</div>
	<script>
		var myChart = echarts.init(document.getElementById("main"));
		var option = {
			title:{
				text:"天梭時鐘",
				left: "center",
				
			},
			tooltip : {
		        formatter: "{a} <br/>{b} : {c}"
		    },	
		    textStyle:{
		            	color: "#0000",
		            },	   
		    series: [      
		        {
		            name: '時鐘-秒',
		            type: 'gauge',
		            radius:"70%",
		            center:["50%","50%"],
		            startAngle: 90,
		            endAngle:-269.999,
		            // 最小數據值(數據項的最小取值)
		            min: 0,
		            // 最大數據值 (數據項的最大取值)
		            max: 60,
		            // 錶盤刻度的分割段數(均分爲幾大段)
		            splitNumber: 12,
		          
		            // 儀表盤詳情,用於顯示數據,也就是指針指向的數值	            
		            detail: {
		            	show: false,		            	
		            	fontSize:12,
		            	color: "white",
		        		// 格式化函數或者字符串(格式化顯示詳情,對顯示的內容,格式進行定製)
		            	formatter: function(value){
		            		if (value == 0)
		            			return "00:";
		            		else if (value<10)
		            			return "0"+value;
		            		else
		            			return value ;
		            		
		            	},
		            	
		            	offsetCenter: [12,"125%"],          	
		            },
		            // 數據項
		            data: [{value: 59, name: '秒'}],
		            // data 數據的標題名設置
		            title:{
		            	show:false,
		            },
		            // 儀表盤軸線相關配置
		            axisLine:{
		            	lineStyle:{
		            		color:[[1, '#FF0000']],
		            		width:5,
		            	},
		            },

		            splitLine:{		            	
		            	length:10,
		            	lineStyle:{
		            		color: "#000",
		            		width:5, 
		            	}
		            },
		            
		            axisTick:{
		            	show:false,
		            	splitNumber: 5,
		            	lineStyle:{
		            		color: "#000",
		            		 
		            	}
		            },
		           

		            axisLabel:{
		            	show:false,
		            	distance:5,
						formatter: function (value) {
						   if (value == 0 || value == 60)
		            			return "60";
		            		else if (value<10)
		            			return "0"+value;
		            		else
		            			return value;
						}		            	
		            },

		            pointer:{
		            	length: "70%", 
		            	width: 3,		            	
		            },  

		            itemStyle:{
		            	color:"#000",
		            } 

		        },	

		        {
		            name: ' 時鐘-分',
		            type: 'gauge',
		            radius:"70%",
		            center:["50%","50%"],
		            startAngle: 90,
		            endAngle:-269.999,
		            min: 0,
		            max: 60,
		            splitNumber: 12,
		          
		            // 儀表盤詳情,用於顯示數據,也就是指針指向的數值	            
		            detail: {
		            	show: false,		            	
		            	fontSize:12,
		            	color: "white",
		    			formatter: function(value){
		            		if (value == 0)
		            			return "00:";
		            		else if (value<10)
		            			return "0"+value + ":";
		            		else
		            			return value + ":";
		            		
		            	},
		            	
		            	offsetCenter: [0,"125%"],          	
		            },
		            data: [{value: 59, name: '分'}],
		            title:{
		            	show:false,
		            }, 
		            
		            axisLine:{
		            	lineStyle:{
		            		color:[[1, '#14c8d4']],
		            		width:5,
		            	},
		            },

		            splitLine:{		            	
		            	length:10,
		            	lineStyle:{
		            		color: "#000",
		            		width:5, 
		            	}
		            },

		            axisTick:{
		            	show:true,
		            	splitNumber: 5,
		            	lineStyle:{
		            		color: "#000",
		            		 
		            	}
		            },
		           

		            axisLabel:{
		            	show:false,
		            	distance:5,
						formatter: function (value) {
						   if (value == 0 || value == 60)
		            			return "60";
		            		else if (value<10)
		            			return "0"+value;
		            		else
		            			return value;
						}		            	
		            },

		            pointer:{
		            	length: "70%", 
		            	width: 3,
		            },   

		        },	

		        {
		            name: '時鐘-時',
		            type: 'gauge',
		            radius:"70%",
		            center:["50%","50%"],
		            startAngle: 90,
		            endAngle:-269.999,
		            // 最小數據值(數據項的最小取值)
		            min: 0,
		            // 最大數據值 (數據項的最大取值)
		            max: 12,
		            // 錶盤刻度的分割段數(均分爲幾大段)
		            splitNumber: 12,
		          
		            // 儀表盤詳情,用於顯示數據,也就是指針指向的數值		            	            
		            detail: {
		            	show: true,
		            	fontSize:12,
		            	color: "white",         	
		            	backgroundColor: '#0000FF',
		            	borderWidth:1,
		            	borderRadius:3,
		            	shadowColor:"#0000CD",
		            	shadowBlur:10,
		            	// 格式化函數或者字符串(格式化顯示詳情,對顯示的內容,格式進行定製)
		            	formatter: function(value){
		            		value=parseInt(value);
		            		var dt_ = new Date();
		            		hour_ = dt_.getHours();
		            		// 判斷是上午還是下午
		            		if((hour_ - value) == 12)
		            			value = hour_;

		            		var minutes = option.series[1].data[0].value;
	            			var seconds = option.series[0].data[0].value;
	            			minutes = minutes<10?("0" + minutes):minutes;
	            			seconds = seconds<10?("0" + seconds):seconds;
		            		if (value == 0 || value == 12)    			
		            			return "12" + ":" + minutes + ":" + seconds;
		            		else if (value<10)
		            			return "0"+ value + ":" + minutes + ":" + seconds;
		            		else
		            			return value + ":" + minutes + ":" + seconds;
		            		
		            	},

		            	// 相對於儀表盤中心的偏移位置,數組第一項是水平方向的偏移,第二項是垂直方向的偏移。
		            	// 可以是絕對的數值,也可以是相對於儀表盤半徑的百分比。  
		            	offsetCenter: [0,"125%"],          	
		            },
		            // 數據
		            data: [{value: 8, name: 'TISSOT'}],
		            // data 數據的標題名
		            title:{
		            	show:true,
		            	fontSize:10,

		            },
		            axisLine:{
		            	lineStyle:{
		            		color:[[1, '#FFD700']],
		            		width:5,
		            	},
		            },

		            splitLine:{		            	
		            	length:10,
		            	lineStyle:{
		            		color: "#14c8d4",
		            		width:5, 
		            	}
		            },

		            axisTick:{
		            	show:false,
		            	splitNumber: 5,
		            	lineStyle:{
		            		color: "#14c8d4",
		            		 
		            	}
		            },

		            axisLabel:{
		            	show:true,
		            	distance:5,
						formatter: function (value) {	
							// console.log(value + ":" + option.series[1].data[0].value + ":" + option.series[2].data[0].value);						
						   if (value == 0 || value == 12)
		            			return "12";
		            		else if (value<10)
		            			return "0"+value;
		            		else
		            			return value;
						}		            	
		            },

		            pointer:{
		            	length: "50%",
		            	width: 3,
		            },   

		        },	       	       

		    ]
		};	

		
		setInterval(function(){
			var date = new Date();
			Hour = date.getHours()<=12?date.getHours():date.getHours()-12;
			Minutes = date.getMinutes();
			Seconds = date.getSeconds();			
			option.series[1].data[0].value = Minutes;
			option.series[0].data[0].value = Seconds;
			option.series[2].data[0].value = Hour + Minutes/12/10;

			myChart.setOption(option);			
		},1000);

	</script>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章