Feat: Implementar asignación rápida de puntajes con botón de nube cáustica
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m8s
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m8s
- Crear ModalAsignacionRapida.vue con lógica de distribución por múltiplos de 8 - Input numérico (8-80) para puntaje total deseado - Cálculo automático del múltiplo de 8 más cercano - Si múltiplo < valor: permite seleccionar categorías que sobresalen (+1) - Si múltiplo > valor: permite seleccionar categorías que palidecen (-1) - Si múltiplo = valor: asignación directa sin ajustes - Crear BotonNubeCaustica.vue con diseño especial - Forma de nube usando SVG path - Animación de patrones de luz cáustica con gradientes animados - Efectos de brillo y ondas al hacer hover - Icono de rayo mágico con animación sparkle - Integrar funcionalidad en FormularioMuestra.vue - Ubicar botón en esquina superior izquierda de sección Descriptiva/Afectiva - Aplicar puntajes calculados a todas las categorías descriptivas - Actualizar puntaje final automáticamente - Corregir comentario: "Suma de valores descriptivos" (era "afectivos")
This commit is contained in:
@@ -70,6 +70,11 @@
|
||||
|
||||
<!-- Tab 2: Descriptiva/Afectiva (todos los sliders incluyendo impresión global) -->
|
||||
<div v-if="tabActiva === 'descriptiva-afectiva'" class="tab-content cata-fade-in">
|
||||
<!-- Botón de asignación rápida -->
|
||||
<div class="flex justify-start mb-4">
|
||||
<CataBotonNubeCaustica @click="modalAsignacionRapida = true" />
|
||||
</div>
|
||||
|
||||
<!-- Sliders de Fragancia -->
|
||||
<div v-if="mostrarFraganciaSlider" class="form-section">
|
||||
<div class="flex items-center justify-between mb-2">
|
||||
@@ -796,11 +801,18 @@
|
||||
<span class="text-3xl font-bold cata-text">{{ muestra.puntajeFinal }}</span>
|
||||
</div>
|
||||
<p class="text-xs cata-text opacity-60 mt-1">
|
||||
Suma de valores afectivos
|
||||
Suma de valores descriptivos
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal de Asignación Rápida -->
|
||||
<CataModalAsignacionRapida
|
||||
v-model="modalAsignacionRapida"
|
||||
:muestra="muestra"
|
||||
@aplicar="aplicarAsignacionRapida"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -937,6 +949,17 @@ const mostrarImpresionGlobalAfectiva = computed(() => deberMostrarSlider('afecti
|
||||
// Estado local para otras notas
|
||||
const otrasNotasLocal = ref(props.muestra.otrasNotas)
|
||||
|
||||
// Estado del modal de asignación rápida
|
||||
const modalAsignacionRapida = ref(false)
|
||||
|
||||
// Aplicar asignación rápida de puntajes
|
||||
const aplicarAsignacionRapida = async (puntajes: Record<string, number>) => {
|
||||
// Aplicar cada puntaje a su categoría correspondiente
|
||||
for (const [categoria, puntaje] of Object.entries(puntajes)) {
|
||||
await actualizarIntensidad(categoria as keyof Muestra['intensidades'], 'descriptiva', puntaje)
|
||||
}
|
||||
}
|
||||
|
||||
// Actualizar intensidad
|
||||
const actualizarIntensidad = async (
|
||||
parametro: keyof Muestra['intensidades'],
|
||||
|
||||
Reference in New Issue
Block a user