theenglishway (time) 4 лет назад
Родитель
Сommit
58aba1bc6b
2 измененных файлов с 44 добавлено и 1 удалено
  1. 13 1
      lib/vaccins_web/live/index.ex
  2. 31 0
      lib/vaccins_web/live/index_live.html.leex

+ 13 - 1
lib/vaccins_web/live/index.ex

@@ -11,6 +11,7 @@ defmodule VaccinsWeb.IndexLive do
     {:ok,
      socket
      |> assign(
+       noob_mode: true,
        is_local?: is_local?,
        locations: locations,
        locations_with_early_slots: MapSet.new(),
@@ -31,7 +32,10 @@ defmodule VaccinsWeb.IndexLive do
   end
 
   @impl true
-  def handle_params(%{}, _url, socket), do: {:noreply, socket}
+  def handle_params(params, _url, socket) when params == %{}, do: {:noreply, socket}
+
+  def handle_params(%{"noob" => _}, _url, socket),
+    do: {:noreply, socket |> assign(noob_mode: true)}
 
   @impl true
   def handle_event("add_location", %{"location_raw" => params}, socket) do
@@ -53,6 +57,14 @@ defmodule VaccinsWeb.IndexLive do
   def handle_event("toggle_form", _, socket = %{assigns: %{display_cs: display}}),
     do: {:noreply, socket |> assign(display_cs: not display)}
 
+  def handle_event("trigger_noob_mode", _, socket = %{assigns: %{noob_mode: true}}),
+    do:
+      {:noreply,
+       socket |> assign(noob_mode: false) |> push_patch(to: Routes.index_path(socket, :index))}
+
+  def handle_event("trigger_noob_mode", _, socket = %{assigns: %{noob_mode: false}}),
+    do: {:noreply, socket |> push_patch(to: Routes.index_path(socket, :index, noob: true))}
+
   @impl true
   def handle_info({:query_sent, id, ref}, socket = %{assigns: %{pending: pending}}) do
     {:noreply, socket |> assign(pending: pending |> Map.put(ref, id))}

+ 31 - 0
lib/vaccins_web/live/index_live.html.leex

@@ -1,3 +1,34 @@
+<%= if @noob_mode do %>
+  <header>
+    <h1>Bienvenue !</h1>
+    <p>Depuis le 12 mai, tous les adultes majeurs peuvent être vaccinés quel que soit leur âge, s'ils
+    ont pris RDV dans un centre moins de 24h en avance.. ce qui est assez compliqué à obtenir, même en utilisant des sites
+    comme <a href="https://vitemadose.covidtracker.fr/">ViteMaDose</a>.</p>
+    <p>Cette page vous aidera à trouver un créneau, car elle affiche presque en temps réel les disponibilités d'un
+    certain nombre de centres qui vaccinent
+    avec Pfizer ou Moderna (les seuls vaccins administrables aux moins de 50 ans),
+    choisis sur Doctolib par votre serviteur. La page est rafraichie toutes les 5 secondes,
+    et les centres qui ont des créneaux apparaissent toujours en premier.</p>
+    <p>Vu la demande, il faut être <em>TRÈS</em> réactif lorsque apparait le message "des dispos sous 24h"
+    au niveau d'un centre.</p>
+    <p>Quand ça arrive il faut vous préparer à suivre le processus suivant à toute vitesse :  </p>
+    <ol>
+      <li>Cliquer sur le lien "Résa." qui vous emmène sur la page Doctolib</li>
+      <li>Choisir "1ere injection Pfizer" ou "1ere injection Moderna"</li>
+      <li>Cliquer très vite sur le créneau disponible (il aura peut-être déjà disparu)</li>
+      <li>Choisir très vite un créneau pour la 2e injection (qui peut être changé après coup)</li>
+      <li>... là vous pouvez normalement respirer, vous avez le créneau et il vous reste à rentrer vos infos d'identité</li>
+    </ol>
+    <p>Puisqu'il faut faire tout ça en moins de 5 secondes, je vous conseille de le faire
+    sur un ordinateur plutôt que sur téléphone portable.</p>
+    <p>Cette page restera aussi simple que possible sans prétention à une qualité professionnelle,
+    parce qu'il faut être fier d'être des amateurs.</p>
+    <button phx-click="trigger_noob_mode">J'ai compris</button>
+  </header>
+<% else %>
+  <button phx-click="trigger_noob_mode">Aide</button>
+<% end %>
+
 <button phx-click="trigger_all">Tout rafraîchir</button>
 <%= if @is_local? do %><button phx-click="reload_file">Recharger le fichier</button>
 <button phx-click="toggle_form">Montrer le formulaire (ou pas)</button><% end %>