device naming displayed everywhere, index ui cleanup/improvements

472d3f8 · gmorell · 2023-09-22 04:41

16 files +32 -79

Files changed

modified lib/lambent_ex_web/components/layouts/app.html.heex
+5 −1
@@ -42,7 +42,11 @@
42 42 <a class="float-right text-primary hover:text-accent" href="#help-modal">
43 43 <i class="fa-solid fa-circle-question fa-3x"></i>
44 44 </a>
45 − <h1 class="text-5xl font-build text-center lg:text-left">LambentEx</h1>
45 + <h1 class="text-5xl font-build text-center lg:text-left">
46 + <.link patch={~p"/"}>
47 + LambentEx
48 + </.link>
49 + </h1>
46 50 </div>
47 51 <.flash kind={:info} title="Success!" flash={@flash} />
48 52 <.flash kind={:error} title="Error!" flash={@flash} />
modified lib/lambent_ex_web/live/devices/index.ex
+0 −1
@@ -131,7 +131,6 @@ defmodule LambentExWeb.DevicesLive.Index do
131 131 Map.has_key?(map, "ip") -> Map.get(map, "ip") |> Tuple.to_list() |> Enum.join(".")
132 132 Map.has_key?(map, "POWER") -> "MQTT"
133 133 end
134 −
135 134 end
136 135
137 136 defp options() do
modified lib/lambent_ex_web/live/index/index.ex
+6 −7
@@ -41,9 +41,9 @@ defmodule LambentExWeb.IndexLive.Index do
41 41 {:noreply, socket |> assign(:links, socket.assigns.links |> Map.put(link[:name], link))}
42 42 end
43 43
44 − def handle_info({:devices_pub, device}, socket) do
44 + def handle_info({:devices_pub, devices}, socket) do
45 45 {:noreply,
46 − socket |> assign(:devices, socket.assigns.devices |> Map.put(device[:mac], device))}
46 + socket |> assign(:devices, socket.assigns.devices |> Map.merge(devices))}
47 47 end
48 48
49 49 def handle_event("selectm", %{"name" => name}, socket) do
@@ -55,7 +55,6 @@ defmodule LambentExWeb.IndexLive.Index do
55 55 end
56 56
57 57 def handle_event("selectd", %{"name" => name}, socket) do
58 − IO.inspect(Enum.member?(socket.assigns.selected_d, name))
59 58 if Enum.member?(socket.assigns.selected_d, name) do
60 59 {:noreply, socket |> assign(:selected_d, socket.assigns.selected_d |> List.delete(name))}
61 60 else
@@ -70,14 +69,14 @@ defmodule LambentExWeb.IndexLive.Index do
70 69 end
71 70
72 71 def find_unlinked_machines(links, machines) do
73 − used_machines = links |> Map.values |> Enum.filter(fn x -> x.enabled end) |> Enum.map(fn x -> x.source end) |> Enum.uniq |> MapSet.new |> IO.inspect
74 − machine_ids = machines |> Map.values |> Enum.map(fn x -> x.id end) |> MapSet.new |> IO.inspect
72 + used_machines = links |> Map.values |> Enum.filter(fn x -> x.enabled end) |> Enum.map(fn x -> x.source end) |> Enum.uniq |> MapSet.new
73 + machine_ids = machines |> Map.values |> Enum.map(fn x -> x.id end) |> MapSet.new
75 74 MapSet.difference(machine_ids, used_machines)
76 75 end
77 76
78 77 def find_unlinked_devices(links, devices) do
79 78 used_sources = links |> Map.values |> Enum.map(fn x -> x.target end) |> MapSet.new
80 −# device_ids = devices |> Map.values |> Enum.map(fn x -> x.id end) |> MapSet.new
81 − ["fake4", "fake5", "fake6"]
79 + device_ids = devices |> Map.keys |> MapSet.new
80 + MapSet.difference(device_ids, used_sources)
82 81 end
83 82 end
modified lib/lambent_ex_web/live/index/index.html.heex
+13 −29
@@ -3,60 +3,44 @@
3 3 <div class="font-bold text-xl">Actively Linked Machines and Devices </div>
4 4 <%= for {source, links} <- @links |> group_links do %>
5 5 <div class="flex justify-between">
6 − <div>
7 − <div class="stats shadow bg-secondary text-secondary-content">
8 − <div class="stat">
9 − <div class="stat-figure text-primary">
10 −
11 − </div>
12 − <div class="stat-title"></div>
13 − <div class="stat-value"><%= source %></div>
14 − <div class="stat-desc"></div>
15 − </div>
16 − </div>
6 + <div class="btn btn-xl btn-secondary">
7 + <%= source %>
17 8 </div>
18 − <div> &rarr;</div>
9 + <div><i class="fa-solid fa-arrow-right fa-2x"></i></div>
19 10 <div>
20 11 <%= for l <- links do %>
21 − <span class="btn btn-xl btn-secondary"><%= l.target %></span>
12 + <span class="btn btn-xl btn-secondary"><%= @devices[l.target]["name"] %></span>
22 13 <% end %>
23 14 </div>
24 15 </div>
25 16 <% end %>
26 17 </div>
27 − <hr>
18 + <hr class="my-1">
28 19 <div class="flex justify-between">
29 20 <div>
30 21 <div class="font-bold text-xl">Unlinked Machines </div>
31 22 <%= for m <- find_unlinked_machines(@links, @machines) do %>
32 − <div class={if @selected_m == m do "stats shadow bg-primary text-primary-content" else "stats shadow bg-secondary text-secondary-content" end} phx-click="selectm" phx-value-name={m}>
33 − <div class="stat">
34 − <div class="stat-figure text-primary">
35 −
36 − </div>
37 − <div class="stat-title"></div>
38 − <div class="stat-value"><%= m %></div>
39 − <div class="stat-desc"></div>
40 − </div>
23 + <div class={if @selected_m == m do "btn btn-xl btn-primary" else "btn btn-xl btn-secondary" end} phx-click="selectm" phx-value-name={m}>
24 + <%= m %>
41 25 </div>
42 26 <% end %>
43 27 </div>
44 28 <div>
45 − <%= if !is_nil(@selected_m) and !Enum.empty?(@selected_d) do %>
46 − <span class="btn btn-accent btn-lg">LINK IT</span>
47 − <% end %>
29 + &nbsp;
48 30 </div>
49 31 <div>
50 32 <div class="font-bold text-xl">Unlinked Devices </div>
51 33 <%= for d <- find_unlinked_devices(@links, @devices) do %>
52 34 <%= if Enum.member?(@selected_d, d) do %>
53 − <span class="btn btn-xl btn-primary" phx-click="selectd" phx-value-name={d}><%= d %></span>
35 + <span class="btn btn-xl btn-primary" phx-click="selectd" phx-value-name={d}><%= @devices[d]["name"] %></span>
54 36 <% else %>
55 − <span class="btn btn-xl btn-secondary" phx-click="selectd" phx-value-name={d}><%= d %></span>
37 + <span class="btn btn-xl btn-secondary" phx-click="selectd" phx-value-name={d}><%= @devices[d]["name"] %></span>
56 38 <% end %>
57 39
58 40 <% end %>
59 41 </div>
60 42 </div>
61 −
43 + <%= if !is_nil(@selected_m) and !Enum.empty?(@selected_d) do %>
44 + <span class="btn btn-accent btn-lg my-1">LINK EM'</span>
45 + <% end %>
62 46 </div>
modified lib/lambent_ex_web/live/links/bulk_form_component.ex
+2 −33
@@ -51,42 +51,11 @@ defmodule LambentEx.LinksLive.BulkFormComponent do
51 51
52 52 defp ipp(ip), do: ip |> Tuple.to_list() |> Enum.join(".")
53 53
54 − def for_selectd(array) do
55 − array
56 − |> Enum.map(fn {iface, entries} ->
57 − entries
58 − |> Enum.map(fn {k, v} ->
59 − if v["name"] == nil do
60 − {v["ip"] |> ipp, k}
61 − else
62 − {v["name"], k}
63 − end
64 − end)
65 − end)
66 − |> List.flatten()
67 − |> Enum.sort_by(fn {k, v} -> k end)
68 54
69 − # |> IO.inspect
55 + def for_selectd(map) do
56 + map |> Enum.map(fn {k, v} -> {v["name"] || k, k} end)
70 57 end
71 58
72 − # def for_selectd(array) do
73 − # array
74 − # |> Enum.map(fn {iface, entries} ->
75 − # entries
76 − # |> Enum.map(fn {k, v} ->
77 − # if v["name"] == nil do
78 − # %{label: v["ip"] |> ipp, id: k, selected: false}
79 − # else
80 − # %{label: v["name"], id: k, selected: false}
81 − # end
82 − #
83 − # end)
84 − # end)
85 − ## |> List.flatten()
86 − ## |> Enum.sort_by(fn {k, v} -> k end)
87 − # |> IO.inspect
88 − # end
89 −
90 59 # <.live_component
91 60 # id="target_ids"
92 61 # module={LambentExWeb.MultiSelectComponent}
modified lib/lambent_ex_web/live/links/form_component.ex
+3 −5
@@ -49,10 +49,8 @@ defmodule LambentEx.LinksLive.FormComponent do
49 49 array |> Enum.map(fn {k, v} -> {v[:id], v[:name]} end)
50 50 end
51 51
52 − def for_selectd(array) do
53 − array
54 − |> Enum.map(fn {iface, entries} -> entries |> Enum.map(fn {k, v} -> {v["name"], k} end) end)
55 − |> List.flatten()
56 − |> Enum.sort_by(fn {k, v} -> k end)
52 + def for_selectd(map) do
53 + map |> Enum.map(fn {k, v} -> {v["name"] || k, k} end)
57 54 end
55 +
58 56 end
modified lib/lambent_ex_web/live/links/index.ex
+2 −2
@@ -64,9 +64,9 @@ defmodule LambentExWeb.LinksLive.Index do
64 64 {:noreply, socket |> assign(:links, socket.assigns.links |> Map.put(link[:name], link))}
65 65 end
66 66
67 − def handle_info({:devices_pub, device}, socket) do
67 + def handle_info({:devices_pub, devices}, socket) do
68 68 {:noreply,
69 − socket |> assign(:devices, socket.assigns.devices |> Map.put(device[:mac], device))}
69 + socket |> assign(:devices, socket.assigns.devices |> Map.merge(devices))}
70 70 end
71 71
72 72 def handle_event("toggle", params, socket) do
modified lib/lambent_ex_web/live/links/index.html.heex
+1 −1
@@ -55,7 +55,7 @@
55 55 <tr>
56 56 <th><%= k %></th>
57 57 <td><%= v[:source] %></td>
58 − <td><%= v[:target] %></td>
58 + <td><%= @devices |> Map.get(v[:target], %{}) |> Map.get("name") || v[:target] %></td>
59 59 <td>
60 60 <%= if v[:enabled] == true do %>
61 61 <a

Parents: 0402ff2