    jQuery(document).ready(function($) {
        // Manejar clic en el checkbox "Seleccionar todos"
        $("#cb input[type=\'checkbox\']").on("click", function() {
            var isChecked = $(this).is(":checked");
            $("input[name=\'generation[]\']").prop("checked", isChecked);
        });
    
        // Función para cancelar la generación
		window.cancelGeneration = function(id) {
			if (confirm("Are you sure you want to cancel this entire generation?")) {
				jQuery.post(ajaxurl, { action: "cancel_bulk_generation_force", generation_id: id }, function(response) {
					if (response.success) {
						alert("Generation cancelled successfully.");
						location.reload();
					} else {
						alert("Failed to cancel generation: " + response.data.message);
					}
				});
			}
		};

		// ✅ Pausar el lote
		window.pauseGeneration = function(id) {
			if (confirm("Are you sure you want to pause this generation?")) {
				jQuery.post(ajaxurl, { action: "pause_bulk_generation", generation_id: id }, function(response) {
					if (response.success) {
						alert("Generation paused successfully.");
						location.reload();
					} else {
						alert("Failed to pause generation: " + response.data.message);
					}
				});
			}
		};

		window.viewGenerationDetails = function(generationId) {
			var detailsRow = $("#details-" + generationId);

			// Mostrar mensaje de carga antes de la llamada AJAX si los detalles están ocultos
			if (!detailsRow.is(":visible")) {
				detailsRow.find("td").html("<div>Loading details...</div>");
				detailsRow.show(); // Mostrar la fila con el mensaje de carga

				// Hacer la llamada AJAX para cargar los detalles
				$.ajax({
					url: ajaxurl,
					type: "POST",
					data: {
						action: "get_generation_details",
						generation_id: generationId
					},
					success: function(response) {
						if (response.success) {
							detailsRow.find("td").html(response.data.html); // Mostrar los detalles en la fila correspondiente
						} else {
							detailsRow.find("td").html("Error: " + response.data.message);
						}
					},
					error: function() {
						detailsRow.find("td").html("Failed to load details.");
					}
				});
			} else {
				detailsRow.hide(); // Ocultar si ya está visible
			}
		};
    });
    
    jQuery(document).ready(function($) {
        // Manejo del formulario de acción en masa
        $("#bulk-action-form").submit(function(e) {
            e.preventDefault();
            var checked = $(this).find("input[name=\'generation[]\']:checked").map(function() {
                return this.value;
            }).get();
            if (checked.length === 0) {
                alert("No generations selected.");
                return;
            }
            if (confirm("Are you sure you want to delete selected generations? This action cannot be undone.")) {
                $.post(ajaxurl, { action: "bulk_delete_generations", generation_ids: checked }, function(response) {
                    if (response.success) {
                        alert("Selected generations deleted successfully.");
                        location.reload();
                    } else {
                        alert("Error: " + response.data.message);
                    }
                });
            }
        });
    
        // Agregar manejadores de clics a los enlaces de ID de generación
        // Función para abrir detalles de generación
    $(document).on("click", ".generation-id-link", function(e) {
        e.preventDefault(); // Prevenir el comportamiento por defecto del enlace

        var generationId = $(this).data("generation-id"); // Obtener el ID de la generación
        var detailsRow = $("#details-" + generationId); // Seleccionar la fila de detalles correspondiente

        // Mostrar mensaje de carga inmediatamente antes de la llamada AJAX si los detalles están ocultos
        if (!detailsRow.is(":visible")) {
            detailsRow.find("td").html("<div>Loading details...</div>");
            detailsRow.show(); // Mostrar la fila con el mensaje de carga

            // Hacer la llamada AJAX para cargar los detalles
            $.ajax({
                url: ajaxurl,
                type: "POST",
                data: {
                    action: "get_generation_details",
                    generation_id: generationId
                },
                success: function(response) {
                    if (response.success) {
                        detailsRow.find("td").html(response.data.html); // Actualizar la fila de detalles con la respuesta HTML
                    } else {
                        detailsRow.find("td").html("Error: " + response.data.message);
                    }
                },
                error: function() {
                    detailsRow.find("td").html("Failed to load details.");
                }
            });
        } else {
            // Si ya está visible, simplemente la ocultamos
            detailsRow.hide();
        }
    });
        
        // Función para manejar la cancelación de tareas
        window.cancelTask = function(taskId) {
            if (confirm("Are you sure you want to cancel this task?")) {
                $.ajax({
                    url: ajaxurl,
                    type: "POST",
                    data: {
                        action: "cancel_task",
                        task_id: taskId
                    },
                    success: function(response) {
                        if (response.success) {
                            alert("Task cancelled successfully.");
                            // Encuentra la celda de estado y actualiza su contenido
                            $("#task-row-" + taskId).find(".status-cell").text("cancelled");
                            // Eliminar el botón de cancelar para evitar múltiples clics
                            $("#task-row-" + taskId).find("button").remove();
                        } else {
                            alert(response.data.message);
                        }
                    },
                    error: function() {
                        alert("Failed to cancel task.");
                    }
                });
            }
        };
    });

function pauseGeneration(id) {
    if (confirm("Are you sure you want to pause this generation?")) {
        jQuery.post(ajaxurl, { action: "pause_bulk_generation", generation_id: id }, function(response) {
            if (response.success) {
                alert("Generation paused successfully.");
                location.reload();
            } else {
                alert("Failed to pause generation: " + response.data.message);
            }
        });
    }
}

function resumeGeneration(id) {
    if (confirm("Are you sure you want to resume this generation?")) {
        jQuery.post(ajaxurl, { action: "resume_bulk_generation", generation_id: id }, function(response) {
            if (response.success) {
                alert("Generation resumed successfully.");
                location.reload();
            } else {
                alert("Failed to resume generation: " + response.data.message);
            }
        });
    }
}

function retryTask(taskId) {
    if (confirm('Retry this failed task?')) {
        jQuery.post(ajaxurl, {
            action: 'retry_failed_task',
            task_id: taskId
        }, function(response) {
            alert(response.data.message);
            if (response.success) {
                location.reload();
            }
        });
    }
}

function retryGeneration(generationId) {
    if (confirm('Retry all failed tasks in this batch?')) {
        jQuery.post(ajaxurl, {
            action: 'retry_failed_generation',
            generation_id: generationId
        }, function(response) {
            alert(response.data.message);
            if (response.success) {
                location.reload();
            }
        });
    }
}
