index_live.html.leex 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <%= if @noob_mode do %>
  2. <header>
  3. <h1>Bienvenue !</h1>
  4. <p>Depuis le 12 mai, tous les adultes majeurs peuvent être vaccinés quel que soit leur âge, s'ils
  5. ont pris RDV dans un centre moins de 24h en avance.. ce qui est assez compliqué à obtenir, même en utilisant des sites
  6. comme <a href="https://vitemadose.covidtracker.fr/">ViteMaDose</a>.</p>
  7. <p>Cette page vous aidera à trouver un créneau, car elle affiche presque en temps réel les disponibilités d'un
  8. certain nombre de centres qui vaccinent
  9. avec Pfizer ou Moderna (les seuls vaccins administrables aux moins de 50 ans),
  10. choisis sur Doctolib par votre serviteur. La page est rafraichie toutes les 5 secondes,
  11. et les centres qui ont des créneaux apparaissent toujours en premier.</p>
  12. <p>Vu la demande, il faut être <em>TRÈS</em> réactif lorsque apparait le message "des dispos sous 24h"
  13. au niveau d'un centre.</p>
  14. <p>Quand ça arrive il faut vous préparer à suivre le processus suivant à toute vitesse : </p>
  15. <ol>
  16. <li>Cliquer sur le lien "RDV" qui vous emmène sur la page Doctolib</li>
  17. <li>Choisir "1ere injection Pfizer" ou "1ere injection Moderna"</li>
  18. <li>Cliquer très vite sur le créneau disponible (il aura peut-être déjà disparu)</li>
  19. <li>Choisir très vite un créneau pour la 2e injection (qui peut être changé après coup)</li>
  20. <li>... là vous pouvez normalement respirer, vous avez le créneau et il vous reste à rentrer vos infos d'identité</li>
  21. </ol>
  22. <p>Puisqu'il faut faire tout ça en moins de 5 secondes, je vous conseille de le faire
  23. sur un ordinateur plutôt que sur téléphone portable. Et vous aurez sûrement plus de chances
  24. de choper un créneau en pleine journée en pleine semaine (quand les centres font leurs mises à jour)
  25. que le soir ou le week-end.</p>
  26. <p>Cette page restera aussi simple que possible sans prétention à une qualité professionnelle,
  27. parce qu'il faut être fier d'être des amateurs.</p>
  28. <button phx-click="trigger_noob_mode">Faire disparaitre ce message</button>
  29. </header>
  30. <% else %>
  31. <button phx-click="trigger_noob_mode">Aide</button>
  32. <% end %>
  33. <%= if @is_local? do %><button phx-click="reload_file">Recharger le fichier</button>
  34. <button phx-click="toggle_form">Montrer le formulaire (ou pas)</button><% end %>
  35. <%= if @display_cs do %>
  36. <%= f = form_for @location_cs, "#", [phx_submit: :add_location] %>
  37. <%= label f, :name %>
  38. <%= text_input f, :name %>
  39. <%= error_tag f, :name %>
  40. <%= label f, :location %>
  41. <%= text_input f, :location %>
  42. <%= error_tag f, :location %>
  43. <%= label f, :geographic_area %>
  44. <%= text_input f, :geographic_area %>
  45. <%= error_tag f, :geographic_area %>
  46. <%= label f, :booking_page %>
  47. <%= url_input f, :booking_page %>
  48. <%= error_tag f, :booking_page %>
  49. <%= label f, :raw_query %>
  50. <%= url_input f, :raw_query %>
  51. <%= error_tag f, :raw_query %>
  52. <%= submit "send" %>
  53. </form>
  54. <% end %>
  55. <%= f = form_for :areas_filter, "#", [phx_change: :areas_filter_change] %>
  56. <%= label f, :areas, "Filtrer par zone géographique" %>
  57. <%= multiple_select f, :areas, @all_areas |> Enum.map(& {&1, &1}), selected: @area_filters |> MapSet.to_list %>
  58. </form>
  59. <table class="locations-list">
  60. <thead>
  61. <tr><%= VaccinsWeb.LocationComponent.render_table_header(@is_local?) %></tr>
  62. </thead>
  63. <tbody>
  64. <%= for l <- assigns |> locations_by_availability |> filter(assigns) do %>
  65. <tr><%= live_component @socket, VaccinsWeb.LocationComponent, id: l.id, location: l, render_as: :table_row, is_local?: @is_local? %></tr>
  66. <% end %>
  67. </tbody>
  68. </table>