active_admin_simple_life 0.0.14 → 0.1.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/README.md +2 -15
- data/lib/active_admin_simple_life.rb +4 -2
- data/lib/active_admin_simple_life/extensions.rb +38 -0
- data/lib/active_admin_simple_life/{menu_elements.rb → simple_elements.rb} +11 -42
- data/lib/active_admin_simple_life/simple_menu.rb +2 -1
- data/lib/active_admin_simple_life/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a707c7ee7d8b8facfdc140848aead03ded07e871
|
4
|
+
data.tar.gz: 14d81f1d3a363d39503b6677c90dfa4c606effab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e450b90589c8eba50b914f24cbfb70f6af6460cdf6588b079896355def766bdf878f464fa555e1b13885539b6132dc90548ff1d8471eab26d18336d85ddb851
|
7
|
+
data.tar.gz: f872f029753ebf20010d70ecdaf578bf76391fe7553b3aaeb78f3ef2fd287f8c541b94a606ee281ebbe14149c19d05046895de5423cc7dced8a7e27e859f8010
|
data/README.md
CHANGED
@@ -11,22 +11,9 @@ put in `Gemfile`
|
|
11
11
|
|
12
12
|
`gem 'active_admin_simple_life'`
|
13
13
|
|
14
|
-
in `config/initializers/active_admin.rb` change header like this:
|
15
|
-
|
16
|
-
```
|
17
|
-
# frozen_string_literal: true
|
18
|
-
include ActiveAdminSimpleLife
|
19
|
-
ActiveAdmin.setup do |config|
|
20
|
-
include ActiveAdminSimpleLife::SimpleElements
|
21
|
-
# your settings
|
22
|
-
```
|
23
|
-
|
24
|
-
I had to include `simple_menu_for` method bacause it must be in the main
|
25
|
-
namespace, so it is not a bug ;)
|
26
|
-
|
27
14
|
###Usage
|
28
15
|
|
29
|
-
For all gem methods you need to present class method(NOT scope!) `
|
16
|
+
For all gem methods you need to present class method(NOT scope!) `main_fields`,
|
30
17
|
where you provide columns, which you would like to manage. Example:
|
31
18
|
|
32
19
|
```
|
@@ -40,7 +27,7 @@ end
|
|
40
27
|
|
41
28
|
###Methods
|
42
29
|
|
43
|
-
`
|
30
|
+
`ActiveAdminSimpleLife.for KlassName, [options]` which will make all dirty work, and just
|
44
31
|
give you simple menu, with only `main_fields` and `filters` in 1 line.
|
45
32
|
method takes options like:
|
46
33
|
* `:priority` = `ActiveAdmin` proxy menu `priority`
|
@@ -1,7 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require "active_admin_simple_life/engine"
|
3
|
+
require "active_admin_simple_life/extensions"
|
3
4
|
require "active_admin_simple_life/simple_menu"
|
4
|
-
require "active_admin_simple_life/
|
5
|
+
require "active_admin_simple_life/simple_elements"
|
5
6
|
module ActiveAdminSimpleLife
|
6
|
-
|
7
|
+
extend SimpleMenu
|
8
|
+
ActiveAdmin::ResourceDSL.send :include, ActiveAdminSimpleLife::SimpleElements
|
7
9
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module ActiveAdminSimpleLife
|
3
|
+
module Extensions
|
4
|
+
require "forwardable"
|
5
|
+
class ExtensionedSymbol < DelegateClass(Symbol)
|
6
|
+
def cut_id
|
7
|
+
to_s.sub(/_id$/, "").to_sym
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
module ActiveAdmin
|
13
|
+
module Views
|
14
|
+
class IndexAsTable < ActiveAdmin::Component
|
15
|
+
def span_true
|
16
|
+
Arbre::Context.new { span(class: "status_tag yes") { I18n.t("boolean.active") } }
|
17
|
+
end
|
18
|
+
|
19
|
+
def span_false
|
20
|
+
Arbre::Context.new { span(class: "status_tag no") { I18n.t "boolean.not_active" } }
|
21
|
+
end
|
22
|
+
|
23
|
+
def genders
|
24
|
+
[[I18n.t("active_admin.genders.male"), true],
|
25
|
+
[I18n.t("active_admin.genders.female"), false]]
|
26
|
+
end
|
27
|
+
|
28
|
+
def truncate_field(field, max_length = 50)
|
29
|
+
length = max_length || 50
|
30
|
+
truncate(field.to_s, length: length)
|
31
|
+
end
|
32
|
+
|
33
|
+
def fetch_path(field)
|
34
|
+
"edit_admin_#{field.class.to_s.underscore}_path"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,8 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module ActiveAdminSimpleLife
|
3
3
|
module SimpleElements
|
4
|
+
ActiveAdmin.send :include, ActiveAdminSimpleLife::Extensions
|
5
|
+
include Extensions
|
4
6
|
def index_for_main_fields(klass, options = {})
|
5
|
-
max_length = options[:max_length]
|
7
|
+
max_length = options[:max_length]
|
6
8
|
add_fields = [options[:add]].flatten.compact
|
7
9
|
position = options[:position]
|
8
10
|
index download_links: false do
|
@@ -10,7 +12,7 @@ module ActiveAdminSimpleLife
|
|
10
12
|
id_column
|
11
13
|
klass.main_fields.insert(position, *add_fields).each do |symbol|
|
12
14
|
column(I18n.t("activerecord.attributes.#{klass.to_s.underscore}.#{symbol}"), sortable: symbol) do |current|
|
13
|
-
field_value = current.send(symbol.cut_id)
|
15
|
+
field_value = current.send(ExtensionedSymbol.new(symbol).cut_id)
|
14
16
|
case field_value
|
15
17
|
when ActiveRecord::Base
|
16
18
|
link_to truncate_field(field_value, max_length),
|
@@ -34,9 +36,9 @@ module ActiveAdminSimpleLife
|
|
34
36
|
def filter_for_main_fields(klass)
|
35
37
|
klass.main_fields.each do |f|
|
36
38
|
if f == :gender
|
37
|
-
filter f.cut_id, collection: genders
|
39
|
+
filter ExtensionedSymbol.new(f).cut_id, collection: genders
|
38
40
|
else
|
39
|
-
filter f.cut_id
|
41
|
+
filter ExtensionedSymbol.new(f).cut_id
|
40
42
|
end
|
41
43
|
end
|
42
44
|
end
|
@@ -46,11 +48,11 @@ module ActiveAdminSimpleLife
|
|
46
48
|
f.semantic_errors(*f.object.errors.keys)
|
47
49
|
f.inputs do
|
48
50
|
klass.main_fields.each do |ff|
|
49
|
-
ff_cut_id = ff.cut_id
|
50
|
-
if
|
51
|
-
f.input ff_cut_id, as: :select, member_label: :to_s
|
52
|
-
else
|
51
|
+
ff_cut_id = ExtensionedSymbol.new(ff).cut_id
|
52
|
+
if ff == ff_cut_id
|
53
53
|
f.input ff_cut_id
|
54
|
+
else
|
55
|
+
f.input ff_cut_id, as: :select, member_label: :to_s
|
54
56
|
end
|
55
57
|
end
|
56
58
|
f.instance_eval(&block) if block_given?
|
@@ -65,44 +67,11 @@ module ActiveAdminSimpleLife
|
|
65
67
|
nested_table_name = nested_klass.to_s.underscore.pluralize.to_sym
|
66
68
|
main_model_name = klass.to_s.underscore.to_sym
|
67
69
|
form_field.has_many nested_table_name, allow_destroy: true do |form|
|
68
|
-
nested_klass.main_fields.map(
|
70
|
+
nested_klass.main_fields.map { |f| ExtensionedSymbol.new(f).cut_id }.each do |nested_field|
|
69
71
|
form.input(nested_field) unless nested_field == main_model_name
|
70
72
|
end
|
71
73
|
end
|
72
74
|
end
|
73
75
|
end
|
74
|
-
|
75
|
-
def cut_id
|
76
|
-
to_s.sub(/_id$/, "").to_sym
|
77
|
-
end
|
78
|
-
|
79
|
-
private
|
80
|
-
|
81
|
-
def truncate_field(field, max_length = 50)
|
82
|
-
length = max_length || 50
|
83
|
-
truncate(field.to_s, length: length)
|
84
|
-
end
|
85
|
-
|
86
|
-
def fetch_path(field)
|
87
|
-
"edit_admin_#{field.class.to_s.underscore}_path"
|
88
|
-
end
|
89
|
-
|
90
|
-
def collection?(symbol)
|
91
|
-
return true if symbol.to_s =~ /_id$/
|
92
|
-
false
|
93
|
-
end
|
94
|
-
|
95
|
-
def span_true
|
96
|
-
Arbre::Context.new { span(class: "status_tag yes") { I18n.t("boolean.active") } }
|
97
|
-
end
|
98
|
-
|
99
|
-
def span_false
|
100
|
-
Arbre::Context.new { span(class: "status_tag no") { I18n.t "boolean.not_active" } }
|
101
|
-
end
|
102
|
-
|
103
|
-
def genders
|
104
|
-
[[I18n.t("active_admin.genders.male"), true],
|
105
|
-
[I18n.t("active_admin.genders.female"), false]]
|
106
|
-
end
|
107
76
|
end
|
108
77
|
end
|
@@ -9,7 +9,8 @@ module ActiveAdminSimpleLife
|
|
9
9
|
# menu_parent:string
|
10
10
|
# permitted_params:array for some additions to main_fields permitted params
|
11
11
|
|
12
|
-
def simple_menu_for(klass, options = {})
|
12
|
+
# def simple_menu_for(klass, options = {})
|
13
|
+
def for(klass, options = {})
|
13
14
|
ActiveAdmin.register klass do
|
14
15
|
permitted_params = options.delete :permitted_params
|
15
16
|
permit_params(*(klass.main_fields + (permitted_params || [])))
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_admin_simple_life
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kvokka
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -39,7 +39,8 @@ files:
|
|
39
39
|
- config/locales/ru.yml
|
40
40
|
- lib/active_admin_simple_life.rb
|
41
41
|
- lib/active_admin_simple_life/engine.rb
|
42
|
-
- lib/active_admin_simple_life/
|
42
|
+
- lib/active_admin_simple_life/extensions.rb
|
43
|
+
- lib/active_admin_simple_life/simple_elements.rb
|
43
44
|
- lib/active_admin_simple_life/simple_menu.rb
|
44
45
|
- lib/active_admin_simple_life/version.rb
|
45
46
|
- lib/generators/active_admin_simple_life/simple_config_generator.rb
|