active_list 6.5.1 → 6.6.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/lib/active_list.rb +11 -11
- data/lib/active_list/definition.rb +0 -2
- data/lib/active_list/definition/abstract_column.rb +4 -9
- data/lib/active_list/definition/action_column.rb +49 -57
- data/lib/active_list/definition/association_column.rb +26 -28
- data/lib/active_list/definition/attribute_column.rb +6 -11
- data/lib/active_list/definition/check_box_column.rb +0 -5
- data/lib/active_list/definition/data_column.rb +17 -24
- data/lib/active_list/definition/empty_column.rb +0 -4
- data/lib/active_list/definition/field_column.rb +0 -4
- data/lib/active_list/definition/status_column.rb +0 -4
- data/lib/active_list/definition/table.rb +31 -37
- data/lib/active_list/definition/text_field_column.rb +0 -4
- data/lib/active_list/exporters.rb +0 -4
- data/lib/active_list/exporters/abstract_exporter.rb +15 -19
- data/lib/active_list/exporters/csv_exporter.rb +5 -11
- data/lib/active_list/exporters/excel_csv_exporter.rb +7 -13
- data/lib/active_list/exporters/open_document_spreadsheet_exporter.rb +29 -35
- data/lib/active_list/generator.rb +27 -32
- data/lib/active_list/generator/finder.rb +35 -50
- data/lib/active_list/helpers.rb +6 -8
- data/lib/active_list/rails/engine.rb +3 -3
- data/lib/active_list/rails/integration.rb +2 -10
- data/lib/active_list/renderers.rb +0 -4
- data/lib/active_list/renderers/abstract_renderer.rb +2 -7
- data/lib/active_list/renderers/simple_renderer.rb +58 -71
- data/lib/active_list/version.rb +1 -3
- data/test/active_list_test.rb +4 -6
- data/test/code_generation_test.rb +0 -2
- data/test/dummy/Gemfile +1 -2
- data/test/dummy/app/controllers/contacts_controller.rb +10 -10
- data/test/dummy/app/controllers/people_controller.rb +10 -11
- data/test/dummy/config.ru +1 -1
- data/test/dummy/config/application.rb +2 -2
- data/test/dummy/config/boot.rb +1 -1
- data/test/dummy/config/environments/test.rb +6 -3
- data/test/dummy/config/initializers/session_store.rb +1 -1
- data/test/dummy/config/initializers/wrap_parameters.rb +1 -1
- data/test/dummy/db/seeds.rb +5 -5
- data/test/dummy/script/rails +2 -2
- data/test/people_controller_test.rb +11 -15
- data/test/table_test.rb +0 -1
- data/test/test_helper.rb +6 -7
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 972efe1084c46b43af24147f815d2b63a0df506e
|
4
|
+
data.tar.gz: 6f0597c282d17598f0a71641ac127cc0b7174ebd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 15c0e1d3f882e0a7a4695f583e1b40db285370e09fdc7b62b89a3fe1d13cf9d9f603599b01e1ccd48be7349511d72181e00e59678b0335fe7fe2bea3f246ff42
|
7
|
+
data.tar.gz: 7b94b8274545d712ce4e3aef8b1ba8ab8eb8b2002c2d8fb195524aa468088cb7c60a6d54a6acc58106676e348883227de63aff1ddadca640a850031e11ffc51a
|
data/lib/active_list.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
require 'csv'
|
2
3
|
require 'action_dispatch'
|
3
4
|
require 'rails'
|
@@ -5,13 +6,12 @@ require 'code_string'
|
|
5
6
|
require 'i18n-complements'
|
6
7
|
|
7
8
|
module ActiveList
|
8
|
-
|
9
9
|
# Build and returns a short UID
|
10
10
|
def self.new_uid
|
11
11
|
@@last_uid ||= 0
|
12
12
|
uid = @@last_uid.to_s(36).to_sym
|
13
13
|
@@last_uid += 1
|
14
|
-
|
14
|
+
uid
|
15
15
|
end
|
16
16
|
|
17
17
|
autoload :VERSION, 'active_list/version'
|
@@ -24,7 +24,7 @@ module ActiveList
|
|
24
24
|
# Set the temporary directory
|
25
25
|
# Pathname or callable are acceptable
|
26
26
|
def self.temporary_directory=(dir)
|
27
|
-
if dir.respond_to?(:call)
|
27
|
+
if dir.respond_to?(:call) || dir.is_a?(Pathname)
|
28
28
|
@@temporary_directory = dir
|
29
29
|
else
|
30
30
|
@@temporary_directory = Pathname(dir)
|
@@ -40,12 +40,13 @@ module ActiveList
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
|
44
43
|
mattr_reader :renderers
|
45
44
|
@@renderers = {}
|
46
45
|
|
47
46
|
def self.register_renderer(name, renderer)
|
48
|
-
|
47
|
+
unless renderer < ActiveList::Renderers::AbstractRenderer
|
48
|
+
fail ArgumentError, 'A renderer must be ActiveList::Renderers::Renderer'
|
49
|
+
end
|
49
50
|
@@renderers[name] = renderer
|
50
51
|
end
|
51
52
|
|
@@ -53,10 +54,11 @@ module ActiveList
|
|
53
54
|
@@exporters = {}
|
54
55
|
|
55
56
|
def self.register_exporter(name, exporter)
|
56
|
-
|
57
|
+
unless exporter < ActiveList::Exporters::AbstractExporter
|
58
|
+
fail ArgumentError, "ActiveList::Exporters::AbstractExporter expected (got #{exporter.name}/#{exporter.ancestors.inspect})"
|
59
|
+
end
|
57
60
|
@@exporters[name] = exporter
|
58
61
|
end
|
59
|
-
|
60
62
|
end
|
61
63
|
|
62
64
|
ActiveList.temporary_directory = Pathname(Dir.tmpdir)
|
@@ -67,14 +69,12 @@ ActiveList.register_exporter(:ods, ActiveList::Exporters::OpenDocumentSpreadshe
|
|
67
69
|
ActiveList.register_exporter(:csv, ActiveList::Exporters::CsvExporter)
|
68
70
|
ActiveList.register_exporter(:xcsv, ActiveList::Exporters::ExcelCsvExporter)
|
69
71
|
|
70
|
-
|
71
|
-
unless "string".respond_to? :dig
|
72
|
+
unless 'string'.respond_to? :dig
|
72
73
|
class ::String
|
73
74
|
def dig(depth = 1)
|
74
|
-
|
75
|
+
strip.gsub(/^/, ' ' * depth) + "\n"
|
75
76
|
end
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
79
|
-
|
80
80
|
require 'active_list/rails'
|
@@ -1,5 +1,4 @@
|
|
1
1
|
module ActiveList
|
2
|
-
|
3
2
|
module Definition
|
4
3
|
autoload :AbstractColumn, 'active_list/definition/abstract_column'
|
5
4
|
autoload :ActionColumn, 'active_list/definition/action_column'
|
@@ -13,5 +12,4 @@ module ActiveList
|
|
13
12
|
autoload :Table, 'active_list/definition/table'
|
14
13
|
autoload :TextFieldColumn, 'active_list/definition/text_field_column'
|
15
14
|
end
|
16
|
-
|
17
15
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
module ActiveList
|
2
|
-
|
3
2
|
module Definition
|
4
|
-
|
5
3
|
class AbstractColumn
|
6
4
|
attr_reader :table, :name, :id, :options
|
7
5
|
|
@@ -10,11 +8,11 @@ module ActiveList
|
|
10
8
|
@name = name.to_sym
|
11
9
|
@options = options
|
12
10
|
@hidden = !!@options.delete(:hidden)
|
13
|
-
@id = ActiveList.new_uid
|
11
|
+
@id = 'c' + @table.new_column_id # ActiveList.new_uid
|
14
12
|
end
|
15
13
|
|
16
14
|
def header_code
|
17
|
-
|
15
|
+
fail NotImplementedError, "#{self.class.name}#header_code is not implemented."
|
18
16
|
end
|
19
17
|
|
20
18
|
def hidden?
|
@@ -39,16 +37,13 @@ module ActiveList
|
|
39
37
|
@id
|
40
38
|
end
|
41
39
|
|
42
|
-
|
40
|
+
alias_method :sort_id, :name
|
43
41
|
|
44
42
|
def check_options!(options, *keys)
|
45
43
|
for key in options.keys
|
46
|
-
|
44
|
+
fail ArgumentError, "Key :#{key} is unexpected. (Expecting: #{keys.to_sentence})"
|
47
45
|
end
|
48
46
|
end
|
49
|
-
|
50
47
|
end
|
51
|
-
|
52
48
|
end
|
53
|
-
|
54
49
|
end
|
@@ -1,12 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
module ActiveList
|
3
|
-
|
4
3
|
module Definition
|
5
|
-
|
6
4
|
class ActionColumn < AbstractColumn
|
7
5
|
include ActiveList::Helpers
|
8
6
|
|
9
|
-
ID_PLACEHOLDER =
|
7
|
+
ID_PLACEHOLDER = '##IDS##'
|
10
8
|
|
11
9
|
USE_MODES = [:none, :single, :many, :both]
|
12
10
|
|
@@ -16,25 +14,25 @@ module ActiveList
|
|
16
14
|
super(table, name, options)
|
17
15
|
@use_mode = (@options.delete(:on) || :single).to_sym
|
18
16
|
unless USE_MODES.include?(@use_mode)
|
19
|
-
|
17
|
+
fail "Invalid use mode: #{@use_mode.inspect}"
|
20
18
|
end
|
21
|
-
if @name.to_s ==
|
22
|
-
@options[:method] = :delete
|
19
|
+
if @name.to_s == 'destroy' && !@options.key?(:method)
|
20
|
+
@options[:method] = :delete
|
23
21
|
end
|
24
|
-
if @name.to_s ==
|
25
|
-
@options[:confirm] ||= :are_you_sure_you_want_to_delete
|
22
|
+
if @name.to_s == 'destroy' && !@options.key?(:confirm)
|
23
|
+
@options[:confirm] ||= :are_you_sure_you_want_to_delete
|
26
24
|
end
|
27
|
-
@options[:if] ||= :destroyable? if @name.to_s ==
|
28
|
-
@options[:if] ||= :editable? if @name.to_s ==
|
25
|
+
@options[:if] ||= :destroyable? if @name.to_s == 'destroy'
|
26
|
+
@options[:if] ||= :editable? if @name.to_s == 'edit'
|
29
27
|
@options[:confirm] = :are_you_sure if @options[:confirm].is_a?(TrueClass)
|
30
28
|
end
|
31
29
|
|
32
30
|
def use_single?
|
33
|
-
@use_mode == :single
|
31
|
+
@use_mode == :single || @use_mode == :both
|
34
32
|
end
|
35
33
|
|
36
34
|
def use_many?
|
37
|
-
@use_mode == :many
|
35
|
+
@use_mode == :many || @use_mode == :both
|
38
36
|
end
|
39
37
|
|
40
38
|
def use_none?
|
@@ -42,7 +40,7 @@ module ActiveList
|
|
42
40
|
end
|
43
41
|
|
44
42
|
def global?
|
45
|
-
self.use_none?
|
43
|
+
self.use_none? || self.use_many?
|
46
44
|
end
|
47
45
|
|
48
46
|
def header_code
|
@@ -53,17 +51,13 @@ module ActiveList
|
|
53
51
|
url = @options[:url] ||= {}
|
54
52
|
url[:controller] ||= (@options[:controller] || table.model.name.tableize)
|
55
53
|
url[:action] ||= @name.to_s
|
56
|
-
if @options.
|
57
|
-
|
58
|
-
|
59
|
-
if use_many? and use_mode == :many
|
60
|
-
url[:id] ||= ID_PLACEHOLDER
|
61
|
-
end
|
62
|
-
return url
|
54
|
+
url[:format] = @options[:format] if @options.key? :format
|
55
|
+
url[:id] ||= ID_PLACEHOLDER if use_many? && use_mode == :many
|
56
|
+
url
|
63
57
|
end
|
64
58
|
|
65
59
|
def operation(record = 'record_of_the_death')
|
66
|
-
link_options =
|
60
|
+
link_options = ''
|
67
61
|
if @options[:confirm]
|
68
62
|
link_options << ", 'data-confirm' => #{(@options[:confirm]).inspect}.t(scope: 'labels')"
|
69
63
|
end
|
@@ -71,62 +65,60 @@ module ActiveList
|
|
71
65
|
link_options << ", method: :#{@options[:method].to_s.underscore}"
|
72
66
|
end
|
73
67
|
action = @name
|
74
|
-
format = @options[:format] ? ", format: '#{@options[:format]}'" :
|
68
|
+
format = @options[:format] ? ", format: '#{@options[:format]}'" : ''
|
75
69
|
if @options[:remote]
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
70
|
+
fail StandardError, 'Sure to use :remote ?'
|
71
|
+
# remote_options = @options.dup
|
72
|
+
# remote_options['data-confirm'] = "#{@options[:confirm].inspect}.tl".c unless @options[:confirm].nil?
|
73
|
+
# remote_options.delete :remote
|
74
|
+
# remote_options.delete :image
|
75
|
+
# remote_options = remote_options.inspect.to_s
|
76
|
+
# remote_options = remote_options[1..-2]
|
77
|
+
# code = "link_to_remote(#{image}"
|
78
|
+
# code += ", {url: {action: "+@name.to_s+", id: "+record+".id"+format+"}"
|
79
|
+
# code += ", "+remote_options+"}"
|
80
|
+
# code += ", {title: #{action.inspect}.tl}"
|
81
|
+
# code += ")"
|
88
82
|
elsif @options[:actions]
|
89
83
|
unless use_single?
|
90
|
-
|
84
|
+
fail StandardError, 'Only compatible with single actions'
|
91
85
|
end
|
92
86
|
unless @options[:actions].is_a? Hash
|
93
|
-
|
87
|
+
fail StandardError, ':actions parameter have to be a Hash.'
|
94
88
|
end
|
95
89
|
cases = []
|
96
90
|
for expected, url in @options[:actions]
|
97
|
-
url[:id] ||=
|
98
|
-
url[:id] =
|
99
|
-
url[:redirect] ||=
|
100
|
-
url.delete_if{|
|
101
|
-
cases << "#{record}.#{@name} == #{expected.inspect}\nlink_to(content_tag(:i) + h(#{url[:action].inspect}.t(scope: 'rest.actions'))"
|
102
|
-
|
103
|
-
|
104
|
-
|
91
|
+
url[:id] ||= 'RECORD.id'.c
|
92
|
+
url[:id] = 'RECORD.id'.c if url[:id] == ID_PLACEHOLDER
|
93
|
+
url[:redirect] ||= 'params[:redirect]'.c
|
94
|
+
url.delete_if { |_k, v| v.nil? }
|
95
|
+
cases << "#{record}.#{@name} == #{expected.inspect}\nlink_to(content_tag(:i) + h(#{url[:action].inspect}.t(scope: 'rest.actions'))"\
|
96
|
+
', {' + url.collect { |k, v| "#{k}: " + urlify(v, record) }.join(', ') + format + '}' \
|
97
|
+
", {class: '#{@name}'" + link_options + '}'\
|
98
|
+
")\n"
|
105
99
|
end
|
106
100
|
|
107
|
-
code =
|
101
|
+
code = 'if ' + cases.join('elsif ') + 'end'
|
108
102
|
else
|
109
103
|
url = @options[:url] ||= {}
|
110
|
-
url[:controller] ||= (@options[:controller] ||
|
104
|
+
url[:controller] ||= (@options[:controller] || 'RECORD.class.name.tableize'.c)
|
111
105
|
url[:action] ||= @name.to_s
|
112
|
-
url[:id] ||=
|
113
|
-
url[:id] =
|
114
|
-
url[:redirect] ||=
|
115
|
-
url.delete_if{|
|
116
|
-
url =
|
117
|
-
code = "{class: '#{@name}'" + link_options +
|
118
|
-
code = "link_to(content_tag(:i) + h(' ' + :#{action}.t(scope: 'rest.actions')), " + url +
|
106
|
+
url[:id] ||= 'RECORD.id'.c
|
107
|
+
url[:id] = 'RECORD.id'.c if url[:id] == ID_PLACEHOLDER
|
108
|
+
url[:redirect] ||= 'params[:redirect]'.c
|
109
|
+
url.delete_if { |_k, v| v.nil? }
|
110
|
+
url = '{' + url.collect { |k, v| "#{k}: " + urlify(v, record) }.join(', ') + format + '}'
|
111
|
+
code = "{class: '#{@name}'" + link_options + '}'
|
112
|
+
code = "link_to(content_tag(:i) + h(' ' + :#{action}.t(scope: 'rest.actions')), " + url + ', ' + code + ')'
|
119
113
|
end
|
120
114
|
if @options[:if]
|
121
|
-
code =
|
115
|
+
code = 'if ' + recordify!(@options[:if], record) + "\n" + code.dig + 'end'
|
122
116
|
end
|
123
117
|
if @options[:unless]
|
124
|
-
code =
|
118
|
+
code = 'unless ' + recordify!(@options[:unless], record) + "\n" + code.dig + 'end'
|
125
119
|
end
|
126
120
|
code.c
|
127
121
|
end
|
128
122
|
end
|
129
|
-
|
130
123
|
end
|
131
|
-
|
132
124
|
end
|
@@ -1,85 +1,83 @@
|
|
1
1
|
module ActiveList
|
2
|
-
|
3
2
|
module Definition
|
4
|
-
|
5
3
|
class AssociationColumn < DataColumn
|
6
|
-
|
7
4
|
attr_reader :label_method, :reflection
|
8
5
|
|
9
6
|
def initialize(table, name, options = {})
|
10
7
|
super(table, name, options)
|
11
8
|
unless @options[:through]
|
12
|
-
|
9
|
+
fail ArgumentError, 'Option :through must be given'
|
13
10
|
end
|
14
11
|
reflection_name = @options.delete(:through).to_sym
|
15
12
|
if @reflection = @table.model.reflect_on_association(reflection_name)
|
16
13
|
if @reflection.macro == :belongs_to
|
17
|
-
|
14
|
+
# Do some stuff
|
18
15
|
elsif @reflection.macro == :has_one
|
19
|
-
|
16
|
+
# Do some stuff
|
20
17
|
else
|
21
|
-
|
18
|
+
fail ArgumentError, "Only belongs_to are usable. Can't handle: #{reflection.macro} :#{reflection.name}."
|
22
19
|
end
|
23
20
|
else
|
24
|
-
|
21
|
+
fail UnknownReflection, "Reflection #{reflection_name} cannot be found for #{table.model.name}."
|
25
22
|
end
|
26
|
-
unless klass =
|
27
|
-
|
23
|
+
unless klass = begin
|
24
|
+
@reflection.class_name.constantize
|
25
|
+
rescue
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
fail StandardError, "Given reflection #{reflection_name} seems to be invalid"
|
28
29
|
end
|
29
30
|
columns_def = klass.columns_hash.keys.map(&:to_sym)
|
30
31
|
unless @label_method = @options.delete(:label_method)
|
31
32
|
columns = columns_def + @reflection.class_name.constantize.instance_methods.map(&:to_sym)
|
32
|
-
unless @label_method = LABELS_COLUMNS.detect{|m| columns.include?(m)}
|
33
|
-
|
33
|
+
unless @label_method = LABELS_COLUMNS.detect { |m| columns.include?(m) }
|
34
|
+
fail ArgumentError, ":label_method option must be given for association #{name}. (#{columns.inspect})"
|
34
35
|
end
|
35
36
|
end
|
36
37
|
unless @sort_column = @options.delete(:sort)
|
37
38
|
if columns_def.include?(@label_method)
|
38
39
|
@sort_column = @label_method
|
39
40
|
else
|
40
|
-
unless @sort_column = LABELS_COLUMNS.detect{|m| columns_def.include?(m)}
|
41
|
+
unless @sort_column = LABELS_COLUMNS.detect { |m| columns_def.include?(m) }
|
41
42
|
@sort_column = :id
|
42
43
|
end
|
43
44
|
end
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
47
|
-
|
48
48
|
# Code for rows
|
49
49
|
def datum_code(record = 'record_of_the_death', child = false)
|
50
|
-
code =
|
50
|
+
code = ''
|
51
51
|
if child
|
52
|
-
code =
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
52
|
+
code = 'nil'
|
53
|
+
# if @options[:children].is_a?(FalseClass)
|
54
|
+
# code = "nil"
|
55
|
+
# else
|
56
|
+
# code = "#{record}.#{table.options[:children]}.#{@reflection.name}.#{@options[:children] || @label_method}"
|
57
|
+
# end
|
58
58
|
else
|
59
59
|
code = "(#{record}.#{@reflection.name} ? #{record}.#{@reflection.name}.#{@label_method} : nil)"
|
60
60
|
end
|
61
|
-
|
61
|
+
code.c
|
62
62
|
end
|
63
63
|
|
64
64
|
def class_name
|
65
|
-
|
65
|
+
@reflection.class_name
|
66
66
|
end
|
67
67
|
|
68
68
|
def record_expr(record = 'record_of_the_death')
|
69
|
-
|
69
|
+
"#{record}.#{@reflection.name}"
|
70
70
|
end
|
71
71
|
|
72
72
|
def sort_expression
|
73
|
-
same_table_reflections = table.reflections.select{|r| r.table_name == @reflection.table_name}
|
74
|
-
if same_table_reflections.size > 1
|
73
|
+
same_table_reflections = table.reflections.select { |r| r.table_name == @reflection.table_name }
|
74
|
+
if same_table_reflections.size > 1 && same_table_reflections.index { |r| r.name == @reflection.name } > 0
|
75
75
|
# "#{@reflection.name.to_s.pluralize}_#{@reflection.class_name.constantize.table_name}.#{@sort_column}"
|
76
76
|
"#{@reflection.name.to_s.pluralize}_#{table.model.table_name}.#{@sort_column}"
|
77
77
|
else
|
78
78
|
"#{@reflection.class_name.constantize.table_name}.#{@sort_column}"
|
79
79
|
end
|
80
80
|
end
|
81
|
-
|
82
81
|
end
|
83
|
-
|
84
82
|
end
|
85
83
|
end
|
@@ -1,9 +1,6 @@
|
|
1
1
|
module ActiveList
|
2
|
-
|
3
2
|
module Definition
|
4
|
-
|
5
3
|
class AttributeColumn < DataColumn
|
6
|
-
|
7
4
|
attr_reader :column, :label_method, :sort_column
|
8
5
|
|
9
6
|
def initialize(table, name, options = {})
|
@@ -18,31 +15,31 @@ module ActiveList
|
|
18
15
|
@sort_column = :id
|
19
16
|
end
|
20
17
|
end
|
21
|
-
@column
|
18
|
+
@column = @table.model.columns_hash[@label_method.to_s]
|
22
19
|
end
|
23
20
|
|
24
21
|
# Code for rows
|
25
22
|
def datum_code(record = 'record_of_the_death', child = false)
|
26
|
-
code =
|
23
|
+
code = ''
|
27
24
|
if child
|
28
25
|
if @options[:children].is_a?(FalseClass)
|
29
|
-
code =
|
26
|
+
code = 'nil'
|
30
27
|
else
|
31
28
|
code = "#{record}.#{table.options[:children]}.#{@options[:children] || @label_method}"
|
32
29
|
end
|
33
30
|
else
|
34
31
|
code = "#{record}.#{@label_method}"
|
35
32
|
end
|
36
|
-
|
33
|
+
code.c
|
37
34
|
end
|
38
35
|
|
39
36
|
# Returns the class name of the used model
|
40
37
|
def class_name
|
41
|
-
|
38
|
+
table.model.name
|
42
39
|
end
|
43
40
|
|
44
41
|
def enumerize?
|
45
|
-
|
42
|
+
table.model.send(@label_method).send(:values)
|
46
43
|
return true
|
47
44
|
rescue
|
48
45
|
return false
|
@@ -51,8 +48,6 @@ module ActiveList
|
|
51
48
|
def sort_expression
|
52
49
|
"#{@table.model.table_name}.#{@sort_column}"
|
53
50
|
end
|
54
|
-
|
55
51
|
end
|
56
|
-
|
57
52
|
end
|
58
53
|
end
|