feat: add exact shifts display in worker details and update HTML export functionality

This commit is contained in:
Ross
2026-07-08 22:38:38 +01:00
parent 0f31dfe1a9
commit 13c5ae598a
4 changed files with 66 additions and 5 deletions
+9 -4
View File
@@ -5175,6 +5175,10 @@ class RotaBuilder(object):
l4.extend([worker.fte for worker in self.workers])
wr.writerow(l4)
l5 = ["Exact Shifts"]
l5.extend([json.dumps(getattr(worker, "exact_shifts", {})) for worker in self.workers])
wr.writerow(l5)
for week, day in self.get_week_day_combinations():
d = [f"Week {week} Day {day}"]
@@ -5504,9 +5508,7 @@ class RotaBuilder(object):
# --- Highlight force assigned shifts ---
if force_assigned:
css_class += " force-assigned"
title = f"{shift_name} ({d}) [FORCE ASSIGNED]"
else:
title = f"{shift_name} ({d})"
title = f"{title} [FORCE ASSIGNED]"
bank_holiday = ""
if d in self.bank_holidays:
@@ -5546,8 +5548,9 @@ class RotaBuilder(object):
if shift.has_constraint(NightConstraint):
css_class = " ".join((css_class, "night-shift"))
title_escaped = title.replace("'", "'").replace('"', """)
shift_tds.append(
f"<td title='{','.join(shift_names)} ({d})' class='rota-day {css_class}'"
f"<td title='{title_escaped}' class='rota-day {css_class}'"
f" data-shift='{','.join(assigned_shift_names)}'"
f" data-shift-display='{','.join(shift_names)}'"
f" data-available='{available}'"
@@ -5758,6 +5761,7 @@ class RotaBuilder(object):
data-weekend-sat='{weekend_sat}'
data-weekend-sun='{weekend_sun}'
data-previous-shifts='{previous_shifts}'
data-exact-shifts='{exact_shifts}'
data-shift-diff='{shift_diff}'
data-shift-diff-summed='{shift_diff_summed}'
>
@@ -5781,6 +5785,7 @@ class RotaBuilder(object):
weekend_sun=sun_count,
worker_summary_html=worker_summary_html,
previous_shifts=json.dumps(prior_map),
exact_shifts=json.dumps(getattr(worker, "exact_shifts", {})),
pair=worker.pair,
shift_balance_extra=json.dumps(worker.shift_balance_extra),
shift_diff=json.dumps(shift_diff_dict),