volunteers/app/helpers/timeline_helper.rb

69 lines
1.7 KiB
Ruby
Raw Normal View History

2023-06-03 17:09:23 +02:00
module TimelineHelper
2023-06-04 11:30:43 +02:00
def week_pixels
70
2023-06-03 17:09:23 +02:00
end
def day_pixels
2023-06-04 11:30:43 +02:00
week_pixels / 7
2023-06-03 17:09:23 +02:00
end
2023-06-04 11:30:43 +02:00
def max_days
@weeks * 7
2023-06-03 17:09:23 +02:00
end
2023-07-11 08:07:27 +02:00
# number of days from start of month to start of stay
2023-06-03 17:09:23 +02:00
def started_days(member)
return 0 unless member.arriving
return 0 if member.arriving < Date.today.at_beginning_of_month
distance = (member.arriving - Date.today.at_beginning_of_month).to_i
2023-06-04 11:30:43 +02:00
distance > max_days ? max_days : distance
2023-06-03 17:09:23 +02:00
end
def left_max
Date.today.at_beginning_of_month + 3.months
end
2023-07-11 08:07:27 +02:00
# amount of days of the stay, maxed at the number fo weeks shown
2023-06-03 17:09:23 +02:00
def stay_days(member)
return 0 unless member.leaving
start = member.arriving
start = Date.today.at_beginning_of_month if member.arriving < Date.today.at_beginning_of_month
2023-07-11 08:07:27 +02:00
distance = ( member.leaving - start ).to_i
max = max_days - started_days(member)
distance > max ? max : distance
2023-06-03 17:09:23 +02:00
end
2023-07-11 08:25:54 +02:00
# weekly occupany, hash containing weeks to number of volunteer mapping
2023-06-03 17:09:23 +02:00
def weekly
data = {}
2023-07-11 08:25:54 +02:00
month_start = Date.today.at_beginning_of_month
( 0 ... @weeks ).each do |week|
data[ week ] = -1
2023-07-11 08:25:54 +02:00
end_week = month_start + week.weeks
2023-06-03 17:09:23 +02:00
@members.each do |mem|
next unless mem.arriving
next unless mem.leaving
2023-07-11 08:25:54 +02:00
next if mem.leaving <= end_week
next if mem.arriving >= (end_week - 7.days)
2023-06-03 17:09:23 +02:00
data[ week ] += 1
end
end
data
end
def bg_for(week)
2023-06-04 11:30:43 +02:00
[ "bg-cyan-100",
"bg-blue-100",
"bg-violet-100",
"bg-fuchsia-100",
"bg-pink-100",
"bg-rose-100",
"bg-orange-100",
"bg-amber-100",
"bg-yellow-100",
"bg-lime-100",
"bg-green-100",
"bg-teal-100",
][week%12]
2023-06-03 17:09:23 +02:00
end
def small_date(date)
date.strftime("%-d.%-m")
end
end