Module: PgEventstore::Web::Paginator::Helpers

Defined in:
lib/pg_eventstore/web/paginator/helpers.rb

Instance Method Summary collapse

Instance Method Details

#empty_characters_fallback(str) ⇒ String

Parameters:

  • str (String)

Returns:

  • (String)


103
104
105
106
107
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 103

def empty_characters_fallback(str)
  return str unless str.strip == ''

  '<i>Non-printable characters</i>'
end

Returns:

  • (String)


32
33
34
35
36
37
38
39
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 32

def first_page_link
  path = build_path(params.slice(*(params.keys - ['starting_id'])))
  <<~HTML
    <li class="page-item">
      <a class="page-link" href="#{path}" tabindex="-1">First</a>
    </li>
  HTML
end

Parameters:

Returns:

  • (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'
  <<~HTML
    <li class="page-item #{disabled}">
      <a class="page-link" href="#{build_starting_id_link(id)}" tabindex="-1">Next</a>
    </li>
  HTML
end

#number_with_delimiter(number, delimiter: ',') ⇒ String

Takes an integer and adds delimiters in there. E.g 1002341 becomes this “1,002,341”

Parameters:

  • number (Integer)
  • delimiter (String) (defaults to: ',')

Returns:

  • (String)

    number with delimiters



74
75
76
77
78
79
80
81
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 74

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

Parameters:

  • per_page (String)

    string representation of items per page. E.g. “10”, “20”, etc.

Returns:

  • (String)


43
44
45
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 43

def per_page_url(per_page)
  build_path(params.merge(per_page: per_page))
end

Parameters:

Returns:

  • (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'
  <<~HTML
    <li class="page-item #{disabled}">
      <a class="page-link" href="#{build_starting_id_link(id)}" tabindex="-1">Previous</a>
    </li>
  HTML
end


53
54
55
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 53

def resolve_link_tos_url(should_resolve)
  build_path(params.merge(resolve_link_tos: should_resolve))
end

#sort_url(order) ⇒ String

Parameters:

  • order (String)

    “asc”/“desc”

Returns:

  • (String)


49
50
51
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 49

def sort_url(order)
  build_path(params.merge(order: order))
end

#stream_path(event) ⇒ String

Parameters:

Returns:

  • (String)


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 85

def stream_path(event)
  build_path(
    {
      filter: {
        streams: [
          {
            context: escape_empty_string(event.stream.context),
            stream_name: escape_empty_string(event.stream.stream_name),
            stream_id: escape_empty_string(event.stream.stream_id),
          },
        ],
      },
    }
  )
end

#total_count(number) ⇒ String

Parameters:

  • number (Integer)

    total number of events by the current filter

Returns:

  • (String)


59
60
61
62
63
64
65
66
67
68
# File 'lib/pg_eventstore/web/paginator/helpers.rb', line 59

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