histogram.html 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  7. <title>Time Series</title>
  8. <link href="../../assets/styles.css" rel="stylesheet" />
  9. <style>
  10. #box {
  11. max-width: 800px;
  12. margin: 35px auto;
  13. }
  14. #timeline-chart .apexcharts-toolbar {
  15. opacity: 1;
  16. border: 0;
  17. }
  18. .selection {
  19. opacity: 0;
  20. }
  21. </style>
  22. <script>
  23. window.Promise ||
  24. document.write(
  25. '<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"><\/script>'
  26. )
  27. window.Promise ||
  28. document.write(
  29. '<script src="https://cdn.jsdelivr.net/npm/eligrey-classlist-js-polyfill@1.2.20171210/classList.min.js"><\/script>'
  30. )
  31. window.Promise ||
  32. document.write(
  33. '<script src="https://cdn.jsdelivr.net/npm/findindex_polyfill_mdn"><\/script>'
  34. )
  35. </script>
  36. <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
  37. </head>
  38. <body>
  39. <div id="box">
  40. <div id="chart"></div>
  41. <div class="selection">
  42. Selected: <span id="selected-count">0</span>
  43. </div>
  44. </div>
  45. <script>
  46. var options = {
  47. series: [{
  48. data: [4, 3, 10, 9, 29, 19, 22]
  49. }],
  50. chart: {
  51. type: "histogram",
  52. height: 380,
  53. foreColor: "#999",
  54. events: {
  55. dataPointSelection: function(e, chart, opts) {
  56. var arraySelected = []
  57. opts.selectedDataPoints.map(function(selectedIndex) {
  58. return selectedIndex.map(function(s) {
  59. return arraySelected.push(chart.w.globals.series[0][s])
  60. })
  61. });
  62. arraySelected = arraySelected.reduce(function(acc, curr) {
  63. return acc + curr;
  64. } , 0)
  65. document.querySelector("#selected-count").innerHTML = arraySelected
  66. }
  67. }
  68. },
  69. plotOptions: {
  70. bar: {
  71. dataLabels: {
  72. enabled: false
  73. }
  74. }
  75. },
  76. states: {
  77. active: {
  78. allowMultipleDataPointsSelection: true
  79. }
  80. },
  81. xaxis: {
  82. categories: [10,20,30,40,50,60,70],
  83. axisBorder: {
  84. show: false
  85. },
  86. axisTicks: {
  87. show: false
  88. }
  89. },
  90. yaxis: {
  91. tickAmount: 4,
  92. labels: {
  93. offsetX: -5,
  94. offsetY: -5
  95. },
  96. },
  97. tooltip: {
  98. x: {
  99. format: "dd MMM yyyy"
  100. },
  101. },
  102. };
  103. var chart = new ApexCharts(document.querySelector("#chart"), options);
  104. chart.render();
  105. chart.addEventListener("dataPointSelection", function(e, opts) {
  106. console.log(e, opts)
  107. })
  108. </script>
  109. </body>
  110. </html>