donut-update.html 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  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>Simple Pie</title>
  8. <link href="../../assets/styles.css" rel="stylesheet" />
  9. <style>
  10. #chart {
  11. max-width: 480px;
  12. margin: 35px auto;
  13. padding: 0;
  14. }
  15. .actions {
  16. top: -10px;
  17. position: relative;
  18. z-index: 10;
  19. max-width: 400px;
  20. margin: 0 auto;
  21. }
  22. button {
  23. color: #fff;
  24. background: #20b2aa;
  25. padding: 5px 10px;
  26. margin: 2px;
  27. font-weight: bold;
  28. font-size: 13px;
  29. border-radius: 5px;
  30. }
  31. p {
  32. margin: 10px 0;
  33. }
  34. @media only screen and (max-width: 480px) {
  35. .actions {
  36. margin-top: 0;
  37. left: 0
  38. }
  39. }
  40. </style>
  41. <script>
  42. window.Promise ||
  43. document.write(
  44. '<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"><\/script>'
  45. )
  46. window.Promise ||
  47. document.write(
  48. '<script src="https://cdn.jsdelivr.net/npm/eligrey-classlist-js-polyfill@1.2.20171210/classList.min.js"><\/script>'
  49. )
  50. window.Promise ||
  51. document.write(
  52. '<script src="https://cdn.jsdelivr.net/npm/findindex_polyfill_mdn"><\/script>'
  53. )
  54. </script>
  55. <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
  56. </head>
  57. <body>
  58. <div>
  59. <div class="chart-wrap">
  60. <div id="chart"></div>
  61. </div>
  62. <div class="actions">
  63. <button
  64. id="add"
  65. >
  66. + ADD
  67. </button>
  68. <button
  69. id="remove"
  70. >
  71. - REMOVE
  72. </button>
  73. <button
  74. id="randomize"
  75. >
  76. RANDOMIZE
  77. </button>
  78. <button
  79. id="reset"
  80. >
  81. RESET
  82. </button>
  83. </div>
  84. </div>
  85. <script>
  86. var options = {
  87. series: [44, 55, 13, 33],
  88. chart: {
  89. width: 380,
  90. type: 'donut',
  91. },
  92. dataLabels: {
  93. enabled: false
  94. },
  95. responsive: [{
  96. breakpoint: 480,
  97. options: {
  98. chart: {
  99. width: 200
  100. },
  101. legend: {
  102. show: false
  103. }
  104. }
  105. }],
  106. legend: {
  107. position: 'right',
  108. offsetY: 0,
  109. height: 230,
  110. }
  111. };
  112. var chart = new ApexCharts(document.querySelector("#chart"), options);
  113. chart.render();
  114. function appendData() {
  115. var arr = chart.w.globals.series.slice()
  116. arr.push(Math.floor(Math.random() * (100 - 1 + 1)) + 1)
  117. return arr;
  118. }
  119. function removeData() {
  120. var arr = chart.w.globals.series.slice()
  121. arr.pop()
  122. return arr;
  123. }
  124. function randomize() {
  125. return chart.w.globals.series.map(function() {
  126. return Math.floor(Math.random() * (100 - 1 + 1)) + 1
  127. })
  128. }
  129. function reset() {
  130. return options.series
  131. }
  132. document.querySelector("#randomize").addEventListener("click", function() {
  133. chart.updateSeries(randomize())
  134. })
  135. document.querySelector("#add").addEventListener("click", function() {
  136. chart.updateSeries(appendData())
  137. })
  138. document.querySelector("#remove").addEventListener("click", function() {
  139. chart.updateSeries(removeData())
  140. })
  141. document.querySelector("#reset").addEventListener("click", function() {
  142. chart.updateSeries(reset())
  143. })
  144. </script>
  145. </body>
  146. </html>