feat: 15-minute rental slots + compact calendar cell display

- Rental bookings now use minutes since midnight (start_hour/end_hour
  store e.g. 495 for 8:15, 570 for 9:30) — DB migration 017
- Buffer applied in exact minutes (no hour ceiling): 15min buffer after
  9:00 booking → next slot available at 9:15
- Calendar cell: removed working-hours line (8:00–22:00), now shows
  colored dot + compact time per booking (8–10, 8:15–9:15)
- Time selects show HH:MM format for 15-min intervals

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-21 23:02:24 +03:00
parent 370fe8a9a9
commit db05898c08
5 changed files with 121 additions and 88 deletions

View File

@@ -491,7 +491,10 @@ export function RentalPage() {
<td className="px-4 py-2.5 text-slate-700 dark:text-slate-300">
{b.isFullDay ? (
<Badge className="bg-slate-100 text-slate-600 dark:bg-slate-700 dark:text-slate-400">Весь день</Badge>
) : `${b.startHour}:00 ${b.endHour}:00`}
) : (() => {
const fmt = (m: number) => { const h = Math.floor(m/60), mn = m%60; return mn === 0 ? `${h}:00` : `${h}:${String(mn).padStart(2,'0')}` }
return `${fmt(b.startHour)} ${fmt(b.endHour)}`
})()}
</td>
<td className="px-4 py-2.5 font-medium text-slate-900 dark:text-slate-100">{b.guestName}</td>
<td className="px-4 py-2.5 text-slate-500 dark:text-slate-400">{b.guestPhone || '—'}</td>