From 88f89eff86830ea3dd19d1c6d9d30da926e01208 Mon Sep 17 00:00:00 2001 From: Fabio Teixeira Date: Thu, 18 Dec 2014 12:14:52 -0200 Subject: [PATCH] Adds inheritance among the dynamic table helpers --- lib/database_helper.rb | 22 +++++----------------- lib/dynamic_table_helper.rb | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------ lib/software_language_helper.rb | 23 +++++------------------ 3 files changed, 81 insertions(+), 59 deletions(-) diff --git a/lib/database_helper.rb b/lib/database_helper.rb index 0e9cc31..46c2023 100644 --- a/lib/database_helper.rb +++ b/lib/database_helper.rb @@ -1,10 +1,6 @@ -module DatabaseHelper - MODEL_NAME = "database" +class DatabaseHelper < DynamicTableHelper + MODEL_NAME ="database" FIELD_NAME = "database_description_id" - COLLUMN_NAME = { - name: "name", - version: "version" - } def self.valid_database? database return false if SoftwareHelper.all_table_is_empty?(database) @@ -75,23 +71,15 @@ module DatabaseHelper model_name: MODEL_NAME, field_name: FIELD_NAME, name: { - label: DynamicTableHelper::LABEL_TEXT[:name], value: database_name, - hidden: true, - autocomplete: true, - name: COLLUMN_NAME[:name], - id: database_id + id: database_id, }, version: { - label: DynamicTableHelper::LABEL_TEXT[:version], - value: database_data[:version], - name: COLLUMN_NAME[:version], - hidden: true, - delete: true + value: database_data[:version] } } - DynamicTableHelper.table_html_structure(data, disabled) + table_html_structure(data, disabled) end def self.add_dynamic_table diff --git a/lib/dynamic_table_helper.rb b/lib/dynamic_table_helper.rb index fe60d8d..684087a 100644 --- a/lib/dynamic_table_helper.rb +++ b/lib/dynamic_table_helper.rb @@ -1,4 +1,4 @@ -module DynamicTableHelper +class DynamicTableHelper extend( ActionView::Helpers::TagHelper, ActionView::Helpers::FormTagHelper, @@ -6,35 +6,67 @@ module DynamicTableHelper ApplicationHelper ) + COLLUMN_NAME = { + name: "name", + version: "version", + license: "license" + } + LABEL_TEXT = { :name => _("Name"), :version => _("Version"), :license => _("License") } - @disabled = false + + DATA = { + name: { + label: LABEL_TEXT[:name], + hidden: true, + autocomplete: true, + name: COLLUMN_NAME[:name], + }, + version: { + label: LABEL_TEXT[:version], + name: COLLUMN_NAME[:version], + hidden: true, + delete: true, + } , + license: { + label: LABEL_TEXT[:license], + name: COLLUMN_NAME[:license], + } + } + @@disabled = false def self.table_html_structure data={}, disabled=false - @disabled = disabled + @@disabled = disabled Proc::new do - content_tag :table , DynamicTableHelper.generate_table_lines(data), :class => "dynamic-table" + content_tag :table , 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() + @@model = data[:model_name].to_css_class + @@field_name = data[:field_name] + @@hidden_label = data[:name][:value] + @@hidden_id = data[:name][:id] + + row_data = prepare_row_data data + + table_line_data = [ + self.table_line(row_data[:name]), + self.table_line(row_data[:version]) + ] + + if row_data[:license].has_key? :value + table_line_data << self.table_line(row_data[:license]) + end + + table_line_data.join() end def self.table_line row_data={} - if !row_data.blank? + unless row_data.blank? content_tag :tr, [ self.label_collumn(row_data[:label]), self.value_collumn(row_data[:value], row_data[:name], row_data[:autocomplete]), @@ -51,24 +83,24 @@ module DynamicTableHelper html_options = if autocomplete { - :class => "#{@model}_autocomplete", + :class => "#{@@model}_autocomplete", :placeholder => _("Autocomplete field, type something") } else {} end - html_options[:disabled] = @disabled + html_options[:disabled] = @@disabled if autocomplete - content_tag :td, text_field_tag("#{@model}_autocomplete", value, html_options) + content_tag :td, text_field_tag("#{@@model}_autocomplete", value, html_options) else - content_tag :td, text_field_tag("#{@model}[][#{name}]", value, html_options) + content_tag :td, text_field_tag("#{@@model}[][#{name}]", value, html_options) end end def self.hidden_collumn delete=false, hidden_data=false value = - if @disabled + if @@disabled nil elsif delete button_without_text( @@ -76,14 +108,29 @@ module DynamicTableHelper ) 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 + "#{@@model}[][#{@@field_name}]", + @@hidden_id, + :class => "#{@@field_name}", + :data => {:label => @@hidden_label } #check how to get the name of an object of the current model ) else nil end + content_tag(:td, value, :align => 'right') end + + def self.prepare_row_data data + row_data = { + name: DATA[:name], + version: DATA[:version], + license: DATA[:license] + } + + row_data[:name].merge! data[:name] + row_data[:version].merge! data[:version] + row_data[:license].merge! data[:license] if data.has_key? :license + + row_data + end end \ No newline at end of file diff --git a/lib/software_language_helper.rb b/lib/software_language_helper.rb index c7e46c2..2884fe9 100644 --- a/lib/software_language_helper.rb +++ b/lib/software_language_helper.rb @@ -1,10 +1,6 @@ -module SoftwareLanguageHelper - MODEL_NAME = "language" +class SoftwareLanguageHelper < DynamicTableHelper + MODEL_NAME ="language" FIELD_NAME = "programming_language_id" - COLLUMN_NAME = { - name: "name", - version: "version" - } def self.valid_language? language return false if SoftwareHelper.all_table_is_empty?(language) @@ -55,7 +51,6 @@ module SoftwareLanguageHelper list_languages.each do |language| lambdas_list << language_html_structure(language, disabled) end - lambdas_list end @@ -74,23 +69,15 @@ module SoftwareLanguageHelper model_name: MODEL_NAME, field_name: FIELD_NAME, name: { - label: DynamicTableHelper::LABEL_TEXT[:name], value: language_name, - hidden: true, - autocomplete: true, - name: COLLUMN_NAME[:name], - id: language_id + id: language_id, }, version: { - label: DynamicTableHelper::LABEL_TEXT[:version], - value: language_data[:version], - name: COLLUMN_NAME[:version], - hidden: true, - delete: true + value: language_data[:version] } } - DynamicTableHelper.table_html_structure(data, disabled) + table_html_structure(data, disabled) end def self.add_dynamic_table -- libgit2 0.21.2