line-datasets.html 3.6 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. <title>area > datasets | Chart.js sample</title>
  8. <link rel="stylesheet" type="text/css" href="../../style.css">
  9. <script src="../../../dist/Chart.bundle.js"></script>
  10. <script src="../../utils.js"></script>
  11. <script src="analyser.js"></script>
  12. </head>
  13. <body>
  14. <div class="content">
  15. <div class="wrapper">
  16. <canvas id="chart-0"></canvas>
  17. </div>
  18. <div class="toolbar">
  19. <button onclick="togglePropagate(this)">Propagate</button>
  20. <button onclick="toggleSmooth(this)">Smooth</button>
  21. <button onclick="randomize(this)">Randomize</button>
  22. </div>
  23. <div id="chart-analyser" class="analyser"></div>
  24. </div>
  25. <script>
  26. var presets = window.chartColors;
  27. var utils = Samples.utils;
  28. var inputs = {
  29. min: 20,
  30. max: 80,
  31. count: 8,
  32. decimals: 2,
  33. continuity: 1
  34. };
  35. function generateData() {
  36. return utils.numbers(inputs);
  37. }
  38. function generateLabels() {
  39. return utils.months({count: inputs.count});
  40. }
  41. utils.srand(42);
  42. var data = {
  43. labels: generateLabels(),
  44. datasets: [{
  45. backgroundColor: utils.transparentize(presets.red),
  46. borderColor: presets.red,
  47. data: generateData(),
  48. hidden: true,
  49. label: 'D0'
  50. }, {
  51. backgroundColor: utils.transparentize(presets.orange),
  52. borderColor: presets.orange,
  53. data: generateData(),
  54. label: 'D1',
  55. fill: '-1'
  56. }, {
  57. backgroundColor: utils.transparentize(presets.yellow),
  58. borderColor: presets.yellow,
  59. data: generateData(),
  60. hidden: true,
  61. label: 'D2',
  62. fill: 1
  63. }, {
  64. backgroundColor: utils.transparentize(presets.green),
  65. borderColor: presets.green,
  66. data: generateData(),
  67. label: 'D3',
  68. fill: '-1'
  69. }, {
  70. backgroundColor: utils.transparentize(presets.blue),
  71. borderColor: presets.blue,
  72. data: generateData(),
  73. label: 'D4',
  74. fill: '-1'
  75. }, {
  76. backgroundColor: utils.transparentize(presets.grey),
  77. borderColor: presets.grey,
  78. data: generateData(),
  79. label: 'D5',
  80. fill: '+2'
  81. }, {
  82. backgroundColor: utils.transparentize(presets.purple),
  83. borderColor: presets.purple,
  84. data: generateData(),
  85. label: 'D6',
  86. fill: false
  87. }, {
  88. backgroundColor: utils.transparentize(presets.red),
  89. borderColor: presets.red,
  90. data: generateData(),
  91. label: 'D7',
  92. fill: 8
  93. }, {
  94. backgroundColor: utils.transparentize(presets.orange),
  95. borderColor: presets.orange,
  96. data: generateData(),
  97. hidden: true,
  98. label: 'D8',
  99. fill: 'end'
  100. }]
  101. };
  102. var options = {
  103. maintainAspectRatio: false,
  104. spanGaps: false,
  105. elements: {
  106. line: {
  107. tension: 0.000001
  108. }
  109. },
  110. scales: {
  111. yAxes: [{
  112. stacked: true
  113. }]
  114. },
  115. plugins: {
  116. filler: {
  117. propagate: false
  118. },
  119. 'samples-filler-analyser': {
  120. target: 'chart-analyser'
  121. }
  122. }
  123. };
  124. var chart = new Chart('chart-0', {
  125. type: 'line',
  126. data: data,
  127. options: options
  128. });
  129. // eslint-disable-next-line no-unused-vars
  130. function togglePropagate(btn) {
  131. var value = btn.classList.toggle('btn-on');
  132. chart.options.plugins.filler.propagate = value;
  133. chart.update();
  134. }
  135. // eslint-disable-next-line no-unused-vars
  136. function toggleSmooth(btn) {
  137. var value = btn.classList.toggle('btn-on');
  138. chart.options.elements.line.tension = value ? 0.4 : 0.000001;
  139. chart.update();
  140. }
  141. // eslint-disable-next-line no-unused-vars
  142. function randomize() {
  143. chart.data.datasets.forEach(function(dataset) {
  144. dataset.data = generateData();
  145. });
  146. chart.update();
  147. }
  148. </script>
  149. </body>
  150. </html>