basic.html 3.9 KB

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