1

В настоящий момент прогрессбарок считается для начала каждого дня. Например,Как использовать progressbar для подсчета до конца дня вместо начала?

enter image description here

Показанное число является «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 из него.

Пожалуйста, дайте мне знать, если я должен дать дополнительный код или объяснение:]

+0

Можете ли вы добавить еще несколько объяснений о том, что вы пытаетесь сделать? Представьте себе, что никто не знает, что вы подразумеваете под «с тех пор, как я начал свою привычку сегодня», например. –

+0

Извините, @MaxWilliams, надеюсь, моя переработка будет более понятна. В конечном счете, прогрессбадр поднимается вверх на 1 в начале дня, а не в конце, и это то, что я бы предпочел, если это возможно:] –

+0

Вы хотите, чтобы вы изменили его в 11.59 вместо полуночи? –

ответ

0

в habit.rb я изменил любое упоминание о методе .today в .yesterday.

1

Вашего код довольно запутанный, но если вы хотите знать, сколько дней, как целое число, то между моментом, когда задача (или любым другим она) начал и сегодня, то вобще

(Date.today - date_started.to_date).to_i 
+0

Спасибо Макс оказалось очень простым решением, что я добавлен в ответы –

Смежные вопросы