<div xmlns:py="http://genshi.edgewall.org/"> | |
<h3>Reporting rate and jitter</h3> | |
<table class="datatable test_verdicts"> | |
<tr> | |
<th></th> | |
<th>Value</th> | |
<th>Maximum allowed</th> | |
<th>Pass/Fail</th> | |
</tr> | |
<tr> | |
<td>Max Error (Linear Fit)</td> | |
<td>${"%.3f mm" % results.max_offset_from_linear_fit if results.max_offset_from_linear_fit is not None else "N/A"}</td> | |
<td>${"%.3f mm" % settings.maxoffset if settings.maxoffset is not None else "N/A"}</td> | |
<td class="${'passed' if settings.maxoffset >= results.max_offset_from_linear_fit else 'failed'}"> | |
${"Pass" if settings.maxoffset >= results.max_offset_from_linear_fit else "Fail"}</td> | |
</tr> | |
<tr> | |
<td>Mean of Max Errors</td> | |
<td>${"%.3f mm" % results.avg_of_offsets_from_linear_fit if results.avg_of_offsets_from_linear_fit is not None else "N/A"}</td> | |
<td>${"%.3f mm" % settings.maxoffset if settings.maxoffset is not None else "N/A"}</td> | |
<td class="${'passed' if results.avg_of_offsets_from_linear_fit is not None and settings.maxoffset >= results.avg_of_offsets_from_linear_fit else 'failed'}"> | |
${"Pass" if results.avg_of_offsets_from_linear_fit is not None and settings.maxoffset >= results.avg_of_offsets_from_linear_fit else "Fail"}</td> | |
</tr> | |
<tr> | |
<td>Digitizer Jitter</td> | |
<td>${"%s mm" % results.max_jitter if results.max_jitter is not None else "N/A"}</td> | |
<td>${"%.3f mm" % settings.maxjitter if settings.maxjitter is not None else "N/A"}</td> | |
<td class="${'passed' if results.jitter_verdict =='Pass' else 'failed'}">$results.jitter_verdict</td> | |
</tr> | |
<tr> | |
<td>Digitizer Offset</td> | |
<td>${"%s mm" % results.max_offset if results.max_offset is not None else "N/A"}</td> | |
<td>${"%.3f mm" % settings.maxoffset if settings.maxoffset is not None else "N/A"}</td> | |
<td class="${'passed' if results.offset_verdict =='Pass' else 'failed'}">$results.offset_verdict</td> | |
</tr> | |
<tr> | |
<td>Missing swipes</td> | |
<td>${results.missing_count}/${results.swipe_count}</td> | |
<td>${"%d" % settings.maxmissingswipes}</td> | |
<td class="${'passed' if settings.maxmissingswipes >= results.missing_count else 'failed'}">${"Pass" if settings.maxmissingswipes >= results.missing_count else "Fail"}</td> | |
</tr> | |
</table> | |
<!-- Preview image --> | |
<div py:if="'noimages' not in kwargs" class="preview"> | |
<a href="${detailed_figure}"> | |
<img src="${figure}" width="800" height="600" alt="Swipe preview image"/> | |
</a> | |
</div> | |
<!-- Preview table --> | |
<div class="dtable no_print"> | |
<div class="dtable_row subplot_selector"> | |
<div class="dtable_header narrow_cell">Toggle: | |
</div><div class="dtable_header narrow_cell subplot_button"><button class="all_lines_button">All</button> | |
</div><div class="dtable_header narrow_cell subplot_button"><button class="failed_lines_button">Failed</button> | |
</div><div class="dtable_header narrow_cell subplot_button"><button class="passed_lines_button">Passed</button></div> | |
</div> | |
</div> | |
<div class="dtable subplot_table"> | |
<div class="dtable_header_row"> | |
<div class="dtable_header narrow_cell">Swipe ID | |
</div><div class="dtable_header narrow_cell">Max Jitter | |
</div><div class="dtable_header narrow_cell">Max Offset | |
</div><div class="dtable_header narrow_cell">Pass/Fail | |
</div><div class="dtable_header no_print">Detailed plot</div> | |
</div> | |
<div py:for="swipe in results.swipes" class="dtable_row plot_header"> | |
<div class="dtable_cell narrow_cell">${swipe[0]} | |
</div><div class="dtable_cell narrow_cell"> ${"%s mm" % swipe[1] if swipe[1] is not None else "N/A"} | |
</div><div class="dtable_cell narrow_cell"> ${"%s mm" % swipe[2] if swipe[2] is not None else "N/A"} | |
</div><div class="dtable_cell narrow_cell ${'passed' if swipe[3]=='Pass' else 'failed'}"> ${swipe[3]} | |
</div><div class="dtable_cell no_print"><button type="button" class="show_plot">Show/Hide</button> | |
</div><div class="plot" data-src="${swipe[4]}"/> | |
</div> | |
</div> | |
</div> | |