Skip to content

Commit c939321

Browse files
authored
Merge pull request #469 from pojiro/patch-1
Fix ChartComponent bug, correctly display metrics history
2 parents 38e9b17 + e923603 commit c939321

File tree

1 file changed

+8
-22
lines changed

1 file changed

+8
-22
lines changed

lib/phoenix/live_dashboard/components/chart_component.ex

+8-22
Original file line numberDiff line numberDiff line change
@@ -3,43 +3,30 @@ defmodule Phoenix.LiveDashboard.ChartComponent do
33

44
@impl true
55
def mount(socket) do
6-
{:ok,
7-
socket
8-
|> stream_configure(:data, dom_id: &data_dom_id/1)
9-
|> stream(:data, [])}
6+
{:ok, socket, temporary_assigns: [data: []]}
107
end
118

12-
defp data_dom_id(_), do: "unused"
13-
149
@impl true
1510
def update(assigns, socket) do
16-
{data, assigns} = Map.pop(assigns, :data, [])
17-
socket = assign(socket, assigns) |> normalize_assigns!(data)
11+
socket = assign(socket, assigns)
12+
validate_assigns!(socket.assigns)
1813
{:ok, socket}
1914
end
2015

21-
defp normalize_assigns!(socket, data) do
22-
%{assigns: assigns} = socket
16+
defp validate_assigns!(assigns) do
2317
validate_positive_integer_or_nil!(assigns[:bucket_size], :bucket_size)
2418
validate_positive_integer_or_nil!(assigns[:prune_threshold], :prune_threshold)
25-
normalize_data(socket, data)
19+
:ok
2620
end
2721

2822
defp validate_positive_integer_or_nil!(nil, _field), do: nil
2923

3024
defp validate_positive_integer_or_nil!(value, field) do
3125
unless is_integer(value) and value > 0 do
32-
msg = "#{inspect(field)} must be a positive integer, got: #{inspect(value)}"
33-
raise ArgumentError, msg
26+
raise ArgumentError, "#{inspect(field)} must be a positive integer, got: #{inspect(value)}"
3427
end
35-
end
36-
37-
defp normalize_data(socket, data) do
38-
label = socket.assigns.label
3928

40-
data
41-
|> Enum.map(fn {x, y, z} -> {x || label, y, z} end)
42-
|> Enum.reduce(socket, fn elem, socket -> stream_insert(socket, :data, elem) end)
29+
value
4330
end
4431

4532
@impl true
@@ -48,9 +35,8 @@ defmodule Phoenix.LiveDashboard.ChartComponent do
4835
<div class={chart_size(@full_width)}>
4936
<div id={"chart-#{@id}"} class="card">
5037
<div class="card-body">
51-
<!-- We don't add a phx-update="stream" because js expects only new data -->
5238
<div phx-hook="PhxChartComponent" id={"chart-#{@id}-datasets"} hidden>
53-
<span :for={{_id, {x, y, z}} <- @streams.data} data-x={x} data-y={y} data-z={z}></span>
39+
<span :for={{x, y, z} <- @data} data-x={x || @label} data-y={y} data-z={z}></span>
5440
</div>
5541
<div
5642
class="chart"

0 commit comments

Comments
 (0)