From 6d6ecca0c522d52031ca2979befb3b9da4c5951a Mon Sep 17 00:00:00 2001 From: Thiago Esteves Date: Fri, 29 Aug 2025 11:16:42 -0300 Subject: [PATCH 1/2] Adding non case sensitive search for tracing --- CHANGELOG.md | 1 + lib/web/components/multi_select_list.ex | 4 ++- .../web/live/tracing/page_test.exs | 32 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67b67dd..dc877fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### Enhancements * [[`ISSUE-19`](https://github.com/thiagoesteves/observer_web/issues/19)] Adding copy to clipboard button to copy tracing text. + * [[`ISSUE-21`](https://github.com/thiagoesteves/observer_web/issues/21)] Add non case sensitive search for modules and functions for tracing. ## 0.1.10 🚀 (2025-05-26) diff --git a/lib/web/components/multi_select_list.ex b/lib/web/components/multi_select_list.ex index 0e9e008..ded8a92 100644 --- a/lib/web/components/multi_select_list.ex +++ b/lib/web/components/multi_select_list.ex @@ -25,8 +25,10 @@ defmodule Observer.Web.Components.MultiSelectList do filtered_unselected = Enum.map(assigns.unselected, fn %{name: name, keys: keys} = element -> if name in elements_to_filter do + key_to_find = String.downcase(assigns.form_search.params[name]) + filtered_keys = - Enum.filter(keys, &String.contains?(&1, assigns.form_search.params[name])) + Enum.filter(keys, &String.contains?(String.downcase(&1), key_to_find)) %{element | keys: filtered_keys} else diff --git a/test/observer_web/web/live/tracing/page_test.exs b/test/observer_web/web/live/tracing/page_test.exs index a8046d4..a9e736e 100644 --- a/test/observer_web/web/live/tracing/page_test.exs +++ b/test/observer_web/web/live/tracing/page_test.exs @@ -144,6 +144,38 @@ defmodule Observer.Web.Tracing.PageLiveTest do refute html =~ "Elixir.Agent" end + test "Filtering by Module non sensitive", %{conn: conn} do + node = Node.self() |> to_string + service = Helpers.normalize_id(node) + + RpcStubber.defaults() + TelemetryStubber.defaults() + + {:ok, index_live, _html} = live(conn, "/observer/tracing") + + index_live + |> element("#tracing-multi-select-toggle-options") + |> render_click() + + index_live + |> element("#tracing-multi-select-services-#{service}-add-item") + |> render_click() + + html = + index_live + |> element("#tracing-multi-select-modules-Elixir-Enum-add-item") + |> render_click() + + assert html =~ "Elixir.Agent" + + html = + index_live + |> element("#multi-select-list-search-form-tracing-multi-select-modules") + |> render_change(%{"_target" => "modules", "modules" => "agent"}) + + assert html =~ "Elixir.Agent" + end + test "Filtering by Function", %{conn: conn} do node = Node.self() |> to_string service = Helpers.normalize_id(node) From 603fbc2f1273e739ba7f55e19f4af3169d65d178 Mon Sep 17 00:00:00 2001 From: Thiago Esteves Date: Fri, 29 Aug 2025 11:29:20 -0300 Subject: [PATCH 2/2] mix format --- test/observer_web/web/live/tracing/page_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/observer_web/web/live/tracing/page_test.exs b/test/observer_web/web/live/tracing/page_test.exs index a9e736e..124431d 100644 --- a/test/observer_web/web/live/tracing/page_test.exs +++ b/test/observer_web/web/live/tracing/page_test.exs @@ -144,7 +144,7 @@ defmodule Observer.Web.Tracing.PageLiveTest do refute html =~ "Elixir.Agent" end - test "Filtering by Module non sensitive", %{conn: conn} do + test "Filtering by Module non sensitive", %{conn: conn} do node = Node.self() |> to_string service = Helpers.normalize_id(node)