From f8e7a0d7b9551bd502822bae1f15ab9977fc3703 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Wed, 10 Jun 2026 23:04:56 -0600 Subject: [PATCH] - Se implemento la habilidad de ordenar los siguientes 5 proyectos en el tablero --- .antigravityrules | 5 +++ jsCode.js | 92 ++++++++++++++++++++++++++++++++++++++++------- resumen.php | 70 ++++++++++++++++++++++++++++++++++++ 3 files changed, 155 insertions(+), 12 deletions(-) create mode 100644 .antigravityrules diff --git a/.antigravityrules b/.antigravityrules new file mode 100644 index 0000000..5a2df77 --- /dev/null +++ b/.antigravityrules @@ -0,0 +1,5 @@ +# Antigravity AI Rules + +1. **Permiso explícito obligatorio para modificar archivos**: + - El asistente de IA **NUNCA** debe crear, modificar o eliminar ningún archivo del espacio de trabajo sin la autorización previa y explícita del usuario en el chat. + - El asistente debe presentar la propuesta detallada (como un diff o explicación de las líneas a cambiar) y esperar a que el usuario confirme (ej. "procede", "aplica el cambio") antes de ejecutar cualquier herramienta de escritura o modificación de archivos. diff --git a/jsCode.js b/jsCode.js index 9e215c5..9b7dc03 100644 --- a/jsCode.js +++ b/jsCode.js @@ -1980,18 +1980,7 @@ $('#accionHabilidadEspecial').click(function () { guardaSesion() } } else if (accionQuincenal === 'Ordenar los próximos 5 proyectos') { - // Actualizamos lastUsed - setArrayValue(elArreglo, 'accionEspecialLastUsed', quincenaActual) - - // Aquí el código de Investigación y Desarrollo: "Ordenar los próximos 5 proyectos" - window.alert( - '¡Acción especial activada (Investigación y Desarrollo)!' - ) - - // Se guarda el avance - if (typeof guardaSesion === 'function') { - guardaSesion() - } + abrirDialogoOrdenarProyectos(elArreglo, quincenaActual); } else if (accionQuincenal === 'Omitir un mantenimiento') { // Actualizamos lastUsed setArrayValue(elArreglo, 'accionEspecialLastUsed', quincenaActual) @@ -3706,4 +3695,83 @@ window.confirm = function (message, callback, customWidth) { }, }) } + +function abrirDialogoOrdenarProyectos(elArreglo, quincenaActual) { + let proyectosAOrdenar = siguientesProyectos.slice(0, 5); + let proyectosRestantes = siguientesProyectos.slice(5); + + let container = $('
'); + container.append('

Arrastra los proyectos para ordenar la prioridad en la que aparecerán:

'); + + let list = $(''); + proyectosAOrdenar.forEach((p, idx) => { + let item = $(` +
  • + ${idx + 1}. ${p.nombreProyecto} + ${p.departamento} +
  • + `); + list.append(item); + }); + container.append(list); + + container.dialog({ + modal: true, + title: 'Ordenar Próximos 5 Proyectos', + width: 500, + open: function() { + list.sortable({ + placeholder: "ui-state-highlight", + forcePlaceholderSize: true, + update: function(event, ui) { + list.find('li').each(function(index) { + let nombre = $(this).find('span').first().text(); + nombre = nombre.replace(/^\d+\.\s*/, ''); + $(this).find('span').first().text((index + 1) + '. ' + nombre); + }); + } + }); + list.disableSelection(); + $('').appendTo('head'); + }, + close: function() { + $('#sortable-style').remove(); + $(this).dialog('destroy').remove(); + }, + buttons: { + "Guardar Orden": function() { + let nuevoOrdenIds = []; + list.find('li').each(function() { + nuevoOrdenIds.push(parseInt($(this).data('id'))); + }); + + let nuevosSiguientes = []; + nuevoOrdenIds.forEach(id => { + let proj = proyectos.find(p => p.id === id); + if (proj) nuevosSiguientes.push(proj); + }); + + nuevosSiguientes = nuevosSiguientes.concat(proyectosRestantes); + siguientesProyectos = nuevosSiguientes; + + proyectos.forEach(p => { + if (p.estatus === 'En siguientes') p.estatus = 'Pendiente'; + }); + siguientesProyectos.forEach(p => { + let proj = proyectos.find(pr => pr.id === p.id); + if (proj) proj.estatus = 'En siguientes'; + }); + + setArrayValue(elArreglo, 'accionEspecialLastUsed', quincenaActual); + var audio = new Audio('./Microwave_bell.wav'); + audio.play(); + window.alert('¡Orden de proyectos actualizado con éxito!'); + + if (typeof guardaSesion === 'function') guardaSesion(); + $(this).dialog('close'); + }, + "Cancelar": function() { $(this).dialog('close'); } + } + }); +} // diff --git a/resumen.php b/resumen.php index cdc67e1..fe532ff 100644 --- a/resumen.php +++ b/resumen.php @@ -214,6 +214,27 @@ .nav-button:hover { background-color: #0056b3; } + + /* Estilos para que los diálogos/alertas jQuery UI se muestren de color rojo (carmesí) */ + .ui-dialog-titlebar { + background-color: crimson; + color: white; + } + + .ui-widget.ui-widget-content { + border-color: crimson; + border-width: 5px; + } + + .ui-dialog .ui-dialog-content { + font-size: 16px; + font-weight: bold; + text-align: center; + } + + .ui-dialog .ui-dialog-buttonpane button { + font-size: 17px; + } @@ -408,6 +429,12 @@ + + + + HE: + + @@ -441,6 +468,12 @@ + + + + HE: + + @@ -474,6 +507,12 @@ + + + + HE: + + @@ -507,6 +546,12 @@ + + + + HE: + + @@ -540,6 +585,12 @@ + + + + HE: + + @@ -573,6 +624,12 @@ + + + + HE: + + @@ -648,6 +705,16 @@ // Actualizar activos deptoCard.find('#activoCh1').text(findArrayValue(deptoArr, 'activo1')); deptoCard.find('#activoCh2').text(findArrayValue(deptoArr, 'activo2')); + + // Mostrar/Ocultar Habilidad Especial si ya se acreditó + const accionEspecial = findArrayValue(deptoArr, 'accionEspecialQuincenal'); + const rowHE = deptoCard.find('.fila-habilidad-especial'); + if (accionEspecial && accionEspecial !== '') { + rowHE.find('.texto-habilidad-especial').text(accionEspecial); + rowHE.show(); + } else { + rowHE.hide(); + } } function actualizarResumenUI() { @@ -1173,6 +1240,9 @@ $(this).dialog('destroy').remove(); }, }); + } else if (accionQuincenal === 'Ordenar los próximos 5 proyectos') { + alert('Esta habilidad especial solo se puede utilizar desde el tablero de juego.'); + return; } else { // Para las demás habilidades que solo muestran un mensaje setArrayValue(elArreglo, 'accionEspecialLastUsed', quincenaActual);