Module: PgEventstore::Web::Paginator::Helpers
- Defined in:
- lib/pg_eventstore/web/paginator/helpers.rb,
sig/pg_eventstore/web/paginator/helpers.rbs
Instance Method Summary collapse
- #build_path(params, base_path: request.path_info) ⇒ String
- #build_starting_id_link(starting_id) ⇒ String
- #empty_characters_fallback(str) ⇒ String
- #event_marker_url(marker) ⇒ String
- #first_page_link ⇒ String
- #next_page_link(collection) ⇒ String
-
#number_with_delimiter(number, delimiter: ',') ⇒ String
Takes an integer and adds delimiters in there.
- #per_page_url(per_page) ⇒ String
- #previous_page_link(collection) ⇒ String
- #resolve_link_tos_url(should_resolve) ⇒ String
- #sort_url(order) ⇒ String
- #stream_url(stream) ⇒ String
- #total_count(number) ⇒ String
Instance Method Details
#build_path(params, base_path: request.path_info) ⇒ String
132 133 134 135 136 137 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 132 def build_path(params, base_path: request.path_info) encoded_params = Rack::Utils.build_nested_query(params) return base_path if encoded_params.empty? "#{base_path}?#{encoded_params}" end |
#build_starting_id_link(starting_id) ⇒ String
124 125 126 127 128 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 124 def build_starting_id_link(starting_id) return 'javascript: void(0);' unless starting_id url(build_path(params.merge(starting_id:))) end |
#empty_characters_fallback(str) ⇒ String
114 115 116 117 118 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 114 def empty_characters_fallback(str) return str unless str.strip == '' '<i>Non-printable characters</i>' end |
#event_marker_url(marker) ⇒ String
108 109 110 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 108 def event_marker_url(marker) url(build_path({ filter: { markers: [escape_empty_string(marker)] } }, base_path: '/')) end |
#first_page_link ⇒ String
32 33 34 35 36 37 38 39 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 32 def first_page_link path = url(build_path(params.slice(*(params.keys - ['starting_id'])))) " <li class=\"page-item\">\n <a class=\"page-link\" href=\"\#{path}\" tabindex=\"-1\">First</a>\n </li>\n HTML\nend\n" |
#next_page_link(collection) ⇒ String
21 22 23 24 25 26 27 28 29 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 21 def next_page_link(collection) id = collection.next_page_starting_id disabled = id ? '' : 'disabled' " <li class=\"page-item \#{disabled}\">\n <a class=\"page-link\" href=\"\#{build_starting_id_link(id)}\" tabindex=\"-1\">Next</a>\n </li>\n HTML\nend\n" |
#number_with_delimiter(number, delimiter: ',') ⇒ String
Takes an integer and adds delimiters in there. E.g 1002341 becomes this "1,002,341"
76 77 78 79 80 81 82 83 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 76 def number_with_delimiter(number, delimiter: ',') number = number.to_s symbols_to_skip = number.size % 3 parts = [] parts.push(number[0...symbols_to_skip]) unless symbols_to_skip == 0 parts.push(*number[symbols_to_skip..].scan(/\d{3}/)) parts.join(delimiter) end |
#per_page_url(per_page) ⇒ String
43 44 45 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 43 def per_page_url(per_page) url(build_path(params.merge(per_page:))) end |
#previous_page_link(collection) ⇒ String
9 10 11 12 13 14 15 16 17 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 9 def previous_page_link(collection) id = collection.prev_page_starting_id disabled = id ? '' : 'disabled' " <li class=\"page-item \#{disabled}\">\n <a class=\"page-link\" href=\"\#{build_starting_id_link(id)}\" tabindex=\"-1\">Previous</a>\n </li>\n HTML\nend\n" |
#resolve_link_tos_url(should_resolve) ⇒ String
55 56 57 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 55 def resolve_link_tos_url(should_resolve) url(build_path(params.merge(resolve_link_tos: should_resolve))) end |
#sort_url(order) ⇒ String
49 50 51 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 49 def sort_url(order) url(build_path(params.merge(order:))) end |
#stream_url(stream) ⇒ String
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 87 def stream_url(stream) url( build_path( { filter: { streams: [ { context: escape_empty_string(stream.context), stream_name: escape_empty_string(stream.stream_name), stream_id: escape_empty_string(stream.stream_id), }, ], }, }, base_path: '/' ) ) end |
#total_count(number) ⇒ String
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 61 def total_count(number) prefix = if number > Paginator::EventsCollection::MAX_NUMBER_TO_COUNT 'Estimate count: ' else 'Total count: ' end number = number_with_delimiter(number) prefix + number end |