madmin-static_models 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50348135ce76b0e9c74e3fc26c2d0cf99af7a371ccfa1cfc0d5aa1e8b25d6f84
4
- data.tar.gz: 7a45e2cf576dbf07bbf285c749cd0af4c57ce186090f80f6b17e8ed22f8dd3e8
3
+ metadata.gz: b1b682bf3c2f02394141d80a1b9cfda1fcbfa8949c8182f67eabfd820e451436
4
+ data.tar.gz: 687dee958276c38330eec3b88042a66798e7510822138be7e27e12befff695a8
5
5
  SHA512:
6
- metadata.gz: c7ac57164d43bb5d708d788b8838ccbce6dea8a3b0e0379df90869b620700a1fb2a0b7072e099849f570427abe1d50fdb16aa931eb1c7ccb508bb87a32922ddb
7
- data.tar.gz: '072779c79e1ce89a000ddfbf7b5e86bb07f957f3da64bb5af81f1f8a1c7cd6063548d9047583e5f1c44ea26b6fdaac273b231c26dc16c70c44c1b0ce7153454c'
6
+ metadata.gz: 6b390486013dda926947dbe93e7cafe441940f009c7f6c1ac242dd94904df06949ef42a31a466f4ee281df23b26a7a863638588b0e9b5ee9780dd6aadebca95e
7
+ data.tar.gz: dcb8b6196b75170d9baf3f1179465b5f88c1560dcea17c331a0eb2452e0220dbccb21924dbca1d27bc2362e3020c1d39a2a4796b4b0ef308eef3e5ad25694ac8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0
4
+
5
+ - Requires Madmin 3 (>= 3.2, < 4); paginates with Madmin::Page instead of Pagy (page size comes from the `per_page` param); static resources don't offer index filters.
6
+
7
+ ## 0.1.1
8
+
9
+ - Restrict madmin to >= 2.6, < 3. Madmin 3 replaced Pagy with its own pagination, which breaks static resource index pages on 0.1.x; use 0.2 for Madmin 3.
10
+
3
11
  ## 0.1.0
4
12
 
5
13
  - Initial release: ActiveHash adapter (covers ActiveHash, ActiveYaml, ActiveJson and ActiveFile models), read-only resources, in-memory search/sort/pagination, generator support, and an adapter API for other static backends.
data/README.md CHANGED
@@ -18,7 +18,14 @@ Add to your Gemfile:
18
18
  gem "madmin-static_models"
19
19
  ```
20
20
 
21
- Requires madmin >= 2.6.
21
+ Pick the version that matches your Madmin:
22
+
23
+ | Madmin | madmin-static_models | Gemfile |
24
+ | ----------- | -------------------- | ------------------------------------------ |
25
+ | 2.6 – 2.x | 0.1.x | `gem "madmin-static_models", "~> 0.1.1"` |
26
+ | 3.2 – 3.x | 0.2.x | `gem "madmin-static_models", "~> 0.2"` |
27
+
28
+ Madmin 3.0 and 3.1 aren't supported. Upgrade to Madmin 3.2 or later.
22
29
 
23
30
  ## Usage
24
31
 
@@ -53,11 +60,12 @@ That's it — the resource shows up in Madmin like any other, minus the write ac
53
60
 
54
61
  ## How it works
55
62
 
56
- The gem attaches to Madmin through its `ActiveSupport` load hooks (`:madmin_resource`, `:madmin_resource_controller`) and prepends small modules that answer differently for static models and call `super` for everything else:
63
+ The gem attaches to Madmin through its `ActiveSupport` load hooks (`:madmin_resource`, `:madmin_resource_controller`, `:madmin_field`) and prepends small modules that answer differently for static models and call `super` for everything else:
57
64
 
58
65
  - `Resource.readonly?` returns true, which makes Madmin hide write links and block write actions
59
66
  - `Resource.model_column_names` comes from the adapter instead of the database
60
- - Pagination, sorting and search run over plain arrays in memory
67
+ - Pagination, sorting and search run over plain arrays in memory, paginated with `Madmin::Page`
68
+ - Fields return no `filter_type`, so static resources don't offer Madmin's index filters (they build SQL)
61
69
  - `show_path`/`edit_path` are built manually since static records don't support polymorphic routing
62
70
 
63
71
  ## Adding a backend
@@ -23,22 +23,8 @@ module Madmin
23
23
 
24
24
  def paginate_static(collection)
25
25
  records = collection.to_a
26
-
27
- # Pagy >= 43 paginates plain arrays natively, with the request context
28
- # that its nav helpers need.
29
- return pagy(records) if defined?(Pagy::Method) && is_a?(Pagy::Method)
30
-
31
- # Older pagy: build the pager by hand.
32
- page = [params[:page].to_i, 1].max
33
- defaults = Pagy::DEFAULT || {}
34
- limit = (params[:limit] || defaults[:limit] || defaults[:items] || 20).to_i
35
- pager = begin
36
- Pagy.new(count: records.size, page: page, limit: limit)
37
- rescue ArgumentError
38
- Pagy.new(count: records.size, page: page, items: limit)
39
- end
40
- per_page = pager.respond_to?(:limit) ? pager.limit : pager.items
41
- [pager, records.slice(pager.offset, per_page) || []]
26
+ page = Madmin::Page.new(count: records.size, page: params[:page], per_page: Madmin::Page.per_page_for(params[:per_page]))
27
+ [page, records.slice(page.offset, page.per_page) || []]
42
28
  end
43
29
 
44
30
  def sort_static(collection, column, direction)
@@ -0,0 +1,13 @@
1
+ module Madmin
2
+ module StaticModels
3
+ # Prepended to Madmin::Field. Madmin's index filters build SQL, which
4
+ # static models can't run, so their fields offer no filters.
5
+ module FieldExtension
6
+ def filter_type
7
+ return nil if StaticModels.static_model?(model)
8
+
9
+ super
10
+ end
11
+ end
12
+ end
13
+ end
@@ -12,6 +12,10 @@ module Madmin
12
12
  singleton_class.prepend Madmin::StaticModels::ResourceExtension
13
13
  end
14
14
 
15
+ ActiveSupport.on_load(:madmin_field) do
16
+ prepend Madmin::StaticModels::FieldExtension
17
+ end
18
+
15
19
  # Plain lib classes; referencing them triggers madmin's autoload.
16
20
  Madmin::Search.prepend Madmin::StaticModels::SearchExtension
17
21
  Madmin::ResourceBuilder.prepend Madmin::StaticModels::ResourceBuilderExtension
@@ -21,7 +25,7 @@ module Madmin
21
25
  # The :madmin_resource load hook never fired, so this madmin
22
26
  # predates the extension seams (readonly?, model_column_names,
23
27
  # paginate_collection) that this gem builds on.
24
- warn "madmin-static_models requires madmin >= 2.6 (extension load hooks and seams)."
28
+ warn "madmin-static_models requires madmin >= 3.2 (extension load hooks and Madmin::Page)."
25
29
  end
26
30
  end
27
31
  end
@@ -1,5 +1,5 @@
1
1
  module Madmin
2
2
  module StaticModels
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -8,6 +8,7 @@ require "madmin/static_models/resource_extension"
8
8
  require "madmin/static_models/resource_builder_extension"
9
9
  require "madmin/static_models/controller_extension"
10
10
  require "madmin/static_models/search_extension"
11
+ require "madmin/static_models/field_extension"
11
12
  require "madmin/static_models/railtie"
12
13
 
13
14
  module Madmin
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: madmin-static_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Veaudry
@@ -15,14 +15,20 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '2.6'
18
+ version: '3.2'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '4'
19
22
  type: :runtime
20
23
  prerelease: false
21
24
  version_requirements: !ruby/object:Gem::Requirement
22
25
  requirements:
23
26
  - - ">="
24
27
  - !ruby/object:Gem::Version
25
- version: '2.6'
28
+ version: '3.2'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '4'
26
32
  - !ruby/object:Gem::Dependency
27
33
  name: active_hash
28
34
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +58,7 @@ files:
52
58
  - lib/madmin/static_models/adapter.rb
53
59
  - lib/madmin/static_models/adapters/active_hash.rb
54
60
  - lib/madmin/static_models/controller_extension.rb
61
+ - lib/madmin/static_models/field_extension.rb
55
62
  - lib/madmin/static_models/generator_extensions.rb
56
63
  - lib/madmin/static_models/railtie.rb
57
64
  - lib/madmin/static_models/resource_builder_extension.rb