mirror of
https://github.com/cheveguerra/Colaborando.git
synced 2026-08-19 00:46:37 +00:00
- Boton de habilidades especiales en resumen
- Descartar un proyecto implementado
This commit is contained in:
@@ -949,6 +949,82 @@ function llenaSiguienteProyectoChico() {
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Redibuja todo el tablero de proyectos (grande y chicos) basado en el estado actual.
|
||||
*/
|
||||
function redibujarTablero() {
|
||||
console.log('Redibujando tablero de proyectos...')
|
||||
|
||||
// 1. Determinar cuál será el nuevo proyecto grande.
|
||||
let nuevoProyectoGde = null
|
||||
// Prioridad 1: El que ya era grande, si sigue 'En proceso'.
|
||||
if (
|
||||
proyectoGdeActual !== '' &&
|
||||
proyectos[proyectoGdeActual] &&
|
||||
proyectos[proyectoGdeActual].estatus === 'En proceso'
|
||||
) {
|
||||
nuevoProyectoGde = proyectos[proyectoGdeActual]
|
||||
} else {
|
||||
// Prioridad 2: El primer proyecto 'En proceso' que se encuentre.
|
||||
nuevoProyectoGde = proyectos.find((p) => p.estatus === 'En proceso')
|
||||
}
|
||||
|
||||
// Prioridad 3: Si no hay ninguno 'En proceso', tomar el primero de la cola 'En siguientes'.
|
||||
if (!nuevoProyectoGde) {
|
||||
nuevoProyectoGde = proyectos.find((p) => p.estatus === 'En siguientes')
|
||||
}
|
||||
|
||||
// 2. Limpiar todos los slots de proyectos chicos.
|
||||
for (let i = 1; i <= 7; i++) {
|
||||
limpiaProyectoChico('proyecto_' + i)
|
||||
}
|
||||
ultimoProyectoLlenado = 0 // Resetear contador
|
||||
|
||||
// 3. Llenar o limpiar el proyecto grande.
|
||||
if (nuevoProyectoGde) {
|
||||
llenaProyectoGde(nuevoProyectoGde.id)
|
||||
} else {
|
||||
limpiarProyectoGde()
|
||||
proyectoGdeActual = '' // Asegurarse de que el ID del proyecto grande se limpie.
|
||||
}
|
||||
|
||||
// 4. Llenar los proyectos chicos con los restantes 'En proceso'.
|
||||
const idProyectoGde = nuevoProyectoGde ? nuevoProyectoGde.id : -1
|
||||
const proyectosEnTableroChico = proyectos.filter(
|
||||
(p) => p.estatus === 'En proceso' && p.id !== idProyectoGde
|
||||
)
|
||||
|
||||
proyectosEnTableroChico.forEach((proyecto) => {
|
||||
llenaProyectoChico(proyecto.id - 1)
|
||||
})
|
||||
|
||||
// 5. Asegurarse de que la cola de 'siguientesProyectos' esté actualizada.
|
||||
obtenerProyectosPendientes()
|
||||
}
|
||||
|
||||
/**
|
||||
* Limpia la vista del proyecto grande.
|
||||
*/
|
||||
function limpiarProyectoGde() {
|
||||
$('#TablaProyectoGde').attr('num', '').css('background-color', 'white')
|
||||
$('#nombreProyectoGde').html('')
|
||||
$('#descripcionProyectoGde').html('')
|
||||
$('#TablaProyectoGde #puntosGanados').html('')
|
||||
$('#puntosPerdidos').html('')
|
||||
$('#imagenProyectoGde').attr('src', '')
|
||||
|
||||
for (let i = 1; i <= 3; i++) {
|
||||
$('#activoReqProyectoNom' + i)
|
||||
.attr('class', 'actNinguno')
|
||||
.text('')
|
||||
$('#activoReqProyectoCantX' + i).text('')
|
||||
$('#activoReqProyectoCant' + i)
|
||||
.attr('class', 'actNinguno')
|
||||
.text('')
|
||||
}
|
||||
$('#mantoGde').text('MANTENIMIENTO')
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the current project is completed and updates its status and the UI accordingly.
|
||||
*/
|
||||
@@ -1932,15 +2008,75 @@ $('#accionHabilidadEspecial').click(function () {
|
||||
'Descartar un proyecto (se va al limbo con todo y activos)'
|
||||
) {
|
||||
// Actualizamos lastUsed
|
||||
setArrayValue(elArreglo, 'accionEspecialLastUsed', quincenaActual)
|
||||
const proyectosEnProceso = proyectos.filter(
|
||||
(p) => p.estatus === 'En proceso'
|
||||
)
|
||||
|
||||
// Aquí el código de Operaciones: "Descartar un proyecto (se va al limbo con todo y activos)"
|
||||
window.alert('¡Acción especial activada (Operaciones)!')
|
||||
|
||||
// Se guarda el avance
|
||||
if (typeof guardaSesion === 'function') {
|
||||
guardaSesion()
|
||||
if (proyectosEnProceso.length === 0) {
|
||||
alert('No hay proyectos en proceso para descartar.')
|
||||
return // No se usa la habilidad si no hay nada que descartar
|
||||
}
|
||||
|
||||
// Crear y mostrar el diálogo de selección
|
||||
let dialogContent = $(
|
||||
'<div><p>Selecciona el proyecto a descartar:</p></div>'
|
||||
)
|
||||
let projectList = $('<form>')
|
||||
proyectosEnProceso.forEach((p) => {
|
||||
projectList.append(
|
||||
`<div style="display: flex; align-items: flex-start; margin: 8px 0; text-align: left;">
|
||||
<input type="radio" id="proj-discard-${p.id}" name="proyectoADescartar" value="${p.id}" style="margin-top: 2px; flex-shrink: 0;">
|
||||
<label for="proj-discard-${p.id}" style="margin-left: 8px; cursor: pointer;">
|
||||
${p.nombreProyecto} <span style="color: #555; font-size: 0.9em;">(${p.departamento})</span>
|
||||
</label>
|
||||
</div>`
|
||||
)
|
||||
})
|
||||
dialogContent.append(projectList)
|
||||
|
||||
dialogContent.dialog({
|
||||
modal: true,
|
||||
title: 'Descartar Proyecto',
|
||||
width: 450,
|
||||
buttons: {
|
||||
Descartar: function () {
|
||||
const selectedProjectId = $(
|
||||
'input[name="proyectoADescartar"]:checked'
|
||||
).val()
|
||||
|
||||
if (!selectedProjectId) {
|
||||
alert('Por favor, selecciona un proyecto.')
|
||||
return
|
||||
}
|
||||
|
||||
const proyectoADescartar = proyectos.find(
|
||||
(p) => p.id == selectedProjectId
|
||||
)
|
||||
if (proyectoADescartar) {
|
||||
proyectoADescartar.estatus = 'descartado'
|
||||
setArrayValue(
|
||||
elArreglo,
|
||||
'accionEspecialLastUsed',
|
||||
quincenaActual
|
||||
)
|
||||
redibujarTablero()
|
||||
var audio = new Audio('./Microwave_bell.wav')
|
||||
audio.play()
|
||||
alert('¡Proyecto descartado con éxito!')
|
||||
if (typeof guardaSesion === 'function') {
|
||||
guardaSesion()
|
||||
}
|
||||
}
|
||||
$(this).dialog('close')
|
||||
},
|
||||
Cancelar: function () {
|
||||
$(this).dialog('close')
|
||||
},
|
||||
},
|
||||
close: function () {
|
||||
$(this).dialog('destroy').remove()
|
||||
},
|
||||
})
|
||||
} else {
|
||||
// Acción desconocida (o Finanzas si llegara hasta aquí por error, aunque se bloquea antes)
|
||||
window.alert(
|
||||
|
||||
Reference in New Issue
Block a user