Commit Graph

25 Commits

Author SHA1 Message Date
c2ba2a561b Feat: Mejorar diseño de accordions y eliminar headers redundantes
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m4s
- Alinear puntaje final a la derecha en ResumenMuestra (ml-auto)
- Cambiar estilo de accordion: underline simple sin gap entre items
- Ajustar ancho 100% en móviles sin padding lateral (px-0 sm:px-4)
- Eliminar headers redundantes en tabs específicas:
  * Organoléptica: eliminar 'Características Organolépticas'
  * Descriptiva/Afectiva: eliminar 'Intensidades Descriptivas y Afectivas'
  * Defectos: eliminar 'Defectos y Uniformidad'
- Mantener headers en tab Impresión Global para mejor navegación
2025-10-18 16:23:49 -06:00
3eb9e987c7 Feat: Filtrar chips de ResumenMuestra según tab activa
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m6s
- Agregar prop tabActiva a ResumenMuestra.vue
- Implementar computed properties para filtrado:
  * mostrarChipsOrganolepticos (organoleptica + impresion-global)
  * mostrarChipsIntensidades (descriptiva-afectiva + impresion-global)
  * mostrarChipsDefectos (defectos + impresion-global)
- Envolver grupos de chips con template v-if según filtrado
- Pasar prop :tab-activa desde sesion.vue a ResumenMuestra
- En impresion-global se muestran TODOS los chips
- En otras tabs solo chips pertinentes a esa categoría
2025-10-18 16:06:35 -06:00
45d4b1d663 Feat: Agregar persistencia de subcategorías seleccionadas por tab
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m8s
Implementa la funcionalidad para que las subcategorías seleccionadas persistan:
- Entre cambios de tabs (cada tab mantiene sus propias subcategorías)
- Entre refrescos de página (guardado en localStorage)

Cambios técnicos:
- Modificado useCatacion.ts para guardar subcategorías por tab en lugar de array global
- Agregada función actualizarSubcategorias() que persiste en localStorage
- subcategoriasActivas ahora es computed basado en la tab activa
- Removida limpieza de subcategorías al cambiar de tab en sesion.vue
- Actualizado toggleSubcategoria para usar la nueva función de persistencia
2025-10-18 14:56:09 -06:00
8cf62f0057 Feat: Implementar selección múltiple y filtrado de subcategorías
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s
- Cambiar subcategoriaActiva a subcategoriasActivas (array) para permitir selección múltiple
- Agregar flex-wrap a barra de subcategorías en lugar de scroll horizontal
- Implementar toggleSubcategoria para agregar/quitar subcategorías
- Pasar subcategoriasActivas a FormularioMuestra como prop
- Agregar helpers deberMostrarSeccion para filtrar inputs
- Aplicar v-if a todas las secciones según subcategorías activas
- Botón Limpiar Todo para resetear filtros
2025-10-18 14:47:38 -06:00
b639aa24bb Feat: Agregar barra de subcategorías sticky debajo de tabs principales
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m7s
2025-10-18 14:38:21 -06:00
2737a9c39b Feat: Hacer accordions más compactos - reducir padding y gaps
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m7s
2025-10-18 14:26:12 -06:00
af6664c931 Refactor: Eliminar métricas y estadísticas del UI de catación para simplificar interfaz
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m8s
2025-10-18 14:16:55 -06:00
261d38d7dc Feat: Agregar logo de la app junto al título RioCata en todas las páginas
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m6s
2025-10-18 04:00:39 -06:00
0656f15366 Feat: Mejorar diseño del botón flotante de colapsar/expandir
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m4s
- Reducir padding del botón de p-3 a p-2 (más compacto)
- Reducir tamaño del icono de w-6 h-6 a w-5 h-5
- Agregar flex items-center justify-center para centrar el icono
- Eliminar shadow con glow de color
- Usar fondo sólido con var(--cata-bg) en lugar de transparente
- Aplicar sombra simple con rgba (sin color del tema)
- Eliminar ajustes responsive de padding innecesarios
- Mejorar z-index para que se sobreponga correctamente a elementos
2025-10-18 03:43:15 -06:00
9daafc2a3e Feat: Reorganizar controles de sesión y mejorar UX
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s
- Mover botón Finalizar Sesión del flotante al header
- Cambiar botón flotante para colapsar/expandir todos los acordiones
- Agregar opción Finalizar Sesión al menú desplegable móvil
- Implementar función toggleCollapseAll para control de acordiones
- Agregar computed todosColapsados para estado de acordiones
- Usar iconos maximize-2/minimize-2 según estado
- Hacer botón flotante circular para mejor identificación

- Arreglar hover de acordiones para usar color personalizado
- Agregar estilos :deep() para .accordion-trigger:hover
- Usar color-mix con var(--cata-primary) en hover
- Aplicar 5% opacidad en modo claro, 10% en modo oscuro
2025-10-18 03:33:09 -06:00
8ad0b0b131 Fix: Eliminar re-renderizados innecesarios en accordiones
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m5s
- Remover JSON.parse(JSON.stringify()) de accordionItems computed
- Remover clonación innecesaria en obtenerMuestraPorValue
- Pasar referencias directas en lugar de copias profundas
- Los accordiones ahora mantienen su estado sin parpadeos
- Mejora significativa en la fluidez de la interfaz

El problema era que al clonar las muestras en cada render, Vue detectaba
objetos "nuevos" y re-montaba completamente los componentes accordion,
causando un efecto visual de parpadeo cada vez que se actualizaba un valor.
2025-10-18 03:30:40 -06:00
48e0d2f7dc 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
2025-10-18 02:57:14 -06:00
1c4f09d9bd Fix: Igualar tamaño del botón de descarga con los demás botones
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m1s
- Agregar clases flex items-center justify-center al botón de descarga
- Cambiar hidden sm:block por hidden sm:flex (coherente con flex)
- Ahora el botón tiene el mismo tamaño que los demás
- Archivo: app/pages/cata/sesion.vue:48
2025-10-18 02:48:00 -06:00
4fdd66f5ab Fix: Centrar icono de flecha en botón de regresar
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m2s
- Agregar clases flex items-center justify-center al botón de regresar
- El icono i-lucide-arrow-left ahora está perfectamente centrado
- Archivo: app/pages/cata/sesion.vue:32
2025-10-18 02:43:07 -06:00
0a4623acfb Fix: Remover clase cata-page del header sticky para evitar min-height no deseada
Some checks failed
build-and-deploy / build-and-deploy (push) Has been cancelled
2025-10-18 02:42:08 -06:00
60287f35dc Debug: Cambiar a slot #content y agregar debug de datos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m2s
- Cambiar de slot #body a #content
- Agregar debug para ver qué contiene item cuando no tiene muestra
- Esto ayudará a entender qué datos recibe el slot
2025-10-18 02:36:11 -06:00
9e6f80e98f Debug: Agregar v-if para verificar datos en slot #body
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m1s
2025-10-18 02:33:50 -06:00
0d8b3adfc8 Fix: Usar slot #body en lugar de slots personalizados por muestra
Some checks failed
build-and-deploy / build-and-deploy (push) Has been cancelled
- Simplificar uso de slots del accordion usando #body para el contenido
- Remover v-for innecesario en templates de slots
- Remover propiedad slot de accordionItems
- Esto permite que el contenido se renderice correctamente cuando se expande el accordion
2025-10-18 02:29:53 -06:00
7a15da0840 Fix: Corregir tipos de TypeScript en accordion
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m4s
- Importar tipo Muestra correctamente
- Remover tipo AccordionItem no usado
- Tipar muestra como Muestra en accordionItems
- Permitir inferencia de tipo del computed
2025-10-18 02:25:52 -06:00
c87aa68d7d Fix: Corregir uso de slots en accordion para pasar correctamente los datos
- Usar parámetro { item } en slot personalizado del FormularioMuestra
- Pasar item.muestra en lugar de la muestra del v-for
- Esto asegura que se use la muestra clonada del accordionItems
2025-10-18 02:25:02 -06:00
9cbc5f94c3 Fix: Eliminar componentes duplicados que causaban conflicto en el build
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m4s
- Eliminar CataResumenMuestra.vue y CataFormularioMuestra.vue duplicados
- Usar componentes existentes en components/cata/ que ya se auto-registran como CataResumenMuestra y CataFormularioMuestra
- Resolver conflicto de nombres en Nuxt que impedía el build
2025-10-18 02:12:22 -06:00
5e697dbc89 Fix: Corregir bug visual de accordions en sesión de catación
Some checks failed
build-and-deploy / build-and-deploy (push) Failing after 16s
- Crear componente CataResumenMuestra para mostrar resumen de cada muestra en el header del accordion
- Crear componente CataFormularioMuestra para mostrar formulario de edición de intensidades por tab
- Corregir uso de slots en UAccordion para mostrar correctamente el contenido
- Usar slot #default para customizar el header con CataResumenMuestra
- Usar slots personalizados por muestra para el body con CataFormularioMuestra
- Agregar estilos mejorados para los items del accordion
2025-10-18 02:10:15 -06:00
76dcff31d6 Feat: Reorganizar UI - Sistema de catación como página principal
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m2s
- Crear componente CataUserInfo con estilo mobile-first del sistema de catación
- Mover "/" para redirigir automáticamente a /cata
- Incluir información del usuario en página de catación
- Mantener estilo consistente con diseño outline/terminal del sistema
- Optimizar componente de usuario para mobile (compacto y funcional)
2025-10-18 02:05:54 -06:00
231c901e1c Fix: Corregir app.vue para usar NuxtPage y crear página de inicio
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m3s
- Simplificar app.vue para usar <NuxtPage /> correctamente
- Crear index.vue con contenido de autenticación de Authentik
- Agregar enlace a la aplicación de catación desde el inicio
- Esto permite que las rutas /cata y /cata/sesion se rendericen correctamente
2025-10-18 01:50:00 -06:00
87fb92d210 Feat: Implementar UI completa de RioCata - Sistema de catación de café
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m3s
Agregar sistema completo de catación de café con las siguientes características:

- Tipos TypeScript completos para sesiones, muestras, intensidades y notas
- Composable useIndexedDB para gestión de sesión activa en cliente
- Composable useCatacion con lógica de negocio para actualización de muestras
- Componentes reutilizables:
  * SliderIntensidad: Slider dual para valores descriptivos (1-10) y afectivos (1-15)
  * SelectorFamilia: Selector jerárquico de familias de notas (3 niveles)
  * SelectorTazas: Selector de tazas (1-5) para uniformidad y defectos
  * ResumenMuestra: Header de accordion con progreso y estadísticas
  * FormularioMuestra: Formulario completo con 3 tabs (Fragancia/Aroma, Sabor, Impresión Global)
- Páginas:
  * /cata: Gestión de sesiones (crear nueva o continuar existente)
  * /cata/sesion: Interfaz principal de catación con accordions y tabs
- Tema dual:
  * Modo claro: Fondo blanco, texto negro, outlines azules
  * Modo oscuro: Fondo negro, texto verde terminal, estilo monospace
- Diseño mobile-first responsive con CSS vanilla (sin @apply de Tailwind)
- Configuración PWA con almacenamiento en IndexedDB
2025-10-18 01:39:27 -06:00