/** * Confirmation Component * Shows capture summary after submission */ const ConfirmationComponent = { render() { const capture = app.state.lastCapture; if (!capture) { return `

No hay datos de captura.

`; } return `

¡Captura guardada exitosamente!

${capture.synced ? '✅ Sincronizada con el servidor' : '⏳ Se sincronizará cuando haya conexión'}

Resumen de Captura

👤 Contacto y Puerto
Puerto: ${capture.port}
${capture.phone ? `Tel: ${capture.phone}` : ''}
📅 Fecha y Hora
${this.formatDate(capture.timestamp)}
📍 Ubicación
${capture.placeName ? `${capture.placeName}
` : ''} Lat: ${capture.latitude.toFixed(6)}
Lon: ${capture.longitude.toFixed(6)}
🐟 Especies
${capture.items.map(item => ` ${item.commonName || item.customName || this.getSpeciesName(item.speciesId)}: ${item.quantity} ${item.unit === 'lbs' ? 'libras' : 'unidades'} `).join('
')}
📉 Otros Detalles
Método: ${capture.fishingMethod}
Profundidad: ${capture.depth} brazadas
`; }, init() { // Component initialized }, formatDate(dateString) { const date = new Date(dateString); return date.toLocaleString('es-DO', { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit' }); }, getSpeciesName(speciesId) { if (speciesId === 'otro') return 'Otra Especie'; const species = SpeciesSelectorComponent.allSpecies.find(s => s.id === speciesId); return species ? species.commonName : speciesId; } };