blob: 86935747271fa2e1246f0f3b2c163f90c022f3fa [file] [log] [blame]
<div xmlns:py="http://genshi.edgewall.org/">
<?python from genshi.builder import tag ?>
<?python from genshi.util import flatten ?>
<table class="datatable test_verdicts">
<tr>
<th></th>
<th>Value</th>
<th>Maximum allowed</th>
<th>Pass/Fail</th>
</tr>
<tr>
<td class="vertical_header_th" py:if="not results.edge_analysis_done">Max accuracy error:</td>
<td class="vertical_header_th" py:if="results.edge_analysis_done">Max center accuracy error:</td>
<td>${"%s mm" % results.max_input_offset if results.max_input_offset is not None else 'N/A'}</td>
<td>${"%s" % settings['maxposerror']} mm</td>
<td class="${'' if results.max_input_offset is None else 'passed' if settings['maxposerror'] >= results.max_input_offset else 'failed'}" >
${results.max_input_offset_verdict}
</td>
</tr>
<tr py:if="results.edge_analysis_done">
<td class="vertical_header_th">Max edge accuracy error:</td>
<td>${"%s" % results.max_edge_error} mm</td>
<td>${"%s" % settings['edgepositioningerror']} mm</td>
<td class="${'passed' if settings['edgepositioningerror'] >= results.max_edge_error else 'failed'}" >
${"Pass" if settings['edgepositioningerror'] >= results.max_edge_error else "Fail"}
</td>
</tr>
<tr py:if="not results.edge_analysis_done">
<td class="vertical_header_th">Missing inputs:</td>
<td>${results.missing_inputs}/${results.total_points}</td>
<td>${int(settings['maxmissing'])}</td>
<td class="${'passed' if results.missing_inputs_verdict else 'failed'}">${"Pass" if results.missing_inputs_verdict else "Fail"}</td>
</tr>
<tr py:if="results.edge_analysis_done">
<td class="vertical_header_th">Missing center inputs:</td>
<td>${results.missing_inputs - results.missing_edge_inputs}/${results.total_points - results.edge_points}</td>
<td>${int(settings['maxmissing'])}</td>
<td class="${'passed' if results.missing_inputs_verdict else 'failed'}">${"Pass" if results.missing_inputs_verdict else "Fail"}</td>
</tr>
<tr py:if="results.edge_analysis_done">
<td class="vertical_header_th">Missing edge inputs:</td>
<td>${results.missing_edge_inputs}/${results.edge_points}</td>
<td>${int(settings['maxedgemissing'])}</td>
<td class="${'passed' if results.missing_edge_inputs_verdict else 'failed'}">${"Pass" if results.missing_edge_inputs_verdict else "Fail"}</td>
</tr>
<tr>
<td class="vertical_header_th">Errors:</td>
<td>${len(results.errors)}</td>
<td>0</td>
<td class="${'passed' if len(results.errors) == 0 else 'failed'}">${"Pass" if len(results.errors) == 0 else "Fail"}</td>
</tr>
<tr py:if="len(results.errors) > 0">
<td class="vertical_header_th">Error descriptions:</td>
<td colspan="2">${tag(flatten((e,tag.br) for e in sorted(results.errors)))}</td>
</tr>
</table>
<div py:if="'noimages' not in kwargs" py:for="img in results.images" class="preview">
<a href="${img[1]}">
<img src="${img[0]}" alt="Preview image"/>
</a>
</div>
<!--! Preview table -->
<div class="dtable no_print">
<div class="dtable_row">
<div class="dtable_header narrow_cell">Toggle:</div>
<div class="dtable_header narrow_cell"><button class="all_lines_button">All</button></div>
<div class="dtable_header narrow_cell"><button class="failed_lines_button">Failed</button></div>
<div class="dtable_header narrow_cell"><button class="passed_lines_button">Passed</button></div>
</div>
</div>
<div class="dtable subplot_table">
<div class="dtable_row">
<div class="dtable_header narrow_cell">Tap</div>
<div class="dtable_header narrow_cell"># of Fingers</div>
<div class="dtable_header narrow_cell">Errors</div>
<div class="dtable_header">Maximum offset</div>
<div class="dtable_header narrow_cell">Pass/Fail</div>
<div class="dtable_header no_print">Detailed plot</div>
</div>
<div py:for="tap in results.taps" class="dtable_row plot_header">
<div class="dtable_cell narrow_cell">${tap.id}</div>
<div class="dtable_cell narrow_cell">${tap.num_fingers}</div>
<div class="dtable_cell narrow_cell">${len(tap.errors)}</div>
<div class="dtable_cell">${tap.max_input_offset}</div>
<div class="dtable_cell narrow_cell ${'' if tap.max_input_offset is None else 'passed' if tap.verdict else 'failed'}">${tap.verdict_text}</div>
<div class="dtable_cell no_print"><button type="button" class="show_plot">Show/Hide</button></div>
<div class="plot" data-src="${tap.image}"/>
</div>
</div>
</div>