Feat: Implementar filtrado de muestras en tab Impresión Global
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s
- Crear subcategorías dinámicas basadas en las muestras de la sesión - Los filtros en Impresión Global ahora controlan qué muestras se muestran - Filtrar accordionItems según subcategorías activas en impresion-global - Cada muestra aparece como opción de filtro con su nombre o "Muestra #"
This commit is contained in:
@@ -261,8 +261,8 @@ const tabs = [
|
||||
},
|
||||
]
|
||||
|
||||
// Definición de subcategorías por tab
|
||||
const subcategoriasPorTab = {
|
||||
// Definición de subcategorías estáticas por tab
|
||||
const subcategoriasEstaticasPorTab = {
|
||||
'organoleptica': [
|
||||
{ value: 'fragancia-aroma' as Subcategoria, label: 'Fragancia/Aroma' },
|
||||
{ value: 'sabor' as Subcategoria, label: 'Sabor' },
|
||||
@@ -282,19 +282,41 @@ const subcategoriasPorTab = {
|
||||
{ value: 'impresion-global' as Subcategoria, label: 'Impresión Global' },
|
||||
],
|
||||
'defectos': [],
|
||||
'impresion-global': [],
|
||||
}
|
||||
|
||||
// Subcategorías dinámicas para Impresión Global (basadas en muestras)
|
||||
const subcategoriasMuestras = computed(() => {
|
||||
if (!sesionActiva.value) return []
|
||||
|
||||
return sesionActiva.value.muestras.map((muestra, index) => ({
|
||||
value: `muestra-${muestra.muestraId}` as Subcategoria,
|
||||
label: muestra.nombre || `Muestra ${index + 1}`,
|
||||
}))
|
||||
})
|
||||
|
||||
// Subcategorías disponibles para la tab activa
|
||||
const subcategoriasDisponibles = computed(() => {
|
||||
return subcategoriasPorTab[tabActiva.value] || []
|
||||
if (tabActiva.value === 'impresion-global') {
|
||||
return subcategoriasMuestras.value
|
||||
}
|
||||
return subcategoriasEstaticasPorTab[tabActiva.value] || []
|
||||
})
|
||||
|
||||
// Items del accordion
|
||||
const accordionItems = computed(() => {
|
||||
if (!sesionActiva.value) return []
|
||||
|
||||
return sesionActiva.value.muestras.map((muestra) => ({
|
||||
let muestrasAMostrar = sesionActiva.value.muestras
|
||||
|
||||
// Si estamos en impresion-global y hay filtros activos, filtrar muestras
|
||||
if (tabActiva.value === 'impresion-global' && subcategoriasActivas.value.length > 0) {
|
||||
muestrasAMostrar = sesionActiva.value.muestras.filter((muestra) => {
|
||||
const muestraValue = `muestra-${muestra.muestraId}`
|
||||
return subcategoriasActivas.value.includes(muestraValue as Subcategoria)
|
||||
})
|
||||
}
|
||||
|
||||
return muestrasAMostrar.map((muestra) => ({
|
||||
label: '', // Usaremos slot #default para el contenido del header
|
||||
value: `muestra-${muestra.muestraId}`,
|
||||
muestra, // Pasar referencia directa sin clonar
|
||||
|
||||
Reference in New Issue
Block a user