@if (viewMode==='map' || viewMode==='day') { {{ dayLabel }} } @if (viewMode==='week') { {{ weekRangeLabel }} } @if (viewMode==='month') { {{ monthLabel }} } @if (viewMode==='map' && selectedType?.bkrt_type === 'BEACH') { } @if ((viewMode==='map' && selectedType?.bkrt_type !== 'BEACH') || viewMode==='day') { } @if (selectedType?.bkrt_type === 'RESTAURANT' && viewMode === 'map' && slotFilterOptions.length > 0) {
@for (opt of slotFilterOptions; track opt) { }
} @if (viewMode==='map' && selectedType?.bkrt_type !== 'BEACH') {
{{ 'booking.mappa.legend.free' | translate }} {{ 'booking.mappa.legend.booked' | translate }}
}
@if (viewMode==='map') {
@if (selectedType?.bkrt_type === 'BEACH') {
@if (filaLegend.length > 0) {
{{ 'booking.mappa.prices_per_row' | translate }} · {{ filaLegend[0].days }} {{ 'booking.mappa.days_abbr' | translate }}
@if (legendHasAnyOmbrelloni) { {{ 'booking.mappa.col.umbrellas' | translate }} } @if (legendHasAnyPalme) { {{ 'booking.mappa.col.palm' | translate }} }
@for (f of filaLegend; track f) {
{{ 'booking.mappa.row' | translate }} {{ f.fila }} @if (legendHasAnyOmbrelloni) { @if (f.hasOmbrelloni && f.ombrelloneTotal != null) { € {{ f.ombrelloneTotal }} } @if (!f.hasOmbrelloni || f.ombrelloneTotal == null) { } } @if (legendHasAnyPalme) { @if (f.hasPalme && f.palmaTotal != null) { € {{ f.palmaTotal }} } @if (!f.hasPalme || f.palmaTotal == null) { } }
} @if (filaLegend[0]?.periodNames?.length) {
{{ filaLegend[0].periodNames.join(' / ') }}
}
}
{{ 'booking.mappa.legend.free' | translate }} {{ 'booking.mappa.legend.booked' | translate }}
}
@if (selectedType?.bkrt_type === 'BEACH' && !selectedZone) { @for (zone of beachL1Zones; track zone) {
} @for (zone of beachL1Zones; track zone) {
{{ zone.ombrLiberi }} / {{ zone.ombrTotali }} @if (zone.palmeTotali > 0) { {{ zone.palmeLibere }} / {{ zone.palmeTotali }} }
} } @if (stabilimento) {
} @for (p of passerelle; track p) {
} @if (walls.length > 0) { @for (m of walls; track m) { } } @for (r of positionedResources; track r) {
@if (selectedType?.bkrt_type !== 'BEACH') {
} @if (selectedType?.bkrt_type === 'BEACH' && !selectedZone) {
} @if (selectedType?.bkrt_type === 'RESTAURANT' && getResourceBookingMap(selectedDateStr, r.bkr_id); as bk) {
@if (isBookingPrimaryForResource(bk, r.bkr_id)) { {{ bk.bkb_customer_name }} · {{ bk.bkb_guests_count }} posti @if (canMoveTable && selectedMapSlotId && (bk.bkb_resource_ids?.length || 0) > 1) { } } } @if (selectedZone && selectedType?.bkrt_type === 'BEACH' && getResourceSubtype(r) !== 'PALMA') { } @if (selectedZone && selectedType?.bkrt_type === 'BEACH' && getResourceSubtype(r) === 'PALMA') { } @if (selectedType?.bkrt_type === 'RESTAURANT' && getRestaurantSubtype(r) === 'QUADRATO') { } @if (selectedType?.bkrt_type === 'RESTAURANT' && getRestaurantSubtype(r) === 'TONDO') { } @if (selectedType?.bkrt_type === 'GENERIC' || !selectedType) { } @if (selectedType?.bkrt_type !== 'BEACH' || selectedZone) { {{ getResourceDisplayName(r) }} } @if (canDisableTable && selectedMapSlotId && !isResourceDisabled(r.bkr_id)) { } @if (canDisableTable && selectedMapSlotId && isResourceDisabled(r.bkr_id)) { } @if (isResourceDisabled(r.bkr_id)) {
{{ 'booking.map.disable.label_disabled' | translate }}
}
} @if (positionedResources.length === 0) {

{{ 'booking.mappa.no_resources' | translate }}

} @if (pathDrawMode && pathDrawPoints.length > 0) { @for (p of pathDrawPoints; track p) { } } @if (pathDrawMode) {
}
@if (pathDrawMode) {
Disegna il percorso — click sul canvas per aggiungere vertici ({{ pathDrawPoints.length }} punti, min 2) @if (pathError) {  {{ pathError }} } @if (pathDrawPoints.length >= 2) { }
} @if (selectedZone && !_autoZone) { } @if (selectedZone && selectedType?.bkrt_type === 'BEACH') {
{{ selectedZone.ombrLiberi }} / {{ selectedZone.ombrTotali }} @if (selectedZone.palmeTotali > 0) { {{ selectedZone.palmeLibere }} / {{ selectedZone.palmeTotali }} }
}
} @if (viewMode==='day') {
@if (resources.length > 0 && timeSlots.length > 0 && selectedType?.bkrt_type === 'RESTAURANT') { @for (bk of getUniqueBookingsForDay(selectedDateStr); track bk) { } @if (getUniqueBookingsForDay(selectedDateStr).length === 0) { }
{{ 'booking.mappa.th.customer' | translate }} {{ 'booking.mappa.th.slot' | translate }} {{ 'booking.mappa.th.time' | translate }} {{ 'booking.mappa.th.seats' | translate }} {{ 'booking.mappa.th.tables' | translate }} {{ 'booking.mappa.th.status' | translate }}
{{ bk.bkb_customer_name }} {{ bk.bkts_name }} @if (bk.bkb_start_time) { {{ bk.bkb_start_time | slice:0:5 }}–{{ bk.bkb_end_time | slice:0:5 }} } @if (!bk.bkb_start_time) { } {{ bk.bkb_guests_count }} {{ getAssignedTablesLabel(bk) }}
{{ 'booking.mappa.no_bookings' | translate }}
} @if (resources.length > 0 && timeSlots.length > 0 && selectedType?.bkrt_type !== 'RESTAURANT') { @for (s of timeSlots; track s) { } @for (r of resources; track r) { @for (s of timeSlots; track s) { } }
{{ 'booking.mappa.th.resource' | translate }}
{{ s.bkts_name }}
{{ s.bkts_start_time | slice:0:5 }} - {{ s.bkts_end_time | slice:0:5 }}
{{ r.bkr_name }} @for (bk of getBookingsForSlot(selectedDateStr, r.bkr_id, s.bkts_id); track bk; let last = $last) {
@if (bk.bkb_start_time) {
{{ bk.bkb_start_time | slice:0:5 }}–{{ bk.bkb_end_time | slice:0:5 }}
} @if (selectedType?.bkrt_type === 'BEACH') {
@if (bk.bkb_lettini) { {{ bk.bkb_lettini }} } @if (bk.bkb_sedie) { {{ bk.bkb_sedie }} } @if (bk.bkb_sdraio) { {{ bk.bkb_sdraio }} }
} @if (selectedType?.bkrt_type === 'RESTAURANT') {
{{ 'booking.mappa.th.seats' | translate }}{{ bk.bkb_guests_count }}
} @if (!selectedType || (selectedType?.bkrt_type !== 'BEACH' && selectedType?.bkrt_type !== 'RESTAURANT')) { 1 }
@if (!last) {
} }
} @if (resources.length > 0 && timeSlots.length === 0 && selectedType?.bkrt_type === 'RESTAURANT') { @for (bk of getUniqueBookingsForDay(selectedDateStr); track bk) { } @if (getUniqueBookingsForDay(selectedDateStr).length === 0) { }
{{ 'booking.mappa.th.customer' | translate }} {{ 'booking.mappa.th.time' | translate }} {{ 'booking.mappa.th.seats' | translate }} {{ 'booking.mappa.th.tables' | translate }} {{ 'booking.mappa.th.status' | translate }}
{{ bk.bkb_customer_name }} @if (bk.bkb_start_time) { {{ bk.bkb_start_time | slice:0:5 }}–{{ bk.bkb_end_time | slice:0:5 }} } @if (!bk.bkb_start_time) { } {{ bk.bkb_guests_count }} {{ getAssignedTablesLabel(bk) }}
{{ 'booking.mappa.no_bookings' | translate }}
} @if (resources.length > 0 && timeSlots.length === 0 && selectedType?.bkrt_type !== 'RESTAURANT') { @for (r of resources; track r) { }
{{ 'booking.mappa.th.resource' | translate }} {{ 'booking.mappa.th.status' | translate }}
{{ r.bkr_name }} @for (bk of getBookingsForCell(selectedDateStr, r.bkr_id); track bk; let last = $last) {
@if (bk.bkb_start_time) {
{{ bk.bkb_start_time | slice:0:5 }}–{{ bk.bkb_end_time | slice:0:5 }}
} @if (selectedType?.bkrt_type === 'BEACH') {
@if (bk.bkb_lettini) { {{ bk.bkb_lettini }} } @if (bk.bkb_sedie) { {{ bk.bkb_sedie }} } @if (bk.bkb_sdraio) { {{ bk.bkb_sdraio }} }
} @if (!selectedType || (selectedType?.bkrt_type !== 'BEACH' && selectedType?.bkrt_type !== 'RESTAURANT')) { 1 }
@if (!last) {
} }
} @if (resources.length === 0) {
Nessuna risorsa disponibile per il tipo selezionato
}
} @if (viewMode==='week') {
@if (resources.length > 0) { @for (day of getWeekDays(); track day) { } @for (r of resources; track r) { @for (day of getWeekDays(); track day) { } }
{{ 'booking.mappa.th.resource' | translate }}
{{ day | date:'EEE':'':'it' }}
{{ day | date:'d MMM':'':'it' }}
{{ r.bkr_name }} @if (selectedType?.bkrt_type === 'BEACH') { @if (getCellBeachTotals(formatDate(day), r.bkr_id); as t) { @if (getBookingsForCell(formatDate(day), r.bkr_id).length > 0) {
@if (t.lettini) { {{ t.lettini }} } @if (t.sedie) { {{ t.sedie }} } @if (t.sdraio) { {{ t.sdraio }} }
} } } @if (selectedType?.bkrt_type === 'RESTAURANT') { @for (bk of getBookingsForCell(formatDate(day), r.bkr_id); track bk) { @if (isBookingPrimaryForResource(bk, r.bkr_id)) {
@if (bk.bkb_start_time) {
{{ bk.bkb_start_time | slice:0:5 }}–{{ bk.bkb_end_time | slice:0:5 }}
}
{{ 'booking.mappa.th.seats' | translate }}{{ bk.bkb_guests_count }}
} @else {
{{ getPrimaryTableName(bk) }}
} } } @if (!selectedType || (selectedType?.bkrt_type !== 'BEACH' && selectedType?.bkrt_type !== 'RESTAURANT')) { @for (bk of getBookingsForCell(formatDate(day), r.bkr_id); track bk; let last = $last) {
@if (bk.bkb_start_time) {
{{ bk.bkb_start_time | slice:0:5 }}–{{ bk.bkb_end_time | slice:0:5 }}
} 1
@if (!last) {
} } }
} @if (resources.length === 0) {
Nessuna risorsa disponibile per il tipo selezionato
}
} @if (viewMode==='month') {
@if (resources.length > 0) { @for (day of getMonthDays(); track day) { } @for (r of resources; track r) { @for (day of getMonthDays(); track day) { } }
{{ 'booking.mappa.th.resource' | translate }}
{{ day | date:'EEE':'':'it' }}
{{ day | date:'d':'':'it' }}
{{ r.bkr_name }} @if (getBookingsForCell(formatDate(day), r.bkr_id).length > 0) { }
} @if (resources.length === 0) {
Nessuna risorsa disponibile per il tipo selezionato
}
} @if (loading) {
}
@if (detailBookings.length === 0) {
Nessuna prenotazione attiva per questa risorsa
} @for (b of detailBookings; track b) {
{{ b.bkb_customer_name }} {{ b.bkb_customer_phone }} {{ b.bkts_name }}
@if (selectedType?.bkrt_type === 'BEACH') { @if (b.bkb_lettini) { {{ b.bkb_lettini }} lettini } @if (b.bkb_sedie) { {{ b.bkb_sedie }} sedie } @if (b.bkb_sdraio) { {{ b.bkb_sdraio }} sdraio } } @else { {{ b.bkb_guests_count }} {{ selectedType?.bkrt_type === 'RESTAURANT' ? 'posti' : 'ospiti' }} }
}
@if (showBookingDetailDialog) { } @if (disableTargetResource) {
{{ disableTargetResource.bkr_name }}
}