From e93febfda23b5fdc17d0bc1ad540b3ae926488c1 Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Sat, 25 Jul 2020 08:17:49 +0000 Subject: [PATCH] Gantt bar is not displayed if the due date is the leftmost date or the start date is the rightmost date (#33140). Patch by Yuichi HARADA. git-svn-id: http://svn.redmine.org/redmine/trunk@19935 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redmine/helpers/gantt.rb | 2 +- test/unit/lib/redmine/helpers/gantt_test.rb | 26 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/redmine/helpers/gantt.rb b/lib/redmine/helpers/gantt.rb index 4ea779d16..7aba9b7e2 100644 --- a/lib/redmine/helpers/gantt.rb +++ b/lib/redmine/helpers/gantt.rb @@ -614,7 +614,7 @@ module Redmine def coordinates(start_date, end_date, progress, zoom=nil) zoom ||= @zoom coords = {} - if start_date && end_date && start_date < self.date_to && end_date > self.date_from + if start_date && end_date && start_date <= self.date_to && end_date >= self.date_from if start_date > self.date_from coords[:start] = start_date - self.date_from coords[:bar_start] = start_date - self.date_from diff --git a/test/unit/lib/redmine/helpers/gantt_test.rb b/test/unit/lib/redmine/helpers/gantt_test.rb index 3e45735ef..770ae4719 100644 --- a/test/unit/lib/redmine/helpers/gantt_test.rb +++ b/test/unit/lib/redmine/helpers/gantt_test.rb @@ -44,6 +44,12 @@ class Redmine::Helpers::GanttHelperTest < Redmine::HelperTest def gantt_start @gantt.date_from end + private :gantt_start + + def gantt_end + @gantt.date_to + end + private :gantt_end # Creates a Gantt chart for a 4 week span def create_gantt(project=Project.generate!, options={}) @@ -354,6 +360,26 @@ class Redmine::Helpers::GanttHelperTest < Redmine::HelperTest assert_select 'div.task_todo[style*="left:28px"]', 1 end + test "#line todo line should appear if it ends on the leftmost date in the gantt" do + create_gantt + [gantt_start - 1, gantt_start].each do |start_date| + @output_buffer = @gantt.line(start_date, gantt_start, 30, false, 'line', :format => :html, :zoom => 4) + # the leftmost date (Date.today - 14 days) + assert_select 'div.task_todo[style*="left:0px"]', 1, @output_buffer + assert_select 'div.task_todo[style*="width:2px"]', 1, @output_buffer + end + end + + test "#line todo line should appear if it starts on the rightmost date in the gantt" do + create_gantt + [gantt_end, gantt_end + 1].each do |end_date| + @output_buffer = @gantt.line(gantt_end, end_date, 30, false, 'line', :format => :html, :zoom => 4) + # the rightmost date (Date.today + 14 days) + assert_select 'div.task_todo[style*="left:112px"]', 1, @output_buffer + assert_select 'div.task_todo[style*="width:2px"]', 1, @output_buffer + end + end + test "#line todo line should be the total width" do create_gantt @output_buffer = @gantt.line(today - 7, today + 7, 30, false, 'line', :format => :html, :zoom => 4) -- 2.39.5