custom-points.html 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>Custom Tooltips using Data Points</title>
  5. <script src="../../dist/Chart.bundle.js"></script>
  6. <script src="../utils.js"></script>
  7. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  8. <style>
  9. canvas{
  10. -moz-user-select: none;
  11. -webkit-user-select: none;
  12. -ms-user-select: none;
  13. }
  14. .chartjs-tooltip {
  15. opacity: 1;
  16. position: absolute;
  17. background: rgba(0, 0, 0, .7);
  18. color: white;
  19. border-radius: 3px;
  20. -webkit-transition: all .1s ease;
  21. transition: all .1s ease;
  22. pointer-events: none;
  23. -webkit-transform: translate(-50%, 0);
  24. transform: translate(-50%, 0);
  25. padding: 4px;
  26. }
  27. .chartjs-tooltip-key {
  28. display: inline-block;
  29. width: 10px;
  30. height: 10px;
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <div id="canvas-holder1" style="width:75%;">
  36. <canvas id="chart1"></canvas>
  37. <div class="chartjs-tooltip" id="tooltip-0"></div>
  38. <div class="chartjs-tooltip" id="tooltip-1"></div>
  39. </div>
  40. <script>
  41. var customTooltips = function(tooltip) {
  42. $(this._chart.canvas).css('cursor', 'pointer');
  43. var positionY = this._chart.canvas.offsetTop;
  44. var positionX = this._chart.canvas.offsetLeft;
  45. $('.chartjs-tooltip').css({
  46. opacity: 0,
  47. });
  48. if (!tooltip || !tooltip.opacity) {
  49. return;
  50. }
  51. if (tooltip.dataPoints.length > 0) {
  52. tooltip.dataPoints.forEach(function(dataPoint) {
  53. var content = [dataPoint.xLabel, dataPoint.yLabel].join(': ');
  54. var $tooltip = $('#tooltip-' + dataPoint.datasetIndex);
  55. $tooltip.html(content);
  56. $tooltip.css({
  57. opacity: 1,
  58. top: positionY + dataPoint.y + 'px',
  59. left: positionX + dataPoint.x + 'px',
  60. });
  61. });
  62. }
  63. };
  64. var color = Chart.helpers.color;
  65. var lineChartData = {
  66. labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
  67. datasets: [{
  68. label: 'My First dataset',
  69. backgroundColor: color(window.chartColors.red).alpha(0.2).rgbString(),
  70. borderColor: window.chartColors.red,
  71. pointBackgroundColor: window.chartColors.red,
  72. data: [
  73. randomScalingFactor(),
  74. randomScalingFactor(),
  75. randomScalingFactor(),
  76. randomScalingFactor(),
  77. randomScalingFactor(),
  78. randomScalingFactor(),
  79. randomScalingFactor()
  80. ]
  81. }, {
  82. label: 'My Second dataset',
  83. backgroundColor: color(window.chartColors.blue).alpha(0.2).rgbString(),
  84. borderColor: window.chartColors.blue,
  85. pointBackgroundColor: window.chartColors.blue,
  86. data: [
  87. randomScalingFactor(),
  88. randomScalingFactor(),
  89. randomScalingFactor(),
  90. randomScalingFactor(),
  91. randomScalingFactor(),
  92. randomScalingFactor(),
  93. randomScalingFactor()
  94. ]
  95. }]
  96. };
  97. window.onload = function() {
  98. var chartEl = document.getElementById('chart1');
  99. new Chart(chartEl, {
  100. type: 'line',
  101. data: lineChartData,
  102. options: {
  103. title: {
  104. display: true,
  105. text: 'Chart.js - Custom Tooltips using Data Points'
  106. },
  107. tooltips: {
  108. enabled: false,
  109. mode: 'index',
  110. intersect: false,
  111. custom: customTooltips
  112. }
  113. }
  114. });
  115. };
  116. </script>
  117. </body>
  118. </html>