stats.hbs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. {{#if error}}
  2. <div class="stats-error">
  3. <p>{{> icons/x}} {{error}}</p>
  4. <div class="stats-back-to-home">
  5. <a class="back-to-home" href="/">
  6. ← Back to homepage
  7. </a>
  8. </div>
  9. </div>
  10. {{else}}
  11. <div class="stats-info">
  12. <h2>
  13. Stats for:
  14. <a href="{{link.link.url}}" title="Short link">
  15. {{link.link.link}}
  16. </a>
  17. </h2>
  18. <p>{{link.target}}</p>
  19. </div>
  20. <main id="stats">
  21. <div class="stats-head">
  22. <p>
  23. Total views: <span class="total-number">{{link.visit_count}}</span>
  24. </p>
  25. <nav class="stats-nav">
  26. <button type="button" class="nav" data-period="year" onclick="changeStatsPeriod(event)">Year</button>
  27. <button type="button" class="nav" data-period="month" onclick="changeStatsPeriod(event)">Month</button>
  28. <button type="button" class="nav" data-period="week" onclick="changeStatsPeriod(event)">Week</button>
  29. <button type="button" class="nav" data-period="day" onclick="changeStatsPeriod(event)" disabled="true">Day</button>
  30. </nav>
  31. </div>
  32. <div class="stats-period">
  33. <h2 data-period="day"><span class="total-in-period">{{stats.lastDay.total}}</span> tracked visits in the last day.</h2>
  34. <h2 class="hidden" data-period="week"><span class="total-in-period">{{stats.lastWeek.total}}</span> tracked visits in the last week.</h2>
  35. <h2 class="hidden" data-period="month"><span class="total-in-period">{{stats.lastMonth.total}}</span> tracked visits in the last month.</h2>
  36. <h2 class="hidden" data-period="year"><span class="total-in-period">{{stats.lastYear.total}}</span> tracked visits in the last year.</h2>
  37. <p class="last-update">Last update at <span class="last-update-value" data-date="{{stats.updatedAt}}"></span>.</p>
  38. <canvas class="visits" height="350" data-period="day" data-data="{{json stats.lastDay.views}}"></canvas>
  39. <canvas class="visits hidden" height="350" data-period="week" data-data="{{json stats.lastWeek.views}}"></canvas>
  40. <canvas class="visits hidden" height="350" data-period="month" data-data="{{json stats.lastMonth.views}}"></canvas>
  41. <canvas class="visits hidden" height="350" data-period="year" data-data="{{json stats.lastYear.views}}"></canvas>
  42. <hr />
  43. <div class="stats-columns-wrapper">
  44. <div>
  45. <h2>Referrers.</h2>
  46. <canvas class="referrers" height="325" data-period="day" data-data="{{json stats.lastDay.stats.referrer}}"></canvas>
  47. <canvas class="referrers hidden" height="325" data-period="week" data-data="{{json stats.lastWeek.stats.referrer}}"></canvas>
  48. <canvas class="referrers hidden" height="325" data-period="month" data-data="{{json stats.lastMonth.stats.referrer}}"></canvas>
  49. <canvas class="referrers hidden" height="325" data-period="year" data-data="{{json stats.lastYear.stats.referrer}}"></canvas>
  50. </div>
  51. <div>
  52. <h2>Browsers.</h2>
  53. <canvas class="browsers" height="350" data-period="day" data-data="{{json stats.lastDay.stats.browser}}"></canvas>
  54. <canvas class="browsers hidden" height="350" data-period="week" data-data="{{json stats.lastWeek.stats.browser}}"></canvas>
  55. <canvas class="browsers hidden" height="350" data-period="month" data-data="{{json stats.lastMonth.stats.browser}}"></canvas>
  56. <canvas class="browsers hidden" height="350" data-period="year" data-data="{{json stats.lastYear.stats.browser}}"></canvas>
  57. </div>
  58. </div>
  59. <hr />
  60. <div class="stats-columns-wrapper">
  61. <div>
  62. <h2>Countries.</h2>
  63. <div id="map-tooltip"></div>
  64. <svg
  65. class="map"
  66. xmlns="http://www.w3.org/2000/svg"
  67. aria-label="world map"
  68. viewBox="{{map.viewBox}}"
  69. data-day="{{json stats.lastDay.stats.country}}"
  70. data-week="{{json stats.lastWeek.stats.country}}"
  71. data-month="{{json stats.lastMonth.stats.country}}"
  72. data-year="{{json stats.lastYear.stats.country}}"
  73. onmouseout="mapTooltipHoverOut()"
  74. onmousemove="mapTooltipHoverOver(event)"
  75. onpointerdown="mapTooltipHoverOver(event)"
  76. onpointerup="mapTooltipHoverOut()"
  77. >
  78. {{#each map.layers}}
  79. <path data-id="{{id}}" aria-label="{{name}}" d="{{d}}"></path>
  80. {{/each}}
  81. </svg>
  82. </div>
  83. <div>
  84. <h2>Operation systems.</h2>
  85. <canvas class="os" height="350" data-period="day" data-data="{{json stats.lastDay.stats.os}}"></canvas>
  86. <canvas class="os hidden" height="350" data-period="week" data-data="{{json stats.lastWeek.stats.os}}"></canvas>
  87. <canvas class="os hidden" height="350" data-period="month" data-data="{{json stats.lastMonth.stats.os}}"></canvas>
  88. <canvas class="os hidden" height="350" data-period="year" data-data="{{json stats.lastYear.stats.os}}"></canvas>
  89. </div>
  90. </div>
  91. </div>
  92. </main>
  93. <div class="stats-back-to-home">
  94. <a class="back-to-home" href="/">
  95. ← Back to homepage
  96. </a>
  97. </div>
  98. {{/if}}