compare.html 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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>Compare Members — 119th Congress</title>
  7. <link rel="stylesheet" href="app.css">
  8. <script src="vendor/chart.umd.min.js" defer></script>
  9. <script src="compare.js" defer></script>
  10. </head>
  11. <body>
  12. <noscript>This dashboard requires JavaScript.</noscript>
  13. <div id="polisci-root" data-base="./data/">
  14. <!-- Header -->
  15. <header class="ps-header">
  16. <h1>Compare Members — 119th Congress</h1>
  17. <nav class="ps-nav"><a href="app.html">Member</a> · <a href="compare.html" aria-current="page">Compare</a> · <a href="ranking.html">Rankings</a></nav>
  18. <p class="ps-subtitle">Overlay roll-call voting metrics for up to six members of the 119th Congress.</p>
  19. </header>
  20. <div class="ps-layout">
  21. <!-- Sidebar -->
  22. <aside class="sidebar" id="sidebar">
  23. <button type="button" class="sidebar-toggle" id="sidebar-toggle" aria-expanded="true" aria-controls="sidebar-body">Filters</button>
  24. <div class="sidebar-body" id="sidebar-body">
  25. <fieldset class="filter-group" id="filter-chamber">
  26. <legend>Chamber</legend>
  27. <label><input type="checkbox" name="chamber" value="H" checked> House</label>
  28. <label><input type="checkbox" name="chamber" value="S" checked> Senate</label>
  29. </fieldset>
  30. <fieldset class="filter-group" id="filter-party">
  31. <legend>Party</legend>
  32. <label><input type="checkbox" name="party" value="R" checked> Republican</label>
  33. <label><input type="checkbox" name="party" value="D" checked> Democrat</label>
  34. <label><input type="checkbox" name="party" value="I" checked> Independent</label>
  35. </fieldset>
  36. <fieldset class="filter-group" id="filter-state">
  37. <legend>State</legend>
  38. <select multiple id="filter-state-select" size="8" aria-label="State filter"></select>
  39. </fieldset>
  40. <button type="button" id="filter-reset" class="btn-reset">Reset filters</button>
  41. <p class="hint">Filters apply to the member search.</p>
  42. </div>
  43. </aside>
  44. <!-- Main -->
  45. <main class="ps-main">
  46. <div class="search-wrap">
  47. <label for="member-search" class="visually-hidden">Search members</label>
  48. <input type="search" id="member-search" placeholder="Search by name or initials (e.g., AOC)…" autocomplete="off" role="combobox" aria-controls="member-results" aria-expanded="false">
  49. <ul id="member-results" role="listbox" class="member-results is-hidden"></ul>
  50. </div>
  51. <section class="compare-pills-section">
  52. <h2 class="compare-pills-title">Selected members</h2>
  53. <ul id="selected-pills" class="selected-pills" aria-label="Selected members"></ul>
  54. <p id="compare-empty-hint" class="hint">Pick up to 6 members to compare. Click a pill to open the member's full dashboard in a new tab.</p>
  55. </section>
  56. <div class="align-switcher-wrap">
  57. <label for="align-class-switcher">Alignment class:</label>
  58. <select id="align-class-switcher">
  59. <option value="Helped Republicans" selected>Helped Republicans</option>
  60. <option value="Helped Democrats">Helped Democrats</option>
  61. <option value="Helped Both">Helped Both</option>
  62. <option value="Helped Neither">Helped Neither</option>
  63. </select>
  64. </div>
  65. <!-- Charts grid -->
  66. <section class="charts-grid">
  67. <figure class="chart-frame chart-wide">
  68. <figcaption>Alignment over time (selected class)</figcaption>
  69. <div class="chart-canvas-wrap"><canvas id="cmp-chart-alignment-time"></canvas></div>
  70. </figure>
  71. <figure class="chart-frame chart-wide">
  72. <figcaption>Voted against own party — monthly (proxy: "Helped Neither" rate; see NOTES.md item 6)</figcaption>
  73. <div class="chart-canvas-wrap"><canvas id="cmp-chart-against-own"></canvas></div>
  74. </figure>
  75. <figure class="chart-frame chart-wide">
  76. <figcaption>KPI comparison</figcaption>
  77. <div class="chart-canvas-wrap"><canvas id="cmp-chart-kpi"></canvas></div>
  78. </figure>
  79. <figure class="chart-frame">
  80. <figcaption>Defection scatter (% against GOP vs % against Dem; color = party)</figcaption>
  81. <div class="chart-canvas-wrap"><canvas id="cmp-chart-defection"></canvas></div>
  82. </figure>
  83. <figure class="chart-frame">
  84. <figcaption>Vote distribution</figcaption>
  85. <div class="chart-canvas-wrap"><canvas id="cmp-chart-vote-dist"></canvas></div>
  86. </figure>
  87. </section>
  88. <footer class="ps-footer">
  89. <p>Source data:
  90. <a href="https://clerk.house.gov/Votes" target="_blank" rel="noopener noreferrer">House Clerk roll-call XML</a> ·
  91. <a href="https://www.senate.gov/legislative/votes_new.htm" target="_blank" rel="noopener noreferrer">Senate roll-call XML</a> ·
  92. <a href="Methodology.md" target="_blank" rel="noopener">Methodology</a>
  93. </p>
  94. <p>Last regenerated: <span id="last-generated">(populated)</span></p>
  95. </footer>
  96. </main>
  97. </div>
  98. </div>
  99. </body>
  100. </html>