diff --git a/core/lib/canary_web/live/dev/understander_live.ex b/core/lib/canary_web/live/dev/understander_live.ex index 29eedaa5..8d843593 100644 --- a/core/lib/canary_web/live/dev/understander_live.ex +++ b/core/lib/canary_web/live/dev/understander_live.ex @@ -7,7 +7,13 @@ defmodule CanaryWeb.Dev.UnderstanderLive do ~H"""
- +
@@ -30,36 +36,34 @@ defmodule CanaryWeb.Dev.UnderstanderLive do @impl true def mount(_params, _session, socket) do sources = Canary.Sources.Source |> Ash.read!() - source_names = sources |> Enum.map(& &1.name) - current_source = sources |> Enum.at(0) socket = socket |> assign(query: "") |> assign(result: []) |> assign(sources: sources) - |> assign(source_names: source_names) - |> assign(current_source: current_source) + |> assign(selected: []) {:ok, socket} end @impl true - def handle_event("source", %{"Source" => source_name}, socket) do - current_source = + def handle_event("source", %{"source" => sources}, socket) do + selected = socket.assigns.sources - |> Enum.find(&(&1.name == source_name)) + |> Enum.filter(&(&1.name in sources)) socket = socket - |> assign(current_source: current_source) + |> assign(selected: selected) {:noreply, socket} end @impl true def handle_event("submit", %{"query" => query}, socket) do - {:ok, words} = Canary.Query.Understander.run([socket.assigns.current_source], query) + keywords = Canary.Query.Understander.keywords(socket.assigns.selected) + {:ok, words} = Canary.Query.Understander.run(query, keywords) {:noreply, socket |> assign(query: query, result: words)} end end