vertical.html 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>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 barChartData = {
  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. borderWidth: 1,
  48. data: [
  49. randomScalingFactor(),
  50. randomScalingFactor(),
  51. randomScalingFactor(),
  52. randomScalingFactor(),
  53. randomScalingFactor(),
  54. randomScalingFactor(),
  55. randomScalingFactor()
  56. ]
  57. }]
  58. };
  59. window.onload = function() {
  60. var ctx = document.getElementById('canvas').getContext('2d');
  61. window.myBar = new Chart(ctx, {
  62. type: 'bar',
  63. data: barChartData,
  64. options: {
  65. responsive: true,
  66. legend: {
  67. position: 'top',
  68. },
  69. title: {
  70. display: true,
  71. text: 'Chart.js Bar Chart'
  72. }
  73. }
  74. });
  75. };
  76. document.getElementById('randomizeData').addEventListener('click', function() {
  77. var zero = Math.random() < 0.2 ? true : false;
  78. barChartData.datasets.forEach(function(dataset) {
  79. dataset.data = dataset.data.map(function() {
  80. return zero ? 0.0 : randomScalingFactor();
  81. });
  82. });
  83. window.myBar.update();
  84. });
  85. var colorNames = Object.keys(window.chartColors);
  86. document.getElementById('addDataset').addEventListener('click', function() {
  87. var colorName = colorNames[barChartData.datasets.length % colorNames.length];
  88. var dsColor = window.chartColors[colorName];
  89. var newDataset = {
  90. label: 'Dataset ' + barChartData.datasets.length,
  91. backgroundColor: color(dsColor).alpha(0.5).rgbString(),
  92. borderColor: dsColor,
  93. borderWidth: 1,
  94. data: []
  95. };
  96. for (var index = 0; index < barChartData.labels.length; ++index) {
  97. newDataset.data.push(randomScalingFactor());
  98. }
  99. barChartData.datasets.push(newDataset);
  100. window.myBar.update();
  101. });
  102. document.getElementById('addData').addEventListener('click', function() {
  103. if (barChartData.datasets.length > 0) {
  104. var month = MONTHS[barChartData.labels.length % MONTHS.length];
  105. barChartData.labels.push(month);
  106. for (var index = 0; index < barChartData.datasets.length; ++index) {
  107. // window.myBar.addData(randomScalingFactor(), index);
  108. barChartData.datasets[index].data.push(randomScalingFactor());
  109. }
  110. window.myBar.update();
  111. }
  112. });
  113. document.getElementById('removeDataset').addEventListener('click', function() {
  114. barChartData.datasets.splice(0, 1);
  115. window.myBar.update();
  116. });
  117. document.getElementById('removeData').addEventListener('click', function() {
  118. barChartData.labels.splice(-1, 1); // remove the label first
  119. barChartData.datasets.forEach(function(dataset) {
  120. dataset.data.pop();
  121. });
  122. window.myBar.update();
  123. });
  124. </script>
  125. </body>
  126. </html>