mirror of
https://github.com/cheveguerra/Colaborando.git
synced 2026-08-19 00:46:37 +00:00
- Se implemento la habilidad de ordenar los siguientes 5 proyectos en el tablero
This commit is contained in:
@@ -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.
|
||||
@@ -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 = $('<div></div>');
|
||||
container.append('<p style="margin-bottom: 15px; font-size: 14px;">Arrastra los proyectos para ordenar la prioridad en la que aparecerán:</p>');
|
||||
|
||||
let list = $('<ul id="sortable-proyectos" style="list-style-type: none; padding: 0; margin: 0;"></ul>');
|
||||
proyectosAOrdenar.forEach((p, idx) => {
|
||||
let item = $(`
|
||||
<li class="ui-state-default" data-id="${p.id}" style="margin: 8px 0; padding: 10px; border: 2px solid gray; border-radius: 4px; background-color: #f9f9f9; cursor: grab; display: flex; justify-content: space-between; align-items: center; font-size: 14px;">
|
||||
<span style="font-weight: bold;">${idx + 1}. ${p.nombreProyecto}</span>
|
||||
<span style="font-size: 11px; background-color: #eee; padding: 2px 6px; border-radius: 3px; color: #555;">${p.departamento}</span>
|
||||
</li>
|
||||
`);
|
||||
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();
|
||||
$('<style id="sortable-style">.ui-state-highlight { height: 40px; background-color: #ffffcc; border: 2px dashed #999; margin: 8px 0; border-radius: 4px; }</style>').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'); }
|
||||
}
|
||||
});
|
||||
}
|
||||
// </script>
|
||||
|
||||
+70
@@ -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;
|
||||
}
|
||||
</style>
|
||||
<!-- Scripts base -->
|
||||
<script src="js/jquery-3.5.1.min.js"></script>
|
||||
@@ -408,6 +429,12 @@
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Fila de Habilidad Especial -->
|
||||
<tr class="fila-habilidad-especial" style="display: none; background-color: #f0f0f0; border-top: 1px solid gray;">
|
||||
<td colspan="3" style="text-align: center; font-size: 16px; padding: 4px; font-weight: bold; color: #444;">
|
||||
HE: <span class="texto-habilidad-especial"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -441,6 +468,12 @@
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Fila de Habilidad Especial -->
|
||||
<tr class="fila-habilidad-especial" style="display: none; background-color: #f0f0f0; border-top: 1px solid gray;">
|
||||
<td colspan="3" style="text-align: center; font-size: 16px; padding: 4px; font-weight: bold; color: #444;">
|
||||
HE: <span class="texto-habilidad-especial"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -474,6 +507,12 @@
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Fila de Habilidad Especial -->
|
||||
<tr class="fila-habilidad-especial" style="display: none; background-color: #f0f0f0; border-top: 1px solid gray;">
|
||||
<td colspan="3" style="text-align: center; font-size: 16px; padding: 4px; font-weight: bold; color: #444;">
|
||||
HE: <span class="texto-habilidad-especial"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -507,6 +546,12 @@
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Fila de Habilidad Especial -->
|
||||
<tr class="fila-habilidad-especial" style="display: none; background-color: #f0f0f0; border-top: 1px solid gray;">
|
||||
<td colspan="3" style="text-align: center; font-size: 16px; padding: 4px; font-weight: bold; color: #444;">
|
||||
HE: <span class="texto-habilidad-especial"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -540,6 +585,12 @@
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Fila de Habilidad Especial -->
|
||||
<tr class="fila-habilidad-especial" style="display: none; background-color: #f0f0f0; border-top: 1px solid gray;">
|
||||
<td colspan="3" style="text-align: center; font-size: 16px; padding: 4px; font-weight: bold; color: #444;">
|
||||
HE: <span class="texto-habilidad-especial"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -573,6 +624,12 @@
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- Fila de Habilidad Especial -->
|
||||
<tr class="fila-habilidad-especial" style="display: none; background-color: #f0f0f0; border-top: 1px solid gray;">
|
||||
<td colspan="3" style="text-align: center; font-size: 16px; padding: 4px; font-weight: bold; color: #444;">
|
||||
HE: <span class="texto-habilidad-especial"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user