Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion harvester-app/src/backend/casosUso/excel/borrarExcel.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
// RF45 Usuario elimina el Excel cargado - https://codeandco-wiki.netlify.app/docs/proyectos/tractores/documentacion/requisitos/RF45

/**
* Elimina el archivo Excel actualmente cargado de la aplicación.
* Limpia los datos relacionados del localStorage y actualiza la interfaz de usuario.
* @returns {void}
*/
function borrarExcel() {
const nombreArchivo = localStorage.getItem('nombreArchivoExcel');
if (nombreArchivo) {
Expand All @@ -16,7 +21,7 @@ function borrarExcel() {
}
} else {
console.log('No hay archivo para eliminar.');
};
}
}

module.exports = {
Expand Down
88 changes: 88 additions & 0 deletions harvester-app/src/backend/casosUso/excel/cargarExcel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
// RF44 Usuario carga Excel a la plataforma - https://codeandco-wiki.netlify.app/docs/proyectos/tractores/documentacion/requisitos/RF44
// RF46 Usuario sustituye el Excel cargado - https://codeandco-wiki.netlify.app/docs/proyectos/tractores/documentacion/requisitos/RF46

const XLSX = require('xlsx');

/**
* Lee y procesa un archivo Excel para almacenar sus datos en el localStorage.
* @param {File} archivo - Objeto File seleccionado por el usuario.
* @returns {void}
*/
function leerExcel(archivo) {
// Mostramos indicador de carga en la interfaz
const elementoNombreArchivo = document.querySelector('.texto-archivo');
if (elementoNombreArchivo) {
elementoNombreArchivo.textContent = 'Leyendo archivo...';
}

// Guardar el nombre del archivo para usarlo en el módulo de análisis
localStorage.setItem('nombreArchivoExcel', archivo.name);

const lector = new FileReader();

/**
* Manejador del evento onload del FileReader.
* Se ejecuta cuando la lectura del archivo se completa.
* @param {Event} evento - Evento de finalización de lectura.
*/
lector.onload = function(evento) {
try {
const datos = new Uint8Array(evento.target.result);
const libro = XLSX.read(datos, { type: 'array' });

// Procesamos todas las hojas del Excel
const todasLasHojas = {};

// Recorremos cada nombre de hoja en el libro
libro.SheetNames.forEach(nombreHoja => {
// Obtenemos la hoja por su nombre
const hoja = libro.Sheets[nombreHoja];
// Convertimos la hoja a JSON
const datosHojaJSON = XLSX.utils.sheet_to_json(hoja, { header: 1 });
// Almacenamos los datos usando el nombre de la hoja como clave
todasLasHojas[nombreHoja] = datosHojaJSON;
});

// Incluimos metadatos útiles
const datosCompletos = {
nombreArchivo: archivo.name,
hojas: todasLasHojas,
};

// Guardar los datos en localStorage con la nueva estructura
localStorage.setItem('datosExcel', JSON.stringify(datosCompletos));

if (elementoNombreArchivo) {
elementoNombreArchivo.textContent = archivo.name;
}

} catch (error) {
console.error("Error al leer el archivo Excel:", error);
alert("Error al procesar el archivo Excel. Verifica que sea un archivo válido.");

if (elementoNombreArchivo) {
elementoNombreArchivo.textContent = 'Error al leer el archivo';
}
}
};

/**
* Manejador del evento onerror del FileReader.
* Se ejecuta cuando ocurre un error durante la lectura.
*/
lector.onerror = function() {
console.error("Error al leer el archivo");
alert("Error al leer el archivo. Inténtalo de nuevo.");

if (elementoNombreArchivo) {
elementoNombreArchivo.textContent = 'Error al leer el archivo';
}
};

// Iniciamos la lectura del archivo como ArrayBuffer
lector.readAsArrayBuffer(archivo);
}

module.exports = {
leerExcel,
}
2 changes: 1 addition & 1 deletion harvester-app/src/framework/utils/css/moduloInicio.css
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@
align-items: center;
justify-content: center;
}
.cargar-input{
.cargar-excel{
display: none;
}
.avanzar-analisis:disabled {
Expand Down
56 changes: 7 additions & 49 deletions harvester-app/src/framework/utils/js/moduloAnalisis.js
Original file line number Diff line number Diff line change
@@ -1,70 +1,28 @@
// Función para inicializar el módulo de análisis
function inicializarModuloAnalisis() {

// Actualizar el sidebar visualmente sin modificar localStorage
const todosBotones = document.querySelectorAll('.boton-sidebar');
todosBotones.forEach(boton => boton.classList.remove('activo'));

const botonesAnalisis = document.querySelectorAll('.boton-sidebar[data-seccion="analisis"]');
botonesAnalisis.forEach(boton => boton.classList.add('activo'));

// Actualizar el topbar si está disponible
if (window.actualizarTopbar) {
window.actualizarTopbar('analisis');
}

// Cargar los datos del Excel desde localStorage
const datosExcel = cargarDatosExcel();
console.log("Datos de Excel:", datosExcel);

// Si tienes datos, puedes inicializar tu visualización aquí
if (!datosExcel) {
console.warn("No hay datos disponibles para análisis");
}
}

// Carga los datos del Excel desde localStorage
function cargarDatosExcel() {
try {
// Verificar si hay datos disponibles
const hayDatos = localStorage.getItem('datosExcelDisponibles');

if (!hayDatos || hayDatos !== 'true') {
console.warn("No hay datos de Excel disponibles");
return null;
}

console.log("Verificando si hay datos de Excel disponibles en localStorage...");

// Recuperar los datos de Excel
const datosExcelJSON = localStorage.getItem('datosExcel');
console.log("Datos de Excel recuperados:", datosExcelJSON);


if (!datosExcelJSON) {
console.warn("No se encontraron datos de Excel en localStorage");
console.log("No hay datos de Excel disponibles en localStorage");
alert("No hay datos de Excel disponibles");
return null;
}

// Parsear los datos JSON
const datosExcel = JSON.parse(datosExcelJSON);

// Guardar en variable global para fácil acceso desde otras funciones
window.datosExcelGlobal = datosExcel;

return datosExcel;
} catch (error) {
console.error("Error al cargar datos de Excel:", error);
return null;
}
}



// Ejecutar inicialización si el DOM ya está cargado
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', inicializarModuloAnalisis);
} else {
// DOM ya está cargado
setTimeout(inicializarModuloAnalisis, 100);
}

// Exportar funciones para uso global
window.inicializarModuloAnalisis = inicializarModuloAnalisis;
window.cargarDatosExcel = cargarDatosExcel;
window.cargarDatosExcel = cargarDatosExcel;
Loading