Sha256: 57ee8e0389e740c49da5b16584937381799b1b2f76b9a5cde1261a57987994e7

Contents?: true

Size: 1.73 KB

Versions: 33

Compression:

Stored size: 1.73 KB

Contents

module Carnival
  class Form

    attr_accessor :action,:params,:fields

    def initialize(action, params={})
      @params = params
      @action = action
    end

    def fields=(fields)
      @fields = fields
    end

    def lines
      ordered_lines
    end

    private

    def ordered_lines
      put_line_in_fields
      sort_columns(to_line_array)
    end

    def to_line_array
      lines = @fields.sort_by { |k, v| v.line }
      final_lines = []
      line_temp = []
      current_line = lines.first[1].line if lines.size > 0
      lines.each do |k,field|
        if current_line != field.line
          #Nova Linha
          final_lines << line_temp if line_temp.size > 0
          line_temp = []
          current_line = field.line
        end
        line_temp << field
      end
      final_lines << line_temp if line_temp.size > 0
      final_lines
    end

    def sort_columns (lines)
      lines.each do | line|
        line = line.sort_by{|x| x.column}
        check_size line
      end
      lines
    end

    def check_size (line)
      line_size = 0
      nil_values = 0
      line.each do |column|
        if column.size.present?
          line_size += column.size
        else
          nil_values += 1
        end
      end
      if nil_values > 0
        nil_column_size = 12 - (line_size / nil_values)
        puts nil_column_size
        line.each do |column|
          column.size = nil_column_size if not column.size.present?
        end
      end
    end

    def put_line_in_fields
      default_line = 999
      @fields.each do |key,field|
        if field.params[:position].blank? or field.params[:position][:line].blank?
          field.line = default_line
          default_line += 1
        end
      end
    end

  end

end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
carnival-0.1.3 app/models/carnival/form.rb
carnival-0.1.2 app/models/carnival/form.rb
carnival-0.1.1 app/models/carnival/form.rb
carnival-0.1.0 app/models/carnival/form.rb
carnival-0.0.59 app/models/carnival/form.rb
carnival-0.0.58 app/models/carnival/form.rb
carnival-0.0.57 app/models/carnival/form.rb
carnival-0.0.56 app/models/carnival/form.rb
carnival-0.0.55 app/models/carnival/form.rb
carnival-0.0.54 app/models/carnival/form.rb
carnival-0.0.53 app/models/carnival/form.rb
carnival-0.0.52 app/models/carnival/form.rb
carnival-0.0.51 app/models/carnival/form.rb
carnival-0.0.50 app/models/carnival/form.rb
carnival-0.0.49 app/models/carnival/form.rb
carnival-0.0.48 app/models/carnival/form.rb
carnival-0.0.47 app/models/carnival/form.rb
carnival-0.0.45 app/models/carnival/form.rb
carnival-0.0.44 app/models/carnival/form.rb
carnival-0.0.43 app/models/carnival/form.rb