Commit 88f89eff86830ea3dd19d1c6d9d30da926e01208
Committed by
David Silva
1 parent
6163bab5
Exists in
master
and in
54 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 | ... | ... |