madmin-static_models 0.1.1 → 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 +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +11 -3
- data/lib/madmin/static_models/controller_extension.rb +2 -16
- data/lib/madmin/static_models/field_extension.rb +13 -0
- data/lib/madmin/static_models/railtie.rb +5 -1
- data/lib/madmin/static_models/version.rb +1 -1
- data/lib/madmin/static_models.rb +1 -0
- metadata +6 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b1b682bf3c2f02394141d80a1b9cfda1fcbfa8949c8182f67eabfd820e451436
|
|
4
|
+
data.tar.gz: 687dee958276c38330eec3b88042a66798e7510822138be7e27e12befff695a8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6b390486013dda926947dbe93e7cafe441940f009c7f6c1ac242dd94904df06949ef42a31a466f4ee281df23b26a7a863638588b0e9b5ee9780dd6aadebca95e
|
|
7
|
+
data.tar.gz: dcb8b6196b75170d9baf3f1179465b5f88c1560dcea17c331a0eb2452e0220dbccb21924dbca1d27bc2362e3020c1d39a2a4796b4b0ef308eef3e5ad25694ac8
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
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
|
+
|
|
3
7
|
## 0.1.1
|
|
4
8
|
|
|
5
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.
|
data/README.md
CHANGED
|
@@ -18,7 +18,14 @@ Add to your Gemfile:
|
|
|
18
18
|
gem "madmin-static_models"
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
|
|
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
|
-
|
|
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
|
|
28
|
+
warn "madmin-static_models requires madmin >= 3.2 (extension load hooks and Madmin::Page)."
|
|
25
29
|
end
|
|
26
30
|
end
|
|
27
31
|
end
|
data/lib/madmin/static_models.rb
CHANGED
|
@@ -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.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Anthony Veaudry
|
|
@@ -15,20 +15,20 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '2
|
|
18
|
+
version: '3.2'
|
|
19
19
|
- - "<"
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
|
-
version: '
|
|
21
|
+
version: '4'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
|
25
25
|
requirements:
|
|
26
26
|
- - ">="
|
|
27
27
|
- !ruby/object:Gem::Version
|
|
28
|
-
version: '2
|
|
28
|
+
version: '3.2'
|
|
29
29
|
- - "<"
|
|
30
30
|
- !ruby/object:Gem::Version
|
|
31
|
-
version: '
|
|
31
|
+
version: '4'
|
|
32
32
|
- !ruby/object:Gem::Dependency
|
|
33
33
|
name: active_hash
|
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -58,6 +58,7 @@ files:
|
|
|
58
58
|
- lib/madmin/static_models/adapter.rb
|
|
59
59
|
- lib/madmin/static_models/adapters/active_hash.rb
|
|
60
60
|
- lib/madmin/static_models/controller_extension.rb
|
|
61
|
+
- lib/madmin/static_models/field_extension.rb
|
|
61
62
|
- lib/madmin/static_models/generator_extensions.rb
|
|
62
63
|
- lib/madmin/static_models/railtie.rb
|
|
63
64
|
- lib/madmin/static_models/resource_builder_extension.rb
|