step-size.html 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>Line 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 style="width:75%;">
  17. <canvas id="canvas"></canvas>
  18. </div>
  19. <br>
  20. <br>
  21. <button id="randomizeData">Randomize Data</button>
  22. <button id="addDataset">Add Dataset</button>
  23. <button id="removeDataset">Remove Dataset</button>
  24. <button id="addData">Add Data</button>
  25. <button id="removeData">Remove Data</button>
  26. <script>
  27. var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
  28. var randomScalingFactor = function() {
  29. return Math.round(Math.random() * 100);
  30. };
  31. var config = {
  32. type: 'line',
  33. data: {
  34. labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
  35. datasets: [{
  36. label: 'My First dataset',
  37. backgroundColor: window.chartColors.red,
  38. borderColor: window.chartColors.red,
  39. data: [
  40. randomScalingFactor(),
  41. randomScalingFactor(),
  42. randomScalingFactor(),
  43. randomScalingFactor(),
  44. randomScalingFactor(),
  45. randomScalingFactor(),
  46. randomScalingFactor()
  47. ],
  48. fill: false,
  49. }, {
  50. label: 'My Second dataset',
  51. fill: false,
  52. backgroundColor: window.chartColors.blue,
  53. borderColor: window.chartColors.blue,
  54. data: [
  55. randomScalingFactor(),
  56. randomScalingFactor(),
  57. randomScalingFactor(),
  58. randomScalingFactor(),
  59. randomScalingFactor(),
  60. randomScalingFactor(),
  61. randomScalingFactor()
  62. ],
  63. }]
  64. },
  65. options: {
  66. responsive: true,
  67. title: {
  68. display: true,
  69. text: 'Chart.js Line Chart'
  70. },
  71. tooltips: {
  72. mode: 'index',
  73. intersect: false,
  74. },
  75. hover: {
  76. mode: 'nearest',
  77. intersect: true
  78. },
  79. scales: {
  80. xAxes: [{
  81. display: true,
  82. scaleLabel: {
  83. display: true,
  84. labelString: 'Month'
  85. }
  86. }],
  87. yAxes: [{
  88. display: true,
  89. scaleLabel: {
  90. display: true,
  91. labelString: 'Value'
  92. },
  93. ticks: {
  94. min: 0,
  95. max: 100,
  96. // forces step size to be 5 units
  97. stepSize: 5
  98. }
  99. }]
  100. }
  101. }
  102. };
  103. window.onload = function() {
  104. var ctx = document.getElementById('canvas').getContext('2d');
  105. window.myLine = new Chart(ctx, config);
  106. };
  107. document.getElementById('randomizeData').addEventListener('click', function() {
  108. config.data.datasets.forEach(function(dataset) {
  109. dataset.data = dataset.data.map(function() {
  110. return randomScalingFactor();
  111. });
  112. });
  113. window.myLine.update();
  114. });
  115. var colorNames = Object.keys(window.chartColors);
  116. document.getElementById('addDataset').addEventListener('click', function() {
  117. var colorName = colorNames[config.data.datasets.length % colorNames.length];
  118. var newColor = window.chartColors[colorName];
  119. var newDataset = {
  120. label: 'Dataset ' + config.data.datasets.length,
  121. backgroundColor: newColor,
  122. borderColor: newColor,
  123. data: [],
  124. fill: false
  125. };
  126. for (var index = 0; index < config.data.labels.length; ++index) {
  127. newDataset.data.push(randomScalingFactor());
  128. }
  129. config.data.datasets.push(newDataset);
  130. window.myLine.update();
  131. });
  132. document.getElementById('addData').addEventListener('click', function() {
  133. if (config.data.datasets.length > 0) {
  134. var month = MONTHS[config.data.labels.length % MONTHS.length];
  135. config.data.labels.push(month);
  136. config.data.datasets.forEach(function(dataset) {
  137. dataset.data.push(randomScalingFactor());
  138. });
  139. window.myLine.update();
  140. }
  141. });
  142. document.getElementById('removeDataset').addEventListener('click', function() {
  143. config.data.datasets.splice(0, 1);
  144. window.myLine.update();
  145. });
  146. document.getElementById('removeData').addEventListener('click', function() {
  147. config.data.labels.splice(-1, 1); // remove the label first
  148. config.data.datasets.forEach(function(dataset) {
  149. dataset.data.pop();
  150. });
  151. window.myLine.update();
  152. });
  153. </script>
  154. </body>
  155. </html>