index.html 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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" />
  6. <title>codegraph telemetry</title>
  7. <link rel="stylesheet" href="/styles.css" />
  8. </head>
  9. <body>
  10. <header class="masthead">
  11. <div>
  12. <h1>codegraph telemetry</h1>
  13. <p class="subtitle">Anonymous usage from the public engine, straight out of D1.</p>
  14. </div>
  15. <form method="post" action="/logout">
  16. <button type="submit" class="secondary">Sign out</button>
  17. </form>
  18. </header>
  19. <!-- One filter row for the whole page: every panel below is drawn against the
  20. range chosen here, and no panel carries a time control of its own. The
  21. panels themselves are built from the registry in public/panels.js. -->
  22. <section class="filters" id="filters" aria-label="Time range">
  23. <div class="filter-group" data-role="presets"></div>
  24. <div class="filter-group custom-range">
  25. <label for="custom-from">From</label>
  26. <input type="date" id="custom-from" data-role="custom-from" />
  27. <label for="custom-to">To</label>
  28. <input type="date" id="custom-to" data-role="custom-to" />
  29. <button type="button" class="secondary" data-role="custom-apply">Apply</button>
  30. </div>
  31. <div class="filter-group filter-end">
  32. <button type="button" class="secondary" data-role="refresh">Refresh</button>
  33. </div>
  34. <p class="filter-status">
  35. <span id="range-summary">Loading…</span>
  36. <span class="dot" aria-hidden="true">·</span>
  37. <span id="data-through"></span>
  38. <span class="dot" aria-hidden="true">·</span>
  39. <span id="refreshed-at"></span>
  40. </p>
  41. </section>
  42. <main class="grid" id="grid"></main>
  43. <script src="/vendor/chart.umd.js"></script>
  44. <script type="module" src="/app.js"></script>
  45. </body>
  46. </html>