fix(dayplan): resolve duplicate reservation display, date off-by-one, and missing day_id on edit
- Exclude place-assigned reservations from timeline to prevent duplicate display - Use selected day's date instead of today when entering time without date - Pass day_id when updating reservations, not only when creating
This commit is contained in:
@@ -248,8 +248,10 @@ const DayPlanSidebar = React.memo(function DayPlanSidebar({
|
|||||||
const getTransportForDay = (dayId: number) => {
|
const getTransportForDay = (dayId: number) => {
|
||||||
const day = days.find(d => d.id === dayId)
|
const day = days.find(d => d.id === dayId)
|
||||||
if (!day?.date) return []
|
if (!day?.date) return []
|
||||||
|
const dayAssignmentIds = (assignments[String(dayId)] || []).map(a => a.id)
|
||||||
return reservations.filter(r => {
|
return reservations.filter(r => {
|
||||||
if (!r.reservation_time || r.type === 'hotel') return false
|
if (!r.reservation_time || r.type === 'hotel') return false
|
||||||
|
if (r.assignment_id && dayAssignmentIds.includes(r.assignment_id)) return false
|
||||||
const startDate = r.reservation_time.split('T')[0]
|
const startDate = r.reservation_time.split('T')[0]
|
||||||
const endDate = getEndDate(r)
|
const endDate = getEndDate(r)
|
||||||
|
|
||||||
|
|||||||
@@ -385,7 +385,8 @@ export function ReservationModal({ isOpen, onClose, onSave, reservation, days, p
|
|||||||
value={(() => { const [, t] = (form.reservation_time || '').split('T'); return t || '' })()}
|
value={(() => { const [, t] = (form.reservation_time || '').split('T'); return t || '' })()}
|
||||||
onChange={t => {
|
onChange={t => {
|
||||||
const [d] = (form.reservation_time || '').split('T')
|
const [d] = (form.reservation_time || '').split('T')
|
||||||
const date = d || new Date().toISOString().split('T')[0]
|
const selectedDay = days.find(dy => dy.id === selectedDayId)
|
||||||
|
const date = d || selectedDay?.date || new Date().toISOString().split('T')[0]
|
||||||
set('reservation_time', t ? `${date}T${t}` : date)
|
set('reservation_time', t ? `${date}T${t}` : date)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -431,7 +431,7 @@ export default function TripPlannerPage(): React.ReactElement | null {
|
|||||||
const handleSaveReservation = async (data) => {
|
const handleSaveReservation = async (data) => {
|
||||||
try {
|
try {
|
||||||
if (editingReservation) {
|
if (editingReservation) {
|
||||||
const r = await tripActions.updateReservation(tripId, editingReservation.id, data)
|
const r = await tripActions.updateReservation(tripId, editingReservation.id, { ...data, day_id: selectedDayId || null })
|
||||||
toast.success(t('trip.toast.reservationUpdated'))
|
toast.success(t('trip.toast.reservationUpdated'))
|
||||||
setShowReservationModal(false)
|
setShowReservationModal(false)
|
||||||
if (data.type === 'hotel') {
|
if (data.type === 'hotel') {
|
||||||
|
|||||||
Reference in New Issue
Block a user