horizontal.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>Horizontal Bar Chart</title>
  5. <script src="../../../dist/Chart.bundle.js"></script>
  6. <script src="../../utils.js"></script>
  7. <style>
  8. canvas {
  9. -moz-user-select: none;
  10. -webkit-user-select: none;
  11. -ms-user-select: none;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <div id="container" style="width: 75%;">
  17. <canvas id="canvas"></canvas>
  18. </div>
  19. <button id="randomizeData">Randomize Data</button>
  20. <button id="addDataset">Add Dataset</button>
  21. <button id="removeDataset">Remove Dataset</button>
  22. <button id="addData">Add Data</button>
  23. <button id="removeData">Remove Data</button>
  24. <script>
  25. var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
  26. var color = Chart.helpers.color;
  27. var horizontalBarChartData = {
  28. labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
  29. datasets: [{
  30. label: 'Dataset 1',
  31. backgroundColor: color(window.chartColors.red).alpha(0.5).rgbString(),
  32. borderColor: window.chartColors.red,
  33. borderWidth: 1,
  34. data: [
  35. randomScalingFactor(),
  36. randomScalingFactor(),
  37. randomScalingFactor(),
  38. randomScalingFactor(),
  39. randomScalingFactor(),
  40. randomScalingFactor(),
  41. randomScalingFactor()
  42. ]
  43. }, {
  44. label: 'Dataset 2',
  45. backgroundColor: color(window.chartColors.blue).alpha(0.5).rgbString(),
  46. borderColor: window.chartColors.blue,
  47. data: [
  48. randomScalingFactor(),
  49. randomScalingFactor(),
  50. randomScalingFactor(),
  51. randomScalingFactor(),
  52. randomScalingFactor(),
  53. randomScalingFactor(),
  54. randomScalingFactor()
  55. ]
  56. }]
  57. };
  58. window.onload = function() {
  59. var ctx = document.getElementById('canvas').getContext('2d');
  60. window.myHorizontalBar = new Chart(ctx, {
  61. type: 'horizontalBar',
  62. data: horizontalBarChartData,
  63. options: {
  64. // Elements options apply to all of the options unless overridden in a dataset
  65. // In this case, we are setting the border of each horizontal bar to be 2px wide
  66. elements: {
  67. rectangle: {
  68. borderWidth: 2,
  69. }
  70. },
  71. responsive: true,
  72. legend: {
  73. position: 'right',
  74. },
  75. title: {
  76. display: true,
  77. text: 'Chart.js Horizontal Bar Chart'
  78. }
  79. }
  80. });
  81. };
  82. document.getElementById('randomizeData').addEventListener('click', function() {
  83. var zero = Math.random() < 0.2 ? true : false;
  84. horizontalBarChartData.datasets.forEach(function(dataset) {
  85. dataset.data = dataset.data.map(function() {
  86. return zero ? 0.0 : randomScalingFactor();
  87. });
  88. });
  89. window.myHorizontalBar.update();
  90. });
  91. var colorNames = Object.keys(window.chartColors);
  92. document.getElementById('addDataset').addEventListener('click', function() {
  93. var colorName = colorNames[horizontalBarChartData.datasets.length % colorNames.length];
  94. var dsColor = window.chartColors[colorName];
  95. var newDataset = {
  96. label: 'Dataset ' + horizontalBarChartData.datasets.length,
  97. backgroundColor: color(dsColor).alpha(0.5).rgbString(),
  98. borderColor: dsColor,
  99. data: []
  100. };
  101. for (var index = 0; index < horizontalBarChartData.labels.length; ++index) {
  102. newDataset.data.push(randomScalingFactor());
  103. }
  104. horizontalBarChartData.datasets.push(newDataset);
  105. window.myHorizontalBar.update();
  106. });
  107. document.getElementById('addData').addEventListener('click', function() {
  108. if (horizontalBarChartData.datasets.length > 0) {
  109. var month = MONTHS[horizontalBarChartData.labels.length % MONTHS.length];
  110. horizontalBarChartData.labels.push(month);
  111. for (var index = 0; index < horizontalBarChartData.datasets.length; ++index) {
  112. horizontalBarChartData.datasets[index].data.push(randomScalingFactor());
  113. }
  114. window.myHorizontalBar.update();
  115. }
  116. });
  117. document.getElementById('removeDataset').addEventListener('click', function() {
  118. horizontalBarChartData.datasets.splice(0, 1);
  119. window.myHorizontalBar.update();
  120. });
  121. document.getElementById('removeData').addEventListener('click', function() {
  122. horizontalBarChartData.labels.splice(-1, 1); // remove the label first
  123. horizontalBarChartData.datasets.forEach(function(dataset) {
  124. dataset.data.pop();
  125. });
  126. window.myHorizontalBar.update();
  127. });
  128. </script>
  129. </body>
  130. </html>