pagy 5.7.5 → 8.6.2

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