Feat: Reorganizar tabs y permitir selección múltiple de categorías en notas
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m1s

- **Nuevas tabs reorganizadas:**
  - Organoléptica: Selectores de familia de fragancia-aroma y sabor
  - Descriptiva/Afectiva: Todos los sliders de intensidad (incluye impresión global)
  - Defectos: Tazas no uniformes, defectuosas y tipo de defecto
  - Impresión Global: Vista completa con todos los componentes

- **Selector de categorías mejorado:**
  - Permitir selección múltiple de categorías padre
  - Las subcategorías son la unión de las subcategorías de los padres seleccionados
  - Permitir selección múltiple de subcategorías
  - Actualizar resumen visual de selección

- **Tipos actualizados:**
  - NotaSeleccionada ahora usa arrays para categorias y subcategorias
  - TabCatacion actualizado con las nuevas tabs
  - Funciones de actualización modificadas para trabajar con arrays

- **Correcciones TypeScript:**
  - Usar JSON.parse(JSON.stringify()) para crear copias mutables de arrays readonly
  - Resolver incompatibilidades de tipos entre readonly y mutable arrays
This commit is contained in:
2025-10-18 02:57:14 -06:00
parent 1c4f09d9bd
commit 48e0d2f7dc
5 changed files with 481 additions and 181 deletions

View File

@@ -73,10 +73,10 @@ export interface FamiliasNotas {
}
export interface NotaSeleccionada {
/** Categoría principal seleccionada */
categoria: CategoriaNotaPrincipal | null
/** Subcategoría seleccionada (si aplica) */
subcategoria: string | null
/** Categorías principales seleccionadas (múltiples) */
categorias: CategoriaNotaPrincipal[]
/** Subcategorías seleccionadas (múltiples, unión de subcategorías de categorías seleccionadas) */
subcategorias: string[]
/** Nota específica seleccionada o escrita libremente */
notaEspecifica: string | null
}
@@ -177,13 +177,13 @@ export function crearMuestraVacia(id: number): Muestra {
impresionGlobal: { descriptiva: null, afectiva: null },
},
fraganciaAromaNotas: {
categoria: null,
subcategoria: null,
categorias: [],
subcategorias: [],
notaEspecifica: null,
},
saborNotas: {
categoria: null,
subcategoria: null,
categorias: [],
subcategorias: [],
notaEspecifica: null,
},
tazasNoUniformes: [],