neiam
/lambent_ex
Lambent Aether 5
public · Issues · Pulls 1 · Labels · Forks · Compare · Actions success · Badges · Packages
⭐
Log in to mark this repository.
device naming displayed everywhere, index ui cleanup/improvements
472d3f8 · gmorell · 2023-09-22 04:41
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> →</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 | + | |
| 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