pagy 7.0.11 → 43.5.1

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.
Files changed (211) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/apps/calendar.ru +741 -0
  4. data/apps/demo.ru +513 -0
  5. data/apps/enable_rails_page_segment.rb +54 -0
  6. data/apps/index.rb +9 -0
  7. data/apps/keynav+root_key.ru +316 -0
  8. data/apps/keynav.ru +255 -0
  9. data/apps/keyset.ru +219 -0
  10. data/apps/keyset_sequel.ru +212 -0
  11. data/apps/rails.ru +216 -0
  12. data/apps/repro.ru +185 -0
  13. data/bin/pagy +5 -0
  14. data/config/pagy.rb +46 -0
  15. data/javascripts/ai_widget.js +90 -0
  16. data/javascripts/pagy.js +168 -0
  17. data/javascripts/pagy.min.js +2 -0
  18. data/javascripts/pagy.mjs +161 -0
  19. data/javascripts/wand.js +1172 -0
  20. data/lib/pagy/classes/calendar/calendar.rb +101 -0
  21. data/lib/pagy/{calendar → classes/calendar}/day.rb +9 -12
  22. data/lib/pagy/{calendar → classes/calendar}/month.rb +7 -11
  23. data/lib/pagy/{calendar → classes/calendar}/quarter.rb +12 -16
  24. data/lib/pagy/classes/calendar/unit.rb +93 -0
  25. data/lib/pagy/{calendar → classes/calendar}/week.rb +7 -11
  26. data/lib/pagy/{calendar → classes/calendar}/year.rb +9 -9
  27. data/lib/pagy/classes/exceptions.rb +26 -0
  28. data/lib/pagy/classes/keyset/adapters/active_record.rb +50 -0
  29. data/lib/pagy/classes/keyset/adapters/sequel.rb +62 -0
  30. data/lib/pagy/classes/keyset/keynav.rb +85 -0
  31. data/lib/pagy/classes/keyset/keyset.rb +150 -0
  32. data/lib/pagy/classes/offset/countish.rb +17 -0
  33. data/lib/pagy/classes/offset/countless.rb +63 -0
  34. data/lib/pagy/classes/offset/offset.rb +63 -0
  35. data/lib/pagy/classes/offset/search.rb +34 -0
  36. data/lib/pagy/classes/request.rb +48 -0
  37. data/lib/pagy/cli.rb +122 -0
  38. data/lib/pagy/console.rb +5 -20
  39. data/lib/pagy/deprecated.rb +84 -0
  40. data/lib/pagy/modules/abilities/configurable.rb +37 -0
  41. data/lib/pagy/modules/abilities/countable.rb +23 -0
  42. data/lib/pagy/modules/abilities/linkable.rb +72 -0
  43. data/lib/pagy/modules/abilities/rangeable.rb +14 -0
  44. data/lib/pagy/modules/abilities/shiftable.rb +12 -0
  45. data/lib/pagy/modules/b64.rb +35 -0
  46. data/lib/pagy/modules/console.rb +33 -0
  47. data/lib/pagy/modules/i18n/i18n.rb +72 -0
  48. data/lib/pagy/modules/i18n/p11n/arabic.rb +30 -0
  49. data/lib/pagy/modules/i18n/p11n/east_slavic.rb +27 -0
  50. data/lib/pagy/modules/i18n/p11n/one_other.rb +15 -0
  51. data/lib/pagy/modules/i18n/p11n/one_upto_two_other.rb +15 -0
  52. data/lib/pagy/modules/i18n/p11n/other.rb +13 -0
  53. data/lib/pagy/modules/i18n/p11n/polish.rb +27 -0
  54. data/lib/pagy/modules/i18n/p11n/west_slavic.rb +22 -0
  55. data/lib/pagy/modules/i18n/p11n.rb +16 -0
  56. data/lib/pagy/modules/searcher.rb +20 -0
  57. data/lib/pagy/next.rb +25 -0
  58. data/lib/pagy/tasks/sync.rb +20 -0
  59. data/lib/pagy/toolbox/helpers/anchor_tags.rb +21 -0
  60. data/lib/pagy/toolbox/helpers/bootstrap/input_nav_js.rb +28 -0
  61. data/lib/pagy/toolbox/helpers/bootstrap/previous_next_html.rb +19 -0
  62. data/lib/pagy/toolbox/helpers/bootstrap/series_nav.rb +32 -0
  63. data/lib/pagy/toolbox/helpers/bootstrap/series_nav_js.rb +24 -0
  64. data/lib/pagy/toolbox/helpers/bulma/input_nav_js.rb +25 -0
  65. data/lib/pagy/toolbox/helpers/bulma/previous_next_html.rb +20 -0
  66. data/lib/pagy/toolbox/helpers/bulma/series_nav.rb +31 -0
  67. data/lib/pagy/toolbox/helpers/bulma/series_nav_js.rb +23 -0
  68. data/lib/pagy/toolbox/helpers/data_hash.rb +29 -0
  69. data/lib/pagy/toolbox/helpers/headers_hash.rb +30 -0
  70. data/lib/pagy/toolbox/helpers/info_tag.rb +30 -0
  71. data/lib/pagy/toolbox/helpers/input_nav_js.rb +22 -0
  72. data/lib/pagy/toolbox/helpers/limit_tag_js.rb +25 -0
  73. data/lib/pagy/toolbox/helpers/loaders.rb +55 -0
  74. data/lib/pagy/toolbox/helpers/page_url.rb +16 -0
  75. data/lib/pagy/toolbox/helpers/series_nav.rb +30 -0
  76. data/lib/pagy/toolbox/helpers/series_nav_js.rb +20 -0
  77. data/lib/pagy/toolbox/helpers/support/a_lambda.rb +36 -0
  78. data/lib/pagy/toolbox/helpers/support/data_pagy_attribute.rb +19 -0
  79. data/lib/pagy/toolbox/helpers/support/nav_aria_label_attribute.rb +10 -0
  80. data/lib/pagy/toolbox/helpers/support/series.rb +37 -0
  81. data/lib/pagy/toolbox/helpers/support/wrap_input_nav_js.rb +19 -0
  82. data/lib/pagy/toolbox/helpers/support/wrap_series_nav.rb +17 -0
  83. data/lib/pagy/toolbox/helpers/support/wrap_series_nav_js.rb +42 -0
  84. data/lib/pagy/toolbox/helpers/urls_hash.rb +12 -0
  85. data/lib/pagy/toolbox/paginators/calendar.rb +34 -0
  86. data/lib/pagy/toolbox/paginators/countish.rb +38 -0
  87. data/lib/pagy/toolbox/paginators/countless.rb +22 -0
  88. data/lib/pagy/toolbox/paginators/elasticsearch_rails.rb +56 -0
  89. data/lib/pagy/toolbox/paginators/keynav_js.rb +26 -0
  90. data/lib/pagy/toolbox/paginators/keyset.rb +15 -0
  91. data/lib/pagy/toolbox/paginators/meilisearch.rb +34 -0
  92. data/lib/pagy/toolbox/paginators/method.rb +38 -0
  93. data/lib/pagy/toolbox/paginators/offset.rb +24 -0
  94. data/lib/pagy/toolbox/paginators/searchkick.rb +34 -0
  95. data/lib/pagy/toolbox/paginators/typesense_rails.rb +34 -0
  96. data/lib/pagy.rb +67 -131
  97. data/locales/ar.yml +32 -0
  98. data/locales/be.yml +28 -0
  99. data/locales/bg.yml +24 -0
  100. data/locales/bs.yml +28 -0
  101. data/locales/ca.yml +24 -0
  102. data/locales/ckb.yml +20 -0
  103. data/locales/cs.yml +26 -0
  104. data/locales/da.yml +24 -0
  105. data/locales/de.yml +24 -0
  106. data/locales/dz.yml +20 -0
  107. data/locales/en.yml +24 -0
  108. data/{lib/locales → locales}/es.yml +9 -6
  109. data/locales/fr.yml +24 -0
  110. data/locales/hr.yml +28 -0
  111. data/locales/id.yml +20 -0
  112. data/locales/it.yml +24 -0
  113. data/locales/ja.yml +20 -0
  114. data/locales/km.yml +20 -0
  115. data/locales/ko.yml +20 -0
  116. data/locales/nb.yml +24 -0
  117. data/locales/nl.yml +24 -0
  118. data/locales/nn.yml +24 -0
  119. data/locales/pl.yml +28 -0
  120. data/{lib/locales → locales}/pt-BR.yml +10 -7
  121. data/{lib/locales → locales}/pt.yml +10 -7
  122. data/locales/ru.yml +28 -0
  123. data/locales/sk.yml +26 -0
  124. data/locales/sr.yml +28 -0
  125. data/locales/sv-SE.yml +24 -0
  126. data/locales/sv.yml +24 -0
  127. data/locales/sw.yml +28 -0
  128. data/locales/ta.yml +24 -0
  129. data/locales/tr.yml +24 -0
  130. data/locales/uk.yml +28 -0
  131. data/locales/vi.yml +20 -0
  132. data/locales/zh-CN.yml +20 -0
  133. data/locales/zh-HK.yml +20 -0
  134. data/locales/zh-TW.yml +20 -0
  135. data/stylesheets/pagy-tailwind.css +68 -0
  136. data/stylesheets/pagy.css +83 -0
  137. metadata +185 -94
  138. data/lib/config/pagy.rb +0 -258
  139. data/lib/javascripts/pagy-dev.js +0 -112
  140. data/lib/javascripts/pagy-module.js +0 -111
  141. data/lib/javascripts/pagy.js +0 -1
  142. data/lib/locales/ar.yml +0 -30
  143. data/lib/locales/be.yml +0 -25
  144. data/lib/locales/bg.yml +0 -21
  145. data/lib/locales/bs.yml +0 -25
  146. data/lib/locales/ca.yml +0 -23
  147. data/lib/locales/ckb.yml +0 -18
  148. data/lib/locales/cs.yml +0 -23
  149. data/lib/locales/da.yml +0 -23
  150. data/lib/locales/de.yml +0 -21
  151. data/lib/locales/en.yml +0 -21
  152. data/lib/locales/fr.yml +0 -21
  153. data/lib/locales/hr.yml +0 -25
  154. data/lib/locales/id.yml +0 -19
  155. data/lib/locales/it.yml +0 -21
  156. data/lib/locales/ja.yml +0 -19
  157. data/lib/locales/km.yml +0 -19
  158. data/lib/locales/ko.yml +0 -19
  159. data/lib/locales/nb.yml +0 -21
  160. data/lib/locales/nl.yml +0 -21
  161. data/lib/locales/nn.yml +0 -21
  162. data/lib/locales/pl.yml +0 -25
  163. data/lib/locales/ru.yml +0 -27
  164. data/lib/locales/sr.yml +0 -25
  165. data/lib/locales/sv-SE.yml +0 -21
  166. data/lib/locales/sv.yml +0 -21
  167. data/lib/locales/sw.yml +0 -23
  168. data/lib/locales/ta.yml +0 -23
  169. data/lib/locales/tr.yml +0 -19
  170. data/lib/locales/uk.yml +0 -25
  171. data/lib/locales/vi.yml +0 -17
  172. data/lib/locales/zh-CN.yml +0 -19
  173. data/lib/locales/zh-HK.yml +0 -19
  174. data/lib/locales/zh-TW.yml +0 -19
  175. data/lib/pagy/backend.rb +0 -39
  176. data/lib/pagy/calendar/helper.rb +0 -65
  177. data/lib/pagy/calendar.rb +0 -126
  178. data/lib/pagy/countless.rb +0 -37
  179. data/lib/pagy/exceptions.rb +0 -25
  180. data/lib/pagy/extras/arel.rb +0 -36
  181. data/lib/pagy/extras/array.rb +0 -24
  182. data/lib/pagy/extras/bootstrap.rb +0 -108
  183. data/lib/pagy/extras/bulma.rb +0 -105
  184. data/lib/pagy/extras/calendar.rb +0 -53
  185. data/lib/pagy/extras/countless.rb +0 -37
  186. data/lib/pagy/extras/elasticsearch_rails.rb +0 -80
  187. data/lib/pagy/extras/foundation.rb +0 -105
  188. data/lib/pagy/extras/frontend_helpers.rb +0 -67
  189. data/lib/pagy/extras/gearbox.rb +0 -54
  190. data/lib/pagy/extras/headers.rb +0 -53
  191. data/lib/pagy/extras/i18n.rb +0 -26
  192. data/lib/pagy/extras/items.rb +0 -61
  193. data/lib/pagy/extras/jsonapi.rb +0 -79
  194. data/lib/pagy/extras/materialize.rb +0 -96
  195. data/lib/pagy/extras/meilisearch.rb +0 -65
  196. data/lib/pagy/extras/metadata.rb +0 -38
  197. data/lib/pagy/extras/navs.rb +0 -51
  198. data/lib/pagy/extras/overflow.rb +0 -80
  199. data/lib/pagy/extras/searchkick.rb +0 -67
  200. data/lib/pagy/extras/semantic.rb +0 -95
  201. data/lib/pagy/extras/standalone.rb +0 -60
  202. data/lib/pagy/extras/support.rb +0 -40
  203. data/lib/pagy/extras/trim.rb +0 -29
  204. data/lib/pagy/extras/uikit.rb +0 -97
  205. data/lib/pagy/frontend.rb +0 -114
  206. data/lib/pagy/i18n.rb +0 -165
  207. data/lib/pagy/url_helpers.rb +0 -27
  208. data/lib/stylesheets/pagy.css +0 -61
  209. data/lib/stylesheets/pagy.scss +0 -50
  210. data/lib/stylesheets/pagy.tailwind.scss +0 -24
  211. /data/{lib/javascripts/pagy-module.d.ts → javascripts/pagy.d.ts} +0 -0
data/apps/calendar.ru ADDED
@@ -0,0 +1,741 @@
1
+ # frozen_string_literal: true
2
+
3
+ # DESCRIPTION
4
+ # Showcase the calendar; reproduce related issues
5
+ #
6
+ # DOC
7
+ # https://ddnexus.github.io/pagy/playground/#5-calendar-app
8
+ #
9
+ # BIN HELP
10
+ # pagy -h
11
+ #
12
+ # DEV USAGE
13
+ # pagy clone calendar
14
+ # pagy ./calendar.ru
15
+ #
16
+ # URL
17
+ # http://127.0.0.1:8000
18
+
19
+ VERSION = '43.5.1'
20
+
21
+ if VERSION != Pagy::VERSION
22
+ Warning.warn("\n>>> WARNING! '#{File.basename(__FILE__)}-#{VERSION}' running with 'pagy-#{Pagy::VERSION}'! <<< \n\n")
23
+ end
24
+
25
+ # Bundle
26
+ require 'bundler/inline'
27
+ gemfile(!Pagy::ROOT.join('pagy.gemspec').exist?) do
28
+ source 'https://rubygems.org'
29
+ gem 'activerecord'
30
+ gem 'activesupport'
31
+ gem 'groupdate'
32
+ gem 'puma'
33
+ gem 'sinatra'
34
+ gem 'sqlite3'
35
+ end
36
+
37
+ # Change this to your timezone
38
+ TIME_ZONE = 'Africa/Accra' # +0000
39
+ Time.zone = TIME_ZONE
40
+
41
+ # Pagy initializer
42
+
43
+ # Sinatra setup
44
+ require 'sinatra/base'
45
+ # Sinatra application
46
+ class PagyCalendar < Sinatra::Base
47
+ include Pagy::Method
48
+
49
+ if ENV['E2E_TEST']
50
+ get('/assets/:file') do
51
+ content_type 'text/css'
52
+ send_file Pagy::ROOT.join('../test/e2e/assets', params[:file])
53
+ end
54
+ end
55
+
56
+ # This method must be implemented by the application.
57
+ # It must return the starting and ending local Time objects array defining the calendar :period
58
+ def pagy_calendar_period(collection)
59
+ starting = collection.minimum('time')
60
+ ending = collection.maximum('time')
61
+ [starting.in_time_zone, ending.in_time_zone]
62
+ end
63
+
64
+ # This method must be implemented by the application.
65
+ # It receives the main collection and must return a filtered version of it.
66
+ # The filter logic must be equivalent to {storage_time >= from && storage_time < to}
67
+ def pagy_calendar_filter(collection, from, to)
68
+ collection.where(time: from...to)
69
+ end
70
+
71
+ # This method may optionally be implemented by the application.
72
+ # It must return an array of counts grouped by unit or nil/false to skip the counts.
73
+ # If the counts are returned, pagy adds the "empty-page" CSS class to the empty page links
74
+ # and the tooltip feedback with the count to each page link.
75
+ def pagy_calendar_counts(collection, unit, from, to)
76
+ # The group_by_period method is provided by the groupdate gem
77
+ # We use the :skip_counts param for testing the output in cypress
78
+ # If collection is in order: :desc, add the reverse: true option to the next line
79
+ collection.group_by_period(unit, :time, range: from...to).count.values \
80
+ unless params[:skip_counts] == 'true'
81
+ end
82
+
83
+ # Root route/action
84
+ get '/' do
85
+ Time.zone = TIME_ZONE
86
+ # Default calendar
87
+ # The conf Hash defines the pagy objects options, keyed by calendar unit and the final pagy standard object
88
+ # The :disabled is an optional and arbitrarily named param that skips the calendar pagination and uses only the pagy
89
+ # object to paginate the unfiltered collection. (It's active by default even without a :disabled param).
90
+ # You way want to invert the logic (also in the view) with something like `active: params[:active]`,
91
+ # which would be inactive by default and only active on demand.
92
+ @calendar, @pagy, @events = pagy(:calendar, Event.all,
93
+ year: {},
94
+ month: {},
95
+ day: {},
96
+ disabled: params[:disabled])
97
+ erb :main
98
+ end
99
+
100
+ # Views
101
+ template :layout do
102
+ <<~ERB
103
+ <!DOCTYPE html>
104
+ <html lang="en">
105
+ <head>
106
+ <title>Pagy Calendar App</title>
107
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
108
+ <% if ENV['E2E_TEST'] %>
109
+ <link rel="stylesheet" href="/assets/bootstrap.min.css">
110
+ <% else %>
111
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5/dist/css/bootstrap.min.css">
112
+ <% end %>
113
+
114
+ <style type="text/css">
115
+ @media screen { html, body {
116
+ font-size: .8rem;
117
+ line-height: 1.1;
118
+ padding: 0;
119
+ margin: 0;
120
+ } }
121
+ body {
122
+ background-color: #f7f7f7;
123
+ color: #51585F;
124
+ font-family: sans-serif;
125
+ }
126
+ .content {
127
+ padding: 1rem 1.5rem 2rem;
128
+ }
129
+ /* added with the pagy counts feature */
130
+ a.empty-page {
131
+ color: #888888;
132
+ }
133
+ </style>
134
+ </head>
135
+
136
+ <body>
137
+ <%= yield %>
138
+ </body>
139
+ </html>
140
+ ERB
141
+ end
142
+ template :main do
143
+ <<~ERB
144
+ <div class="container">
145
+ <h1>Pagy Calendar App</h1>
146
+ <p>Self-contained, standalone app implementing nested calendar pagination for year, month, day units.</p>
147
+ <p>See the <a href="https://ddnexus.github.io/pagy/toolbox/paginators/calendar">Pagy Calendar</a> for details.</p>
148
+
149
+ <h2>Versions</h2>
150
+ <ul>
151
+ <li>Ruby: <%= RUBY_VERSION %></li>
152
+ <li>Rack: <%= Rack::RELEASE %></li>
153
+ <li>Sinatra: <%= Sinatra::VERSION %></li>
154
+ <li>Pagy: <%= Pagy::VERSION %></li>
155
+ </ul>
156
+ <hr>
157
+
158
+ <!-- calendar UI manual toggle -->
159
+ <p>
160
+ <% if params[:disabled] %>
161
+ <a id="toggle" href="/" >Show Calendar</a>
162
+ <% else %>
163
+ <a id="toggle" href="?disabled=true" >Hide Calendar</a>
164
+ <br>
165
+ <a id="go-to-day" href="<%= @calendar.url_at(Time.zone.parse('2022-03-02')) %>">Go to the 2022-03-02 Page</a>
166
+ <!-- You can use Time.zone.now to find the current page if your time period include today -->
167
+ <% end %>
168
+ </p>
169
+
170
+ <!-- calendar filtering navs -->
171
+ <% if @calendar %>
172
+ <p>Showtime: <%= @calendar.showtime %></p>
173
+ <%= @calendar[:year].series_nav(:bootstrap, id: "year-nav", aria_label: "Years") %> <!-- year nav -->
174
+ <%= @calendar[:month].series_nav(:bootstrap, id: "month-nav", aria_label: "Months") %> <!-- month nav -->
175
+ <%= @calendar[:day].series_nav(:bootstrap, id: "day-nav", aria_label: "Days") %> <!-- day nav -->
176
+ <% end %>
177
+
178
+ <!-- page info extended for the calendar unit -->
179
+ <div class="alert alert-primary" role="alert">
180
+ <%= @pagy.info_tag(id: 'pagy-info') %>
181
+ <% if @calendar %>
182
+ for <b><%= @calendar.showtime.strftime('%Y-%m-%d') %></b>
183
+ <% end %>
184
+ </div>
185
+
186
+ <!-- page records (time converted in your local time)-->
187
+ <div id="records" class="list-group">
188
+ <% @events.each do |event| %>
189
+ <p class="list-group-item"><%= event.title %> - <%= event.time.to_s %></p>
190
+ <% end %>
191
+ </div>
192
+
193
+ <!-- standard pagination of the last unit (month) -->
194
+ <p><%= @pagy.series_nav(:bootstrap, id: 'pages-nav', aria_label: 'Pages') if @pagy.last > 1 %></p>
195
+ </div>
196
+ ERB
197
+ end
198
+ end
199
+
200
+ # ActiveRecord setup
201
+ require 'active_record'
202
+
203
+ # Log
204
+ output = ENV['APP_ENV'].equal?('showcase') ? IO::NULL : $stdout
205
+ ActiveRecord::Base.logger = Logger.new(output)
206
+
207
+ # Connection
208
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: 'file:memdb1?mode=memory&cache=shared')
209
+
210
+ Date.beginning_of_week = :monday # just for rails default compatibiity
211
+ # Groupdate initializer (https://github.com/ankane/groupdate)
212
+ # Groupdate week_start default is :sunday, while rails and pagy default to :monday
213
+ Groupdate.week_start = :monday
214
+
215
+ ActiveRecord::Schema.define do
216
+ create_table :events, force: true do |t|
217
+ t.string :title
218
+ t.timestamp :time
219
+ end
220
+ end
221
+
222
+ # Models
223
+ class Event < ActiveRecord::Base; end
224
+
225
+ # Event times
226
+ data = <<~DATA
227
+ 2021-10-21 13:18:23
228
+ 2021-10-21 23:14:50
229
+ 2021-10-23 01:06:02
230
+ 2021-10-25 18:54:35
231
+ 2021-10-26 02:22:17
232
+ 2021-10-28 22:59:49
233
+ 2021-10-30 15:02:25
234
+ 2021-11-02 04:03:39
235
+ 2021-11-04 22:41:23
236
+ 2021-11-06 00:34:29
237
+ 2021-11-06 23:56:16
238
+ 2021-11-07 06:22:04
239
+ 2021-11-07 19:46:08
240
+ 2021-11-08 09:31:13
241
+ 2021-11-09 17:22:03
242
+ 2021-11-11 05:29:54
243
+ 2021-11-13 09:41:04
244
+ 2021-11-16 07:48:22
245
+ 2021-11-16 12:43:44
246
+ 2021-11-17 16:03:07
247
+ 2021-11-20 02:39:01
248
+ 2021-11-21 02:01:24
249
+ 2021-11-23 19:24:43
250
+ 2021-11-26 11:47:22
251
+ 2021-11-28 06:30:04
252
+ 2021-12-01 00:13:55
253
+ 2021-12-03 19:10:16
254
+ 2021-12-04 00:43:47
255
+ 2021-12-06 20:15:35
256
+ 2021-12-09 16:27:07
257
+ 2021-12-10 15:28:48
258
+ 2021-12-10 23:08:16
259
+ 2021-12-11 23:09:08
260
+ 2021-12-14 04:56:58
261
+ 2021-12-14 14:00:56
262
+ 2021-12-15 22:58:51
263
+ 2021-12-16 01:28:21
264
+ 2021-12-16 20:16:54
265
+ 2021-12-19 00:34:04
266
+ 2021-12-19 06:58:41
267
+ 2021-12-21 11:13:53
268
+ 2021-12-23 07:28:50
269
+ 2021-12-23 07:57:58
270
+ 2021-12-23 18:32:13
271
+ 2021-12-24 01:17:51
272
+ 2021-12-25 05:36:16
273
+ 2021-12-25 23:21:57
274
+ 2021-12-27 12:18:57
275
+ 2021-12-28 16:59:57
276
+ 2021-12-31 15:10:23
277
+ 2022-01-01 19:18:06
278
+ 2022-01-03 08:36:27
279
+ 2022-01-03 23:31:01
280
+ 2022-01-05 02:14:57
281
+ 2022-01-06 09:26:03
282
+ 2022-01-07 20:22:22
283
+ 2022-01-10 04:04:28
284
+ 2022-01-11 17:17:55
285
+ 2022-01-14 05:21:54
286
+ 2022-01-16 01:18:58
287
+ 2022-01-18 08:42:56
288
+ 2022-01-19 00:45:04
289
+ 2022-01-20 08:18:54
290
+ 2022-01-22 05:26:38
291
+ 2022-01-24 10:57:50
292
+ 2022-01-26 09:47:02
293
+ 2022-01-28 20:44:30
294
+ 2022-01-31 16:19:50
295
+ 2022-02-01 21:23:58
296
+ 2022-02-04 14:41:57
297
+ 2022-02-06 20:40:06
298
+ 2022-02-07 23:03:50
299
+ 2022-02-09 05:28:08
300
+ 2022-02-10 02:19:12
301
+ 2022-02-11 07:51:30
302
+ 2022-02-12 13:46:16
303
+ 2022-02-13 21:06:40
304
+ 2022-02-15 11:37:50
305
+ 2022-02-18 11:23:15
306
+ 2022-02-20 08:01:49
307
+ 2022-02-23 03:00:30
308
+ 2022-02-24 21:52:25
309
+ 2022-02-25 12:07:56
310
+ 2022-02-27 04:20:20
311
+ 2022-02-28 21:09:42
312
+ 2022-03-02 23:35:41
313
+ 2022-03-04 00:42:10
314
+ 2022-03-05 00:59:10
315
+ 2022-03-06 19:58:01
316
+ 2022-03-07 07:48:09
317
+ 2022-03-09 06:08:00
318
+ 2022-03-10 05:45:08
319
+ 2022-03-12 21:16:31
320
+ 2022-03-15 08:17:44
321
+ 2022-03-16 03:37:03
322
+ 2022-03-18 05:07:54
323
+ 2022-03-20 04:05:26
324
+ 2022-03-22 10:52:33
325
+ 2022-03-23 15:26:54
326
+ 2022-03-24 09:01:04
327
+ 2022-03-24 23:53:07
328
+ 2022-03-27 13:45:17
329
+ 2022-03-28 19:57:00
330
+ 2022-03-29 15:42:35
331
+ 2022-03-29 18:20:32
332
+ 2022-04-01 15:35:47
333
+ 2022-04-02 06:33:31
334
+ 2022-04-03 18:27:19
335
+ 2022-04-03 23:44:08
336
+ 2022-04-06 10:59:32
337
+ 2022-04-07 01:33:53
338
+ 2022-04-08 10:26:34
339
+ 2022-04-10 19:21:08
340
+ 2022-04-12 01:50:04
341
+ 2022-04-14 19:56:29
342
+ 2022-04-15 09:08:22
343
+ 2022-04-16 07:58:47
344
+ 2022-04-17 16:31:40
345
+ 2022-04-20 09:50:22
346
+ 2022-04-23 04:24:22
347
+ 2022-04-25 07:18:04
348
+ 2022-04-27 16:57:48
349
+ 2022-04-29 18:48:09
350
+ 2022-04-29 20:30:25
351
+ 2022-05-02 03:44:25
352
+ 2022-05-03 15:27:57
353
+ 2022-05-04 08:11:15
354
+ 2022-05-07 00:42:14
355
+ 2022-05-09 15:23:31
356
+ 2022-05-10 19:11:49
357
+ 2022-05-11 14:04:17
358
+ 2022-05-14 12:09:34
359
+ 2022-05-15 13:31:54
360
+ 2022-05-17 21:21:37
361
+ 2022-05-19 01:27:43
362
+ 2022-05-21 04:34:59
363
+ 2022-05-23 11:05:18
364
+ 2022-05-23 19:14:50
365
+ 2022-05-26 13:16:18
366
+ 2022-05-27 11:39:35
367
+ 2022-05-29 07:09:07
368
+ 2022-05-30 15:13:23
369
+ 2022-06-01 04:18:40
370
+ 2022-06-01 11:11:51
371
+ 2022-06-01 12:45:06
372
+ 2022-06-03 07:08:31
373
+ 2022-06-04 23:28:11
374
+ 2022-06-07 12:14:01
375
+ 2022-06-08 13:32:22
376
+ 2022-06-10 18:56:37
377
+ 2022-06-12 16:00:09
378
+ 2022-06-15 13:28:55
379
+ 2022-06-16 18:42:37
380
+ 2022-06-17 00:36:21
381
+ 2022-06-18 16:21:27
382
+ 2022-06-20 13:50:27
383
+ 2022-06-22 09:43:55
384
+ 2022-06-25 09:43:17
385
+ 2022-06-27 06:51:01
386
+ 2022-06-28 09:10:53
387
+ 2022-06-30 18:46:16
388
+ 2022-07-01 16:05:14
389
+ 2022-07-02 14:02:12
390
+ 2022-07-05 11:08:11
391
+ 2022-07-05 12:44:38
392
+ 2022-07-08 03:55:17
393
+ 2022-07-08 18:02:14
394
+ 2022-07-09 09:41:17
395
+ 2022-07-11 07:34:51
396
+ 2022-07-13 05:11:19
397
+ 2022-07-15 02:46:56
398
+ 2022-07-16 15:40:39
399
+ 2022-07-17 19:44:15
400
+ 2022-07-19 00:31:12
401
+ 2022-07-21 21:58:24
402
+ 2022-07-22 05:25:48
403
+ 2022-07-22 18:33:04
404
+ 2022-07-24 07:42:24
405
+ 2022-07-25 07:21:20
406
+ 2022-07-27 12:02:44
407
+ 2022-07-29 03:29:28
408
+ 2022-07-29 11:35:43
409
+ 2022-07-30 05:25:21
410
+ 2022-07-30 19:39:10
411
+ 2022-07-31 18:54:58
412
+ 2022-08-03 11:18:44
413
+ 2022-08-05 00:37:47
414
+ 2022-08-05 12:08:08
415
+ 2022-08-07 14:39:19
416
+ 2022-08-08 09:52:59
417
+ 2022-08-09 13:48:29
418
+ 2022-08-11 19:03:04
419
+ 2022-08-13 01:56:49
420
+ 2022-08-15 11:33:09
421
+ 2022-08-17 23:37:45
422
+ 2022-08-19 00:47:19
423
+ 2022-08-19 01:01:12
424
+ 2022-08-21 07:37:55
425
+ 2022-08-21 21:42:15
426
+ 2022-08-23 10:55:39
427
+ 2022-08-25 16:20:29
428
+ 2022-08-27 06:28:14
429
+ 2022-08-27 13:12:57
430
+ 2022-08-28 23:00:13
431
+ 2022-08-31 05:19:56
432
+ 2022-09-02 18:00:18
433
+ 2022-09-04 12:02:47
434
+ 2022-09-06 00:57:21
435
+ 2022-09-08 04:26:01
436
+ 2022-09-09 04:55:45
437
+ 2022-09-11 22:59:36
438
+ 2022-09-12 00:54:25
439
+ 2022-09-12 17:44:24
440
+ 2022-09-12 20:47:30
441
+ 2022-09-15 11:39:20
442
+ 2022-09-16 07:54:15
443
+ 2022-09-17 08:06:29
444
+ 2022-09-18 07:17:17
445
+ 2022-09-19 08:39:55
446
+ 2022-09-22 06:32:56
447
+ 2022-09-22 21:26:29
448
+ 2022-09-24 16:06:50
449
+ 2022-09-27 05:50:18
450
+ 2022-09-28 12:12:13
451
+ 2022-09-29 21:13:01
452
+ 2022-09-30 00:09:29
453
+ 2022-10-02 04:35:07
454
+ 2022-10-02 16:30:20
455
+ 2022-10-04 10:35:59
456
+ 2022-10-04 23:39:37
457
+ 2022-10-07 23:25:10
458
+ 2022-10-08 20:31:14
459
+ 2022-10-09 07:30:41
460
+ 2022-10-11 07:29:41
461
+ 2022-10-11 08:00:58
462
+ 2022-10-14 03:22:26
463
+ 2022-10-16 14:47:54
464
+ 2022-10-17 00:28:32
465
+ 2022-10-19 10:46:33
466
+ 2022-10-21 02:39:31
467
+ 2022-10-21 19:24:24
468
+ 2022-10-23 05:38:26
469
+ 2022-10-25 13:28:28
470
+ 2022-10-26 20:26:31
471
+ 2022-10-29 12:43:40
472
+ 2022-10-31 11:21:43
473
+ 2022-11-03 04:42:32
474
+ 2022-11-04 20:26:28
475
+ 2022-11-05 15:08:01
476
+ 2022-11-06 10:55:38
477
+ 2022-11-07 04:13:28
478
+ 2022-11-08 03:42:59
479
+ 2022-11-10 13:56:10
480
+ 2022-11-13 13:01:38
481
+ 2022-11-15 02:04:32
482
+ 2022-11-17 09:10:48
483
+ 2022-11-19 11:37:01
484
+ 2022-11-20 06:15:33
485
+ 2022-11-22 08:35:41
486
+ 2022-11-24 20:42:50
487
+ 2022-11-25 17:45:48
488
+ 2022-11-28 06:16:15
489
+ 2022-11-28 18:12:24
490
+ 2022-11-30 20:09:46
491
+ 2022-12-01 03:29:43
492
+ 2022-12-02 03:58:02
493
+ 2022-12-02 19:47:06
494
+ 2022-12-04 14:54:02
495
+ 2022-12-06 02:22:58
496
+ 2022-12-06 09:29:06
497
+ 2022-12-06 17:16:19
498
+ 2022-12-09 14:10:12
499
+ 2022-12-11 19:54:41
500
+ 2022-12-11 23:48:45
501
+ 2022-12-12 12:05:28
502
+ 2022-12-12 21:37:48
503
+ 2022-12-15 05:08:10
504
+ 2022-12-16 19:06:39
505
+ 2022-12-18 21:49:36
506
+ 2022-12-20 00:54:09
507
+ 2022-12-22 21:51:31
508
+ 2022-12-25 08:40:02
509
+ 2022-12-26 22:01:45
510
+ 2022-12-29 18:46:07
511
+ 2023-01-01 01:55:31
512
+ 2023-01-01 17:34:53
513
+ 2023-01-04 09:05:13
514
+ 2023-01-05 01:57:33
515
+ 2023-01-06 08:56:47
516
+ 2023-01-07 18:52:12
517
+ 2023-01-08 00:43:40
518
+ 2023-01-10 13:28:23
519
+ 2023-01-13 10:22:38
520
+ 2023-01-15 01:43:06
521
+ 2023-01-15 04:30:52
522
+ 2023-01-16 23:13:04
523
+ 2023-01-19 17:16:31
524
+ 2023-01-21 09:25:58
525
+ 2023-01-23 09:42:42
526
+ 2023-01-24 11:13:59
527
+ 2023-01-25 00:57:26
528
+ 2023-01-27 10:31:18
529
+ 2023-01-28 07:08:54
530
+ 2023-01-28 09:46:16
531
+ 2023-01-30 04:34:32
532
+ 2023-01-30 05:30:26
533
+ 2023-01-31 08:08:44
534
+ 2023-02-03 01:02:02
535
+ 2023-02-03 10:02:38
536
+ 2023-02-05 02:22:53
537
+ 2023-02-05 05:55:46
538
+ 2023-02-07 06:18:28
539
+ 2023-02-08 13:57:28
540
+ 2023-02-08 17:53:12
541
+ 2023-02-10 08:40:27
542
+ 2023-02-10 10:28:23
543
+ 2023-02-12 15:42:42
544
+ 2023-02-14 06:11:35
545
+ 2023-02-14 12:22:06
546
+ 2023-02-16 14:43:29
547
+ 2023-02-16 15:58:19
548
+ 2023-02-17 08:36:37
549
+ 2023-02-19 04:20:36
550
+ 2023-02-21 03:27:07
551
+ 2023-02-22 09:09:23
552
+ 2023-02-24 10:19:14
553
+ 2023-02-26 13:28:50
554
+ 2023-02-27 15:33:38
555
+ 2023-03-01 14:48:42
556
+ 2023-03-02 19:17:52
557
+ 2023-03-03 09:48:41
558
+ 2023-03-04 12:44:18
559
+ 2023-03-06 18:24:47
560
+ 2023-03-09 13:55:36
561
+ 2023-03-11 13:50:26
562
+ 2023-03-14 05:57:47
563
+ 2023-03-14 09:16:38
564
+ 2023-03-14 12:34:22
565
+ 2023-03-14 15:15:53
566
+ 2023-03-16 18:34:04
567
+ 2023-03-19 13:01:38
568
+ 2023-03-19 15:24:32
569
+ 2023-03-20 14:56:28
570
+ 2023-03-21 12:32:45
571
+ 2023-03-23 22:16:22
572
+ 2023-03-24 01:05:24
573
+ 2023-03-26 12:01:36
574
+ 2023-03-29 07:45:17
575
+ 2023-04-01 06:03:31
576
+ 2023-04-02 20:45:43
577
+ 2023-04-03 05:33:10
578
+ 2023-04-03 16:15:11
579
+ 2023-04-05 14:56:49
580
+ 2023-04-06 22:21:46
581
+ 2023-04-08 19:50:51
582
+ 2023-04-09 06:14:30
583
+ 2023-04-09 11:26:27
584
+ 2023-04-11 21:34:04
585
+ 2023-04-14 08:51:06
586
+ 2023-04-16 15:58:05
587
+ 2023-04-17 03:06:43
588
+ 2023-04-18 16:28:30
589
+ 2023-04-18 17:32:38
590
+ 2023-04-19 20:34:45
591
+ 2023-04-22 06:16:01
592
+ 2023-04-22 12:00:25
593
+ 2023-04-24 21:12:27
594
+ 2023-04-27 15:19:36
595
+ 2023-04-29 00:43:46
596
+ 2023-04-29 17:50:02
597
+ 2023-04-30 05:22:14
598
+ 2023-05-01 07:20:17
599
+ 2023-05-03 05:11:16
600
+ 2023-05-05 00:13:31
601
+ 2023-05-05 12:08:33
602
+ 2023-05-05 16:26:19
603
+ 2023-05-07 23:53:00
604
+ 2023-05-10 17:41:27
605
+ 2023-05-12 01:37:24
606
+ 2023-05-14 08:18:36
607
+ 2023-05-16 15:17:43
608
+ 2023-05-16 18:24:55
609
+ 2023-05-19 16:16:45
610
+ 2023-05-21 00:48:36
611
+ 2023-05-22 00:54:41
612
+ 2023-05-24 05:36:25
613
+ 2023-05-25 10:05:39
614
+ 2023-05-26 16:09:51
615
+ 2023-05-29 12:40:29
616
+ 2023-05-29 13:15:05
617
+ 2023-05-31 15:28:14
618
+ 2023-06-02 02:05:21
619
+ 2023-06-02 13:05:50
620
+ 2023-06-04 11:12:19
621
+ 2023-06-05 10:04:34
622
+ 2023-06-06 02:47:22
623
+ 2023-06-07 04:35:17
624
+ 2023-06-07 16:20:27
625
+ 2023-06-08 07:43:14
626
+ 2023-06-10 17:55:59
627
+ 2023-06-12 17:00:02
628
+ 2023-06-14 08:37:14
629
+ 2023-06-14 18:07:30
630
+ 2023-06-16 12:07:26
631
+ 2023-06-18 22:29:39
632
+ 2023-06-19 02:32:54
633
+ 2023-06-20 14:24:40
634
+ 2023-06-22 09:27:59
635
+ 2023-06-23 07:31:20
636
+ 2023-06-23 21:06:55
637
+ 2023-06-26 06:57:28
638
+ 2023-06-28 17:08:12
639
+ 2023-06-29 03:06:47
640
+ 2023-06-30 12:25:41
641
+ 2023-07-02 08:49:42
642
+ 2023-07-03 20:09:26
643
+ 2023-07-06 17:39:13
644
+ 2023-07-09 00:18:52
645
+ 2023-07-11 03:58:21
646
+ 2023-07-12 22:37:00
647
+ 2023-07-14 01:58:44
648
+ 2023-07-16 20:21:13
649
+ 2023-07-17 01:41:47
650
+ 2023-07-19 10:06:35
651
+ 2023-07-21 17:44:16
652
+ 2023-07-22 02:46:04
653
+ 2023-07-22 06:52:04
654
+ 2023-07-23 04:53:49
655
+ 2023-07-25 16:37:24
656
+ 2023-07-27 18:34:33
657
+ 2023-07-28 02:34:02
658
+ 2023-07-29 19:53:32
659
+ 2023-07-30 23:30:11
660
+ 2023-08-02 17:46:22
661
+ 2023-08-03 00:01:21
662
+ 2023-08-03 03:57:56
663
+ 2023-08-03 21:41:28
664
+ 2023-08-04 23:37:31
665
+ 2023-08-05 08:20:42
666
+ 2023-08-07 21:01:55
667
+ 2023-08-10 17:03:47
668
+ 2023-08-11 21:06:31
669
+ 2023-08-12 08:45:08
670
+ 2023-08-13 07:09:39
671
+ 2023-08-14 11:15:10
672
+ 2023-08-16 04:15:48
673
+ 2023-08-19 04:11:43
674
+ 2023-08-19 10:10:27
675
+ 2023-08-22 09:41:20
676
+ 2023-08-24 10:27:08
677
+ 2023-08-24 18:16:12
678
+ 2023-08-25 17:02:28
679
+ 2023-08-27 15:58:52
680
+ 2023-08-27 23:29:53
681
+ 2023-08-28 21:31:27
682
+ 2023-08-29 03:35:29
683
+ 2023-08-31 06:15:19
684
+ 2023-09-01 21:56:52
685
+ 2023-09-02 22:57:53
686
+ 2023-09-05 03:28:30
687
+ 2023-09-07 04:57:12
688
+ 2023-09-09 19:16:05
689
+ 2023-09-09 20:01:39
690
+ 2023-09-11 03:23:22
691
+ 2023-09-12 15:18:29
692
+ 2023-09-13 14:14:43
693
+ 2023-09-13 17:37:25
694
+ 2023-09-14 18:17:49
695
+ 2023-09-16 19:56:55
696
+ 2023-09-18 14:21:02
697
+ 2023-09-21 00:34:13
698
+ 2023-09-23 07:14:06
699
+ 2023-09-24 17:22:22
700
+ 2023-09-27 12:42:54
701
+ 2023-09-28 14:48:45
702
+ 2023-10-01 11:54:24
703
+ 2023-10-03 07:36:32
704
+ 2023-10-05 05:13:57
705
+ 2023-10-06 16:07:06
706
+ 2023-10-09 00:03:52
707
+ 2023-10-09 02:32:01
708
+ 2023-10-10 16:39:07
709
+ 2023-10-12 13:28:16
710
+ 2023-10-14 04:29:14
711
+ 2023-10-17 03:30:24
712
+ 2023-10-20 03:13:15
713
+ 2023-10-20 20:47:06
714
+ 2023-10-21 13:59:34
715
+ 2023-10-23 21:38:48
716
+ 2023-10-24 06:07:13
717
+ 2023-10-25 22:51:17
718
+ 2023-10-26 21:12:50
719
+ 2023-10-28 05:52:20
720
+ 2023-10-29 22:11:01
721
+ 2023-10-30 12:29:25
722
+ 2023-11-02 02:52:55
723
+ 2023-11-02 06:00:32
724
+ 2023-11-03 08:39:06
725
+ 2023-11-04 23:51:22
726
+ 2023-11-07 16:11:33
727
+ 2023-11-10 10:55:29
728
+ 2023-11-12 01:20:18
729
+ 2023-11-12 04:22:50
730
+ 2023-11-12 08:38:58
731
+ 2023-11-13 15:43:40
732
+ DATA
733
+
734
+ # DB seed
735
+ events = []
736
+ data.each_line(chomp: true).with_index do |time, i|
737
+ events << { title: "Event ##{i + 1}", time: }
738
+ end
739
+ Event.insert_all(events)
740
+
741
+ run PagyCalendar