Class: EnumField
- Inherits:
-
Field
show all
- Defined in:
- lib/generators/hot_glue/fields/enum_field.rb
Instance Attribute Summary
Attributes inherited from Field
#alt_lookup, #assoc_class, #assoc_label, #assoc_model, #assoc_name, #associations, #attachment_data, #auth, #class_name, #default_boolean_display, #display_as, #form_labels_position, #form_placeholder_labels, #god, #hawk_keys, #hidden_create, #hidden_update, #layout_strategy, #limit, #modify_as, #name, #namespace, #object, #ownership_field, #plural, #polymorphic_parents, #pundit, #sample_file_path, #self_auth, #singular, #singular_class, #sql_type, #stimmify, #update_show_only
Instance Method Summary
collapse
Methods inherited from Field
#code_to_reset_match_if_search_is_blank, #display_boolean_as, #field_error_name, #field_output, #field_view_output, #getName, #hidden_output, #initialize, #label_class, #label_for, #modified_display_output, #modify_binary?, #newline_after_field?, #prelookup_syntax, #spec_list_view_natural_assertion, #spec_random_data, #spec_related_column_lets, #spec_setup_let_arg, #testing_name, #text_area_output, #viewable_output
Constructor Details
This class inherits a constructor from Field
Instance Method Details
#enum_type ⇒ Object
9
10
11
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 9
def enum_type
eval("#{class_name}.columns.select{|x| x.name == '#{name}'}[0].sql_type")
end
|
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 33
def form_field_output
if @stimmify
col_target = HotGlue.to_camel_case(name.to_s.gsub("_", " "))
data_attr = ", data: {'#{@stimmify}-target': '#{col_target}'} "
end
enum_type = eval("#{class_name}.columns.select{|x| x.name == '#{name}'}[0].sql_type")
if eval("defined? #{class_name}.#{enum_type}_labels") == "method"
enum_definer = "#{class_name}.#{enum_type}_labels"
else
enum_definer = "#{class_name}.defined_enums['#{name}']"
end
res = "<%= f.collection_select(:#{name}, enum_to_collection_select(#{enum_definer}), :key, :value, {include_blank: true, selected: #{singular}.#{name} }, class: 'form-control' #{data_attr} )%>"
if modify_as && modify_as[:enum] == :partials
res << partial_render
end
res
end
|
85
86
87
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 85
def form_show_only_output
viewable_output
end
|
#line_field_output ⇒ Object
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 56
def line_field_output
enum_type = eval("#{class_name}.columns.select{|x| x.name == '#{name}'}[0].sql_type")
if eval("defined? #{class_name}.#{enum_type}_labels") == "method"
enum_definer = "#{class_name}.#{enum_type}_labels"
else
enum_definer = "#{class_name}.defined_enums['#{name}']"
end
res = "
<% if #{singular}.#{name}.nil? %>
<span class='alert-danger'>Missing #{name}</span>
<% else %>"
if modify_as && modify_as[:enum] == :partials
res << partial_render
else
res << "<%= #{enum_definer}[#{singular}.#{name}.to_sym] %>"
end
res << "<% end %>"
res
end
|
#load_all_query_statement ⇒ Object
106
107
108
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 106
def load_all_query_statement
"#{name}_query = enum_constructor(:#{name}, @q['0'][:#{name}_search])"
end
|
#partial_render ⇒ Object
80
81
82
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 80
def partial_render
"<% if #{singular}.#{name} %><%= render partial: \"#{namespace + "/" if namespace}#{plural}/\#{#{singular}.#{name}}\", locals: { #{singular}: #{singular} } %><% end %>"
end
|
#search_field_output ⇒ Object
90
91
92
93
94
95
96
97
98
99
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 90
def search_field_output
enum_type = eval("#{class_name}.columns.select{|x| x.name == '#{name}'}[0].sql_type")
if eval("defined? #{class_name}.#{enum_type}_labels") == "method"
enum_definer = "#{class_name}.#{enum_type}_labels"
else
enum_definer = "#{class_name}.defined_enums['#{name}']"
end
"<%= f.collection_select(\'q[0][#{name}_search]\', enum_to_collection_select(#{enum_definer}), :key, :value, {include_blank: true, selected: @q['0']['#{name}_search'] }, class: 'form-control') %>"
end
|
#spec_list_view_assertion ⇒ Object
25
26
27
28
29
30
31
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 25
def spec_list_view_assertion
if(eval("#{class_name}.respond_to?(:#{name}_labels)"))
"expect(page).to have_content(#{class_name}.#{name}_labels[#{singular}#{1}.#{name}])"
else
"expect(page).to have_content(#{singular}1.#{name})"
end
end
|
#spec_make_assertion ⇒ Object
13
14
15
16
17
18
19
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 13
def spec_make_assertion
if(eval("#{class_name}.respond_to?(:#{name}_labels)"))
"expect(page).to have_content(#{singular_class}.#{name}_labels[new_#{name}])"
else
"expect(page).to have_content(new_#{name})"
end
end
|
#spec_setup_and_change_act(which_partial = nil) ⇒ Object
2
3
4
5
6
7
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 2
def spec_setup_and_change_act(which_partial = nil)
" list_of_#{enum_type} = #{class_name}.defined_enums['#{name}'].keys \n" +
" " + "new_#{name} = list_of_#{enum_type}[rand(list_of_#{enum_type}.length)].to_s \n" +
' find("select[name=\'' + singular + '[' + name + ']\'] option[value=\'#{new_' + name + '}\']").select_option'
end
|
#spec_setup_let_args ⇒ Object
21
22
23
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 21
def spec_setup_let_args
super
end
|
#where_query_statement ⇒ Object
102
103
104
|
# File 'lib/generators/hot_glue/fields/enum_field.rb', line 102
def where_query_statement
".where(*#{name}_query)"
end
|