@@ -21,7 +21,8 @@ defmodule LiveDebuggerWeb.LiveComponents.FiltersForm do
2121
2222 @ impl true
2323 def render ( assigns ) do
24- assigns = assign ( assigns , :selected_filters_number , calculate_selected_filters ( assigns . form ) )
24+ assigns =
25+ assign ( assigns , :selected_filters_number , calculate_selected_filters ( assigns . form ) )
2526
2627 ~H"""
2728 < div id = { @ id <> "-wrapper" } >
@@ -34,6 +35,15 @@ defmodule LiveDebuggerWeb.LiveComponents.FiltersForm do
3435 < . checkbox field = { @ form [ function ] } label = { "#{ function } /#{ arity } " } />
3536 <% end %>
3637 </ div >
38+ < p class = "font-medium mb-4 mt-6 " > Callback execution time</ p >
39+ < div class = "flex flex-col gap-3 " >
40+ < . input field = { @ form [ :exec_time_max ] } type = "number " min = "0 " >
41+ <: label > max [µs]</: label >
42+ </ . input >
43+ < . input field = { @ form [ :exec_time_min ] } type = "number " min = "0 " >
44+ <: label > min [µs]</: label >
45+ </ . input >
46+ </ div >
3747 </ div >
3848 < div class = "flex py-3 px-4 border-t border-default-border items-center justify-between " >
3949 < button
@@ -82,11 +92,11 @@ defmodule LiveDebuggerWeb.LiveComponents.FiltersForm do
8292 |> noreply ( )
8393 end
8494
85- def assign_form ( socket , filters ) do
95+ def assign_form ( socket , % { functions: functions , execution_time: execution_time } ) do
8696 form =
87- filters
88- |> Enum . reduce ( % { } , fn { function , active } , acc ->
89- Map . put ( acc , Atom . to_string ( function ) , active )
97+ ( functions ++ execution_time )
98+ |> Enum . reduce ( % { } , fn { filter , value } , acc ->
99+ Map . put ( acc , Atom . to_string ( filter ) , value )
90100 end )
91101 |> to_form ( )
92102
@@ -103,15 +113,28 @@ defmodule LiveDebuggerWeb.LiveComponents.FiltersForm do
103113 end
104114
105115 defp update_filters ( active_filters , params ) do
106- active_filters
107- |> Enum . map ( fn { function , _ } ->
108- { function , Map . has_key? ( params , Atom . to_string ( function ) ) }
109- end )
116+ functions =
117+ active_filters . functions
118+ |> Enum . map ( fn { function , _ } ->
119+ { function , Map . has_key? ( params , Atom . to_string ( function ) ) }
120+ end )
121+
122+ execution_time =
123+ active_filters . execution_time
124+ |> Enum . map ( fn { filter , value } ->
125+ { filter , Map . get ( params , Atom . to_string ( filter ) , value ) }
126+ end )
127+
128+ % { functions: functions , execution_time: execution_time }
110129 end
111130
112131 defp calculate_selected_filters ( form ) do
132+ callbacks =
133+ UtilsCallbacks . callbacks_functions ( )
134+ |> Enum . map ( & Atom . to_string / 1 )
135+
113136 form . params
114- |> Map . values ( )
137+ |> Enum . filter ( fn { name , value } -> Enum . member? ( callbacks , name ) && value end )
115138 |> Enum . count ( & Function . identity / 1 )
116139 end
117140end
0 commit comments