From 854660bb5dad12bae1713f50a31735219fa85e71 Mon Sep 17 00:00:00 2001 From: Danni Friedland Date: Thu, 19 Aug 2021 11:05:19 +0300 Subject: [PATCH 1/8] updating phoenix_html --- lib/kaffy/resource_form.ex | 8 ++++---- mix.exs | 2 +- test/kaffy_test.exs | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/kaffy/resource_form.ex b/lib/kaffy/resource_form.ex index ab701943..b6ea8317 100644 --- a/lib/kaffy/resource_form.ex +++ b/lib/kaffy/resource_form.ex @@ -73,10 +73,10 @@ defmodule Kaffy.ResourceForm do end end - def form_field(changeset, form, {field, options}, opts) do - type = Kaffy.ResourceSchema.field_type(changeset.data.__struct__, field) - build_html_input(changeset.data, form, {field, options}, type, opts) - end + # def form_field(changeset, form, {field, options}, opts) do + # type = Kaffy.ResourceSchema.field_type(changeset.data.__struct__, field) + # build_html_input(changeset.data, form, {field, options}, type, opts) + # end defp build_html_input(schema, form, {field, options}, type, opts, readonly \\ false) do data = schema diff --git a/mix.exs b/mix.exs index 47cb3fff..4914715f 100644 --- a/mix.exs +++ b/mix.exs @@ -31,7 +31,7 @@ defmodule Kaffy.MixProject do defp deps do [ {:phoenix, "~> 1.4"}, - {:phoenix_html, "~> 2.11"}, + {:phoenix_html, "~> 2.13 or ~> 3.0"}, {:mock, "~> 0.3.0", only: :test}, {:ecto, "~> 3.0"}, {:ex_doc, ">= 0.0.0", only: :dev, runtime: false} diff --git a/test/kaffy_test.exs b/test/kaffy_test.exs index 143a0dec..cca2b7e6 100644 --- a/test/kaffy_test.exs +++ b/test/kaffy_test.exs @@ -2,7 +2,7 @@ defmodule KaffyTest do use ExUnit.Case doctest Kaffy alias KaffyTest.Schemas.{Person, Pet} - alias KaffyTest.Admin.PersonAdmin + # alias KaffyTest.Admin.PersonAdmin test "greets the world" do assert Kaffy.hello() == :world @@ -82,7 +82,7 @@ defmodule KaffyTest do end describe "Kaffy.ResourceAdmin" do - alias Kaffy.ResourceAdmin + # alias Kaffy.ResourceAdmin # [Qizot] I don't know if this test should be valid anymore if associations are allowed # test "index/1 should return a keyword list of fields and their values" do From fcc177201c91305dd6e3e6ab42df3f9d6d43a22d Mon Sep 17 00:00:00 2001 From: msp Date: Fri, 17 Sep 2021 18:02:29 +0100 Subject: [PATCH 2/8] Quick hack for multi select filters --- lib/kaffy/resource_query.ex | 6 +++++- lib/kaffy/resource_schema.ex | 8 ++++++-- lib/kaffy_web/templates/resource/_list_table.html.eex | 2 +- lib/kaffy_web/templates/resource/_table_header.html.eex | 9 ++++++--- lib/kaffy_web/templates/resource/index.html.eex | 2 +- lib/kaffy_web/templates/resource/pick_resource.html.eex | 2 +- 6 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lib/kaffy/resource_query.ex b/lib/kaffy/resource_query.ex index 4f13b924..ca75d674 100644 --- a/lib/kaffy/resource_query.ex +++ b/lib/kaffy/resource_query.ex @@ -152,6 +152,9 @@ defmodule Kaffy.ResourceQuery do defp build_filtered_fields_query(query, []), do: query defp build_filtered_fields_query(query, [filter | rest]) do + IO.puts("build_filtered_fields_query --------------------------------------") + IO.puts("query: #{inspect(query)}, filter: #{inspect(filter)}, rest: #{inspect(rest)}") + query = case filter.value == "" do true -> @@ -159,7 +162,8 @@ defmodule Kaffy.ResourceQuery do false -> field_name = String.to_existing_atom(filter.name) - from(s in query, where: field(s, ^field_name) == ^filter.value) + filter_values = String.split(filter.value, ",") + from(s in query, where: field(s, ^field_name) in ^filter_values) end build_filtered_fields_query(query, rest) diff --git a/lib/kaffy/resource_schema.ex b/lib/kaffy/resource_schema.ex index 28669cf6..8dc60b50 100644 --- a/lib/kaffy/resource_schema.ex +++ b/lib/kaffy/resource_schema.ex @@ -130,13 +130,17 @@ defmodule Kaffy.ResourceSchema do Enum.map(admin_fields, fn f -> kaffy_field_filters(resource[:schema], f) end) Enum.any?(fields_with_filters, fn - {_, filters} -> filters + {_, _, filters} -> filters _ -> false end) end def kaffy_field_filters(_schema, {field, options}) do - {field, Map.get(options || %{}, :filters, false)} + { + field, + Map.get(options || %{}, :filter_multiple, false), + Map.get(options || %{}, :filters, false) + } end def kaffy_field_filters(_, _), do: false diff --git a/lib/kaffy_web/templates/resource/_list_table.html.eex b/lib/kaffy_web/templates/resource/_list_table.html.eex index ce4aca4e..36e69fca 100644 --- a/lib/kaffy_web/templates/resource/_list_table.html.eex +++ b/lib/kaffy_web/templates/resource/_list_table.html.eex @@ -8,7 +8,7 @@ <%= if Kaffy.ResourceSchema.has_field_filters?(@my_resource) do %> <%= for {field, index} <- Enum.with_index(@fields) do %> - <% {field, filters} = Kaffy.ResourceSchema.kaffy_field_filters(@my_resource[:schema], field) %> + <% {field, _multiple, filters} = Kaffy.ResourceSchema.kaffy_field_filters(@my_resource[:schema], field) %> <%= if filters do %> + diff --git a/lib/kaffy_web/templates/resource/index.html.eex b/lib/kaffy_web/templates/resource/index.html.eex index 1f11cbcf..d38f4669 100644 --- a/lib/kaffy_web/templates/resource/index.html.eex +++ b/lib/kaffy_web/templates/resource/index.html.eex @@ -79,7 +79,7 @@