/**
* Datasheet Generator
* Generates formatted test data sheets from database records
*/
/**
* Generate a datasheet from a test record
* @param {Object} record - Database record
* @param {string} format - Output format ('html' or 'txt')
* @returns {string} Formatted datasheet
*/
function generateDatasheet(record, format = 'html') {
if (format === 'html') {
return generateHtmlDatasheet(record);
} else {
return generateTextDatasheet(record);
}
}
/**
* Generate HTML datasheet
*/
function generateHtmlDatasheet(record) {
const testDate = formatDate(record.test_date);
return `
Test Data Sheet - ${record.serial_number}
DATAFORTH CORPORATION
3331 E. Hemisphere Loop
Tucson, AZ 85706 USA
${escapeHtml(record.raw_data || 'No data available')}
`;
}
/**
* Generate plain text datasheet
*/
function generateTextDatasheet(record) {
const testDate = formatDate(record.test_date);
const line = '='.repeat(75);
const tilde = '~'.repeat(75);
return `DATAFORTH CORPORATION Phone: (520) 741-1404
3331 E. Hemisphere Loop Fax: (520) 741-0762
Tucson, AZ 85706 USA Email: info@dataforth.com
TEST DATA SHEET
${tilde}
Date: ${testDate}
Model: ${record.model_number}
SN: ${record.serial_number}
Log Type: ${record.log_type}
Station: ${record.test_station || 'N/A'}
OVERALL RESULT: ${record.overall_result || 'UNKNOWN'}
${line}
TEST DATA
${line}
${record.raw_data || 'No data available'}
${line}
It is hereby certified that the above product is in conformance with
all requirements to the extent specified. This product is not
authorized or warranted for use in life support devices and/or systems.
Source: ${record.source_file}
Record ID: ${record.id}
`;
}
/**
* Format date for display
*/
function formatDate(dateStr) {
if (!dateStr) return 'Unknown';
// Convert YYYY-MM-DD to MM-DD-YYYY
const [year, month, day] = dateStr.split('-');
return `${month}-${day}-${year}`;
}
/**
* Escape HTML special characters
*/
function escapeHtml(str) {
if (!str) return '';
return str
.replace(/&/g, '&')
.replace(//g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
module.exports = { generateDatasheet };