Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>HTML5 Canvas</title>
- <link rel="stylesheet" href="css/bootstrap.css">
- <script src="js/jquery-3.2.1.min.js"></script>
- </head>
- <body>
- <canvas id="mycanvas" width="500" height="500"></canvas>
- <table id="browsers" class="table table-hover">
- <tr class="title">
- <td>구분</td>
- <td class="browser" data-color="#00A9DB">IE</td>
- <td class="browser" data-color="#D500DB">Chrome</td>
- <td class="browser" data-color="#0062DB">FireFox</td>
- <td class="browser" data-color="#DBA100">Safari</td>
- </tr>
- <tr class="data">
- <td class="year">2017</td>
- <td class="users">25</td>
- <td class="users">51</td>
- <td class="users">15</td>
- <td class="users">12</td>
- </tr>
- <tr class="data">
- <td class="year">2016</td>
- <td class="users">35</td>
- <td class="users">45</td>
- <td class="users">10</td>
- <td class="users">15</td>
- </tr>
- <tr class="data">
- <td class="year">2015</td>
- <td class="users">50</td>
- <td class="users">30</td>
- <td class="users">25</td>
- <td class="users">18</td>
- </tr>
- </table>
- <script>
- var c = document.getElementById("mycanvas");
- var ctx = c.getContext("2d");
- var browserinfo = $("#browsers .title .browser");
- var browsers = [];
- var colors = [];
- for(var k=0; k<browserinfo.length;k++){
- var b = $(browserinfo[k]).text();
- var c = $(browserinfo[k]).attr("data-color");
- browsers.push(b);
- colors.push(c);
- }
- $(".data").on("mouseover",function(){
- var tds = $(this).children(".users");
- var rates = [];
- for( var i=0; i<tds.length; i++ ){
- var users = $(tds[i]).text();
- users = parseInt(users,10);
- rates.push(users);
- }
- var tdyear = $(this).children(".year");
- var year = $(tdyear[0]).text();
- drawChart(rates);
- ctx.beginPath();
- ctx.fillStyle = "white";
- ctx.font = "20px Arial";
- ctx.textAlign = "center";
- ctx.fillText(year,250,250);
- });
- function drawChart(rates){
- var total = 0;
- for(var i=0; i<rates.length; i++){
- total += rates[i];
- }
- var start = 0;
- var end = 0;
- for(var j=0; j<rates.length; j++){
- ctx.beginPath();
- ctx.moveTo(250,250);
- end = start + ( (rates[j]/total)*2*Math.PI );
- ctx.arc(250,250,250,start,end);
- ctx.fillStyle = colors[j];
- ctx.fill();
- var angle = start + 2*Math.PI*((rates[j]/total)/2);
- var pos = getTextPos(250,250,250/2,angle);
- ctx.fillStyle = "white";
- ctx.font = "15px Arial";
- ctx.textAlign = "center";
- ctx.fillText(browsers[j],pos[0],pos[1]);
- console.log(pos[0] + "/" + pos[1]);
- start = end;
- }
- }
- function getTextPos(x,y,r,angle){
- var tx = x + Math.cos(angle)*r;
- var ty = y + Math.sin(angle)*r;
- return [tx, ty];
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment