Clock
Demo source
JavaScript TypeScript / ES6 ...
<style >
#chartdiv {
width : 100% ;
height : 500px ;
}
</style >
<script src ="https://cdn.amcharts.com/lib/4/core.js" > </script >
<script src ="https://cdn.amcharts.com/lib/4/charts.js" > </script >
<script src ="https://cdn.amcharts.com/lib/4/themes/animated.js" > </script >
<script >
am4core.ready (function ( ) {
am4core.useTheme (am4themes_animated);
var chart = am4core.create ("chartdiv" , am4charts.GaugeChart );
chart.exporting .menu = new am4core.ExportMenu ();
chart.hiddenState .properties .opacity = 0 ;
chart.startAngle = -90 ;
chart.endAngle = 270 ;
var axis = chart.xAxes .push (new am4charts.ValueAxis ());
axis.min = 0 ;
axis.max = 12 ;
axis.strictMinMax = true ;
axis.renderer .line .strokeWidth = 8 ;
axis.renderer .line .strokeOpacity = 1 ;
axis.renderer .minLabelPosition = 0.05 ;
axis.renderer .inside = true ;
axis.renderer .labels .template .radius = 35 ;
axis.renderer .axisFills .template .disabled = true ;
axis.renderer .grid .template .disabled = true ;
axis.renderer .ticks .template .disabled = false
axis.renderer .ticks .template .length = 12 ;
axis.renderer .ticks .template .strokeOpacity = 1 ;
var range = axis.axisRanges .create ();
range.startValue = 0 ;
range.endValue = 12 ;
range.grid .visible = false ;
range.tick .visible = false ;
range.label .visible = false ;
var axisFill = range.axisFill ;
axisFill.fillOpacity = 1 ;
axisFill.disabled = false ;
axisFill.fill = new am4core.InterfaceColorSet ().getFor ("fill" );
var hourHand = chart.hands .push (new am4charts.ClockHand ());
hourHand.radius = am4core.percent (60 );
hourHand.startWidth = 10 ;
hourHand.endWidth = 10 ;
hourHand.rotationDirection = "clockWise" ;
hourHand.pin .radius = 8 ;
hourHand.zIndex = 0 ;
var minutesHand = chart.hands .push (new am4charts.ClockHand ());
minutesHand.rotationDirection = "clockWise" ;
minutesHand.startWidth = 7 ;
minutesHand.endWidth = 7 ;
minutesHand.radius = am4core.percent (78 );
minutesHand.zIndex = 1 ;
var secondsHand = chart.hands .push (new am4charts.ClockHand ());
secondsHand.fill = am4core.color ("#DD0000" );
secondsHand.stroke = am4core.color ("#DD0000" );
secondsHand.radius = am4core.percent (85 );
secondsHand.rotationDirection = "clockWise" ;
secondsHand.zIndex = 2 ;
secondsHand.startWidth = 1 ;
updateHands ();
setInterval (function ( ) {
updateHands ();
}, 1000 );
function updateHands ( ) {
var date = new Date ();
var hours = date.getHours ();
var minutes = date.getMinutes ();
var seconds = date.getSeconds ();
hourHand.showValue (hours + minutes / 60 , 0 );
minutesHand.showValue (12 * (minutes + seconds / 60 ) / 60 , 0 );
secondsHand.showValue (12 * date.getSeconds () / 60 , 300 );
}
});
</script >
<div id ="chartdiv" > </div >
import * as am4core from "@amcharts/amcharts4/core" ;
import * as am4charts from "@amcharts/amcharts4/charts" ;
import am4themes_animated from "@amcharts/amcharts4/themes/animated" ;
am4core.useTheme (am4themes_animated);
let chart = am4core.create ("chartdiv" , am4charts.GaugeChart );
chart.exporting .menu = new am4core.ExportMenu ();
chart.hiddenState .properties .opacity = 0 ;
chart.startAngle = -90 ;
chart.endAngle = 270 ;
let axis = chart.xAxes .push (new am4charts.ValueAxis ());
axis.min = 0 ;
axis.max = 12 ;
axis.strictMinMax = true ;
axis.renderer .line .strokeWidth = 8 ;
axis.renderer .line .strokeOpacity = 1 ;
axis.renderer .minLabelPosition = 0.05 ;
axis.renderer .inside = true ;
axis.renderer .labels .template .radius = 35 ;
axis.renderer .axisFills .template .disabled = true ;
axis.renderer .grid .template .disabled = true ;
axis.renderer .ticks .template .disabled = false
axis.renderer .ticks .template .length = 12 ;
axis.renderer .ticks .template .strokeOpacity = 1 ;
let range = axis.axisRanges .create ();
range.startValue = 0 ;
range.endValue = 12 ;
range.grid .visible = false ;
range.tick .visible = false ;
range.label .visible = false ;
let axisFill = range.axisFill ;
axisFill.fillOpacity = 1 ;
axisFill.disabled = false ;
axisFill.fill = new am4core.InterfaceColorSet ().getFor ("fill" );
let hourHand = chart.hands .push (new am4charts.ClockHand ());
hourHand.radius = am4core.percent (60 );
hourHand.startWidth = 10 ;
hourHand.endWidth = 10 ;
hourHand.rotationDirection = "clockWise" ;
hourHand.pin .radius = 8 ;
hourHand.zIndex = 0 ;
let minutesHand = chart.hands .push (new am4charts.ClockHand ());
minutesHand.rotationDirection = "clockWise" ;
minutesHand.startWidth = 7 ;
minutesHand.endWidth = 7 ;
minutesHand.radius = am4core.percent (78 );
minutesHand.zIndex = 1 ;
let secondsHand = chart.hands .push (new am4charts.ClockHand ());
secondsHand.fill = am4core.color ("#DD0000" );
secondsHand.stroke = am4core.color ("#DD0000" );
secondsHand.radius = am4core.percent (85 );
secondsHand.rotationDirection = "clockWise" ;
secondsHand.zIndex = 2 ;
secondsHand.startWidth = 1 ;
updateHands ();
setInterval (function ( ) {
updateHands ();
}, 1000 );
function updateHands ( ) {
let date = new Date ();
let hours = date.getHours ();
let minutes = date.getMinutes ();
let seconds = date.getSeconds ();
hourHand.showValue (hours + minutes / 60 , 0 );
minutesHand.showValue (12 * (minutes + seconds / 60 ) / 60 , 0 );
secondsHand.showValue (12 * date.getSeconds () / 60 , 300 );
}