vision preview on vision page

4402e76 · gmorell · 2022-08-03 00:45

12 files +83 -20

Files changed

modified apps/room_sanctum/assets/js/app.js
+0 −1
@@ -50,7 +50,6 @@ Hooks.mkMap = {
50 50 var marker = L.centerMarker(map).on("newposition", function() {
51 51 var latlng = marker.getLatLng()
52 52 console.log("New position: " + latlng.lat + ", " + latlng.lng);
53 − view.pushEvent("foofofo")
54 53 document.getElementById("foci-form").dispatchEvent(
55 54 new Event("update", {latlng: latlng})
56 55 )
modified apps/room_sanctum/lib/room_sanctum_web/live/cfg_vision_live/show.ex
+35 −8
@@ -12,19 +12,40 @@ defmodule RoomSanctumWeb.VisionLive.Show do
12 12 @impl true
13 13 def handle_params(%{"id" => id}, _, socket) do
14 14 {:noreply,
15 − socket
16 − |> assign(:page_title, page_title(socket.assigns.live_action))
17 − |> assign(:vision, Configuration.get_vision!(id))
18 − |> assign(:vision_id, id)
19 − |> assign(:preview, [])
20 − |> assign(:queries, [])
15 + socket
16 + |> assign(:page_title, page_title(socket.assigns.live_action))
17 + |> assign(:vision, Configuration.get_vision!(id))
18 + |> assign(:vision_id, id)
19 + |> assign(:preview, [])
20 + |> assign(:queries, [])
21 + |> assign(:preview_mode, :basic)
21 22 }
22 23 end
23 24
24 25 def handle_info(:update, socket) do
25 26 Process.send_after(self(), :update, 15000)
26 27 %{data: data, queries: queries} = RoomSanctum.Worker.Vision.get_state(socket.assigns.vision_id)
27 − {:noreply, socket |> assign(:preview, data) |> assign(:queries, queries)}
28 + {
29 + :noreply,
30 + socket
31 + |> assign(:preview, data)
32 + |> assign(:queries, queries)
33 + }
34 + end
35 +
36 + defp do_toggle(state) do
37 + case state do
38 + :basic -> :raw
39 + :raw -> :basic
40 + end
41 + end
42 +
43 + def handle_event("toggle-preview-mode", _params, socket) do
44 + {
45 + :noreply,
46 + socket
47 + |> assign(:preview_mode, do_toggle(socket.assigns.preview_mode))
48 + }
28 49 end
29 50
30 51 defp page_title(:show), do: "Vision Detail"
@@ -73,10 +94,16 @@ defmodule RoomSanctumWeb.VisionLive.Show do
73 94
74 95
75 96 defp get_query_data_icon(item, queries) do
76 − as_map = queries |> Enum.map(fn x -> {x.id, x} end) |> Enum.into(%{})
97 + as_map = queries
98 + |> Enum.map(fn x -> {x.id, x} end)
99 + |> Enum.into(%{})
77 100 case Map.get(as_map, item) do
78 101 nil -> ""
79 102 _val -> icon(_val.source.type)
80 103 end
81 104 end
105 +
106 + def preview(condensed, {id, type}) do
107 + %{data: condensed, id: id, type: type}
108 + end
82 109 end
modified apps/room_sanctum/lib/room_sanctum_web/live/cfg_vision_live/show.html.heex
+47 −10
@@ -78,19 +78,56 @@
78 78 </div>
79 79 <div class="card card-compact w-1/2 bg-base-100 shadow-xl m-2">
80 80 <div class="card-body">
81 − <h3 class="card-title">Preview</h3>
82 − <%= for {k, p} <- @preview do %>
81 +
83 82 <div class="flex">
84 − <div class="w-16">
85 − <i class={"fas fa-fw fa-2xl #{icon(k |> elem(1))}"}></i>
83 + <div class="flex-auto basis-4/5">
84 + <h3 class="card-title w-full">Preview</h3>
85 + </div>
86 + <div class="flex-1 w-3/4">
87 + &nbsp;
86 88 </div>
87 − <div class="w-7/8">
88 − <span class="text-secondary font-bold"><%= get_query_data(k |> elem(0), @queries, 64) %></span>
89 − <pre><%= condense(k, p) |> Poison.encode!(pretty: true)%></pre>
89 + <div class="flex-none w-20">
90 + <button class="btn btn-secondary btn-sm" phx-click="toggle-preview-mode"><%= @preview_mode %></button>
90 91 </div>
91 92 </div>
92 − <% end %>
93 − </div>
94 − </div>
93 + <%= case @preview_mode do %>
94 + <%= :basic -> %>
95 + <%= for {k, p} <- @preview do %>
96 + <div class="flex gap-2">
97 + <i class={"fas fa-fw fa-xl #{icon(k |> elem(1))}"}></i>
98 + <span class="text-secondary font-bold"><%= get_query_data(k |> elem(0), @queries, 64) %></span>
99 + </div>
100 + <%= case k do %>
101 + <%= {_, :gtfs} -> %> <.p_gtfs entries={condense(k, p) |> preview(k)}>
102 + </
103 + .p_gtfs>
104 + <%= {_, :gbfs} -> %> <.p_gbfs entries={condense(k, p) |> preview(k)}>
105 + </
106 + .p_gbfs>
107 + <%= {_, :tidal} -> %> <.p_tidal entries={condense(k, p) |> preview(k)}>
108 + </
109 + .p_tidal>
110 + <%= {_, :weather} -> %> <.p_weather entries={condense(k, p) |> preview(k)}>
111 +</.p_weather>
112 +<%= {_, :aqi} -> %> <.p_aqi entries={condense(k, p) |> preview(k)}> </.p_aqi>
113 +<%= {_, :ephem} -> %> <.p_ephem entries={condense(k, p) |> preview(k)}> </.p_ephem>
114 +<%= {_, :calendar} -> %> <.p_calendar entries={condense(k, p) |> preview(k)}> </.p_calendar>
115 +<% end %>
116 + <% end %>
117 +<%= :raw -> %>
118 +<%= for {k, p} <- @preview do %>
119 +<div class="flex">
120 + <div class="w-16">
121 + <i class={"fas fa-fw fa-2xl #{icon(k |> elem(1))}"}></i>
122 + </div>
123 + <div class="w-7/8">
124 + <span class="text-secondary font-bold"><%= get_query_data(k |> elem(0), @queries, 64) %></span>
125 + <pre><%= condense(k, p) |> Poison.encode!(pretty: true)%></pre>
95 126 </div>
96 127 </div>
128 +<% end %>
129 + <% end %>
130 +</div>
131 +</div>
132 +</div>
133 +</div>
modified apps/room_sanctum/lib/room_sanctum_web/live/live_preview.ex
+1 −1
@@ -79,7 +79,7 @@ defmodule RoomSanctumWeb.LivePreview do
79 79 <p><i class="fa-solid fa-1"></i> <i class="fa-solid fa-arrows-up-to-line"></i>: @ <%= e.first_h %></p>
80 80 <p><i class="fa-solid fa-2"></i> <i class="fa-solid fa-arrows-down-to-line"></i>: @ <%= e.second_l %></p>
81 81 <%= if e |> Map.get :second_h do %>
82 − <p><i class="fa-solid fa-2"></i> <i class="fa-solid fa-arrows-up-to-line"></i>: @ <%= e.first_l %></p>
82 + <p><i class="fa-solid fa-2"></i> <i class="fa-solid fa-arrows-up-to-line"></i>: @ <%= e.second_h %></p>
83 83 <% end %>
84 84 </div>
85 85 </div>

Parents: 31c5c5c