Biodiversity Record Sheet Generator

Biodiversity Field Data Sheet

Project: | Location:

Observer: | Total Sites:

Field Observation Log

Total Rows: 0 | Data Point Columns: 0

Date Site ID

Fieldwork Effort (Rows)

0

Total Log Slots

Habitat Types

Forest, Wetland

Defined in Builder

Schedule Parameters

Site Location Management

Data Collection Columns (Static)

The following columns are included in the final datasheet:

  • Time, Species ID / Count, Method / Protocol, Temp (°C) / Wind, Notes / Behavior.

Add at least one site ID.

'; return; } brsgSites.forEach(site => { const div = document.createElement('div'); div.style.cssText = 'display:flex; justify-content:space-between; align-items:center; padding:5px 0; border-bottom:1px dashed #b7e4c7; font-size: 14px;'; div.innerHTML = ` • ${site} `; list.appendChild(div); }); } // --- Schedule Generation --- window.brsgGenerateTable = function() { const durationDays = parseInt(document.getElementById('brsg-in-duration').value) || 0; const tbody = document.getElementById('brsg-table-body'); const thead = document.querySelector('#brsg-export-area thead tr'); tbody.innerHTML = ''; // 1. Update Header Columns const headerHtml = ` Date Site ID Time Species ID / Count Method / Protocol Temp/Wind Notes / Behavior `; thead.innerHTML = headerHtml; // 2. Generate Rows if (durationDays <= 0 || brsgSites.length === 0) { const slots = 0; document.getElementById('brsg-out-total-rows').innerText = slots; document.getElementById('brsg-out-data-columns').innerText = 5; document.getElementById('brsg-out-effort-rows').innerText = 0; tbody.innerHTML = 'Missing Date/Duration or Site Locations.'; return; } let totalRows = 0; const currentDate = new Date(); // For demonstration, we generate 2 rows per site per day. for (let d = 0; d < durationDays; d++) { const dateStr = new Date(currentDate.getTime() + (d * 24 * 60 * 60 * 1000)).toLocaleDateString('en-US'); brsgSites.forEach(site => { // Generate two rows per site for Morning/Afternoon data collection for (let i = 0; i < 2; i++) { const timeStr = i === 0 ? "Morning" : "Afternoon"; const tr = document.createElement('tr'); tr.innerHTML = ` ${dateStr} ${site} ${timeStr} `; tbody.appendChild(tr); totalRows++; } }); } // 3. Update Metrics document.getElementById('brsg-out-total-rows').innerText = totalRows; document.getElementById('brsg-out-data-columns').innerText = 5; document.getElementById('brsg-out-total-sites').innerText = brsgSites.length; document.getElementById('brsg-out-effort-rows').innerText = totalRows; // Total data slots to fill }; window.brsgResetData = function(silent = false) { if(silent || confirm("Clear all project data and reset to default?")) { brsgSites = ["Plot A", "Plot B", "Transect 1"]; document.getElementById('brsg-in-duration').value = 3; document.getElementById('brsg-in-habitat').value = "Forest, Wetland"; document.getElementById('brsg-cfg-project').value = "Local Biodiversity Assessment"; document.getElementById('brsg-cfg-observer').value = "Dr. Jane Doe"; document.getElementById('brsg-cfg-location').value = "Coastal Ecosystem"; brsgRenderSiteList(); brsgUpdateMeta(); brsgGenerateTable(); if (!silent) alert("Settings reset."); } }; // --- PDF Export --- window.brsgDownloadPDF = function() { if (document.getElementById('brsg-table-body').children.length === 0) { alert("Please generate the datasheet rows first."); return; } const element = document.getElementById('brsg-export-area'); // Show PDF header const pdfHeader = element.querySelector('.brsg-pdf-header'); pdfHeader.style.display = 'block'; const opt = { margin: 0.25, filename: 'Biodiversity_Field_Datasheet.pdf', image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2 }, jsPDF: { unit: 'in', format: 'letter', orientation: 'landscape' } }; html2pdf().set(opt).from(element).save().then(() => { pdfHeader.style.display = 'none'; // Restore visibility }); }; })();
Scroll to Top