f8deec5c6f6fee12d7f115b360120ebe0bf51ec224284d21e9fa6e282448c5faecf6466df4b21daa466bc794eaef434d802158659e8d1edfb94abe756559d1 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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.x/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. <code id="logs"></code>
  17. </div>
  18. <div id="charts">
  19. <div class="wrapper"><canvas id="chart-0"></canvas></div>
  20. </div>
  21. <script>
  22. var SAMPLE_INFO = {
  23. group: 'Events',
  24. name: 'Listeners'
  25. };
  26. </script>
  27. <script id="script-init">
  28. var DATA_COUNT = 6;
  29. var labels = [];
  30. Samples.srand(8);
  31. for (var i = 0; i < DATA_COUNT; ++i) {
  32. labels.push('' + i);
  33. }
  34. Chart.helpers.merge(Chart.defaults.global, {
  35. aspectRatio: 4/3,
  36. tooltips: false,
  37. layout: {
  38. padding: {
  39. top: 42,
  40. right: 16,
  41. bottom: 32,
  42. left: 8
  43. }
  44. },
  45. elements: {
  46. line: {
  47. fill: false
  48. }
  49. },
  50. plugins: {
  51. legend: false,
  52. title: false
  53. }
  54. });
  55. function log(type, context) {
  56. var line = document.createElement('div');
  57. var logs = document.getElementById('logs');
  58. var i = context.datasetIndex;
  59. var j = context.dataIndex;
  60. var v = context.dataset.data[j];
  61. line.innerHTML = '> ' + type + ': ' + i + '-' + j + ' (' + v + ')';
  62. logs.insertBefore(line, logs.firstChild);
  63. if (logs.childNodes.length > 8) {
  64. logs.removeChild(logs.lastChild);
  65. }
  66. }
  67. </script>
  68. <script id="script-construct">
  69. var chart = new Chart('chart-0', {
  70. type: 'line',
  71. data: {
  72. labels: labels,
  73. datasets: [{
  74. backgroundColor: Samples.color(0),
  75. borderColor: Samples.color(0),
  76. data: Samples.numbers({
  77. count: DATA_COUNT,
  78. min: 0,
  79. max: 100
  80. }),
  81. datalabels: {
  82. align: 'start'
  83. }
  84. }, {
  85. backgroundColor: Samples.color(1),
  86. borderColor: Samples.color(1),
  87. data: Samples.numbers({
  88. count: DATA_COUNT,
  89. min: 0,
  90. max: 100
  91. })
  92. }, {
  93. backgroundColor: Samples.color(2),
  94. borderColor: Samples.color(2),
  95. data: Samples.numbers({
  96. count: DATA_COUNT,
  97. min: 0,
  98. max: 100
  99. }),
  100. datalabels: {
  101. align: 'end'
  102. }
  103. }]
  104. },
  105. options: {
  106. plugins: {
  107. datalabels: {
  108. backgroundColor: function(context) {
  109. return context.dataset.backgroundColor;
  110. },
  111. color: 'white',
  112. font: {
  113. weight: 'bold'
  114. },
  115. offset: 8,
  116. padding: 4,
  117. formatter: Math.round,
  118. listeners: {
  119. enter: function(context) {
  120. log('enter', context);
  121. },
  122. leave: function(context) {
  123. log('leave', context);
  124. },
  125. click: function(context) {
  126. log('click', context);
  127. }
  128. }
  129. }
  130. },
  131. scales: {
  132. yAxes: [{
  133. stacked: true
  134. }]
  135. }
  136. }
  137. });
  138. </script>
  139. </body>
  140. </html>