pagy 6.0.0 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/lib/config/pagy.rb +56 -44
- data/lib/javascripts/pagy-dev.js +3 -3
- data/lib/javascripts/pagy-module.js +2 -2
- data/lib/javascripts/pagy.js +1 -1
- data/lib/locales/ar.yml +15 -11
- data/lib/locales/be.yml +25 -0
- data/lib/locales/bg.yml +10 -11
- data/lib/locales/bs.yml +12 -11
- data/lib/locales/ca.yml +12 -11
- data/lib/locales/cs.yml +13 -10
- data/lib/locales/da.yml +14 -13
- data/lib/locales/de.yml +10 -11
- data/lib/locales/en.yml +10 -11
- data/lib/locales/es.yml +10 -11
- data/lib/locales/fr.yml +10 -11
- data/lib/locales/hr.yml +12 -11
- data/lib/locales/id.yml +10 -11
- data/lib/locales/it.yml +10 -11
- data/lib/locales/ja.yml +10 -11
- data/lib/locales/km.yml +10 -10
- data/lib/locales/ko.yml +10 -11
- data/lib/locales/nb.yml +10 -11
- data/lib/locales/nl.yml +10 -11
- data/lib/locales/nn.yml +10 -11
- data/lib/locales/pl.yml +12 -11
- data/lib/locales/pt-BR.yml +10 -11
- data/lib/locales/pt.yml +10 -11
- data/lib/locales/ru.yml +14 -11
- data/lib/locales/sr.yml +12 -10
- data/lib/locales/sv-SE.yml +10 -12
- data/lib/locales/sv.yml +10 -12
- data/lib/locales/sw.yml +12 -11
- data/lib/locales/ta.yml +12 -11
- data/lib/locales/tr.yml +10 -11
- data/lib/locales/uk.yml +12 -11
- data/lib/locales/vi.yml +17 -0
- data/lib/locales/zh-CN.yml +10 -11
- data/lib/locales/zh-HK.yml +10 -11
- data/lib/locales/zh-TW.yml +10 -11
- data/lib/pagy/backend.rb +10 -4
- data/lib/pagy/calendar/day.rb +4 -3
- data/lib/pagy/calendar/helper.rb +15 -11
- data/lib/pagy/calendar/month.rb +4 -3
- data/lib/pagy/calendar/quarter.rb +4 -3
- data/lib/pagy/calendar/week.rb +1 -1
- data/lib/pagy/calendar/year.rb +3 -2
- data/lib/pagy/calendar.rb +33 -7
- data/lib/pagy/console.rb +1 -1
- data/lib/pagy/countless.rb +1 -1
- data/lib/pagy/exceptions.rb +1 -1
- data/lib/pagy/extras/arel.rb +1 -1
- data/lib/pagy/extras/array.rb +1 -1
- data/lib/pagy/extras/bootstrap.rb +45 -32
- data/lib/pagy/extras/bulma.rb +41 -32
- data/lib/pagy/extras/calendar.rb +17 -13
- data/lib/pagy/extras/countless.rb +1 -1
- data/lib/pagy/extras/elasticsearch_rails.rb +8 -8
- data/lib/pagy/extras/foundation.rb +48 -33
- data/lib/pagy/extras/frontend_helpers.rb +11 -11
- data/lib/pagy/extras/gearbox.rb +1 -1
- data/lib/pagy/extras/headers.rb +8 -8
- data/lib/pagy/extras/i18n.rb +5 -5
- data/lib/pagy/extras/items.rb +19 -12
- data/lib/pagy/extras/jsonapi.rb +79 -0
- data/lib/pagy/extras/materialize.rb +42 -30
- data/lib/pagy/extras/meilisearch.rb +12 -11
- data/lib/pagy/extras/metadata.rb +2 -2
- data/lib/pagy/extras/navs.rb +22 -34
- data/lib/pagy/extras/overflow.rb +9 -7
- data/lib/pagy/extras/searchkick.rb +8 -8
- data/lib/pagy/extras/semantic.rb +41 -28
- data/lib/pagy/extras/standalone.rb +10 -16
- data/lib/pagy/extras/support.rb +19 -33
- data/lib/pagy/extras/trim.rb +4 -4
- data/lib/pagy/extras/uikit.rb +44 -31
- data/lib/pagy/frontend.rb +57 -26
- data/lib/pagy/i18n.rb +3 -3
- data/lib/pagy/url_helpers.rb +15 -12
- data/lib/pagy.rb +57 -41
- metadata +7 -19
- data/lib/templates/bootstrap_nav.html.erb +0 -24
- data/lib/templates/bootstrap_nav.html.haml +0 -34
- data/lib/templates/bootstrap_nav.html.slim +0 -34
- data/lib/templates/bulma_nav.html.erb +0 -24
- data/lib/templates/bulma_nav.html.haml +0 -32
- data/lib/templates/bulma_nav.html.slim +0 -32
- data/lib/templates/foundation_nav.html.erb +0 -24
- data/lib/templates/foundation_nav.html.haml +0 -34
- data/lib/templates/foundation_nav.html.slim +0 -34
- data/lib/templates/nav.html.erb +0 -22
- data/lib/templates/nav.html.haml +0 -30
- data/lib/templates/nav.html.slim +0 -29
- data/lib/templates/uikit_nav.html.erb +0 -15
- data/lib/templates/uikit_nav.html.haml +0 -28
- data/lib/templates/uikit_nav.html.slim +0 -28
data/lib/locales/sv.yml
CHANGED
@@ -1,23 +1,21 @@
|
|
1
|
-
# :
|
2
|
-
|
1
|
+
# :one_other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
|
3
2
|
sv:
|
4
3
|
pagy:
|
5
|
-
|
4
|
+
aria_label:
|
5
|
+
nav:
|
6
|
+
one: "Sida"
|
7
|
+
other: "Sidor"
|
8
|
+
prev: "Föregående"
|
9
|
+
next: "Nästa"
|
10
|
+
prev: "<"
|
11
|
+
next: ">"
|
12
|
+
gap: "…"
|
6
13
|
item_name:
|
7
14
|
one: "resultat"
|
8
|
-
two: "resultat"
|
9
15
|
other: "resultat"
|
10
|
-
|
11
|
-
nav:
|
12
|
-
prev: "‹ Föregående"
|
13
|
-
next: "Nästa ›"
|
14
|
-
gap: "…"
|
15
|
-
|
16
16
|
info:
|
17
17
|
no_items: "Inga %{item_name} hittade"
|
18
18
|
single_page: "Visar <b>%{count}</b> %{item_name}"
|
19
19
|
multiple_pages: "Visar %{item_name} <b>%{from}-%{to}</b> av <b>%{count}</b> totalt"
|
20
|
-
|
21
20
|
combo_nav_js: "<label>Sida %{page_input} av %{pages}</label>"
|
22
|
-
|
23
21
|
items_selector_js: "<label>Visa %{items_input} %{item_name} per sida</label>"
|
data/lib/locales/sw.yml
CHANGED
@@ -1,22 +1,23 @@
|
|
1
|
-
# :one_other pluralization
|
2
|
-
|
1
|
+
# :one_other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
|
3
2
|
sw:
|
4
3
|
pagy:
|
5
|
-
|
4
|
+
# please add a comment in the https://github.com/ddnexus/pagy/issues/603
|
5
|
+
# posting the translation of the following "Page"/"Pages" with the plurals for this locale
|
6
|
+
aria_label:
|
7
|
+
nav: "Pages"
|
8
|
+
# one: ""
|
9
|
+
# other: ""
|
10
|
+
prev: "Awali"
|
11
|
+
next: "Ifuatayo"
|
12
|
+
prev: "<"
|
13
|
+
next: ">"
|
14
|
+
gap: "…"
|
6
15
|
item_name:
|
7
16
|
one: "kifaa"
|
8
17
|
other: "vifaa"
|
9
|
-
|
10
|
-
nav:
|
11
|
-
prev: "‹ Awali"
|
12
|
-
next: "Ifuatayo ›"
|
13
|
-
gap: "…"
|
14
|
-
|
15
18
|
info:
|
16
19
|
no_items: "Hamna %{item_name} vilivyopatikana"
|
17
20
|
single_page: "Inaonyesha %{item_name} <b>%{count}</b>"
|
18
21
|
multiple_pages: "Inaonyesha %{item_name} <b>%{from}-%{to}</b> ya <b>%{count}</b> kwa jumla"
|
19
|
-
|
20
22
|
combo_nav_js: "<label>Kurasa %{page_input} ya %{pages}</label>"
|
21
|
-
|
22
23
|
items_selector_js: "<label>Onyesha %{items_input} %{item_name} kwa kila ukurasa</label>"
|
data/lib/locales/ta.yml
CHANGED
@@ -1,22 +1,23 @@
|
|
1
|
-
# :one_other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/
|
2
|
-
|
1
|
+
# :one_other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
|
3
2
|
ta:
|
4
3
|
pagy:
|
5
|
-
|
4
|
+
aria_label:
|
5
|
+
# please add a comment in the https://github.com/ddnexus/pagy/issues/604
|
6
|
+
# posting the translation of the following "Page"/"Pages" with the plurals for this locale
|
7
|
+
nav: "Pages"
|
8
|
+
# one: ""
|
9
|
+
# other: ""
|
10
|
+
prev: "முந்தையது"
|
11
|
+
next: "அடுத்தது"
|
12
|
+
prev: "<"
|
13
|
+
next: ">"
|
14
|
+
gap: "…"
|
6
15
|
item_name:
|
7
16
|
one: "பதிவு"
|
8
17
|
other: "பதிவுகள்"
|
9
|
-
|
10
|
-
nav:
|
11
|
-
prev: "‹ முந்தையது"
|
12
|
-
next: "அடுத்தது ›"
|
13
|
-
gap: "…"
|
14
|
-
|
15
18
|
info:
|
16
19
|
no_items: "%{item_name} கிடைக்கவில்லை"
|
17
20
|
single_page: "<b>%{count}</b> %{item_name} காட்டப்படுகின்றது"
|
18
21
|
multiple_pages: "மொத்தம் <b>%{count}</b> %{item_name}, காட்டப்படுபவை <b>%{from}-%{to}</b>"
|
19
|
-
|
20
22
|
combo_nav_js: "<label>%{pages}-இல் %{page_input}-வது பக்கம்</label>"
|
21
|
-
|
22
23
|
items_selector_js: "<label>ஒரு பக்கத்திற்கு %{items_input} %{item_name} காட்டு</label>"
|
data/lib/locales/tr.yml
CHANGED
@@ -1,20 +1,19 @@
|
|
1
|
-
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/
|
2
|
-
|
1
|
+
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
|
3
2
|
tr:
|
4
3
|
pagy:
|
5
|
-
|
4
|
+
aria_label:
|
5
|
+
# please add a comment in the https://github.com/ddnexus/pagy/issues/605
|
6
|
+
# posting the translation of the following "Page"/"Pages" with the plurals for this locale
|
7
|
+
nav: "Pages"
|
8
|
+
prev: "Önceki"
|
9
|
+
next: "Sonraki"
|
10
|
+
prev: "<"
|
11
|
+
next: ">"
|
12
|
+
gap: "…"
|
6
13
|
item_name: "kayıt"
|
7
|
-
|
8
|
-
nav:
|
9
|
-
prev: "‹ Önceki"
|
10
|
-
next: "Sonraki ›"
|
11
|
-
gap: "…"
|
12
|
-
|
13
14
|
info:
|
14
15
|
no_items: "Hiç %{item_name} bulunamadı"
|
15
16
|
single_page: "Toplam <b>%{count}</b> %{item_name} gösteriliyor"
|
16
17
|
multiple_pages: "<b>%{count}</b> %{item_name} içerisinden <b>%{from}-%{to}</b> kadarı gösteriliyor"
|
17
|
-
|
18
18
|
combo_nav_js: "<label>Sayfa %{page_input} / %{pages}</label>"
|
19
|
-
|
20
19
|
items_selector_js: "<label>Sayfada %{items_input} %{item_name} göster</label>"
|
data/lib/locales/uk.yml
CHANGED
@@ -1,24 +1,25 @@
|
|
1
|
-
# :east_slavic pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/
|
2
|
-
|
1
|
+
# :east_slavic pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
|
3
2
|
uk:
|
4
3
|
pagy:
|
5
|
-
|
4
|
+
aria_label:
|
5
|
+
nav:
|
6
|
+
one: "Сторінка"
|
7
|
+
few: "Сторінки"
|
8
|
+
many: "Сторінок"
|
9
|
+
other: "Сторінки"
|
10
|
+
prev: "Назад"
|
11
|
+
next: "Далі"
|
12
|
+
prev: "<"
|
13
|
+
next: ">"
|
14
|
+
gap: "…"
|
6
15
|
item_name:
|
7
16
|
one: "запис"
|
8
17
|
few: "записів"
|
9
18
|
many: "записів"
|
10
19
|
other: "записів"
|
11
|
-
|
12
|
-
nav:
|
13
|
-
prev: "‹ Назад"
|
14
|
-
next: "Далі ›"
|
15
|
-
gap: "…"
|
16
|
-
|
17
20
|
info:
|
18
21
|
no_items: "Більше %{item_name} немає"
|
19
22
|
single_page: "<b>%{count}</b> %{item_name}"
|
20
23
|
multiple_pages: "Загалом <b>%{count}</b> %{item_name}, показані з <b>%{from}</b> по <b>%{to}</b>"
|
21
|
-
|
22
24
|
combo_nav_js: "<label>Сторінка %{page_input} з %{pages}</label>"
|
23
|
-
|
24
25
|
items_selector_js: "<label>Показати %{items_input} %{item_name} на сторінці</label>"
|
data/lib/locales/vi.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
|
2
|
+
vi:
|
3
|
+
pagy:
|
4
|
+
aria_label:
|
5
|
+
nav: "Trang"
|
6
|
+
prev: "Trang trước"
|
7
|
+
next: "Trang sau"
|
8
|
+
prev: "<"
|
9
|
+
next: ">"
|
10
|
+
gap: "…"
|
11
|
+
item_name: "kết quả"
|
12
|
+
info:
|
13
|
+
no_items: "Không tìm thấy %{item_name} nào"
|
14
|
+
single_page: "<b>%{count}</b> %{item_name}"
|
15
|
+
multiple_pages: "Đang hiển thị <b>%{from}-%{to}</b> trong tổng số <b>%{count} %{item_name}</b>"
|
16
|
+
combo_nav_js: "<label>Trang %{page_input} trên %{pages}</label>"
|
17
|
+
items_selector_js: "<label>Hiển thị %{items_input} %{item_name} mỗi trang</label>"
|
data/lib/locales/zh-CN.yml
CHANGED
@@ -1,20 +1,19 @@
|
|
1
|
-
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/
|
2
|
-
|
1
|
+
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
|
3
2
|
zh-CN:
|
4
3
|
pagy:
|
5
|
-
|
4
|
+
aria_label:
|
5
|
+
# please add a comment in the https://github.com/ddnexus/pagy/issues/608
|
6
|
+
# posting the translation of the following "Page"/"Pages" with the plurals for this locale
|
7
|
+
nav: "Pages"
|
8
|
+
prev: "上一页"
|
9
|
+
next: "下一页"
|
10
|
+
prev: "<"
|
11
|
+
next: ">"
|
12
|
+
gap: "…"
|
6
13
|
item_name: ""
|
7
|
-
|
8
|
-
nav:
|
9
|
-
prev: "‹ 上一页"
|
10
|
-
next: "下一页 ›"
|
11
|
-
gap: "…"
|
12
|
-
|
13
14
|
info:
|
14
15
|
no_items: "项目未找到"
|
15
16
|
single_page: "显示<b>%{count}</b> 项%{item_name}"
|
16
17
|
multiple_pages: "共 <b>%{count}</b> 项%{item_name},显示 <b>%{from}-%{to}</b>"
|
17
|
-
|
18
18
|
combo_nav_js: "<label>第 %{page_input} / %{pages} 页</label>"
|
19
|
-
|
20
19
|
items_selector_js: "<label>每页显示 %{items_input} 条%</label>"
|
data/lib/locales/zh-HK.yml
CHANGED
@@ -1,20 +1,19 @@
|
|
1
|
-
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/
|
2
|
-
|
1
|
+
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
|
3
2
|
zh-HK:
|
4
3
|
pagy:
|
5
|
-
|
4
|
+
aria_label:
|
5
|
+
# please add a comment in the https://github.com/ddnexus/pagy/issues/609
|
6
|
+
# posting the translation of the following "Page"/"Pages" with the plurals for this locale
|
7
|
+
nav: "Pages"
|
8
|
+
prev: "上一頁"
|
9
|
+
next: "下一頁"
|
10
|
+
prev: "<"
|
11
|
+
next: ">"
|
12
|
+
gap: "…"
|
6
13
|
item_name: ""
|
7
|
-
|
8
|
-
nav:
|
9
|
-
prev: "‹ 上一頁"
|
10
|
-
next: "下一頁 ›"
|
11
|
-
gap: "…"
|
12
|
-
|
13
14
|
info:
|
14
15
|
no_items: "記錄未搵到"
|
15
16
|
single_page: "顯示 <b>%{count}</b> %{item_name}"
|
16
17
|
multiple_pages: "共 <b>%{count}</b> %{item_name},顯示 <b>%{from}-%{to}</b>"
|
17
|
-
|
18
18
|
combo_nav_js: "<label>第 %{page_input} / %{pages} 頁</label>"
|
19
|
-
|
20
19
|
items_selector_js: "<label>每頁顯示 %{items_input} 記錄</label>"
|
data/lib/locales/zh-TW.yml
CHANGED
@@ -1,20 +1,19 @@
|
|
1
|
-
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/
|
2
|
-
|
1
|
+
# :other pluralization (see https://github.com/ddnexus/pagy/blob/master/lib/pagy/i18n.rb)
|
3
2
|
zh-TW:
|
4
3
|
pagy:
|
5
|
-
|
4
|
+
aria_label:
|
5
|
+
# please add a comment in the https://github.com/ddnexus/pagy/issues/610
|
6
|
+
# posting the translation of the following "Page"/"Pages" with the plurals for this locale
|
7
|
+
nav: "Pages"
|
8
|
+
prev: "上一頁"
|
9
|
+
next: "下一頁"
|
10
|
+
prev: "<"
|
11
|
+
next: ">"
|
12
|
+
gap: "…"
|
6
13
|
item_name: ""
|
7
|
-
|
8
|
-
nav:
|
9
|
-
prev: "‹ 上一頁"
|
10
|
-
next: "下一頁 ›"
|
11
|
-
gap: "…"
|
12
|
-
|
13
14
|
info:
|
14
15
|
no_items: "沒找到項"
|
15
16
|
single_page: "顯示 <b>%{count}</b> 項%{item_name}"
|
16
17
|
multiple_pages: "共 <b>%{count}</b> 項%{item_name},顯示 <b>%{from}-%{to}</b>"
|
17
|
-
|
18
18
|
combo_nav_js: "<label>第 %{page_input} / %{pages} 頁</label>"
|
19
|
-
|
20
19
|
items_selector_js: "<label>每頁顯示 %{items_input} 項%{item_name}</label>"
|
data/lib/pagy/backend.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
# See Pagy::Backend API documentation: https://ddnexus.github.io/pagy/api/backend
|
1
|
+
# See Pagy::Backend API documentation: https://ddnexus.github.io/pagy/docs/api/backend
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
class Pagy
|
5
|
-
# Define a few generic methods to paginate
|
5
|
+
# Define a few generic methods to paginate a collection out of the box,
|
6
6
|
# or any collection by overriding pagy_get_items and/or pagy_get_vars in your controller
|
7
7
|
# See also the extras if you need specialized methods to paginate Arrays or other collections
|
8
8
|
module Backend
|
@@ -18,11 +18,17 @@ class Pagy
|
|
18
18
|
# You may need to override the count call for non AR collections
|
19
19
|
def pagy_get_vars(collection, vars)
|
20
20
|
pagy_set_items_from_params(vars) if defined?(ItemsExtra)
|
21
|
-
vars[:count] ||= (count = collection.count(:
|
22
|
-
vars[:page] ||=
|
21
|
+
vars[:count] ||= (count = collection.count(*vars[:count_args])).is_a?(Hash) ? count.size : count
|
22
|
+
vars[:page] ||= pagy_get_page(vars)
|
23
23
|
vars
|
24
24
|
end
|
25
25
|
|
26
|
+
# Get the page integer from the params
|
27
|
+
# Overridable by the jsonapi extra
|
28
|
+
def pagy_get_page(vars)
|
29
|
+
(params[vars[:page_param] || DEFAULT[:page_param]] || 1).to_i
|
30
|
+
end
|
31
|
+
|
26
32
|
# Sub-method called only by #pagy: here for easy customization of record-extraction by overriding
|
27
33
|
# You may need to override this method for collections without offset|limit
|
28
34
|
def pagy_get_items(collection, pagy)
|
data/lib/pagy/calendar/day.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
-
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/api/calendar
|
1
|
+
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/docs/api/calendar
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
class Pagy # :nodoc:
|
5
5
|
class Calendar # :nodoc:
|
6
6
|
# Calendar day subclass
|
7
7
|
class Day < Calendar
|
8
|
-
DEFAULT = {
|
9
|
-
|
8
|
+
DEFAULT = { size: 31, # rubocop:disable Style/MutableConstant
|
9
|
+
order: :asc,
|
10
|
+
format: '%d' }
|
10
11
|
|
11
12
|
protected
|
12
13
|
|
data/lib/pagy/calendar/helper.rb
CHANGED
@@ -3,8 +3,7 @@
|
|
3
3
|
class Pagy # :nodoc:
|
4
4
|
class Calendar # :nodoc:
|
5
5
|
# Initializes the calendar objects, reducing complexity in the extra
|
6
|
-
# The returned calendar is a simple hash of units/objects
|
7
|
-
# returning the last_object_at(time) used in the extra
|
6
|
+
# The returned calendar is a simple hash of units/objects
|
8
7
|
class Helper < Hash
|
9
8
|
class << self
|
10
9
|
private
|
@@ -16,14 +15,15 @@ class Pagy # :nodoc:
|
|
16
15
|
|
17
16
|
private
|
18
17
|
|
18
|
+
# Create the calendar
|
19
19
|
def init(conf, period, params)
|
20
|
-
@
|
20
|
+
@conf = Marshal.load(Marshal.dump(conf)) # store a copy
|
21
|
+
@units = Calendar::UNITS & @conf.keys # get the units in time length desc order
|
21
22
|
raise ArgumentError, 'no calendar unit found in pagy_calendar @configuration' if @units.empty?
|
22
23
|
|
23
24
|
@period = period
|
24
25
|
@params = params
|
25
26
|
@page_param = conf[:pagy][:page_param] || DEFAULT[:page_param]
|
26
|
-
@conf = Marshal.load(Marshal.dump(conf)) # store a copy
|
27
27
|
@units.each do |unit| # set all the :page_param vars for later deletion
|
28
28
|
unit_page_param = :"#{unit}_#{@page_param}"
|
29
29
|
conf[unit][:page_param] = unit_page_param
|
@@ -33,29 +33,33 @@ class Pagy # :nodoc:
|
|
33
33
|
object = nil
|
34
34
|
@units.each_with_index do |unit, index|
|
35
35
|
params_to_delete = @units[(index + 1), @units.size].map { |sub| conf[sub][:page_param] } + [@page_param]
|
36
|
-
conf[unit][:params] = lambda
|
37
|
-
# Hash#except missing from ruby 2.5 baseline
|
38
|
-
params_to_delete.each { |p| unit_params.delete(p.to_s) }
|
39
|
-
unit_params
|
40
|
-
end
|
36
|
+
conf[unit][:params] = lambda { |up| up.except(*params_to_delete.map(&:to_s)) } # rubocop:disable Style/Lambda
|
41
37
|
conf[unit][:period] = object&.send(:active_period) || @period
|
42
38
|
calendar[unit] = object = Calendar.send(:create, unit, conf[unit])
|
43
39
|
end
|
44
40
|
[replace(calendar), object.from, object.to]
|
45
41
|
end
|
46
42
|
|
47
|
-
|
43
|
+
# Return the calendar object at time
|
44
|
+
def calendar_at(time, **opts)
|
48
45
|
conf = Marshal.load(Marshal.dump(@conf))
|
49
46
|
page_params = {}
|
50
47
|
@units.inject(nil) do |object, unit|
|
51
48
|
conf[unit][:period] = object&.send(:active_period) || @period
|
52
49
|
conf[unit][:page] = page_params[:"#{unit}_#{@page_param}"] \
|
53
|
-
= Calendar.send(:create, unit, conf[unit]).send(:page_at, time)
|
50
|
+
= Calendar.send(:create, unit, conf[unit]).send(:page_at, time, **opts)
|
54
51
|
conf[unit][:params] ||= {}
|
55
52
|
conf[unit][:params].merge!(page_params)
|
56
53
|
Calendar.send(:create, unit, conf[unit])
|
57
54
|
end
|
58
55
|
end
|
56
|
+
|
57
|
+
public
|
58
|
+
|
59
|
+
# Return the current time of the smallest time unit shown
|
60
|
+
def showtime
|
61
|
+
self[@units.last].from
|
62
|
+
end
|
59
63
|
end
|
60
64
|
end
|
61
65
|
end
|
data/lib/pagy/calendar/month.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
-
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/api/calendar
|
1
|
+
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/docs/api/calendar
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
class Pagy # :nodoc:
|
5
5
|
class Calendar # :nodoc:
|
6
6
|
# Calendar month subclass
|
7
7
|
class Month < Calendar
|
8
|
-
DEFAULT = {
|
9
|
-
|
8
|
+
DEFAULT = { size: 12, # rubocop:disable Style/MutableConstant
|
9
|
+
order: :asc,
|
10
|
+
format: '%b' }
|
10
11
|
|
11
12
|
protected
|
12
13
|
|
@@ -1,12 +1,13 @@
|
|
1
|
-
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/api/calendar
|
1
|
+
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/docs/api/calendar
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
class Pagy # :nodoc:
|
5
5
|
class Calendar # :nodoc:
|
6
6
|
# Calendar quarter subclass
|
7
7
|
class Quarter < Calendar
|
8
|
-
DEFAULT = {
|
9
|
-
|
8
|
+
DEFAULT = { size: 4, # rubocop:disable Style/MutableConstant
|
9
|
+
order: :asc,
|
10
|
+
format: 'Q%q' } # '%q' token
|
10
11
|
|
11
12
|
# The label for any page, with the substitution of the '%q' token
|
12
13
|
def label_for(page, opts = {})
|
data/lib/pagy/calendar/week.rb
CHANGED
data/lib/pagy/calendar/year.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/api/calendar
|
1
|
+
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/docs/api/calendar
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
class Pagy # :nodoc:
|
5
5
|
class Calendar # :nodoc:
|
6
6
|
# Calendar year subclass
|
7
7
|
class Year < Calendar
|
8
|
-
DEFAULT = {
|
8
|
+
DEFAULT = { size: 10, # rubocop:disable Style/MutableConstant
|
9
|
+
order: :asc,
|
9
10
|
format: '%Y' }
|
10
11
|
|
11
12
|
protected
|
data/lib/pagy/calendar.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/api/calendar
|
1
|
+
# See Pagy::Countless API documentation: https://ddnexus.github.io/pagy/docs/api/calendar
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require 'active_support'
|
@@ -13,12 +13,12 @@ class Pagy # :nodoc:
|
|
13
13
|
# Base class for time units subclasses (Year, Quarter, Month, Week, Day)
|
14
14
|
class Calendar < Pagy
|
15
15
|
# Specific out of range error
|
16
|
-
class OutOfRangeError <
|
16
|
+
class OutOfRangeError < VariableError; end
|
17
17
|
|
18
18
|
# List of units in desc order of duration. It can be used for custom units.
|
19
19
|
UNITS = %i[year quarter month week day] # rubocop:disable Style/MutableConstant
|
20
20
|
|
21
|
-
attr_reader :order
|
21
|
+
attr_reader :order, :from, :to
|
22
22
|
|
23
23
|
# Merge and validate the options, do some simple arithmetic and set a few instance variables
|
24
24
|
def initialize(vars) # rubocop:disable Lint/MissingSuper
|
@@ -49,10 +49,24 @@ class Pagy # :nodoc:
|
|
49
49
|
protected
|
50
50
|
|
51
51
|
# The page that includes time
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
52
|
+
# In case of out of range time, the :fit_time option avoids the outOfRangeError
|
53
|
+
# and returns the closest page to the passed time argument (first or last page)
|
54
|
+
def page_at(time, **opts)
|
55
|
+
fit_time = time
|
56
|
+
fit_final = @final - 1
|
57
|
+
unless time.between?(@initial, fit_final)
|
58
|
+
raise OutOfRangeError.new(self, :time, "between #{@initial} and #{fit_final}", time) unless opts[:fit_time]
|
59
|
+
|
60
|
+
if time < @final
|
61
|
+
fit_time = @initial
|
62
|
+
ordinal = 'first'
|
63
|
+
else
|
64
|
+
fit_time = fit_final
|
65
|
+
ordinal = 'last'
|
66
|
+
end
|
67
|
+
Warning.warn "Pagy::Calendar#page_at: Rescued #{time} out of range by returning the #{ordinal} page."
|
68
|
+
end
|
69
|
+
offset = page_offset_at(fit_time) # offset starts from 0
|
56
70
|
@order == :asc ? offset + 1 : @pages - offset
|
57
71
|
end
|
58
72
|
|
@@ -84,6 +98,18 @@ class Pagy # :nodoc:
|
|
84
98
|
[[@starting, @from].max, [@to - 1, @ending].min] # -1 sec: include only last unit day
|
85
99
|
end
|
86
100
|
|
101
|
+
# :nocov:
|
102
|
+
# This method must be implemented by the unit subclass
|
103
|
+
def starting_time_for(*)
|
104
|
+
raise NoMethodError, 'the starting_time_for method must be implemented by the unit subclass'
|
105
|
+
end
|
106
|
+
|
107
|
+
# This method must be implemented by the unit subclass
|
108
|
+
def page_offset_at(*)
|
109
|
+
raise NoMethodError, 'the page_offset_at method must be implemented by the unit subclass'
|
110
|
+
end
|
111
|
+
# :nocov:
|
112
|
+
|
87
113
|
class << self
|
88
114
|
# Create a subclass instance by unit name (internal use)
|
89
115
|
def create(unit, vars)
|
data/lib/pagy/console.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# See Pagy::Console API documentation: https://ddnexus.github.io/pagy/api/console
|
1
|
+
# See Pagy::Console API documentation: https://ddnexus.github.io/pagy/docs/api/console
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
require 'pagy' # so you can require just the extra in the console
|
data/lib/pagy/countless.rb
CHANGED
data/lib/pagy/exceptions.rb
CHANGED
data/lib/pagy/extras/arel.rb
CHANGED
data/lib/pagy/extras/array.rb
CHANGED