Commit 88f89eff86830ea3dd19d1c6d9d30da926e01208
Committed by
David Silva
1 parent
6163bab5
Exists in
master
and in
79 other branches
Adds inheritance among the dynamic table helpers
Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Showing
3 changed files
with
81 additions
and
59 deletions
Show diff stats
lib/database_helper.rb
1 | -module DatabaseHelper | |
2 | - MODEL_NAME = "database" | |
1 | +class DatabaseHelper < DynamicTableHelper | |
2 | + MODEL_NAME ="database" | |
3 | 3 | FIELD_NAME = "database_description_id" |
4 | - COLLUMN_NAME = { | |
5 | - name: "name", | |
6 | - version: "version" | |
7 | - } | |
8 | 4 | |
9 | 5 | def self.valid_database? database |
10 | 6 | return false if SoftwareHelper.all_table_is_empty?(database) |
... | ... | @@ -75,23 +71,15 @@ module DatabaseHelper |
75 | 71 | model_name: MODEL_NAME, |
76 | 72 | field_name: FIELD_NAME, |
77 | 73 | name: { |
78 | - label: DynamicTableHelper::LABEL_TEXT[:name], | |
79 | 74 | value: database_name, |
80 | - hidden: true, | |
81 | - autocomplete: true, | |
82 | - name: COLLUMN_NAME[:name], | |
83 | - id: database_id | |
75 | + id: database_id, | |
84 | 76 | }, |
85 | 77 | version: { |
86 | - label: DynamicTableHelper::LABEL_TEXT[:version], | |
87 | - value: database_data[:version], | |
88 | - name: COLLUMN_NAME[:version], | |
89 | - hidden: true, | |
90 | - delete: true | |
78 | + value: database_data[:version] | |
91 | 79 | } |
92 | 80 | } |
93 | 81 | |
94 | - DynamicTableHelper.table_html_structure(data, disabled) | |
82 | + table_html_structure(data, disabled) | |
95 | 83 | end |
96 | 84 | |
97 | 85 | def self.add_dynamic_table | ... | ... |
lib/dynamic_table_helper.rb
1 | -module DynamicTableHelper | |
1 | +class DynamicTableHelper | |
2 | 2 | extend( |
3 | 3 | ActionView::Helpers::TagHelper, |
4 | 4 | ActionView::Helpers::FormTagHelper, |
... | ... | @@ -6,35 +6,67 @@ module DynamicTableHelper |
6 | 6 | ApplicationHelper |
7 | 7 | ) |
8 | 8 | |
9 | + COLLUMN_NAME = { | |
10 | + name: "name", | |
11 | + version: "version", | |
12 | + license: "license" | |
13 | + } | |
14 | + | |
9 | 15 | LABEL_TEXT = { |
10 | 16 | :name => _("Name"), |
11 | 17 | :version => _("Version"), |
12 | 18 | :license => _("License") |
13 | 19 | } |
14 | - @disabled = false | |
20 | + | |
21 | + DATA = { | |
22 | + name: { | |
23 | + label: LABEL_TEXT[:name], | |
24 | + hidden: true, | |
25 | + autocomplete: true, | |
26 | + name: COLLUMN_NAME[:name], | |
27 | + }, | |
28 | + version: { | |
29 | + label: LABEL_TEXT[:version], | |
30 | + name: COLLUMN_NAME[:version], | |
31 | + hidden: true, | |
32 | + delete: true, | |
33 | + } , | |
34 | + license: { | |
35 | + label: LABEL_TEXT[:license], | |
36 | + name: COLLUMN_NAME[:license], | |
37 | + } | |
38 | + } | |
39 | + @@disabled = false | |
15 | 40 | |
16 | 41 | def self.table_html_structure data={}, disabled=false |
17 | - @disabled = disabled | |
42 | + @@disabled = disabled | |
18 | 43 | Proc::new do |
19 | - content_tag :table , DynamicTableHelper.generate_table_lines(data), :class => "dynamic-table" | |
44 | + content_tag :table , generate_table_lines(data), :class => "dynamic-table" | |
20 | 45 | end |
21 | 46 | end |
22 | 47 | |
23 | 48 | def self.generate_table_lines data={} |
24 | - @model = data[:model_name].to_css_class | |
25 | - @field_name = data[:field_name] | |
26 | - @value = data[:name][:value] | |
27 | - @hidden_id = data[:name][:id] | |
28 | - | |
29 | - [ | |
30 | - self.table_line(data[:name]), | |
31 | - self.table_line(data[:version]), | |
32 | - self.table_line(data[:license]) | |
33 | - ].join() | |
49 | + @@model = data[:model_name].to_css_class | |
50 | + @@field_name = data[:field_name] | |
51 | + @@hidden_label = data[:name][:value] | |
52 | + @@hidden_id = data[:name][:id] | |
53 | + | |
54 | + row_data = prepare_row_data data | |
55 | + | |
56 | + table_line_data = [ | |
57 | + self.table_line(row_data[:name]), | |
58 | + self.table_line(row_data[:version]) | |
59 | + ] | |
60 | + | |
61 | + if row_data[:license].has_key? :value | |
62 | + table_line_data << self.table_line(row_data[:license]) | |
63 | + end | |
64 | + | |
65 | + table_line_data.join() | |
34 | 66 | end |
35 | 67 | |
36 | 68 | def self.table_line row_data={} |
37 | - if !row_data.blank? | |
69 | + unless row_data.blank? | |
38 | 70 | content_tag :tr, [ |
39 | 71 | self.label_collumn(row_data[:label]), |
40 | 72 | self.value_collumn(row_data[:value], row_data[:name], row_data[:autocomplete]), |
... | ... | @@ -51,24 +83,24 @@ module DynamicTableHelper |
51 | 83 | html_options = |
52 | 84 | if autocomplete |
53 | 85 | { |
54 | - :class => "#{@model}_autocomplete", | |
86 | + :class => "#{@@model}_autocomplete", | |
55 | 87 | :placeholder => _("Autocomplete field, type something") |
56 | 88 | } |
57 | 89 | else |
58 | 90 | {} |
59 | 91 | end |
60 | 92 | |
61 | - html_options[:disabled] = @disabled | |
93 | + html_options[:disabled] = @@disabled | |
62 | 94 | if autocomplete |
63 | - content_tag :td, text_field_tag("#{@model}_autocomplete", value, html_options) | |
95 | + content_tag :td, text_field_tag("#{@@model}_autocomplete", value, html_options) | |
64 | 96 | else |
65 | - content_tag :td, text_field_tag("#{@model}[][#{name}]", value, html_options) | |
97 | + content_tag :td, text_field_tag("#{@@model}[][#{name}]", value, html_options) | |
66 | 98 | end |
67 | 99 | end |
68 | 100 | |
69 | 101 | def self.hidden_collumn delete=false, hidden_data=false |
70 | 102 | value = |
71 | - if @disabled | |
103 | + if @@disabled | |
72 | 104 | nil |
73 | 105 | elsif delete |
74 | 106 | button_without_text( |
... | ... | @@ -76,14 +108,29 @@ module DynamicTableHelper |
76 | 108 | ) |
77 | 109 | elsif hidden_data |
78 | 110 | hidden_field_tag( |
79 | - "#{@model}[][#{@field_name}]", | |
80 | - @hidden_id, | |
81 | - :class => "#{@field_name}", | |
82 | - :data => {:label => @value } #check how to get the name of an object of the current model | |
111 | + "#{@@model}[][#{@@field_name}]", | |
112 | + @@hidden_id, | |
113 | + :class => "#{@@field_name}", | |
114 | + :data => {:label => @@hidden_label } #check how to get the name of an object of the current model | |
83 | 115 | ) |
84 | 116 | else |
85 | 117 | nil |
86 | 118 | end |
119 | + | |
87 | 120 | content_tag(:td, value, :align => 'right') |
88 | 121 | end |
122 | + | |
123 | + def self.prepare_row_data data | |
124 | + row_data = { | |
125 | + name: DATA[:name], | |
126 | + version: DATA[:version], | |
127 | + license: DATA[:license] | |
128 | + } | |
129 | + | |
130 | + row_data[:name].merge! data[:name] | |
131 | + row_data[:version].merge! data[:version] | |
132 | + row_data[:license].merge! data[:license] if data.has_key? :license | |
133 | + | |
134 | + row_data | |
135 | + end | |
89 | 136 | end |
90 | 137 | \ No newline at end of file | ... | ... |
lib/software_language_helper.rb
1 | -module SoftwareLanguageHelper | |
2 | - MODEL_NAME = "language" | |
1 | +class SoftwareLanguageHelper < DynamicTableHelper | |
2 | + MODEL_NAME ="language" | |
3 | 3 | FIELD_NAME = "programming_language_id" |
4 | - COLLUMN_NAME = { | |
5 | - name: "name", | |
6 | - version: "version" | |
7 | - } | |
8 | 4 | |
9 | 5 | def self.valid_language? language |
10 | 6 | return false if SoftwareHelper.all_table_is_empty?(language) |
... | ... | @@ -55,7 +51,6 @@ module SoftwareLanguageHelper |
55 | 51 | list_languages.each do |language| |
56 | 52 | lambdas_list << language_html_structure(language, disabled) |
57 | 53 | end |
58 | - | |
59 | 54 | lambdas_list |
60 | 55 | end |
61 | 56 | |
... | ... | @@ -74,23 +69,15 @@ module SoftwareLanguageHelper |
74 | 69 | model_name: MODEL_NAME, |
75 | 70 | field_name: FIELD_NAME, |
76 | 71 | name: { |
77 | - label: DynamicTableHelper::LABEL_TEXT[:name], | |
78 | 72 | value: language_name, |
79 | - hidden: true, | |
80 | - autocomplete: true, | |
81 | - name: COLLUMN_NAME[:name], | |
82 | - id: language_id | |
73 | + id: language_id, | |
83 | 74 | }, |
84 | 75 | version: { |
85 | - label: DynamicTableHelper::LABEL_TEXT[:version], | |
86 | - value: language_data[:version], | |
87 | - name: COLLUMN_NAME[:version], | |
88 | - hidden: true, | |
89 | - delete: true | |
76 | + value: language_data[:version] | |
90 | 77 | } |
91 | 78 | } |
92 | 79 | |
93 | - DynamicTableHelper.table_html_structure(data, disabled) | |
80 | + table_html_structure(data, disabled) | |
94 | 81 | end |
95 | 82 | |
96 | 83 | def self.add_dynamic_table | ... | ... |