line-stacked.html 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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 config = {
  29. type: 'line',
  30. data: {
  31. labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
  32. datasets: [{
  33. label: 'My First dataset',
  34. borderColor: window.chartColors.red,
  35. backgroundColor: window.chartColors.red,
  36. data: [
  37. randomScalingFactor(),
  38. randomScalingFactor(),
  39. randomScalingFactor(),
  40. randomScalingFactor(),
  41. randomScalingFactor(),
  42. randomScalingFactor(),
  43. randomScalingFactor()
  44. ],
  45. }, {
  46. label: 'My Second dataset',
  47. borderColor: window.chartColors.blue,
  48. backgroundColor: window.chartColors.blue,
  49. data: [
  50. randomScalingFactor(),
  51. randomScalingFactor(),
  52. randomScalingFactor(),
  53. randomScalingFactor(),
  54. randomScalingFactor(),
  55. randomScalingFactor(),
  56. randomScalingFactor()
  57. ],
  58. }, {
  59. label: 'My Third dataset',
  60. borderColor: window.chartColors.green,
  61. backgroundColor: window.chartColors.green,
  62. data: [
  63. randomScalingFactor(),
  64. randomScalingFactor(),
  65. randomScalingFactor(),
  66. randomScalingFactor(),
  67. randomScalingFactor(),
  68. randomScalingFactor(),
  69. randomScalingFactor()
  70. ],
  71. }, {
  72. label: 'My Third dataset',
  73. borderColor: window.chartColors.yellow,
  74. backgroundColor: window.chartColors.yellow,
  75. data: [
  76. randomScalingFactor(),
  77. randomScalingFactor(),
  78. randomScalingFactor(),
  79. randomScalingFactor(),
  80. randomScalingFactor(),
  81. randomScalingFactor(),
  82. randomScalingFactor()
  83. ],
  84. }]
  85. },
  86. options: {
  87. responsive: true,
  88. title: {
  89. display: true,
  90. text: 'Chart.js Line Chart - Stacked Area'
  91. },
  92. tooltips: {
  93. mode: 'index',
  94. },
  95. hover: {
  96. mode: 'index'
  97. },
  98. scales: {
  99. xAxes: [{
  100. scaleLabel: {
  101. display: true,
  102. labelString: 'Month'
  103. }
  104. }],
  105. yAxes: [{
  106. stacked: true,
  107. scaleLabel: {
  108. display: true,
  109. labelString: 'Value'
  110. }
  111. }]
  112. }
  113. }
  114. };
  115. window.onload = function() {
  116. var ctx = document.getElementById('canvas').getContext('2d');
  117. window.myLine = new Chart(ctx, config);
  118. };
  119. document.getElementById('randomizeData').addEventListener('click', function() {
  120. config.data.datasets.forEach(function(dataset) {
  121. dataset.data = dataset.data.map(function() {
  122. return randomScalingFactor();
  123. });
  124. });
  125. window.myLine.update();
  126. });
  127. var colorNames = Object.keys(window.chartColors);
  128. document.getElementById('addDataset').addEventListener('click', function() {
  129. var colorName = colorNames[config.data.datasets.length % colorNames.length];
  130. var newColor = window.chartColors[colorName];
  131. var newDataset = {
  132. label: 'Dataset ' + config.data.datasets.length,
  133. borderColor: newColor,
  134. backgroundColor: newColor,
  135. data: [],
  136. };
  137. for (var index = 0; index < config.data.labels.length; ++index) {
  138. newDataset.data.push(randomScalingFactor());
  139. }
  140. config.data.datasets.push(newDataset);
  141. window.myLine.update();
  142. });
  143. document.getElementById('addData').addEventListener('click', function() {
  144. if (config.data.datasets.length > 0) {
  145. var month = MONTHS[config.data.labels.length % MONTHS.length];
  146. config.data.labels.push(month);
  147. config.data.datasets.forEach(function(dataset) {
  148. dataset.data.push(randomScalingFactor());
  149. });
  150. window.myLine.update();
  151. }
  152. });
  153. document.getElementById('removeDataset').addEventListener('click', function() {
  154. config.data.datasets.splice(0, 1);
  155. window.myLine.update();
  156. });
  157. document.getElementById('removeData').addEventListener('click', function() {
  158. config.data.labels.splice(-1, 1); // remove the label first
  159. config.data.datasets.forEach(function(dataset) {
  160. dataset.data.pop();
  161. });
  162. window.myLine.update();
  163. });
  164. </script>
  165. </body>
  166. </html>