В настоящий момент прогрессбарок считается для начала каждого дня. Например,Как использовать progressbar для подсчета до конца дня вместо начала?
Показанное число является «1», но все равно должен сказать, «0», так как его начала в первый день. К концу дня, 23:59, он должен сказать «1», так как к тому времени привычка была бы закончена.
привычки/index.html.erb
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="10" aria-valuemin="0" aria-valuemax="10" style="width: <%= challenged.progress_in_percent %>%;">
<%= challenged.calculate_days_lost %>
</div>
<%= challenged.days_left_in_current_level %>
</div>
habit.rb
def real_missed_days
value = 0
levels.each do |level|
value += level.missed_days + level.days_lost
end
value
end
def calculate_days_lost
def n_days
((date_started.to_date)..Date.today).count do |date|
committed_wdays.include? date.wday
end - self.real_missed_days
end
case n_days
when 0..9
n_days
when 10..24
n_days-10
when 25..44
n_days-25
when 45..69
n_days-45
when 70..99
n_days-70
else
n_days-100
end
end
def days_left_in_current_level
def n_days
((date_started.to_date)..Date.today).count do |date|
committed_wdays.include? date.wday
end - self.real_missed_days
end
case n_days
when 0..9
10-n_days
when 10..24
25-n_days
when 25..44
45-n_days
when 45..69
70-n_days
when 70..99
100-n_days
else
0 # No end
end
end
Вот Gist из него.
Пожалуйста, дайте мне знать, если я должен дать дополнительный код или объяснение:]
Можете ли вы добавить еще несколько объяснений о том, что вы пытаетесь сделать? Представьте себе, что никто не знает, что вы подразумеваете под «с тех пор, как я начал свою привычку сегодня», например. –
Извините, @MaxWilliams, надеюсь, моя переработка будет более понятна. В конечном счете, прогрессбадр поднимается вверх на 1 в начале дня, а не в конце, и это то, что я бы предпочел, если это возможно:] –
Вы хотите, чтобы вы изменили его в 11.59 вместо полуночи? –