From 587d930786e77f8e8f658cb905a5b769f573f329 Mon Sep 17 00:00:00 2001 From: Fabio Teixeira Date: Mon, 5 Jan 2015 14:17:29 -0200 Subject: [PATCH] Build DynamicTable into Operating Systems --- lib/database_helper.rb | 3 ++- lib/dynamic_table_helper.rb | 28 ++++++++++++++++++++-------- lib/library_helper.rb | 3 ++- lib/operating_system_helper.rb | 108 +++++++++++++++++++++++++++++++----------------------------------------------------------------------------- lib/software_language_helper.rb | 3 ++- views/profile/_software_tab.html.erb | 24 ++++++++++++++---------- 6 files changed, 71 insertions(+), 98 deletions(-) diff --git a/lib/database_helper.rb b/lib/database_helper.rb index 3f6e90b..af7f5e2 100644 --- a/lib/database_helper.rb +++ b/lib/database_helper.rb @@ -67,7 +67,8 @@ class DatabaseHelper < DynamicTableHelper value: database_name, id: database_id, hidden: true, - autocomplete: true + autocomplete: true, + select_field: false }, version: { value: database_data[:version], diff --git a/lib/dynamic_table_helper.rb b/lib/dynamic_table_helper.rb index 34aa188..1c9265e 100644 --- a/lib/dynamic_table_helper.rb +++ b/lib/dynamic_table_helper.rb @@ -2,6 +2,7 @@ class DynamicTableHelper extend( ActionView::Helpers::TagHelper, ActionView::Helpers::FormTagHelper, + ActionView::Helpers::FormOptionsHelper, ActionView::Helpers::UrlHelper, ApplicationHelper ) @@ -21,11 +22,11 @@ class DynamicTableHelper DATA = { name: { label: LABEL_TEXT[:name], - name: COLLUMN_NAME[:name], + name: COLLUMN_NAME[:name] }, version: { label: LABEL_TEXT[:version], - name: COLLUMN_NAME[:version], + name: COLLUMN_NAME[:version] } , license: { label: LABEL_TEXT[:license], @@ -43,7 +44,7 @@ class DynamicTableHelper end def self.generate_table_lines data={} - @@model = data[:model_name].to_css_class + @@model = data[:model_name] @@field_name = data[:field_name] @@hidden_label = data[:name][:value] @@hidden_id = data[:name][:id] @@ -66,7 +67,13 @@ class DynamicTableHelper 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]), + self.value_collumn( + row_data[:value], + row_data[:name], + row_data[:autocomplete], + row_data[:select_field], + row_data[:options] + ), self.hidden_collumn(row_data[:delete], row_data[:hidden]) ].join() end @@ -76,7 +83,7 @@ class DynamicTableHelper content_tag :td, label_tag(label) end - def self.value_collumn value="", name="", autocomplete=false, disabled=false + def self.value_collumn value="", name="", autocomplete=false, select_field=false, options=[] html_options = if autocomplete { @@ -88,11 +95,16 @@ class DynamicTableHelper end html_options[:disabled] = @@disabled - if autocomplete - content_tag :td, text_field_tag("#{@@model}_autocomplete", value, html_options) + + content = if select_field + select_tag("#{@@model}[][#{@@field_name}]", options, html_options) + elsif autocomplete + text_field_tag("#{@@model}_autocomplete", value, html_options) else - content_tag :td, text_field_tag("#{@@model}[][#{name}]", value, html_options) + text_field_tag("#{@@model}[][#{name}]", value, html_options) end + + content_tag :td, content end def self.hidden_collumn delete=false, hidden_data=false diff --git a/lib/library_helper.rb b/lib/library_helper.rb index b39a0a8..d681845 100644 --- a/lib/library_helper.rb +++ b/lib/library_helper.rb @@ -39,7 +39,8 @@ module LibraryHelper name: { value: library_data[:name], hidden: false, - autocomplete: false + autocomplete: false, + select_field: false }, version: { value: library_data[:version], diff --git a/lib/operating_system_helper.rb b/lib/operating_system_helper.rb index c983028..d5bd9a9 100644 --- a/lib/operating_system_helper.rb +++ b/lib/operating_system_helper.rb @@ -1,4 +1,7 @@ -module OperatingSystemHelper +class OperatingSystemHelper < DynamicTableHelper + MODEL_NAME = "operating_system" + FIELD_NAME = "operating_system_name_id" + def self.list_operating_system new_operating_systems return [] if new_operating_systems.nil? or new_operating_systems.length == 0 list_operating_system = [] @@ -30,88 +33,39 @@ module OperatingSystemHelper true end - def self.operating_system_as_tables(list_operating_system, have_delete_button = true, show_information = false) - extend( - ActionView::Helpers::TagHelper, - ActionView::Helpers::FormTagHelper, - ActionView::Helpers::UrlHelper, - ActionView::Helpers::FormOptionsHelper, - ApplicationHelper - ) - - lambdas_list = [] - - if not show_information - return operating_system_html_structure( - {:operating_system_name_id => "", :version => ""}, - have_delete_button - ) if list_operating_system.nil? - - list_operating_system.each do |operating_system| - lambdas_list << operating_system_html_structure( - operating_system, - have_delete_button - ) - end - else - list_operating_system.each do |operating_system| - lambdas_list << operating_system_html_structure(operating_system) - end - end + def self.operating_system_as_tables(list_operating_system, disabled=false) + model_list = list_operating_system + model_list ||= [{:operating_system_name_id => "", :version => ""}] - lambdas_list + models_as_tables model_list, "operating_system_html_structure", disabled end - def self.operating_system_html_structure (operating_system_data,have_delete_button = true) - Proc::new do - content_tag( - 'table', - content_tag( - 'tr', - content_tag('td', label_tag(_("Name")))+ - content_tag( - 'td', - select_tag( - "operating_system[][operating_system_name_id]", - SoftwareHelper.select_options( - OperatingSystemName.all, - operating_system_data[:operating_system_name_id] - ) - ) - )+ - content_tag('td') - )+ + def self.operating_system_html_structure (operating_system_data, disabled) + select_options = options_for_select( + OperatingSystemName.all.collect {|osn| [osn.name, osn.id]}, + operating_system_data[:operating_system_name_id] + ) - content_tag( - 'tr', - content_tag('td', label_tag(_("Version")))+ - content_tag( - 'td', - text_field_tag( - "operating_system[][version]", - operating_system_data[:version] - ) - )+ - if have_delete_button - content_tag( - 'td', - button_without_text( - :delete, - _('Delete'), - "#" , - :class=>"delete-dynamic-table" - ), - :align => 'right' - ) - else - content_tag('td', "") - end - ),:class => 'dynamic-table library-table' - ) - end + data = { + model_name: MODEL_NAME, + field_name: FIELD_NAME, + name: { + hidden: false, + autocomplete: false, + select_field: true, + options: select_options + }, + version: { + value: operating_system_data[:version], + hidden: true, + delete: true + } + } + DATA[:license].delete(:value) + table_html_structure(data, disabled) end def self.add_dynamic_table - operating_system_as_tables(nil).call + operating_system_as_tables(nil).first.call end end diff --git a/lib/software_language_helper.rb b/lib/software_language_helper.rb index 4d7de2c..296088d 100644 --- a/lib/software_language_helper.rb +++ b/lib/software_language_helper.rb @@ -66,7 +66,8 @@ class SoftwareLanguageHelper < DynamicTableHelper value: language_name, id: language_id, hidden: true, - autocomplete: true + autocomplete: true, + select_field: false }, version: { value: language_data[:version], diff --git a/views/profile/_software_tab.html.erb b/views/profile/_software_tab.html.erb index c62a9e6..1bb3739 100644 --- a/views/profile/_software_tab.html.erb +++ b/views/profile/_software_tab.html.erb @@ -112,9 +112,10 @@ + - +
@@ -122,14 +123,17 @@ - - <% profile.software_info.operating_systems.each do |operating_system| %> - <%= display_mpog_field(_('Name:'), operating_system.operating_system_name , :name, true) %> - <%= display_mpog_field(_('Version:'), operating_system, :version, true) %> - <% end %> - -
<%= _("Operating System") %>
- - + + + <% operating_systems = profile.software_info.operating_systems %> + <% OperatingSystemHelper.operating_system_as_tables(operating_systems, true).each do |tab| %> + <%= tab.call %> + <%end%> + + + + + + \ No newline at end of file -- libgit2 0.21.2