summaryrefslogtreecommitdiffstats
path: root/app/models/version.rb
diff options
context:
space:
mode:
authorEric Davis <edavis@littlestreamsoftware.com>2010-09-10 03:09:02 +0000
committerEric Davis <edavis@littlestreamsoftware.com>2010-09-10 03:09:02 +0000
commitbdb3937e0f4c8faceb463e23cb28676930ddbd9e (patch)
tree8d8a5d1b5b78b1b206363549f8635a2e3b29ff32 /app/models/version.rb
parent8d52608dbad63d504ec4b48ffe5ea09cfbe95bd9 (diff)
downloadredmine-bdb3937e0f4c8faceb463e23cb28676930ddbd9e.tar.gz
redmine-bdb3937e0f4c8faceb463e23cb28676930ddbd9e.zip
Rewrite the Gantt chart. #6276
This version of the Gantt chart supports nested charts. So Projects, Versions, and Issues will be nested underneath their parents correctly. Additional features: * Move all Gantt code to Redmine::Helpers::Gantt class instead of having it in the Gantt class, controller, and view * Recursive and nest sub-projects * Recursive and nest versions * Recursive and nest issues * Draw a line showing when a Project is active and it's progress * Draw a line showing when a Version is active and it's progress * Show a version's % complete * Change the color of Projects, Versions, and Issues if they are late or behind schedule * Added Project#start_date and #due_date * Added Project#completed_percent * Use a mini-gravatar on the Gantt chart * Added tests for the Gantt rendering git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4072 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/version.rb')
-rw-r--r--app/models/version.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/app/models/version.rb b/app/models/version.rb
index 07e66434d..c3969fe87 100644
--- a/app/models/version.rb
+++ b/app/models/version.rb
@@ -73,6 +73,18 @@ class Version < ActiveRecord::Base
def completed?
effective_date && (effective_date <= Date.today) && (open_issues_count == 0)
end
+
+ def behind_schedule?
+ if completed_pourcent == 100
+ return false
+ elsif due_date && fixed_issues.present? && fixed_issues.minimum('start_date') # TODO: should use #start_date but that method is wrong...
+ start_date = fixed_issues.minimum('start_date')
+ done_date = start_date + ((due_date - start_date+1)* completed_pourcent/100).floor
+ return done_date <= Date.today
+ else
+ false # No issues so it's not late
+ end
+ end
# Returns the completion percentage of this version based on the amount of open/closed issues
# and the time spent on the open issues.