module DatabaseHelper def self.valid_database? database return false if SoftwareHelper.all_table_is_empty?(database) database_description_id_list = DatabaseDescription.select(:id). collect {|dd| dd.id} return database_description_id_list.include?( database[:database_description_id].to_i ) end def self.list_database new_databases return [] if new_databases.nil? or new_databases.length == 0 list_databases = [] new_databases.each do |new_database| if valid_database? new_database database = SoftwareDatabase.new database.database_description_id = new_database[:database_description_id] database.version = new_database[:version] database.operating_system = new_database[:operating_system] list_databases << database end end list_databases end def self.valid_list_database? list_databases return false if list_databases.nil? or list_databases.length == 0 list_databases.each do |database| return false unless database.valid? end true end def self.database_as_tables(list_databases) extend( ActionView::Helpers::TagHelper, ActionView::Helpers::FormTagHelper, ActionView::Helpers::UrlHelper, ActionView::Helpers::FormOptionsHelper, ApplicationHelper ) return database_html_structure( {:database_description_id => "", :version => "", :operating_system => ""} ) if list_databases.nil? lambdas_list = [] list_databases.each do |database| lambdas_list << database_html_structure(database) end lambdas_list end def self.database_html_structure(database_data) database_name = if database_data[:database_description_id].blank? "" else DatabaseDescription.find( database_data[:database_description_id], :select=>"name" ).name end Proc::new do content_tag( 'table', content_tag( 'tr', content_tag('td', label_tag(_("database Name: ")))+ content_tag( 'td', text_field_tag( "database_autocomplete", database_name, :class=>"database_autocomplete", :placeholder=>_("Autocomplete field, type something") ) + content_tag( 'div', _("Pick an item on the list"), :class=>"autocomplete_validation_message hide-field" ) )+ content_tag( 'td', hidden_field_tag( "database[][database_description_id]", database_data[:database_description_id], :class => "database_description_id", :data => {:label => database_name} ) ) )+ content_tag( 'tr', content_tag('td', label_tag(_("Version")))+ content_tag( 'td', text_field_tag( "database[][version]", database_data[:version], :maxlength=>"20" ) )+ content_tag('td') )+ content_tag( 'tr', content_tag('td', label_tag(_("Operating System")))+ content_tag( 'td', text_field_tag( "database[][operating_system]", database_data[:operating_system], :maxlength=>"20" ) )+ content_tag( 'td', button_without_text( :delete, _('Delete'), "#" , :class=>"delete-dynamic-table" ), :align => 'right' ) ), :class => 'dynamic-table database-table' ) end end def self.add_dynamic_table database_as_tables(nil).call end end