polar.html 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <!DOCTYPE html>
  2. <html lang="en-US">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <title>Scriptable > Polar Area | Chart.js sample</title>
  8. <link rel="stylesheet" type="text/css" href="../style.css">
  9. <script src="../../dist/Chart.min.js"></script>
  10. <script src="../utils.js"></script>
  11. </head>
  12. <body>
  13. <div class="content">
  14. <div class="wrapper"><canvas id="chart-0"></canvas></div>
  15. <div class="toolbar">
  16. <button onclick="randomize()">Randomize</button>
  17. <button onclick="addData()">Add Data</button>
  18. <button onclick="removeData()">Remove Data</button>
  19. </div>
  20. </div>
  21. <script>
  22. var DATA_COUNT = 7;
  23. var utils = Samples.utils;
  24. utils.srand(110);
  25. function colorize(opaque, hover, ctx) {
  26. var v = ctx.dataset.data[ctx.dataIndex];
  27. var c = v < 35 ? '#D60000'
  28. : v < 55 ? '#F46300'
  29. : v < 75 ? '#0358B6'
  30. : '#44DE28';
  31. var opacity = hover ? 1 - Math.abs(v / 150) - 0.2 : 1 - Math.abs(v / 150);
  32. return opaque ? c : utils.transparentize(c, opacity);
  33. }
  34. function hoverColorize(ctx) {
  35. return colorize(false, true, ctx);
  36. }
  37. function generateData() {
  38. return utils.numbers({
  39. count: DATA_COUNT,
  40. min: 0,
  41. max: 100
  42. });
  43. }
  44. var data = {
  45. datasets: [{
  46. data: generateData(),
  47. }]
  48. };
  49. var options = {
  50. legend: false,
  51. tooltips: false,
  52. elements: {
  53. arc: {
  54. backgroundColor: colorize.bind(null, false, false),
  55. hoverBackgroundColor: hoverColorize
  56. }
  57. }
  58. };
  59. var chart = new Chart('chart-0', {
  60. type: 'polarArea',
  61. data: data,
  62. options: options
  63. });
  64. // eslint-disable-next-line no-unused-vars
  65. function randomize() {
  66. chart.data.datasets.forEach(function(dataset) {
  67. dataset.data = generateData();
  68. });
  69. chart.update();
  70. }
  71. // eslint-disable-next-line no-unused-vars
  72. var addData = function() {
  73. var newData = Math.round(Math.random() * 100);
  74. chart.data.datasets[0].data.push(newData);
  75. chart.update();
  76. };
  77. // eslint-disable-next-line no-unused-vars
  78. function removeData() {
  79. chart.data.datasets[0].data.pop();
  80. chart.update();
  81. }
  82. </script>
  83. </body>
  84. </html>