Project

datewari

0.0
Low commit activity in last 3 years
A long-lived project that still receives updates
An ActiveRecord extension to build date oriented pagination links such as monthly pages and weekly pages
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Datewari

An ActiveRecord extension to build date oriented pagination links such as monthly pages and weekly pages.

Dependencies

  • ruby 2.4+
  • rails 5.0+ (activerecord, activesupport, actionview)

Following ActiveRecord adapters are supported:

  • mysql
  • postgresql

Installation

Add this line to your application's Gemfile:

gem 'datewari'

Then execute:

$ bundle

Usage

Paginate collection by created_at column:

# yearly pagination
users = User.date_paginate(:created_at, :desc, date: '2018-01-01', scope: :yearly)

# monthly pagination
users = User.date_paginate(:created_at, :desc, date: '2018-01-01', scope: :monthly)

# weekly pagination
users = User.date_paginate(:created_at, :desc, date: '2018-01-01', scope: :weekly)

# daily pagination
users = User.date_paginate(:created_at, :desc, date: '2018-01-01', scope: :daily)

Access paginator variables

You can get paginator variables as follows:

# dates of pages
users.paginator.pages

# count of total entries
users.paginator.total_entries

Render pagination links

Render pagination links:

date_paginate users

# with options
date_paginate users, previous_label: 'Prev', next_label: 'Next'

Available options:

  • previous_label: label for previous link.
  • next_label: label for next link.
  • page_gap: label for abbrebiated pages.
  • link_separator: label between pages.
  • yearly_format: date format for yearly pagination.
  • monthly_format: date format for monthly pagination.
  • weekly_format: date format for weekly pagination.
  • daily_format: date format for daily pagination.
  • inner_window: window size around current page link. default: 4.
  • outer_window: window size around first page and last page link. default: 1.
  • page_links: render page links or not. default: true.
  • param_name: query parameter name. default: date.
  • params: optional parameters for page links.
  • renderer: custom link render class.

Render page info

Render page info:

date_page_entries_info users

I18n

I18n default values are as follows:

en:
  date_paginate:
    previous_label: "← Previous"
    next_label: "Next →"
    page_gap: "…"
    link_separator: "|"
    yearly_format: "%Y"
    monthly_format: "%Y-%m"
    weekly_format: "%Y-%m-%d"
    daily_format: "%Y-%m-%d"
    page_entries_info:
      single_page:
        zero: "No items found"
        other: "Displaying <b>%{total}</b> items"
      multi_page: "Displaying <b>%{current}</b> of <b>%{total}</b> in total"

Contributing

Bug reports and pull requests are welcome at https://github.com/kanety/datewari.

License

The gem is available as open source under the terms of the MIT License.