line.html 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <!DOCTYPE html>
  2. <html lang="en-US">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=Edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <link rel="stylesheet" type="text/css" href="../style.css">
  8. <link rel="icon" type="image/ico" href="../favicon.ico">
  9. <script src="https://cdn.jsdelivr.net/npm/chart.js@2.7.0/dist/Chart.min.js"></script>
  10. <script src="../../chartjs-plugin-datalabels.js"></script>
  11. <script src="../utils.js"></script>
  12. </head>
  13. <body>
  14. <div id="side">
  15. <div id="header"></div>
  16. <div id="actions">
  17. <button onclick="randomize(this)">Randomize</button>
  18. <button onclick="addData(this)">Add Data</button>
  19. <button onclick="removeData(this)">Remove Data</button>
  20. </div>
  21. </div>
  22. <div id="charts">
  23. <div class="wrapper"><canvas id="chart-0"></canvas></div>
  24. </div>
  25. <script>
  26. var SAMPLE_INFO = {
  27. group: 'Charts',
  28. name: 'Line',
  29. };
  30. </script>
  31. <script id="script-init">
  32. var DATA_COUNT = 8;
  33. var labels = [];
  34. Samples.srand(8);
  35. for (var i = 0; i < DATA_COUNT; ++i) {
  36. labels.push('' + i);
  37. }
  38. Chart.helpers.merge(Chart.defaults.global, {
  39. aspectRatio: 4/3,
  40. tooltips: false,
  41. layout: {
  42. padding: {
  43. top: 42,
  44. right: 16,
  45. bottom: 32,
  46. left: 8
  47. }
  48. },
  49. elements: {
  50. line: {
  51. fill: false
  52. }
  53. },
  54. plugins: {
  55. legend: false,
  56. title: false
  57. }
  58. });
  59. </script>
  60. <script id="script-construct">
  61. var chart = new Chart('chart-0', {
  62. type: 'line',
  63. data: {
  64. labels: labels,
  65. datasets: [{
  66. backgroundColor: Samples.color(0),
  67. borderColor: Samples.color(0),
  68. data: Samples.numbers({
  69. count: DATA_COUNT,
  70. min: 0,
  71. max: 100
  72. }),
  73. datalabels: {
  74. align: 'start',
  75. anchor: 'start'
  76. }
  77. }, {
  78. backgroundColor: Samples.color(1),
  79. borderColor: Samples.color(1),
  80. data: Samples.numbers({
  81. count: DATA_COUNT,
  82. min: 0,
  83. max: 100
  84. })
  85. }, {
  86. backgroundColor: Samples.color(2),
  87. borderColor: Samples.color(2),
  88. data: Samples.numbers({
  89. count: DATA_COUNT,
  90. min: 0,
  91. max: 100
  92. }),
  93. datalabels: {
  94. align: 'end',
  95. anchor: 'end'
  96. }
  97. }]
  98. },
  99. options: {
  100. plugins: {
  101. datalabels: {
  102. backgroundColor: function(context) {
  103. return context.dataset.backgroundColor;
  104. },
  105. borderRadius: 4,
  106. color: 'white',
  107. font: {
  108. weight: 'bold'
  109. },
  110. formatter: Math.round
  111. }
  112. },
  113. scales: {
  114. yAxes: [{
  115. stacked: true
  116. }]
  117. }
  118. }
  119. });
  120. </script>
  121. <script id="script-actions">
  122. function randomize() {
  123. chart.data.datasets.forEach(function(dataset, i) {
  124. dataset.backgroundColor = dataset.borderColor = Samples.color();
  125. dataset.data = dataset.data.map(function(value) {
  126. return Samples.rand(0, 100);
  127. });
  128. });
  129. chart.update();
  130. }
  131. function addData() {
  132. chart.data.labels.push(chart.data.labels.length);
  133. chart.data.datasets.forEach(function(dataset, i) {
  134. dataset.data.push(Samples.rand(0, 100));
  135. });
  136. chart.update();
  137. }
  138. function removeData() {
  139. chart.data.labels.shift();
  140. chart.data.datasets.forEach(function(dataset, i) {
  141. dataset.data.shift();
  142. });
  143. chart.update();
  144. }
  145. </script>
  146. </body>
  147. </html>