dynamic_table_helper.rb
2.19 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
74
75
76
77
78
79
80
81
82
83
84
85
module DynamicTableHelper
extend(
ActionView::Helpers::TagHelper,
ActionView::Helpers::FormTagHelper,
ActionView::Helpers::UrlHelper,
ApplicationHelper
)
LABEL_TEXT = {
:name => _("Name"),
:version => _("Version"),
:operating_system => _("Operating system"),
:license => _("License")
}
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[:license])
].join()
end
def self.table_line row_data={}
if !row_data.blank?
content_tag :tr, [
self.label_collumn(row_data[:label]),
self.value_collumn(row_data[:value], row_data[:name], row_data[:autocomplete]),
self.hidden_collumn(row_data[:delete], row_data[:hidden])
].join()
end
end
def self.label_collumn label=""
content_tag :td, label_tag(label)
end
def self.value_collumn value="", name="", autocomplete=false
html_options =
if autocomplete
{
:class => "#{@model}_autocomplete",
:placeholder => _("Autocomplete field, type something")
}
else
{}
end
if autocomplete
content_tag :td, text_field_tag("#{@model}_autocomplete", value, html_options)
else
content_tag :td, text_field_tag("#{@model}[][#{name}]", value, html_options)
end
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