Files
grecia/app/components/admin/duration_component.rb
Javi Martín 90d5759c23 Show the precise ending time unless it's midnight
The reason why we were displaying the ending date as "one second before
the actual ending" was that, when seeing that a phase ends at a date
like "2000-12-31 00:00", we might end up thinking that the phase will
finished at the midnight between December 31st and January the 1st,
while it actually ends at the midnight between December the 30th and
December the 31st.

This is particularly important because we use a date field to select the
date of a phase and if select December the 31st, it will be stored in
the database as "2000-12-31 00:00". So, instead, in this case we display
"2000-12-30 23:59", which is less confusing.

But now we're going to add support for setting a time on polls, which
means a certain poll might end at 15:30. In this case, displaying that
it ends at 15:29 doesn't make much sense.
2022-09-14 15:14:23 +02:00

26 lines
483 B
Ruby

class Admin::DurationComponent < ApplicationComponent
attr_reader :durable
def initialize(durable)
@durable = durable
end
private
def dates
render Admin::DateRangeComponent.new(start_time, end_time)
end
def start_time
durable.starts_at
end
def end_time
if durable.ends_at.present? && durable.ends_at == durable.ends_at.beginning_of_day
durable.ends_at - 1.second
else
durable.ends_at
end
end
end