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 | FIELD_NAME = "database_description_id" | 3 | FIELD_NAME = "database_description_id" |
4 | - COLLUMN_NAME = { | ||
5 | - name: "name", | ||
6 | - version: "version" | ||
7 | - } | ||
8 | 4 | ||
9 | def self.valid_database? database | 5 | def self.valid_database? database |
10 | return false if SoftwareHelper.all_table_is_empty?(database) | 6 | return false if SoftwareHelper.all_table_is_empty?(database) |
@@ -75,23 +71,15 @@ module DatabaseHelper | @@ -75,23 +71,15 @@ module DatabaseHelper | ||
75 | model_name: MODEL_NAME, | 71 | model_name: MODEL_NAME, |
76 | field_name: FIELD_NAME, | 72 | field_name: FIELD_NAME, |
77 | name: { | 73 | name: { |
78 | - label: DynamicTableHelper::LABEL_TEXT[:name], | ||
79 | value: database_name, | 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 | version: { | 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 | end | 83 | end |
96 | 84 | ||
97 | def self.add_dynamic_table | 85 | def self.add_dynamic_table |
lib/dynamic_table_helper.rb
1 | -module DynamicTableHelper | 1 | +class DynamicTableHelper |
2 | extend( | 2 | extend( |
3 | ActionView::Helpers::TagHelper, | 3 | ActionView::Helpers::TagHelper, |
4 | ActionView::Helpers::FormTagHelper, | 4 | ActionView::Helpers::FormTagHelper, |
@@ -6,35 +6,67 @@ module DynamicTableHelper | @@ -6,35 +6,67 @@ module DynamicTableHelper | ||
6 | ApplicationHelper | 6 | ApplicationHelper |
7 | ) | 7 | ) |
8 | 8 | ||
9 | + COLLUMN_NAME = { | ||
10 | + name: "name", | ||
11 | + version: "version", | ||
12 | + license: "license" | ||
13 | + } | ||
14 | + | ||
9 | LABEL_TEXT = { | 15 | LABEL_TEXT = { |
10 | :name => _("Name"), | 16 | :name => _("Name"), |
11 | :version => _("Version"), | 17 | :version => _("Version"), |
12 | :license => _("License") | 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 | def self.table_html_structure data={}, disabled=false | 41 | def self.table_html_structure data={}, disabled=false |
17 | - @disabled = disabled | 42 | + @@disabled = disabled |
18 | Proc::new do | 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 | end | 45 | end |
21 | end | 46 | end |
22 | 47 | ||
23 | def self.generate_table_lines data={} | 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 | end | 66 | end |
35 | 67 | ||
36 | def self.table_line row_data={} | 68 | def self.table_line row_data={} |
37 | - if !row_data.blank? | 69 | + unless row_data.blank? |
38 | content_tag :tr, [ | 70 | content_tag :tr, [ |
39 | self.label_collumn(row_data[:label]), | 71 | self.label_collumn(row_data[:label]), |
40 | self.value_collumn(row_data[:value], row_data[:name], row_data[:autocomplete]), | 72 | self.value_collumn(row_data[:value], row_data[:name], row_data[:autocomplete]), |
@@ -51,24 +83,24 @@ module DynamicTableHelper | @@ -51,24 +83,24 @@ module DynamicTableHelper | ||
51 | html_options = | 83 | html_options = |
52 | if autocomplete | 84 | if autocomplete |
53 | { | 85 | { |
54 | - :class => "#{@model}_autocomplete", | 86 | + :class => "#{@@model}_autocomplete", |
55 | :placeholder => _("Autocomplete field, type something") | 87 | :placeholder => _("Autocomplete field, type something") |
56 | } | 88 | } |
57 | else | 89 | else |
58 | {} | 90 | {} |
59 | end | 91 | end |
60 | 92 | ||
61 | - html_options[:disabled] = @disabled | 93 | + html_options[:disabled] = @@disabled |
62 | if autocomplete | 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 | else | 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 | end | 98 | end |
67 | end | 99 | end |
68 | 100 | ||
69 | def self.hidden_collumn delete=false, hidden_data=false | 101 | def self.hidden_collumn delete=false, hidden_data=false |
70 | value = | 102 | value = |
71 | - if @disabled | 103 | + if @@disabled |
72 | nil | 104 | nil |
73 | elsif delete | 105 | elsif delete |
74 | button_without_text( | 106 | button_without_text( |
@@ -76,14 +108,29 @@ module DynamicTableHelper | @@ -76,14 +108,29 @@ module DynamicTableHelper | ||
76 | ) | 108 | ) |
77 | elsif hidden_data | 109 | elsif hidden_data |
78 | hidden_field_tag( | 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 | else | 116 | else |
85 | nil | 117 | nil |
86 | end | 118 | end |
119 | + | ||
87 | content_tag(:td, value, :align => 'right') | 120 | content_tag(:td, value, :align => 'right') |
88 | end | 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 | end | 136 | end |
90 | \ No newline at end of file | 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 | FIELD_NAME = "programming_language_id" | 3 | FIELD_NAME = "programming_language_id" |
4 | - COLLUMN_NAME = { | ||
5 | - name: "name", | ||
6 | - version: "version" | ||
7 | - } | ||
8 | 4 | ||
9 | def self.valid_language? language | 5 | def self.valid_language? language |
10 | return false if SoftwareHelper.all_table_is_empty?(language) | 6 | return false if SoftwareHelper.all_table_is_empty?(language) |
@@ -55,7 +51,6 @@ module SoftwareLanguageHelper | @@ -55,7 +51,6 @@ module SoftwareLanguageHelper | ||
55 | list_languages.each do |language| | 51 | list_languages.each do |language| |
56 | lambdas_list << language_html_structure(language, disabled) | 52 | lambdas_list << language_html_structure(language, disabled) |
57 | end | 53 | end |
58 | - | ||
59 | lambdas_list | 54 | lambdas_list |
60 | end | 55 | end |
61 | 56 | ||
@@ -74,23 +69,15 @@ module SoftwareLanguageHelper | @@ -74,23 +69,15 @@ module SoftwareLanguageHelper | ||
74 | model_name: MODEL_NAME, | 69 | model_name: MODEL_NAME, |
75 | field_name: FIELD_NAME, | 70 | field_name: FIELD_NAME, |
76 | name: { | 71 | name: { |
77 | - label: DynamicTableHelper::LABEL_TEXT[:name], | ||
78 | value: language_name, | 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 | version: { | 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 | end | 81 | end |
95 | 82 | ||
96 | def self.add_dynamic_table | 83 | def self.add_dynamic_table |