diff --git a/lib/live_debugger_web/components.ex b/lib/live_debugger_web/components.ex
index 525636657..b7c207db1 100644
--- a/lib/live_debugger_web/components.ex
+++ b/lib/live_debugger_web/components.ex
@@ -5,6 +5,8 @@ defmodule LiveDebuggerWeb.Components do
use Phoenix.Component
+ import Phoenix.HTML
+
alias Phoenix.LiveView.JS
alias LiveDebuggerWeb.Helpers.RoutesHelper
@@ -72,6 +74,50 @@ defmodule LiveDebuggerWeb.Components do
"""
end
+ @doc """
+ Renders an input with label.
+ """
+ attr(:field, Phoenix.HTML.FormField, required: true)
+ attr(:label_text, :string, default: nil)
+ attr(:label_raw, :boolean, default: false)
+ attr(:type, :string, default: "text")
+
+ attr(:wrapper_class, :any, default: nil)
+ attr(:input_class, :any, default: nil)
+ attr(:label_class, :any, default: nil)
+ attr(:rest, :global, include: ~w(min max))
+
+ def input(assigns) do
+ assigns =
+ assigns
+ |> assign(:errors, assigns.field.errors)
+
+ ~H"""
+
+
+
+
+ <%= msg %>
+
+
+ """
+ end
+
@doc """
Renders a button.
diff --git a/lib/live_debugger_web/helpers/tracing_helper.ex b/lib/live_debugger_web/helpers/tracing_helper.ex
index b4aa7b9f9..d6c95b7fc 100644
--- a/lib/live_debugger_web/helpers/tracing_helper.ex
+++ b/lib/live_debugger_web/helpers/tracing_helper.ex
@@ -138,7 +138,7 @@ defmodule LiveDebuggerWeb.Helpers.TracingHelper do
lv_process = socket.assigns.lv_process
node_id = socket.assigns.node_id
- socket.assigns.current_filters
+ socket.assigns.current_filters.functions
|> Enum.filter(fn {_, active?} -> active? end)
|> Enum.flat_map(fn {function, _} ->
[
@@ -164,7 +164,7 @@ defmodule LiveDebuggerWeb.Helpers.TracingHelper do
lv_process = socket.assigns.lv_process
node_id = socket.assigns.node_id
- socket.assigns.current_filters
+ socket.assigns.current_filters.functions
|> Enum.map(fn {function, _} ->
PubSubUtils.tsnf_topic(
lv_process.socket_id,
diff --git a/lib/live_debugger_web/live/traces_live.ex b/lib/live_debugger_web/live/traces_live.ex
index 6234e6037..d49c0aad1 100644
--- a/lib/live_debugger_web/live/traces_live.ex
+++ b/lib/live_debugger_web/live/traces_live.ex
@@ -398,17 +398,26 @@ defmodule LiveDebuggerWeb.TracesLive do
end
defp default_filters(node_id) do
- node_id
- |> TreeNode.type()
- |> case do
- :live_view -> UtilsCallbacks.live_view_callbacks()
- :live_component -> UtilsCallbacks.live_component_callbacks()
- end
- |> Enum.map(fn {function, _} -> {function, true} end)
+ functions =
+ node_id
+ |> TreeNode.type()
+ |> case do
+ :live_view -> UtilsCallbacks.live_view_callbacks()
+ :live_component -> UtilsCallbacks.live_component_callbacks()
+ end
+ |> Enum.map(fn {function, _} -> {function, true} end)
+
+ %{
+ functions: functions,
+ execution_time: [
+ {:exec_time_max, ""},
+ {:exec_time_min, "0"}
+ ]
+ }
end
defp get_active_functions(socket) do
- socket.assigns.current_filters
+ socket.assigns.current_filters.functions
|> Enum.filter(fn {_, active?} -> active? end)
|> Enum.map(fn {function, _} -> function end)
end
diff --git a/lib/live_debugger_web/live_components/filters_form.ex b/lib/live_debugger_web/live_components/filters_form.ex
index 106aca19c..a2cc59d88 100644
--- a/lib/live_debugger_web/live_components/filters_form.ex
+++ b/lib/live_debugger_web/live_components/filters_form.ex
@@ -21,7 +21,8 @@ defmodule LiveDebuggerWeb.LiveComponents.FiltersForm do
@impl true
def render(assigns) do
- assigns = assign(assigns, :selected_filters_number, calculate_selected_filters(assigns.form))
+ assigns =
+ assign(assigns, :selected_filters_number, calculate_selected_filters(assigns.form))
~H"""
"-wrapper"}>
@@ -34,6 +35,23 @@ defmodule LiveDebuggerWeb.LiveComponents.FiltersForm do
<.checkbox field={@form[function]} label={"#{function}/#{arity}"} />
<% end %>
+ Callback execution time
+
+ <.input
+ label_text="max [µs]"
+ label_raw
+ field={@form[:exec_time_max]}
+ type="number"
+ min="0"
+ />
+ <.input
+ label_text="min [µs]"
+ label_raw
+ field={@form[:exec_time_min]}
+ type="number"
+ min="0"
+ />
+