diff options
Diffstat (limited to 'app/models/concerns/timebox.rb')
-rw-r--r-- | app/models/concerns/timebox.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/app/models/concerns/timebox.rb b/app/models/concerns/timebox.rb index 3e2cf9031d0..23fd73f2904 100644 --- a/app/models/concerns/timebox.rb +++ b/app/models/concerns/timebox.rb @@ -73,6 +73,32 @@ module Timebox end end + # A timebox is within the timeframe (start_date, end_date) if it overlaps + # with that timeframe: + # + # [ timeframe ] + # ----| ................ # Not overlapping + # |--| ................ # Not overlapping + # ------|............... # Overlapping + # -----------------------| # Overlapping + # ---------|............ # Overlapping + # |-----|............ # Overlapping + # |--------------| # Overlapping + # |--------------------| # Overlapping + # ...|-----|...... # Overlapping + # .........|-----| # Overlapping + # .........|--------- # Overlapping + # |-------------------- # Overlapping + # .........|--------| # Overlapping + # ...............|--| # Overlapping + # ............... |-| # Not Overlapping + # ............... |-- # Not Overlapping + # + # where: . = in timeframe + # ---| no start + # |--- no end + # |--| defined start and end + # scope :within_timeframe, -> (start_date, end_date) do where('start_date is not NULL or due_date is not NULL') .where('start_date is NULL or start_date <= ?', end_date) |