chore(ui,agent): harden collector parsing, drop dead CSS, resilver label
Addresses final code review: - to_int/1 now returns 0 on nil or unparseable strings instead of crashing - remove unused .pool-row CSS (superseded by .pool-block) - clamp capacity bar width to [0, 100] to prevent visual overflow - pool_scrub_line/1 uses scan_function so resilver shows as "resilver..."
This commit is contained in:
parent
dd992573a1
commit
28a40a2650
5 changed files with 67 additions and 21 deletions
|
|
@ -76,7 +76,7 @@ defmodule ServerWeb.HostDetailLive do
|
|||
</div>
|
||||
|
||||
<div class="capbar" data-level={capbar_level(pool["capacity_percent"])}>
|
||||
<span style={"width: #{pool["capacity_percent"] || 0}%"}></span>
|
||||
<span style={"width: #{capbar_width(pool["capacity_percent"])}%"}></span>
|
||||
</div>
|
||||
|
||||
<div class="sizes">
|
||||
|
|
@ -181,17 +181,29 @@ defmodule ServerWeb.HostDetailLive do
|
|||
defp capbar_level(cap) when is_number(cap) and cap >= 80, do: "warn"
|
||||
defp capbar_level(_), do: "ok"
|
||||
|
||||
defp pool_scrub_line(%{"scan_state" => "SCANNING"}), do: "scrub scanning"
|
||||
defp capbar_width(cap) when is_number(cap), do: cap |> max(0) |> min(100)
|
||||
defp capbar_width(_), do: 0
|
||||
|
||||
defp pool_scrub_line(%{"scan_state" => "FINISHED", "last_scrub_end" => end_time})
|
||||
when is_binary(end_time) and end_time != "",
|
||||
do: "scrub finished #{end_time}"
|
||||
defp pool_scrub_line(%{"scan_state" => "SCANNING"} = pool) do
|
||||
"#{scan_verb(pool)} scanning"
|
||||
end
|
||||
|
||||
defp pool_scrub_line(%{"last_scrub_end" => end_time}) when is_binary(end_time) and end_time != "",
|
||||
do: "scrub #{end_time}"
|
||||
defp pool_scrub_line(%{"last_scrub_end" => end_time} = pool)
|
||||
when is_binary(end_time) and end_time != "" do
|
||||
prefix =
|
||||
case pool["scan_state"] do
|
||||
"FINISHED" -> "#{scan_verb(pool)} finished "
|
||||
_ -> "#{scan_verb(pool)} "
|
||||
end
|
||||
|
||||
prefix <> end_time
|
||||
end
|
||||
|
||||
defp pool_scrub_line(_), do: "scrub never"
|
||||
|
||||
defp scan_verb(%{"scan_function" => "resilver"}), do: "resilver"
|
||||
defp scan_verb(_), do: "scrub"
|
||||
|
||||
defp degraded_vdevs(pool) do
|
||||
(pool["vdevs"] || [])
|
||||
|> Enum.filter(fn v -> Map.get(v, "state") not in [nil, "ONLINE"] end)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue