class AdminUI::Row
Table rendering classes
Attributes
Public Class Methods
Source
# File app/lib/ui/table.rb, line 246 def self.format_float(vfloat) i = vfloat.to_i d = vfloat - i "#{format_int(i)}.#{format('%.2f', d)[2..3]}" end
Source
# File app/lib/ui/table.rb, line 252 def self.format_int(vint) vint.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse end
Source
# File app/lib/ui/table.rb, line 256 def self.make_row(cols, datahash) cssclass = datahash.fetch(:cssclass, 'data') data = [] cols.each do |col| v = datahash.fetch(col.sym, col.defval) v = '' if v.nil? if v.is_a?(BigDecimal) v = col.cssclass.split.include?('float') ? format_float(v.to_f) : format_int(v.to_i) end if col.id pre = col.prefix v = { value: v, href: "#{pre}#{v}" } unless pre.empty? elsif col.link v = { value: v, href: v.to_s } elsif col.idlist pre = col.prefix arr = v.split(',').map do |vv| (pre.empty? ? vv : { value: vv, href: "#{pre}#{vv}", title: vv }) end v = arr elsif v.is_a?(Integer) v = format_int(v) elsif v.is_a?(Float) v = format_float(v) elsif v.is_a?(String) v = v.encode('UTF-8', invalid: :replace, undef: :replace, replace: '') end data << v end new(data, cssclass: cssclass) end
Source
# File app/lib/ui/table.rb, line 229 def initialize(data, cssclass: '') @cssclass = cssclass @cols = data end
Public Instance Methods
Source
# File app/lib/ui/table.rb, line 234 def col_hash(coldefs) hash = {} coldefs.each_with_index do |c, i| hash[c.sym.to_sym] = @cols[i].is_a?(Hash) ? @cols[i].fetch(:value, '') : @cols[i] end hash end
Source
# File app/lib/ui/table.rb, line 288 def render(coldefs) s = "<tr class='#{@cssclass}'>" coldefs.each_with_index do |coldef, i| tag = i.zero? ? 'th' : 'td' s += "<#{tag} class='#{coldef.cssclass}'>#{coldef.render(@cols[i])}</#{tag}>" end s += '</tr>' s end
Source
# File app/lib/ui/table.rb, line 242 def set_data(colindex, val) @cols[colindex] = val if colindex >= 0 end