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 | 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 |