From 77731802199f0af523745572720bdbacdb57e804 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D=C3=A1vila?= Date: Thu, 25 Feb 2016 15:23:34 -0500 Subject: [PATCH 1/2] Show days remaining instead of elapsed time for Milestone. --- app/assets/stylesheets/pages/milestone.scss | 2 +- app/helpers/milestones_helper.rb | 11 +++++++++++ app/models/milestone.rb | 14 ++++---------- app/views/projects/milestones/show.html.haml | 4 +--- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/assets/stylesheets/pages/milestone.scss b/app/assets/stylesheets/pages/milestone.scss index 9144a83647..d24adbf67e 100644 --- a/app/assets/stylesheets/pages/milestone.scss +++ b/app/assets/stylesheets/pages/milestone.scss @@ -39,7 +39,7 @@ li.milestone { margin-right: 10px; } - .time-elapsed { + .remaining-days { color: $orange-light; } } diff --git a/app/helpers/milestones_helper.rb b/app/helpers/milestones_helper.rb index a42cbcff18..a4257b0339 100644 --- a/app/helpers/milestones_helper.rb +++ b/app/helpers/milestones_helper.rb @@ -36,4 +36,15 @@ module MilestonesHelper options_from_collection_for_select(grouped_milestones, 'name', 'title', params[:milestone_title]) end + + def milestone_remaining_days(milestone) + days = milestone.remaining_days + + if days == 0 + content_tag(:strong, 'expired') + elsif days.to_i > 0 + content = content_tag(:strong, days) + content << " #{'day'.pluralize(days)} remaining" + end + end end diff --git a/app/models/milestone.rb b/app/models/milestone.rb index 8f99e3bef9..3df9a97916 100644 --- a/app/models/milestone.rb +++ b/app/models/milestone.rb @@ -110,17 +110,11 @@ class Milestone < ActiveRecord::Base 0 end - # Returns the elapsed time (in percent) since the Milestone creation date until today. - # If the Milestone doesn't have a due_date then returns 0 since we can't calculate the elapsed time. - # If the Milestone is overdue then it returns 100%. - def percent_time_used - return 0 unless due_date - return 100 if expired? + def remaining_days + return nil if due_date.nil? + return 0 if due_date < Date.today - duration = ((created_at - due_date.to_datetime) / 1.day) - days_elapsed = ((created_at - Time.now) / 1.day) - - ((days_elapsed.to_f / duration) * 100).floor + (due_date - Date.today).to_i end def expires_at diff --git a/app/views/projects/milestones/show.html.haml b/app/views/projects/milestones/show.html.haml index 631bc8c3e9..2cae1ac4e2 100644 --- a/app/views/projects/milestones/show.html.haml +++ b/app/views/projects/milestones/show.html.haml @@ -60,9 +60,7 @@ %strong== #{@milestone.percent_complete}% complete %span.milestone-stat - %span.time-elapsed - %strong== #{@milestone.percent_time_used}% - time elapsed + %span.remaining-days= milestone_remaining_days(@milestone) %span.pull-right.tab-issues-buttons - if can?(current_user, :create_issue, @project) = link_to new_namespace_project_issue_path(@project.namespace, @project, issue: { milestone_id: @milestone.id }), class: "btn btn-grouped", title: "New Issue" do From 03d58f564c32013dc5c3e0a0f6b8266f221e3548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D=C3=A1vila?= Date: Tue, 1 Mar 2016 19:39:58 -0500 Subject: [PATCH 2/2] Little refactor for milestone_remaining_days helper from last code review. --- app/helpers/milestones_helper.rb | 7 +++---- app/models/milestone.rb | 3 +-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/helpers/milestones_helper.rb b/app/helpers/milestones_helper.rb index a4257b0339..7de81d8dfd 100644 --- a/app/helpers/milestones_helper.rb +++ b/app/helpers/milestones_helper.rb @@ -38,11 +38,10 @@ module MilestonesHelper end def milestone_remaining_days(milestone) - days = milestone.remaining_days - - if days == 0 + if milestone.expired? content_tag(:strong, 'expired') - elsif days.to_i > 0 + elsif milestone.due_date + days = milestone.remaining_days content = content_tag(:strong, days) content << " #{'day'.pluralize(days)} remaining" end diff --git a/app/models/milestone.rb b/app/models/milestone.rb index 3df9a97916..7dc2f909b2 100644 --- a/app/models/milestone.rb +++ b/app/models/milestone.rb @@ -111,8 +111,7 @@ class Milestone < ActiveRecord::Base end def remaining_days - return nil if due_date.nil? - return 0 if due_date < Date.today + return 0 if !due_date || expired? (due_date - Date.today).to_i end