class XmlConv::State::Transactions

Constants

DIRECT_EVENT
PAGER_SIZE
PAGE_SIZE
REVERSE_MAP
VIEW

Public Instance Methods

compare_entries(a, b) click to toggle source
# File lib/xmlconv/state/transactions.rb, line 51
def compare_entries(a, b)
        @sortby.each { |sortby|
                aval, bval = nil
                begin
                        aval = a.send(sortby)
                        bval = b.send(sortby)
                rescue
                        next
                end
                res = if(aval.nil? && bval.nil?)
                        0
                elsif(aval.nil?)
                        1
                elsif(bval.nil?)
                        -1
                else
                        aval <=> bval
                end
                return res unless(res == 0)
        }
        0
end
get_sortby!() click to toggle source
# File lib/xmlconv/state/transactions.rb, line 73
def get_sortby!
        @sortby ||= []
        sortvalue = @session.user_input(:sortvalue)
        if(sortvalue.is_a? String)
                sortvalue = sortvalue.intern
        end
        if(@sortby.first == sortvalue)
                @sort_reverse = !@sort_reverse
        else
                @sort_reverse = self.class::REVERSE_MAP[sortvalue]
        end
        @sortby.delete_if { |sortby|
                sortby == sortvalue
        }
        @sortby.unshift(sortvalue)
end
init() click to toggle source
Calls superclass method
# File lib/xmlconv/state/transactions.rb, line 42
def init
        @transactions = @model
        @model = @transactions.reverse
        setup_pages
        @filter = Proc.new { 
                page
        }
        super
end
page() click to toggle source
# File lib/xmlconv/state/transactions.rb, line 89
def page
        if(pge = @session.user_input(:page))
                @page = @pages[pge.to_i]
        else
                @page ||= @pages.first
        end
end
page_size() click to toggle source
# File lib/xmlconv/state/transactions.rb, line 96
def page_size
        self::class::PAGE_SIZE
end
self() click to toggle source
# File lib/xmlconv/state/transactions.rb, line 99
def self
        self
end
setup_pages() click to toggle source
# File lib/xmlconv/state/transactions.rb, line 102
def setup_pages
        @pages = []
        @page = nil
        pages = [(@model.size / PAGE_SIZE.to_f).ceil, 1].max
        pages.times { |pnum|
                page = PageFacade.new(pnum)
                page.model = @model[pnum * PAGE_SIZE, PAGE_SIZE]
                page.pages = @pages
                @pages.push(page)
        }
end
size() click to toggle source
# File lib/xmlconv/state/transactions.rb, line 113
def size
        @model.size
end
sort() click to toggle source
# File lib/xmlconv/state/transactions.rb, line 116
def sort
        return self unless @model.is_a? Array
        get_sortby!
        @model = @transactions.dup
        @model.sort! { |a, b| compare_entries(a, b) }
        @model.reverse! if(@sort_reverse)
        setup_pages
        self
end
transactions() click to toggle source
# File lib/xmlconv/state/transactions.rb, line 125
def transactions
        self
end