dynamic_table_helper.rb
1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
module DynamicTableHelper
extend(
ActionView::Helpers::TagHelper,
ActionView::Helpers::FormTagHelper,
ActionView::Helpers::UrlHelper,
ApplicationHelper
)
def self.table_html_structure data
Proc::new do
content_tag :table , DynamicTableHelper.generate_table_lines(data), :class => "dynamic-table"
end
end
def self.generate_table_lines data
@model = data[:model_name].to_css_class
@field_name = data[:field_name]
@value = data[:name][:value]
@hidden_id = data[:name][:id]
[
self.table_line(data[:name]),
self.table_line(data[:version]),
self.table_line(data[:operating_system]||data[:license])
].join()
end
def self.table_line row_data
content_tag :tr, [
self.label_collumn(row_data[:label]),
self.value_collumn(row_data[:value], row_data[:autocomplete]),
self.hidden_collumn(row_data[:delete], row_data[:hidden])
].join()
end
def self.label_collumn label
content_tag :td, label_tag(label)
end
def self.value_collumn value, autocomplete=false
html_options =
if autocomplete
{
:class => "#{@model}_autocomplete",
:placeholder => _("Autocomplete field, type something")
}
else
{}
end
content_tag :td, text_field_tag("#{@model}", value, html_options)
end
def self.hidden_collumn delete=false, hidden_data=false
value =
if delete
button_without_text(
:delete, _('Delete'), "#" , :class=>"delete-dynamic-table"
)
elsif hidden_data
hidden_field_tag(
"#{@model}[][#{@field_name}]",
@hidden_id,
:class => "#{@field_name}",
:data => {:label => @value } #check how to get the name of an object of the current model
)
else
nil
end
content_tag(:td, value, :align => 'right')
end
end