var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var radius = canvas.height / 2;
ctx.translate(radius, radius);
radius = radius * 0.90
drawBottomWheelFront()
//drawBottomWheelBack()
//drawTopWheelFront()
//drawTopWheelBack()
function drawDividers(ctx, radius){
for(num = 0; num < 12; num++){
drawDivider(ctx,(num+2.5) *5 * Math.PI/30,radius,2)
}
}
function drawBottomWheelFront() {
drawFace(ctx, radius, "Bottom Front");
drawNumbers(ctx, radius + 20, 1,-4);
drawNumbers(ctx, radius - 40, 7,-2);
drawNumbers(ctx, radius - 90, 6,0);
drawNumbers(ctx, radius - 140, 5,2);
drawNumbers(ctx, radius - 190, 4,4);
drawNumbers(ctx, radius - 240, 3,6);
drawNumbers(ctx, radius - 290, 2,8);
drawDividers(ctx, radius) ;
}
function drawBottomWheelBack() {
drawFace(ctx, radius, "Bottom Back");
drawNumbers(ctx, radius + 20, 1, -4);
drawNumbers(ctx, radius - 40, 12, -2);
drawNumbers(ctx, radius - 100, 11, 0);
drawNumbers(ctx, radius - 160, 10, 2);
drawNumbers(ctx, radius - 220, 9, 4);
drawNumbers(ctx, radius - 280, 8, 6);
drawDividers(ctx, radius) ;
}
function drawTopWheelFront() {
drawFace(ctx, radius);
drawFace(ctx, radius-25);
drawFace(ctx, radius -70);
drawFace(ctx, radius -115);
drawFace(ctx, radius -160);
drawFace(ctx, radius -205);
drawFace(ctx, radius -245);
drawFace(ctx, radius -285);
drawFace(ctx, radius -325, "Top Front");
drawHoles(ctx, radius + 20, 1,-4);
drawHoles(ctx, radius - 40, 7,-2);
drawHoles(ctx, radius - 90, 6,0);
drawHoles(ctx, radius - 140, 5,2);
drawHoles(ctx, radius - 190, 4,4);
drawHoles(ctx, radius - 240, 3,6);
drawHoles(ctx, radius - 290, 2,8);
drawDividers(ctx, radius) ;
}
function drawTopWheelBack(){
drawFace(ctx, radius);
drawFace(ctx, radius-25);
drawFace(ctx, radius -70);
drawFace(ctx, radius -120);
drawFace(ctx, radius -170);
drawFace(ctx, radius -215);
drawFace(ctx, radius -270);
drawFace(ctx, radius -325, "Top Back");
drawHoles(ctx, radius + 20, 1, -4);
drawHoles(ctx, radius - 40, 12, -2);
drawHoles(ctx, radius - 100, 11, 0);
drawHoles(ctx, radius - 160, 10, 2);
drawHoles(ctx, radius - 220, 9, 4);
drawHoles(ctx, radius - 280, 8, 6);
drawDividers(ctx, radius) ;
}
function drawFace(ctx, radius, title) {
var grad;
ctx.beginPath();
ctx.arc(0, 0, radius, 0, 2*Math.PI);
// ctx.fillStyle = '#FCE4EC';
ctx.fillStyle = 'white';
ctx.fill();
ctx.strokeStyle="#eee";
ctx.stroke();
ctx.beginPath();
ctx.fill();
ctx.font = 15 + "px Tahoma";
ctx.textBaseline="middle";
ctx.fillStyle = '#ccc';
ctx.textAlign="center";
ctx.fillText(title, 0, 0);
ctx.fillStyle = '#222';
}
function drawNumbers(ctx, radius, skip, shift) {
var ang;
var num;
var text;
ctx.font = 25 + "px Tahoma";
ctx.textBaseline="middle";
ctx.textAlign="center";
for(num = 1; num < 13; num++){
text = num * skip;
ang = (num + shift) * Math.PI / 6;
ctx.rotate(ang);
ctx.translate(0, -radius*0.85);
ctx.rotate(-ang);
ctx.fillText(text.toString(), 0, 0);
ctx.rotate(ang);
ctx.translate(0, radius*0.85);
ctx.rotate(-ang);
}
}
function drawHoles(ctx, radius, skip, shift) {
var ang;
var num;
var text;
ctx.font = 25 + "px arial";
ctx.textBaseline="middle";
ctx.textAlign="center";
for(num = 1; num < 13; num++){
text = num * skip;
ang = (num + shift) * Math.PI / 6;
ctx.rotate(ang);
ctx.translate(0, -radius*0.85);
ctx.rotate(-ang);
if (text == skip){
ctx.fillText("X", 0, 0);
}
ctx.rotate(ang);
ctx.translate(0, radius*0.85);
ctx.rotate(-ang);
}
}
function drawDivider(ctx, pos, length, width) {
ctx.beginPath();
ctx.lineWidth = width;
ctx.lineCap = "round";
ctx.moveTo(0,0);
ctx.rotate(pos);
ctx.lineTo(0, -length);
ctx.stroke();
ctx.rotate(-pos);
}
<!DOCTYPE html>
<body>
<canvas id="canvas" width="900" height="900"
style="background-color:#333">
</canvas>
</body>