sparklines.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  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>Sparklines</title>
  8. <link href="../../assets/styles.css" rel="stylesheet" />
  9. <style>
  10. .row {
  11. overflow: hidden;
  12. max-width: 890px;
  13. margin: 30px auto;
  14. display: flex;
  15. }
  16. .col-md-4 {
  17. width: 33.33%;
  18. padding: 0 25px;
  19. }
  20. table {
  21. width: 100%;
  22. }
  23. tbody tr {
  24. border-top: 1px solid #e7e7e7;
  25. }
  26. th {
  27. font-weight: bold;
  28. font-family: Helvetica;
  29. padding-bottom: 20px;
  30. }
  31. td, th {
  32. width: 25%;
  33. text-align: center;
  34. height: 65px;
  35. }
  36. td div {
  37. margin: 0 auto;
  38. }
  39. .left {
  40. float: left;
  41. }
  42. .right {
  43. float: right;
  44. }
  45. @media only screen and (max-width: 480px) {
  46. th:first-child, td:first-child {
  47. display: none;
  48. }
  49. .row {
  50. display: block;
  51. }
  52. .col-md-4 {
  53. padding: 0;
  54. width: 100%;
  55. }
  56. }
  57. </style>
  58. <script>
  59. window.Promise ||
  60. document.write(
  61. '<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"><\/script>'
  62. )
  63. window.Promise ||
  64. document.write(
  65. '<script src="https://cdn.jsdelivr.net/npm/eligrey-classlist-js-polyfill@1.2.20171210/classList.min.js"><\/script>'
  66. )
  67. window.Promise ||
  68. document.write(
  69. '<script src="https://cdn.jsdelivr.net/npm/findindex_polyfill_mdn"><\/script>'
  70. )
  71. </script>
  72. <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
  73. <script>
  74. window.Apex = {
  75. stroke: {
  76. width: 3
  77. },
  78. markers: {
  79. size: 0
  80. },
  81. tooltip: {
  82. fixed: {
  83. enabled: true,
  84. }
  85. }
  86. };
  87. var randomizeArray = function (arg) {
  88. var array = arg.slice();
  89. var currentIndex = array.length,
  90. temporaryValue, randomIndex;
  91. while (0 !== currentIndex) {
  92. randomIndex = Math.floor(Math.random() * currentIndex);
  93. currentIndex -= 1;
  94. temporaryValue = array[currentIndex];
  95. array[currentIndex] = array[randomIndex];
  96. array[randomIndex] = temporaryValue;
  97. }
  98. return array;
  99. }
  100. // data for the sparklines that appear below header area
  101. var sparklineData = [47, 45, 54, 38, 56, 24, 65, 31, 37, 39, 62, 51, 35, 41, 35, 27, 93, 53, 61, 27, 54, 43, 19, 46];
  102. </script>
  103. </head>
  104. <body>
  105. <div>
  106. <div class="row">
  107. <div class="col-md-4">
  108. <div id="chart-spark1"></div>
  109. </div>
  110. <div class="col-md-4">
  111. <div id="chart-spark2"></div>
  112. </div>
  113. <div class="col-md-4">
  114. <div id="chart-spark3"></div>
  115. </div>
  116. </div>
  117. <div class="row">
  118. <table>
  119. <thead>
  120. <th>Total Value</th>
  121. <th>Percentage of Portfolio</th>
  122. <th>Last 10 days</th>
  123. <th>Volume</th>
  124. </thead>
  125. <tbody>
  126. <tr>
  127. <td>$32,554</td>
  128. <td>15%</td>
  129. <td>
  130. <div id="chart-1"></div>
  131. </td>
  132. <td>
  133. <div id="chart-5"></div>
  134. </td>
  135. </tr>
  136. <tr>
  137. <td>$23,533</td>
  138. <td>7%</td>
  139. <td>
  140. <div id="chart-2"></div>
  141. </td>
  142. <td>
  143. <div id="chart-6"></div>
  144. </td>
  145. </tr>
  146. <tr>
  147. <td>$54,276</td>
  148. <td>9%</td>
  149. <td>
  150. <div id="chart-3"></div>
  151. </td>
  152. <td>
  153. <div id="chart-7"></div>
  154. </td>
  155. </tr>
  156. <tr>
  157. <td>$11,533</td>
  158. <td>2%</td>
  159. <td>
  160. <div id="chart-4"></div>
  161. </td>
  162. <td>
  163. <div id="chart-8"></div>
  164. </td>
  165. </tr>
  166. </tbody>
  167. </table>
  168. </div>
  169. </div>
  170. <script>
  171. var options = {
  172. series: [{
  173. data: randomizeArray(sparklineData)
  174. }],
  175. chart: {
  176. type: 'area',
  177. height: 160,
  178. sparkline: {
  179. enabled: true
  180. },
  181. },
  182. stroke: {
  183. curve: 'straight'
  184. },
  185. fill: {
  186. opacity: 0.3,
  187. },
  188. yaxis: {
  189. min: 0
  190. },
  191. colors: ['#DCE6EC'],
  192. title: {
  193. text: '$424,652',
  194. offsetX: 0,
  195. style: {
  196. fontSize: '24px',
  197. }
  198. },
  199. subtitle: {
  200. text: 'Sales',
  201. offsetX: 0,
  202. style: {
  203. fontSize: '14px',
  204. }
  205. }
  206. };
  207. var chart = new ApexCharts(document.querySelector("#chart-spark1"), options);
  208. chart.render();
  209. var optionsSpark2 = {
  210. series: [{
  211. data: randomizeArray(sparklineData)
  212. }],
  213. chart: {
  214. type: 'area',
  215. height: 160,
  216. sparkline: {
  217. enabled: true
  218. },
  219. },
  220. stroke: {
  221. curve: 'straight'
  222. },
  223. fill: {
  224. opacity: 0.3,
  225. },
  226. yaxis: {
  227. min: 0
  228. },
  229. colors: ['#DCE6EC'],
  230. title: {
  231. text: '$235,312',
  232. offsetX: 0,
  233. style: {
  234. fontSize: '24px',
  235. }
  236. },
  237. subtitle: {
  238. text: 'Expenses',
  239. offsetX: 0,
  240. style: {
  241. fontSize: '14px',
  242. }
  243. }
  244. };
  245. var chartSpark2 = new ApexCharts(document.querySelector("#chart-spark2"), optionsSpark2);
  246. chartSpark2.render();
  247. var optionsSpark3 = {
  248. series: [{
  249. data: randomizeArray(sparklineData)
  250. }],
  251. chart: {
  252. type: 'area',
  253. height: 160,
  254. sparkline: {
  255. enabled: true
  256. },
  257. },
  258. stroke: {
  259. curve: 'straight'
  260. },
  261. fill: {
  262. opacity: 0.3
  263. },
  264. xaxis: {
  265. crosshairs: {
  266. width: 1
  267. },
  268. },
  269. yaxis: {
  270. min: 0
  271. },
  272. title: {
  273. text: '$135,965',
  274. offsetX: 0,
  275. style: {
  276. fontSize: '24px',
  277. }
  278. },
  279. subtitle: {
  280. text: 'Profits',
  281. offsetX: 0,
  282. style: {
  283. fontSize: '14px',
  284. }
  285. }
  286. };
  287. var chartSpark3 = new ApexCharts(document.querySelector("#chart-spark3"), optionsSpark3);
  288. chartSpark3.render();
  289. var options1 = {
  290. series: [{
  291. data: [25, 66, 41, 89, 63, 25, 44, 12, 36, 9, 54]
  292. }],
  293. chart: {
  294. type: 'line',
  295. width: 100,
  296. height: 35,
  297. sparkline: {
  298. enabled: true
  299. }
  300. },
  301. tooltip: {
  302. fixed: {
  303. enabled: false
  304. },
  305. x: {
  306. show: false
  307. },
  308. y: {
  309. title: {
  310. formatter: function (seriesName) {
  311. return ''
  312. }
  313. }
  314. },
  315. marker: {
  316. show: false
  317. }
  318. }
  319. };
  320. var chart1 = new ApexCharts(document.querySelector("#chart-1"), options1);
  321. chart1.render();
  322. var options2 = {
  323. series: [{
  324. data: [12, 14, 2, 47, 42, 15, 47, 75, 65, 19, 14]
  325. }],
  326. chart: {
  327. type: 'line',
  328. width: 100,
  329. height: 35,
  330. sparkline: {
  331. enabled: true
  332. }
  333. },
  334. tooltip: {
  335. fixed: {
  336. enabled: false
  337. },
  338. x: {
  339. show: false
  340. },
  341. y: {
  342. title: {
  343. formatter: function (seriesName) {
  344. return ''
  345. }
  346. }
  347. },
  348. marker: {
  349. show: false
  350. }
  351. }
  352. };
  353. var chart2 = new ApexCharts(document.querySelector("#chart-2"), options2);
  354. chart2.render();
  355. var options3 = {
  356. series: [43, 32, 12, 9],
  357. chart: {
  358. type: 'pie',
  359. width: 40,
  360. height: 40,
  361. sparkline: {
  362. enabled: true
  363. }
  364. },
  365. stroke: {
  366. width: 1
  367. },
  368. tooltip: {
  369. fixed: {
  370. enabled: false
  371. },
  372. }
  373. };
  374. var chart3 = new ApexCharts(document.querySelector("#chart-3"), options3);
  375. chart3.render();
  376. var options4 = {
  377. series: [43, 32, 12, 9],
  378. chart: {
  379. type: 'donut',
  380. width: 40,
  381. height: 40,
  382. sparkline: {
  383. enabled: true
  384. }
  385. },
  386. stroke: {
  387. width: 1
  388. },
  389. tooltip: {
  390. fixed: {
  391. enabled: false
  392. },
  393. }
  394. };
  395. var chart4 = new ApexCharts(document.querySelector("#chart-4"), options4);
  396. chart4.render();
  397. var options5 = {
  398. series: [{
  399. data: [25, 66, 41, 89, 63, 25, 44, 12, 36, 9, 54]
  400. }],
  401. chart: {
  402. type: 'bar',
  403. width: 100,
  404. height: 35,
  405. sparkline: {
  406. enabled: true
  407. }
  408. },
  409. plotOptions: {
  410. bar: {
  411. columnWidth: '80%'
  412. }
  413. },
  414. labels: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
  415. xaxis: {
  416. crosshairs: {
  417. width: 1
  418. },
  419. },
  420. tooltip: {
  421. fixed: {
  422. enabled: false
  423. },
  424. x: {
  425. show: false
  426. },
  427. y: {
  428. title: {
  429. formatter: function (seriesName) {
  430. return ''
  431. }
  432. }
  433. },
  434. marker: {
  435. show: false
  436. }
  437. }
  438. };
  439. var chart5 = new ApexCharts(document.querySelector("#chart-5"), options5);
  440. chart5.render();
  441. var options6 = {
  442. series: [{
  443. data: [12, 14, 2, 47, 42, 15, 47, 75, 65, 19, 14]
  444. }],
  445. chart: {
  446. type: 'bar',
  447. width: 100,
  448. height: 35,
  449. sparkline: {
  450. enabled: true
  451. }
  452. },
  453. plotOptions: {
  454. bar: {
  455. columnWidth: '80%'
  456. }
  457. },
  458. labels: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
  459. xaxis: {
  460. crosshairs: {
  461. width: 1
  462. },
  463. },
  464. tooltip: {
  465. fixed: {
  466. enabled: false
  467. },
  468. x: {
  469. show: false
  470. },
  471. y: {
  472. title: {
  473. formatter: function (seriesName) {
  474. return ''
  475. }
  476. }
  477. },
  478. marker: {
  479. show: false
  480. }
  481. }
  482. };
  483. var chart6 = new ApexCharts(document.querySelector("#chart-6"), options6);
  484. chart6.render();
  485. var options7 = {
  486. series: [45],
  487. chart: {
  488. type: 'radialBar',
  489. width: 50,
  490. height: 50,
  491. sparkline: {
  492. enabled: true
  493. }
  494. },
  495. dataLabels: {
  496. enabled: false
  497. },
  498. plotOptions: {
  499. radialBar: {
  500. hollow: {
  501. margin: 0,
  502. size: '50%'
  503. },
  504. track: {
  505. margin: 0
  506. },
  507. dataLabels: {
  508. show: false
  509. }
  510. }
  511. }
  512. };
  513. var chart7 = new ApexCharts(document.querySelector("#chart-7"), options7);
  514. chart7.render();
  515. var options8 = {
  516. series: [53, 67],
  517. chart: {
  518. type: 'radialBar',
  519. width: 40,
  520. height: 40,
  521. sparkline: {
  522. enabled: true
  523. }
  524. },
  525. dataLabels: {
  526. enabled: false
  527. },
  528. plotOptions: {
  529. radialBar: {
  530. hollow: {
  531. margin: 0,
  532. size: '50%'
  533. },
  534. track: {
  535. margin: 1
  536. },
  537. dataLabels: {
  538. show: false
  539. }
  540. }
  541. }
  542. };
  543. var chart8 = new ApexCharts(document.querySelector("#chart-8"), options8);
  544. chart8.render();
  545. </script>
  546. </body>
  547. </html>