Current section
37 Versions
Jump to
Current section
37 Versions
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, |