discourse/lib/timeline_lookup.rb

33 lines
704 B
Ruby
Raw Normal View History

# frozen_string_literal: true
2016-05-17 12:03:08 -05:00
module TimelineLookup
# Given an array of tuples containing (id, days_ago), return at most `max_values` worth of a
2016-05-17 12:03:08 -05:00
# lookup table to help the front end timeline display dates associated with posts
2017-07-27 20:20:09 -05:00
def self.build(tuples, max_values = 300)
2016-05-17 12:03:08 -05:00
result = []
every = (tuples.size.to_f / max_values).ceil
last_days_ago = -1
tuples.each_with_index do |t, idx|
return result unless t.is_a?(Array)
if idx != tuples.size - 1
next unless (idx % every) === 0
end
2016-05-17 12:03:08 -05:00
days_ago = t[1]
2016-05-17 12:03:08 -05:00
if (days_ago != last_days_ago)
2017-07-27 20:20:09 -05:00
result << [idx + 1, days_ago]
2016-05-17 12:03:08 -05:00
last_days_ago = days_ago
end
end
result
end
end