library_helper.rb 2.37 KB
module LibraryHelper
  def self.list_libraries new_libraries
    return [] if new_libraries.nil? or new_libraries.length == 0
    list_libraries = []

    new_libraries.each do |new_library|
      unless SoftwareHelper.all_table_is_empty? new_library
        library = Library.new
        library.name = new_library[:name]
        library.version = new_library[:version]
        library.license = new_library[:license]
        list_libraries << library
      end
    end

    list_libraries
  end

  def self.valid_list_libraries? list_libraries
    return true if list_libraries.nil? or list_libraries.length == 0

    list_libraries.each do |library|
      return false unless library.valid?
    end

    true
  end

  def self.library_as_tables list_libraries
    extend(
      ActionView::Helpers::TagHelper,
      ActionView::Helpers::FormTagHelper,
      ActionView::Helpers::UrlHelper,
      ApplicationHelper
    )

    return library_html_structure(
      {
        :name=>"",
        :version=>"",
        :license=>""
      }
    ) if list_libraries.nil?

    lambdas_list = []

    list_libraries.each do |library|
      lambdas_list << library_html_structure(library)
    end

    lambdas_list
  end

  def self.library_html_structure library_data
    Proc::new do
      content_tag(
        'table',
        content_tag(
          'tr',
          content_tag('td', label_tag(_("Name")))+
          content_tag(
            'td',
            text_field_tag("library[][name]", library_data[:name])
          )+
          content_tag('td')
        )+

        content_tag(
          'tr',
          content_tag('td', label_tag(_("Version")))+
          content_tag(
            'td',
            text_field_tag("library[][version]", library_data[:version])
          )+
          content_tag('td')
        )+

        content_tag(
          'tr',
          content_tag('td', label_tag(_("License")))+
          content_tag(
            'td',
            text_field_tag("library[][license]", library_data[:license])) +
          content_tag(
            'td',
            button_without_text(
              :delete,
              _('Delete'),
              "#" ,
              :class=>"delete-dynamic-table"
            ),
            :align => 'right'
          )
        ),

        :class => 'dynamic-table library-table'
      )
    end
  end

  def self.add_dynamic_table
    library_as_tables(nil).call
  end
end