@@ -3,43 +3,30 @@ defmodule Phoenix.LiveDashboard.ChartComponent do
3
3
4
4
@ impl true
5
5
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: [ ] ] }
10
7
end
11
8
12
- defp data_dom_id ( _ ) , do: "unused"
13
-
14
9
@ impl true
15
10
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 )
18
13
{ :ok , socket }
19
14
end
20
15
21
- defp normalize_assigns! ( socket , data ) do
22
- % { assigns: assigns } = socket
16
+ defp validate_assigns! ( assigns ) do
23
17
validate_positive_integer_or_nil! ( assigns [ :bucket_size ] , :bucket_size )
24
18
validate_positive_integer_or_nil! ( assigns [ :prune_threshold ] , :prune_threshold )
25
- normalize_data ( socket , data )
19
+ :ok
26
20
end
27
21
28
22
defp validate_positive_integer_or_nil! ( nil , _field ) , do: nil
29
23
30
24
defp validate_positive_integer_or_nil! ( value , field ) do
31
25
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 ) } "
34
27
end
35
- end
36
-
37
- defp normalize_data ( socket , data ) do
38
- label = socket . assigns . label
39
28
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
43
30
end
44
31
45
32
@ impl true
@@ -48,9 +35,8 @@ defmodule Phoenix.LiveDashboard.ChartComponent do
48
35
< div class = { chart_size ( @ full_width ) } >
49
36
< div id = { "chart-#{ @ id } " } class = "card " >
50
37
< div class = "card-body " >
51
- <!-- We don't add a phx-update="stream" because js expects only new data -->
52
38
< 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 >
54
40
</ div >
55
41
< div
56
42
class = "chart "
0 commit comments