Current section

37 Versions

Jump to

Compare versions

3 files changed
+46 additions
-9 deletions
  @@ -87,4 +87,4 @@
87 87 {<<"optional">>,false},
88 88 {<<"repository">>,<<"hexpm">>},
89 89 {<<"requirement">>,<<">= 3.0.0">>}]]}.
90 - {<<"version">>,<<"0.2.8">>}.
90 + {<<"version">>,<<"0.2.9">>}.
  @@ -257,6 +257,8 @@ defmodule MavuList do
257 257 end
258 258 end
259 259
260 + def get_col_path(conf, path) when is_map(conf) and is_list(path), do: path
261 +
260 262 def get_db_colname(conf, name) when is_map(conf) and is_atom(name) do
261 263 get_col_conf(conf, name)
262 264 |> case do
  @@ -458,6 +460,29 @@ defmodule MavuList do
458 460 |> handle_data(source)
459 461 end
460 462
463 + def handle_event_in_state(
464 + "set_filter",
465 + %{"filter_updates" => new_filter_values},
466 + source,
467 + %__MODULE__{} = state
468 + )
469 + when is_map(new_filter_values) do
470 + cleaned_new_filter_values =
471 + new_filter_values
472 + |> AtomicMap.convert(safe: true, ignore: true)
473 +
474 + state
475 + |> update_in([:tweaks, :filters], fn old_filter_values ->
476 + (old_filter_values || %{})
477 + |> Map.merge(cleaned_new_filter_values)
478 + |> Map.to_list()
479 + |> Enum.filter(fn {_key, val} -> MavuUtils.present?(val) end)
480 + |> Map.new()
481 + end)
482 + |> put_in([:tweaks, :page], 1)
483 + |> handle_data(source)
484 + end
485 +
461 486 def handle_event_in_state("reprocess", _, source, %__MODULE__{} = state) do
462 487 state
463 488 |> handle_data(source)
  @@ -469,14 +494,17 @@ defmodule MavuList do
469 494 )
470 495 when is_atom(fieldname) do
471 496 # version A: use real push-event if @context is given in assigns
497 + next_url =
498 + MavuUtils.update_params_in_url(current_url, [
499 + {get_url_param_name(fieldname),
500 + encode_tweaks_to_string(socket.assigns[fieldname][:tweaks])}
501 + ])
502 +
503 + next_path =
504 + next_url |> URI.parse() |> Map.take(~w(path query)a) |> Map.values() |> Enum.join("?")
505 +
472 506 socket
473 - |> Phoenix.LiveView.push_patch(
474 - to:
475 - MavuUtils.update_params_in_url(current_url, [
476 - {get_url_param_name(fieldname),
477 - encode_tweaks_to_string(socket.assigns[fieldname][:tweaks])}
478 - ])
479 - )
507 + |> Phoenix.LiveView.push_patch(to: next_path)
480 508 end
481 509
482 510 def update_param_in_url(socket, fieldname) when is_atom(fieldname) do
  @@ -504,6 +532,7 @@ defmodule MavuList do
504 532 |> decode_page_tweaks()
505 533 |> decode_column_tweaks()
506 534 |> decode_keyword_tweaks()
535 + |> decode_filter_tweaks()
507 536 |> MavuUtils.log("mwuits-debug 2022-07-19_09:20 decode_tweaks_from_string", :info)
508 537 end
509 538
  @@ -537,6 +566,14 @@ defmodule MavuList do
537 566
538 567 defp decode_keyword_tweaks(tweaks), do: tweaks
539 568
569 + defp decode_filter_tweaks(%{"filters" => filters} = tweaks) do
570 + tweaks
571 + |> Map.drop(["filters"])
572 + |> Map.put(:filters, filters |> AtomicMap.convert(safe: true, ignore: true))
573 + end
574 +
575 + defp decode_filter_tweaks(tweaks), do: tweaks
576 +
540 577 defp decode_column_tweaks(%{"columns" => columns} = tweaks) do
541 578 tweaks
542 579 |> Map.drop(["columns"])
  @@ -1,7 +1,7 @@
1 1 defmodule MavuList.MixProject do
2 2 use Mix.Project
3 3
4 - @version "0.2.8"
4 + @version "0.2.9"
5 5 def project do
6 6 [
7 7 app: :mavu_list,