Enhancement: Multi-shift taxis, vehicle type, accessibility flag and filter label update
This commit is contained in:
@ -27,12 +27,23 @@ onMounted(async () => {
|
||||
const filteredTaxis = computed(() => {
|
||||
return taxiStore.taxis.filter(taxi => {
|
||||
const matchesZone = selectedZone.value === 'all' || taxi.corregimiento === selectedZone.value
|
||||
const matchesShift = selectedShift.value === 'all' || taxi.shift === selectedShift.value
|
||||
// Ahora comprueba si el turno seleccionado está en el array de turnos del taxi
|
||||
const matchesShift = selectedShift.value === 'all' || (taxi.shifts && taxi.shifts.includes(selectedShift.value))
|
||||
const matchesEnglish = !onlyEnglish.value || taxi.english_speaking
|
||||
return matchesZone && matchesShift && matchesEnglish
|
||||
})
|
||||
})
|
||||
|
||||
const isOnline = (taxi: Taxi) => {
|
||||
if (!taxi.shifts) return false
|
||||
return taxi.shifts.includes('dia') || taxi.shifts.includes('tarde')
|
||||
}
|
||||
|
||||
const getShiftsDisplay = (taxi: Taxi) => {
|
||||
if (!taxi.shifts || taxi.shifts.length === 0) return ''
|
||||
return taxi.shifts.map(s => getShiftLabel(s)).join(' · ')
|
||||
}
|
||||
|
||||
const handleCall = (taxi: Taxi) => {
|
||||
analyticsService.logEvent({
|
||||
event_name: 'taxi_click',
|
||||
@ -119,17 +130,20 @@ function getShiftLabel(shift: string) {
|
||||
@error="(e) => (e.target as HTMLImageElement).src = getImageUrl(null, 'taxi')"
|
||||
>
|
||||
</div>
|
||||
<div class="driver-status" :class="{ 'status-online': taxi.shift === 'dia' || taxi.shift === 'tarde' }"></div>
|
||||
<div class="driver-status" :class="{ 'status-online': isOnline(taxi) }"></div>
|
||||
</div>
|
||||
<div class="driver-info">
|
||||
<h3 class="driver-name">{{ taxi.owner_name }}</h3>
|
||||
<div class="flex items-center gap-2 mb-0.5">
|
||||
<h3 class="driver-name">{{ taxi.owner_name }}</h3>
|
||||
<span v-if="taxi.is_accessible" class="material-icons text-blue-500 text-sm" title="Accesible para personas con discapacidad">accessible</span>
|
||||
</div>
|
||||
<div class="driver-meta">
|
||||
<div class="rating-stars">
|
||||
<span class="material-icons star-filled">star</span>
|
||||
<span class="rating-value">{{ (taxi.rating || 5).toFixed(1) }}</span>
|
||||
</div>
|
||||
<span class="meta-dot">·</span>
|
||||
<span class="shift-badge">{{ getShiftLabel(taxi.shift || '') }}</span>
|
||||
<span class="shift-badge">{{ getShiftsDisplay(taxi) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="fav-icon-wrapper">
|
||||
@ -147,6 +161,10 @@ function getShiftLabel(shift: string) {
|
||||
<span class="material-icons detail-icon">location_on</span>
|
||||
<span class="detail-text">{{ taxi.corregimiento }}</span>
|
||||
</div>
|
||||
<div class="detail-item" v-if="taxi.vehicle_type">
|
||||
<span class="material-icons detail-icon">local_taxi</span>
|
||||
<span class="detail-text">{{ taxi.vehicle_type }}</span>
|
||||
</div>
|
||||
<div class="detail-item" v-if="taxi.english_speaking">
|
||||
<span class="material-icons detail-icon">g_translate</span>
|
||||
<span class="detail-text">{{ t('taxi.englishLabel') }}</span>
|
||||
|
||||
@ -50,7 +50,7 @@ onMounted(async () => {
|
||||
<div class="group-content">
|
||||
<label>{{ t('shuttle.category') || 'Categoría' }}</label>
|
||||
<select v-model="shuttleCategoryFilter">
|
||||
<option value="all">{{ t('shuttle.allRoutes') || 'Todas las rutas' }}</option>
|
||||
<option value="all">{{ t('shuttle.allAreas') || 'Todas las áreas' }}</option>
|
||||
<option value="local">Local</option>
|
||||
<option value="interprovincial">Interprovincial</option>
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user