Class: Sinatra::Pagers::Pager
- Inherits:
 - 
      Object
      
        
- Object
 - Sinatra::Pagers::Pager
 
 
- Defined in:
 - lib/sinatra/pagers.rb
 
Instance Attribute Summary collapse
- 
  
    
      #cpp  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Number of object on each page.
 - 
  
    
      #extra  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Extra parameters.
 - 
  
    
      #max_page  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Maximum number of pages.
 - 
  
    
      #n_records  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Number of records.
 - 
  
    
      #order  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
String, with forma “<col>__<direction>”.
 - 
  
    
      #page  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Current page.
 - 
  
    
      #query  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
dataset string to be processed.
 
Instance Method Summary collapse
- 
  
    
      #adapt_ads_cds(ads, cds_pre, no_query: false)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Adapt the cds_pre dataset, using decisions made by a user.
 - 
  
    
      #adapt_cds(cds_pre)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Get an Dataset of CanonicalDocuments and returns a new one, with all pager settings applied Including using ‘dataset’ to select using title or author ‘order’.
 - 
  
    
      #adjust_page_order(dataset)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Retrieves the records to be shown, adjusting by page and order.
 - #current_first_record ⇒ Object
 - #current_last_record ⇒ Object
 - #DELETE_element_to_delete ⇒ Object
 - 
  
    
      #initialize  ⇒ Pager 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of Pager.
 - #uri_encode(element_to_delete = nil) ⇒ Object
 
Constructor Details
#initialize ⇒ Pager
Returns a new instance of Pager.
      104 105 106 107 108 109 110 111 112 113 114  | 
    
      # File 'lib/sinatra/pagers.rb', line 104 def initialize @page=1 @query=nil @extra={} @cpp=20 @max_page=nil @n_records=nil @order=nil @order_col=nil @order_dir=nil end  | 
  
Instance Attribute Details
#cpp ⇒ Object
Number of object on each page
      95 96 97  | 
    
      # File 'lib/sinatra/pagers.rb', line 95 def cpp @cpp end  | 
  
#extra ⇒ Object
Extra parameters
      103 104 105  | 
    
      # File 'lib/sinatra/pagers.rb', line 103 def extra @extra end  | 
  
#max_page ⇒ Object
Maximum number of pages
      97 98 99  | 
    
      # File 'lib/sinatra/pagers.rb', line 97 def max_page @max_page end  | 
  
#n_records ⇒ Object (readonly)
Number of records
      101 102 103  | 
    
      # File 'lib/sinatra/pagers.rb', line 101 def n_records @n_records end  | 
  
#order ⇒ Object
String, with forma “<col>__<direction>”. Direction could be desc (default) or asc
      99 100 101  | 
    
      # File 'lib/sinatra/pagers.rb', line 99 def order @order end  | 
  
#page ⇒ Object
Current page
      91 92 93  | 
    
      # File 'lib/sinatra/pagers.rb', line 91 def page @page end  | 
  
#query ⇒ Object
dataset string to be processed
      93 94 95  | 
    
      # File 'lib/sinatra/pagers.rb', line 93 def query @query end  | 
  
Instance Method Details
#adapt_ads_cds(ads, cds_pre, no_query: false) ⇒ Object
Adapt the cds_pre dataset, using decisions made by a user
      126 127 128 129 130  | 
    
      # File 'lib/sinatra/pagers.rb', line 126 def adapt_ads_cds(ads, cds_pre, no_query:false) paqa=PagerAdsQueryAdapter.new(self, ads, cds_pre, no_query: no_query) @max_page=(paqa.cds_out.count/self.cpp.to_f).ceil adjust_page_order(paqa.cds_out) end  | 
  
#adapt_cds(cds_pre) ⇒ Object
Get an Dataset of CanonicalDocuments and returns a new one, with all pager settings applied Including using ‘dataset’ to select using title or author ‘order’
      118 119 120 121 122  | 
    
      # File 'lib/sinatra/pagers.rb', line 118 def adapt_cds(cds_pre) pcqa=PagerCdQueryAdapter.new(self, cds_pre) @max_page=(pcqa.cds_out.count/self.cpp.to_f).ceil adjust_page_order(pcqa.cds_out) end  | 
  
#adjust_page_order(dataset) ⇒ Object
Retrieves the records to be shown, adjusting by page and order
      152 153 154 155 156 157 158 159 160  | 
    
      # File 'lib/sinatra/pagers.rb', line 152 def adjust_page_order(dataset) @n_records=dataset.count dataset=dataset.offset((@page-1)*@cpp).limit(@cpp) if @order order_o= (@order_dir=='asc') ? @order_col.to_sym : Sequel.desc(@order_col.to_sym) dataset=dataset.order(order_o) end dataset end  | 
  
#current_first_record ⇒ Object
      162 163 164  | 
    
      # File 'lib/sinatra/pagers.rb', line 162 def current_first_record 1+(@page-1)*@cpp end  | 
  
#current_last_record ⇒ Object
      165 166 167 168 169 170 171  | 
    
      # File 'lib/sinatra/pagers.rb', line 165 def current_last_record if @page==@max_page @n_records else @page*@cpp end end  | 
  
#DELETE_element_to_delete ⇒ Object
      184  | 
    
      # File 'lib/sinatra/pagers.rb', line 184 hash_to_encode.delete(element_to_delete)  | 
  
#uri_encode(element_to_delete = nil) ⇒ Object
      173 174 175 176 177 178 179 180 181 182 183 184 185 186  | 
    
      # File 'lib/sinatra/pagers.rb', line 173 def uri_encode(element_to_delete=nil) hash_to_encode=self.extra.inject({}) {|ac,v| if(v[1].is_a? Array) ac["#{v[0]}[]"]=v[1] else ac[v[0]]=v[1] end ac } hash_to_encode[:query] = self.query hash_to_encode[:order] = self.order hash_to_encode.delete(element_to_delete) unless element_to_delete.nil? "&"+URI.encode_www_form(hash_to_encode) end  |