Update form Summary
This commit is contained in:
parent
f4c07fa318
commit
91b2bdba7b
|
|
@ -1918,11 +1918,6 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
snapConfig: LineConfig
|
snapConfig: LineConfig
|
||||||
snapPhysical: PhysicalPortTest
|
snapPhysical: PhysicalPortTest
|
||||||
reason: string
|
reason: string
|
||||||
outputTestLog: string
|
|
||||||
userTest: {
|
|
||||||
dpelp: { name: string; time: number }
|
|
||||||
physical: { name: string; time: number }
|
|
||||||
}
|
|
||||||
}) => {
|
}) => {
|
||||||
if (this.debounceSendSummaryReport) clearTimeout(this.debounceSendSummaryReport)
|
if (this.debounceSendSummaryReport) clearTimeout(this.debounceSendSummaryReport)
|
||||||
const timeZone = process.env.TIME_ZONE || 'Australia/Sydney'
|
const timeZone = process.env.TIME_ZONE || 'Australia/Sydney'
|
||||||
|
|
@ -1960,7 +1955,7 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
|
|
||||||
const aiIssue = issues.length > 0 ? issues.join('\n') : ''
|
const aiIssue = issues.length > 0 ? issues.join('\n') : ''
|
||||||
let summaryStatus = 'PASS'
|
let summaryStatus = 'PASS'
|
||||||
const match = aiIssue.match(/^RESULT:\s*(PASS WITH WARNING|PASS|FAIL|INSUFFICIENT DATA)/im)
|
const match = aiIssue.match(/RESULT:\s*(PASS WITH WARNING|PASS|FAIL|INSUFFICIENT DATA)/im)
|
||||||
if (match) {
|
if (match) {
|
||||||
const status = match[1]
|
const status = match[1]
|
||||||
summaryStatus = status
|
summaryStatus = status
|
||||||
|
|
@ -2016,6 +2011,7 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
const productPN = escapeHtml(String(config?.inventory?.pid || ''))
|
const productPN = escapeHtml(String(config?.inventory?.pid || ''))
|
||||||
const productSN = escapeHtml(String(config?.inventory?.sn || ''))
|
const productSN = escapeHtml(String(config?.inventory?.sn || ''))
|
||||||
const productVid = escapeHtml(String(config?.inventory?.vid || ''))
|
const productVid = escapeHtml(String(config?.inventory?.vid || ''))
|
||||||
|
const iosName = escapeHtml(String(dataShowVersion?.SOFTWARE_IMAGE || ''))
|
||||||
const iosVersion = escapeHtml(String(dataShowVersion?.VERSION || ''))
|
const iosVersion = escapeHtml(String(dataShowVersion?.VERSION || ''))
|
||||||
const macAddress = escapeHtml(String(dataShowVersion?.MAC_ADDRESS || ''))
|
const macAddress = escapeHtml(String(dataShowVersion?.MAC_ADDRESS || ''))
|
||||||
const memDisplay = escapeHtml(memText !== '—' ? memText : '-')
|
const memDisplay = escapeHtml(memText !== '—' ? memText : '-')
|
||||||
|
|
@ -2153,7 +2149,7 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
<tr><td style="padding-bottom:10px;">
|
<tr><td style="padding-bottom:10px;">
|
||||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||||
<tr>
|
<tr>
|
||||||
<td width="50%" valign="top" style="padding-right:5px;">
|
<td width="40%" valign="top" style="padding-right:5px;">
|
||||||
<table cellpadding="0" cellspacing="0" border="0" height="170px" width="100%" style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-collapse:separate; font-size:14px;">
|
<table cellpadding="0" cellspacing="0" border="0" height="170px" width="100%" style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-collapse:separate; font-size:14px;">
|
||||||
<tr><td style="padding:16px 20px;">
|
<tr><td style="padding:16px 20px;">
|
||||||
<div style="font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:#9ca3af;padding-bottom:7px;border-bottom:1px solid #f0f1f3;margin-bottom:8px;">Product Info</div>
|
<div style="font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:#9ca3af;padding-bottom:7px;border-bottom:1px solid #f0f1f3;margin-bottom:8px;">Product Info</div>
|
||||||
|
|
@ -2166,19 +2162,19 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
<td width="50%" valign="top" style="padding-left:5px;">
|
<td width="60%" valign="top" style="padding-left:5px;">
|
||||||
<table cellpadding="0" cellspacing="0" border="0" height="170px" width="100%" style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-collapse:separate;">
|
<table cellpadding="0" cellspacing="0" border="0" height="170px" width="100%" style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-collapse:separate;">
|
||||||
<tr><td style="padding:16px 20px;">
|
<tr><td style="padding:16px 20px;">
|
||||||
<div style="font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:#9ca3af;padding-bottom:7px;border-bottom:1px solid #f0f1f3;margin-bottom:8px;">Technical Specs</div>
|
<div style="font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:#9ca3af;padding-bottom:7px;border-bottom:1px solid #f0f1f3;margin-bottom:8px;">Technical Specs</div>
|
||||||
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="font-size:11px;">
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="font-size:11px;">
|
||||||
<tr>
|
<tr>
|
||||||
<th align="left" style="font-size:9px;text-transform:uppercase;color:#9ca3af;padding:0 0 6px 0;border-bottom:1px solid #f0f1f3;">Specification</th>
|
<th align="left" style="font-size:9px;text-transform:uppercase;color:#9ca3af;padding:0 0 6px 0;border-bottom:1px solid #f0f1f3;">Specification</th>
|
||||||
<th align="left" style="font-size:9px;text-transform:uppercase;color:#9ca3af;padding:0 0 6px 0;border-bottom:1px solid #f0f1f3;">Actual</th>
|
<th align="left" style="font-size:9px;text-transform:uppercase;color:#9ca3af;padding:0 0 6px 0;border-bottom:1px solid #f0f1f3;text-align:center;">Actual</th>
|
||||||
<th align="left" style="font-size:9px;text-transform:uppercase;color:#9ca3af;padding:0 0 6px 0;border-bottom:1px solid #f0f1f3;">Default</th>
|
<th align="left" style="font-size:9px;text-transform:uppercase;color:#9ca3af;padding:0 0 6px 0;border-bottom:1px solid #f0f1f3;">Default</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="padding:6px 0;border-bottom:1px dashed #f0f1f3;font-weight:600;color:#5f6978;">IOS-XE Version</td>
|
<td style="padding:6px 0;border-bottom:1px dashed #f0f1f3;font-weight:600;color:#5f6978;">IOS-XE Version</td>
|
||||||
<td style="padding:6px 0;border-bottom:1px dashed #f0f1f3;font-weight:700;font-family:Consolas,monospace;">${iosVersion}</td>
|
<td style="padding:6px 0;border-bottom:1px dashed #f0f1f3;font-weight:700;font-family:Consolas,monospace;">${iosName + ' ' + iosVersion}</td>
|
||||||
<td style="padding:6px 0;border-bottom:1px dashed #f0f1f3;font-weight:500;color:#9ca3af;font-family:Consolas,monospace;font-style:italic;">${'N/A'}</td>
|
<td style="padding:6px 0;border-bottom:1px dashed #f0f1f3;font-weight:500;color:#9ca3af;font-family:Consolas,monospace;font-style:italic;">${'N/A'}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -2210,24 +2206,28 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
<!-- Receiving & Inspection Notes -->
|
<!-- Receiving & Inspection Notes -->
|
||||||
<tr><td style="display: none; padding-bottom:10px;">
|
<tr><td style="padding-bottom:10px;">
|
||||||
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-collapse:separate;">
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-collapse:separate;">
|
||||||
<tr><td style="padding:16px 20px;">
|
<tr><td style="padding:16px 20px;">
|
||||||
<div style="font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:#9ca3af;padding-bottom:7px;border-bottom:1px solid #f0f1f3;margin-bottom:10px;">Receiving & Inspection Notes</div>
|
<div style="font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:#9ca3af;padding-bottom:7px;border-bottom:1px solid #f0f1f3;margin-bottom:10px;">Receiving & Inspection Notes</div>
|
||||||
<div style="padding:10px 14px;background:#fffbeb;border-left:3px solid #f59e0b;border-radius:0 6px 6px 0;font-size:12px;color:#92400e;margin-bottom:8px;">
|
<div style="padding:10px 14px;background:#fffbeb;border-left:3px solid #f59e0b;border-radius:0 6px 6px 0;font-size:12px;color:#92400e;margin-bottom:8px;">
|
||||||
<div style="font-weight:700;margin-bottom:4px;font-size:11px;">⚠ Warning from Warehouse</div>
|
<div style="font-weight:700;margin-bottom:4px;font-size:11px;">⚠ Warning from Warehouse</div>
|
||||||
<p style="margin:0;">Box arrived with slight indentation on the left corner. Internal foam was still intact. Serial number on box was partially obscured by shipping label but verified upon unboxing.</p>
|
<p style="display:none; margin:0;">Box arrived with slight indentation on the left corner. Internal foam was still intact. Serial number on box was partially obscured by shipping label but verified upon unboxing.</p>
|
||||||
</div>
|
<p style="padding:6px 0;border-bottom:1px dashed #f0f1f3;font-weight:600;color:#5f6978; font-size:11px; font-style:italic;">Not Available</p>
|
||||||
|
</div>
|
||||||
<div style="padding:10px 14px;background:#f9fafb;border-left:3px solid #e5e7eb;border-radius:0 6px 6px 0;font-size:12px;color:#5f6978;">
|
<div style="padding:10px 14px;background:#f9fafb;border-left:3px solid #e5e7eb;border-radius:0 6px 6px 0;font-size:12px;color:#5f6978;">
|
||||||
<div style="font-weight:700;margin-bottom:4px;font-size:11px;">Accessory Checklist</div>
|
<div style="font-weight:700;margin-bottom:4px;font-size:11px;">Accessory Checklist</div>
|
||||||
<table cellpadding="0" cellspacing="0" border="0" style="margin-top:6px;">
|
<table cellpadding="0" cellspacing="0" border="0" style="margin-top:6px;">
|
||||||
<tr>
|
<tr style="display:none;">
|
||||||
<td style="padding:0 4px 0 0;"><span style="display:inline-block;padding:3px 10px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:4px;font-size:11px;font-weight:600;color:#166534;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#10b981;margin-right:5px;vertical-align:middle;"></span>Rackmount</span></td>
|
<td style="padding:0 4px 0 0;"><span style="display:inline-block;padding:3px 10px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:4px;font-size:11px;font-weight:600;color:#166534;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#10b981;margin-right:5px;vertical-align:middle;"></span>Rackmount</span></td>
|
||||||
<td style="padding:0 4px;"><span style="display:inline-block;padding:3px 10px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:4px;font-size:11px;font-weight:600;color:#166534;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#10b981;margin-right:5px;vertical-align:middle;"></span>PSU (Internal)</span></td>
|
<td style="padding:0 4px;"><span style="display:inline-block;padding:3px 10px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:4px;font-size:11px;font-weight:600;color:#166534;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#10b981;margin-right:5px;vertical-align:middle;"></span>PSU (Internal)</span></td>
|
||||||
<td style="padding:0 4px;"><span style="display:inline-block;padding:3px 10px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:4px;font-size:11px;font-weight:600;color:#166534;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#10b981;margin-right:5px;vertical-align:middle;"></span>Console Cable</span></td>
|
<td style="padding:0 4px;"><span style="display:inline-block;padding:3px 10px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:4px;font-size:11px;font-weight:600;color:#166534;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#10b981;margin-right:5px;vertical-align:middle;"></span>Console Cable</span></td>
|
||||||
<td style="padding:0 4px;"><span style="display:inline-block;padding:3px 10px;background:#fef2f2;border:1px solid #fecaca;border-radius:4px;font-size:11px;font-weight:600;color:#991b1b;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#ef4444;margin-right:5px;vertical-align:middle;"></span>Documents</span></td>
|
<td style="padding:0 4px;"><span style="display:inline-block;padding:3px 10px;background:#fef2f2;border:1px solid #fecaca;border-radius:4px;font-size:11px;font-weight:600;color:#991b1b;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#ef4444;margin-right:5px;vertical-align:middle;"></span>Documents</span></td>
|
||||||
<td style="padding:0 0 0 4px;"><span style="display:inline-block;padding:3px 10px;background:#fef2f2;border:1px solid #fecaca;border-radius:4px;font-size:11px;font-weight:600;color:#991b1b;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#ef4444;margin-right:5px;vertical-align:middle;"></span>Original Box</span></td>
|
<td style="padding:0 0 0 4px;"><span style="display:inline-block;padding:3px 10px;background:#fef2f2;border:1px solid #fecaca;border-radius:4px;font-size:11px;font-weight:600;color:#991b1b;"><span style="display:inline-block;width:6px;height:6px;border-radius:50%;background:#ef4444;margin-right:5px;vertical-align:middle;"></span>Original Box</span></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding:6px 0;border-bottom:1px dashed #f0f1f3;font-weight:600;color:#5f6978; font-size:11px; font-style:italic;">Not Available</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
@ -2258,14 +2258,30 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
<div style="font-size:10px;font-weight:700;text-transform:uppercase;color:#5f6978;margin-bottom:2px;letter-spacing:0.5px;">
|
<div style="font-size:10px;font-weight:700;text-transform:uppercase;color:#5f6978;margin-bottom:2px;letter-spacing:0.5px;">
|
||||||
Received
|
Received
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size:11px;font-weight:600;color:#1a1d23;">
|
<div style="font-size:11px;font-weight:600;color:#1a1d23;font-style:italic;">
|
||||||
Unknown
|
Not Available
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top:4px;font-size:10px;color:#9ca3af;">
|
<div style="margin-top:4px;font-size:10px;color:#9ca3af;">
|
||||||
${momentTZ().tz(timeZone).format('DD MMM')}
|
${momentTZ().tz(timeZone).format('DD MMM')}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<!-- Step 2 -->
|
<!-- Step 2 -->
|
||||||
|
<td width="33%" align="center" valign="top" style="padding:0 4px 4px 4px;">
|
||||||
|
<div style="display:inline-block;width:26px;height:26px;background:#fff;border:2px solid #10b981;border-radius:50%;color:#10b981;font-size:14px;font-weight:800;line-height:22px;text-align:center;margin-top:-14px;margin-bottom:8px;">
|
||||||
|
✓
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="font-size:10px;font-weight:700;text-transform:uppercase;color:#5f6978;margin-bottom:2px;letter-spacing:0.5px;">
|
||||||
|
Visual Check
|
||||||
|
</div>
|
||||||
|
<div style="font-size:11px;font-weight:600;color:#1a1d23;font-style:italic;">
|
||||||
|
Not Available
|
||||||
|
</div>
|
||||||
|
<div style="margin-top:4px;font-size:10px;color:#9ca3af;">
|
||||||
|
${momentTZ().tz(timeZone).format('DD MMM')}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<!-- Step 3 -->
|
||||||
<td width="34%" align="center" valign="top" style="padding:0 4px 4px 4px;">
|
<td width="34%" align="center" valign="top" style="padding:0 4px 4px 4px;">
|
||||||
<div style="display:inline-block;width:26px;height:26px;background:#fff;border:2px solid #10b981;border-radius:50%;color:#10b981;font-size:14px;font-weight:800;line-height:22px;text-align:center;margin-top:-14px;margin-bottom:8px;">
|
<div style="display:inline-block;width:26px;height:26px;background:#fff;border:2px solid #10b981;border-radius:50%;color:#10b981;font-size:14px;font-weight:800;line-height:22px;text-align:center;margin-top:-14px;margin-bottom:8px;">
|
||||||
✓
|
✓
|
||||||
|
|
@ -2274,26 +2290,10 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
Software Test
|
Software Test
|
||||||
</div>
|
</div>
|
||||||
<div style="font-size:11px;font-weight:600;color:#1a1d23;">
|
<div style="font-size:11px;font-weight:600;color:#1a1d23;">
|
||||||
${snapshot?.userTest?.dpelp?.name || ''}
|
${this?.userTest?.dpelp?.name || ''}
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-top:4px;font-size:10px;color:#9ca3af;">
|
<div style="margin-top:4px;font-size:10px;color:#9ca3af;">
|
||||||
${momentTZ(snapshot?.userTest?.dpelp?.time).tz(timeZone).format('DD MMM, HH:mm')}
|
${momentTZ(this?.userTest?.dpelp?.time).tz(timeZone).format('DD MMM, HH:mm')}
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
<!-- Step 3 -->
|
|
||||||
<td width="33%" align="center" valign="top" style="padding:0 4px 4px 4px;">
|
|
||||||
<div style="display:inline-block;width:26px;height:26px;background:#fff;border:2px solid #10b981;border-radius:50%;color:#10b981;font-size:14px;font-weight:800;line-height:22px;text-align:center;margin-top:-14px;margin-bottom:8px;">
|
|
||||||
✓
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="font-size:10px;font-weight:700;text-transform:uppercase;color:#5f6978;margin-bottom:2px;letter-spacing:0.5px;">
|
|
||||||
Physical Check
|
|
||||||
</div>
|
|
||||||
<div style="font-size:11px;font-weight:600;color:#1a1d23;">
|
|
||||||
${snapshot?.userTest?.physical?.name || ''}
|
|
||||||
</div>
|
|
||||||
<div style="margin-top:4px;font-size:10px;color:#9ca3af;">
|
|
||||||
${momentTZ(snapshot?.userTest?.physical?.time).tz(timeZone).format('DD MMM, HH:mm')}
|
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr></tbody>
|
</tr></tbody>
|
||||||
|
|
@ -2313,17 +2313,18 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
</table>
|
</table>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
||||||
<!-- Physical Check section -->
|
<!-- Visual Check section -->
|
||||||
<tr><td style="display: none; padding-bottom:10px;">
|
<tr><td style="padding-bottom:10px;">
|
||||||
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-collapse:separate;">
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="background:#fff;border:1px solid #e5e7eb;border-radius:10px;border-collapse:separate;">
|
||||||
<tr><td style="padding:16px 20px;">
|
<tr><td style="padding:16px 20px;">
|
||||||
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;margin-bottom:12px;border-collapse:separate;">
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;margin-bottom:12px;border-collapse:separate;">
|
||||||
<tr>
|
<tr>
|
||||||
<td style="padding:7px 12px;color:#166534;font-size:13px;font-weight:700;">
|
<td style="padding:7px 12px;color:#166534;font-size:13px;font-weight:700;">
|
||||||
<svg viewBox="0 0 20 20" width="17" height="17" fill="none" style="vertical-align:middle;color:#166534;"><rect x="2" y="2" width="16" height="16" rx="3" stroke="currentColor" stroke-width="1.5"/><path d="M7 10h6M10 7v6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
|
<svg viewBox="0 0 20 20" width="17" height="17" fill="none" style="vertical-align:middle;color:#166534;"><rect x="2" y="2" width="16" height="16" rx="3" stroke="currentColor" stroke-width="1.5"/><path d="M7 10h6M10 7v6" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||||
<span style="vertical-align:middle;margin-left:8px;">Physical Check</span>
|
<span style="vertical-align:middle;margin-left:8px;">Visual Check</span>
|
||||||
</td>
|
</td>
|
||||||
<td align="right" style="padding:7px 12px;color:#166534;font-size:11px;font-weight:500;opacity:.65;">${snapshot?.userTest?.physical?.name || ''} · ${momentTZ(snapshot?.userTest?.physical?.time).tz(timeZone).format('DD MMM, HH:mm')}</td>
|
<td align="right" style="display:none;padding:7px 12px;color:#166534;font-size:11px;font-weight:500;opacity:.65;">${this?.userTest?.physical?.name || ''} · ${momentTZ(this?.userTest?.physical?.time).tz(timeZone).format('DD MMM, HH:mm')}</td>
|
||||||
|
<td align="right" style="padding:7px 12px;color:#166534;font-size:11px;font-weight:500;opacity:.65; font-style:italic;">Not Available</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||||
|
|
@ -2340,9 +2341,10 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
<td valign="top">
|
<td style="display: none;" valign="top">
|
||||||
${checklistRowsHtml}
|
${checklistRowsHtml}
|
||||||
</td>
|
</td>
|
||||||
|
<td style="padding:6px 0;border-bottom:1px dashed #f0f1f3;font-weight:600;color:#5f6978; font-size:11px; font-style:italic;">Not Available</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
|
|
@ -2359,7 +2361,7 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
<svg viewBox="0 0 20 20" width="17" height="17" fill="none" style="vertical-align:middle;color:#1e40af;"><rect x="2" y="3" width="16" height="11" rx="2" stroke="currentColor" stroke-width="1.5"/><path d="M7 17h6M10 14v3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
|
<svg viewBox="0 0 20 20" width="17" height="17" fill="none" style="vertical-align:middle;color:#1e40af;"><rect x="2" y="3" width="16" height="11" rx="2" stroke="currentColor" stroke-width="1.5"/><path d="M7 17h6M10 14v3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
|
||||||
<span style="vertical-align:middle;margin-left:8px;">Software Check</span>
|
<span style="vertical-align:middle;margin-left:8px;">Software Check</span>
|
||||||
</td>
|
</td>
|
||||||
<td align="right" style="padding:7px 12px;color:#1e40af;font-size:11px;font-weight:500;opacity:.65;">${snapshot?.userTest?.dpelp?.name || ''} · ${momentTZ(snapshot?.userTest?.dpelp?.time).tz(timeZone).format('DD MMM, HH:mm')}</td>
|
<td align="right" style="padding:7px 12px;color:#1e40af;font-size:11px;font-weight:500;opacity:.65;">${this?.userTest?.dpelp?.name || ''} · ${momentTZ(this?.userTest?.dpelp?.time).tz(timeZone).format('DD MMM, HH:mm')}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
<table cellpadding="0" cellspacing="0" border="0" width="100%">
|
||||||
|
|
@ -2401,7 +2403,7 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
<!-- CONSOLE RAW OUTPUT -->
|
<!-- CONSOLE RAW OUTPUT -->
|
||||||
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin-top:16px;background:#1e293b;border-radius:6px;border:1px solid #334155;border-collapse:separate;">
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin-top:16px;background:#1e293b;border-radius:6px;border:1px solid #334155;border-collapse:separate;">
|
||||||
<tr><td style="padding:6px 12px;background:#334155;color:#94a3b8;font-size:10px;font-weight:700;letter-spacing:.5px;border-radius:6px 6px 0 0;">CONSOLE RAW OUTPUT (Boot Log snippet)</td></tr>
|
<tr><td style="padding:6px 12px;background:#334155;color:#94a3b8;font-size:10px;font-weight:700;letter-spacing:.5px;border-radius:6px 6px 0 0;">CONSOLE RAW OUTPUT (Boot Log snippet)</td></tr>
|
||||||
<tr><td><pre style="overflow-y: auto; max-height: 300px; padding:12px;color:#cbd5e1;font-family:Consolas,'Courier New',monospace;font-size:11px;line-height:1.6;white-space:pre-wrap;word-break:break-all;">${snapshot?.outputTestLog || 'No test log available'}</pre></td></tr>
|
<tr><td><pre style="overflow-y: auto; max-height: 300px; padding:12px;color:#cbd5e1;font-family:Consolas,'Courier New',monospace;font-size:11px;line-height:1.6;white-space:pre-wrap;word-break:break-all;">${this?.outputTestLog || 'No test log available'}</pre></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
@ -2416,14 +2418,15 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
|
|
||||||
this.updateNote(config?.inventory?.sn, this.dataDPELP as DataDPELP)
|
this.updateNote(config?.inventory?.sn, this.dataDPELP as DataDPELP)
|
||||||
await sendMessageToMail(
|
await sendMessageToMail(
|
||||||
`[ATC] - [${config.stationName} - Line: ${config.lineNumber}] - [${this.config.inventory?.pid}] - [${this.config.inventory?.sn}] - Summary of Testing Results`,
|
`[ATC] - [${config.stationName} - L${config.lineNumber}] - ${this.config.inventory?.pid} - ${this.config.inventory?.sn} - Test Summary`,
|
||||||
body
|
body
|
||||||
)
|
)
|
||||||
|
this.outputTestLog = ''
|
||||||
this.socketIO.emit('summary_tested', {
|
this.socketIO.emit('summary_tested', {
|
||||||
stationId: this.config.stationId,
|
stationId: this.config.stationId,
|
||||||
lineId: this.config.id,
|
lineId: this.config.id,
|
||||||
body: body,
|
body: body,
|
||||||
title: `[${config.stationName} - Line: ${config.lineNumber}] - Summary of Testing Results`,
|
title: `[ATC] - [${config.stationName} - L${config.lineNumber}] - ${this.config.inventory?.pid} - ${this.config.inventory?.sn} - Test Summary`,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2465,8 +2468,6 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
snapConfig: this.config,
|
snapConfig: this.config,
|
||||||
snapPhysical: this.physicalTest,
|
snapPhysical: this.physicalTest,
|
||||||
reason: '',
|
reason: '',
|
||||||
outputTestLog: this.outputTestLog,
|
|
||||||
userTest: this.userTest,
|
|
||||||
}
|
}
|
||||||
this.debounceSendSummaryReport = setTimeout(() => {
|
this.debounceSendSummaryReport = setTimeout(() => {
|
||||||
if (!this.config.listFeatureTested?.includes('PHYSICAL')) {
|
if (!this.config.listFeatureTested?.includes('PHYSICAL')) {
|
||||||
|
|
@ -2477,8 +2478,6 @@ Ports Missing/Down: ${missing.length}\n\n`
|
||||||
this.config.listFeatureTested = ['DPELP', 'PHYSICAL', 'SUMMARY']
|
this.config.listFeatureTested = ['DPELP', 'PHYSICAL', 'SUMMARY']
|
||||||
this.sendFeatureTested()
|
this.sendFeatureTested()
|
||||||
this.sendReportSummaryV2(snapshot)
|
this.sendReportSummaryV2(snapshot)
|
||||||
this.outputTestLog = ''
|
|
||||||
this.userTest = { dpelp: { name: '', time: 0 }, physical: { name: '', time: 0 } }
|
|
||||||
}, timeout)
|
}, timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -493,7 +493,9 @@ function App() {
|
||||||
if (
|
if (
|
||||||
valueLine &&
|
valueLine &&
|
||||||
openModalTerminal &&
|
openModalTerminal &&
|
||||||
selectedLine?.id === valueLine?.id
|
selectedLine?.id === valueLine?.id &&
|
||||||
|
(!valueLine?.listPortsPhysical ||
|
||||||
|
valueLine?.listPortsPhysical?.length === 0)
|
||||||
)
|
)
|
||||||
setLinesConfirmSkipPort((pre) => [
|
setLinesConfirmSkipPort((pre) => [
|
||||||
...pre,
|
...pre,
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,7 @@ const CardLine = ({
|
||||||
const text = lines.join("\n");
|
const text = lines.join("\n");
|
||||||
|
|
||||||
const match = text.match(
|
const match = text.match(
|
||||||
/^RESULT:\s*(PASS WITH WARNING|PASS|FAIL|INSUFFICIENT DATA)/im,
|
/RESULT:\s*(PASS WITH WARNING|PASS|FAIL|INSUFFICIENT DATA)/im,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!match) {
|
if (!match) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue