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" + /> +