blob: 30ef10101a3bf41071ae89629c25f7167fc53831 [file]
<!--
Copyright 2015 Google Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<div class="panel panel-default de-right-panel" ng-controller="TestGroupStatsCtrl">
<div class="panel-heading" style="overflow:hidden;">
<h3 style="display:inline;" class="panel-title" ng-switch="testGroupPath === ''">
<span ng-switch-when="true">Batch statistics</span>
<span ng-switch-when="false">
<!-- Batch name if we are comparing -->
<span class="de-batch-name" ng-if="batchResultName !== ''">{{ batchResultName }}</span>
{{ testGroupPath }}
</span>
</h3>
</div>
<div class="panel-body de-batch-panel-body">
<div class="progress">
<div class="de-progress-bar de-progress-bar-success" ng-style="{width:(getResultTypePercentage(value, 'numSuccess') + '%')}">
<div class="de-progress-bar-hint"> Success: {{ getResultTypeCount(value, 'numSuccess') }} ({{ getResultTypePercentage(value, 'numSuccess') }}%) </div>
</div>
<div class="de-progress-bar de-progress-bar-fail" ng-style="{width:(getResultTypePercentage(value, 'numFailure') + '%')}">
<div class="de-progress-bar-hint"> Fail: {{ getResultTypeCount(value, 'numFailure') }} ({{ getResultTypePercentage(value, 'numFailure') }}%) </div>
</div>
<div class="de-progress-bar de-progress-bar-crash-timeout" ng-style="{width:(getResultTypePercentage(value, 'numCrash', 'numTimeout') + '%')}">
<div class="de-progress-bar-hint"> Crash or timeout: {{ getResultTypeCount(value, 'numCrash', 'numTimeout') }} ({{ getResultTypePercentage(value, 'numCrash', 'numTimeout') }}%) </div>
</div>
<div class="de-progress-bar de-progress-bar-warning" ng-style="{width:(getResultTypePercentage(value, 'numQualityWarning', 'numCompatibilityWarning') + '%')}">
<div class="de-progress-bar-hint"> Warning: {{ getResultTypeCount(value, 'numQualityWarning', 'numCompatibilityWarning') }} ({{ getResultTypePercentage(value, 'numQualityWarning', 'numCompatibilityWarning') }}%) </div>
</div>
<div class="de-progress-bar de-progress-bar-not-supported" ng-style="{width:(getResultTypePercentage(value, 'numNotSupported') + '%')}">
<div class="de-progress-bar-hint"> Not supported: {{ getResultTypeCount(value, 'numNotSupported') }} ({{ getResultTypePercentage(value, 'numNotSupported') }}%) </div>
</div>
<div class="de-progress-bar de-progress-bar-resource-internal-error" ng-style="{width:(getResultTypePercentage(value, 'numResourceError', 'numInternalError') + '%')}">
<div class="de-progress-bar-hint"> Error: {{ getResultTypeCount(value, 'numResourceError', 'numInternalError') }} ({{ getResultTypePercentage(value, 'numResourceError', 'numInternalError') }}%) </div>
</div>
<div class="de-progress-bar-text">{{ getNumResults(value) }} / {{ value.numTotalCases }}</div>
</div>
<div sized-by-window class="container">
<table class="table">
<!-- General Success -->
<tr class="de-row-header">
<td>Successes</td>
</tr>
<tr>
<td>Success</td>
<td>{{ value.numSuccess }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ value.numSuccess / value.numTotalCases | percent }}</td>
</tr>
<!-- General Failures -->
<tr class="de-row-header">
<td>Failures</td>
</tr>
<tr>
<td>Failure</td>
<td>{{ value.numFailure }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ value.numFailure / value.numTotalCases | percent }}</td>
</tr>
<tr>
<td>Crash</td>
<td>{{ value.numCrash }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ value.numCrash / value.numTotalCases | percent }}</td>
</tr>
<tr>
<td>Timeout</td>
<td>{{ value.numTimeout }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ value.numTimeout / value.numTotalCases | percent }}</td>
</tr>
<!-- General Warnings -->
<tr class="de-row-header">
<td>Warnings</td>
</tr>
<tr>
<td>Quality warning</td>
<td>{{ value.numQualityWarning }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ value.numQualityWarning / value.numTotalCases | percent }}</td>
</tr>
<tr>
<td>Compatibility warning</td>
<td>{{ value.numCompatibilityWarning }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ value.numCompatibilityWarning / value.numTotalCases | percent }}</td>
</tr>
<!-- General Others -->
<tr class="de-row-header">
<td>Others</td>
</tr>
<tr>
<td>Not supported</td>
<td>{{ value.numNotSupported }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ value.numNotSupported / value.numTotalCases | percent }}</td>
</tr>
<tr>
<td>Resource error</td>
<td>{{ value.numResourceError }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ value.numResourceError / value.numTotalCases | percent }}</td>
</tr>
<tr>
<td>Internal error</td>
<td>{{ value.numInternalError }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ value.numInternalError / value.numTotalCases | percent }}</td>
</tr>
<!-- General Not Executed -->
<tr class="de-row-header">
<td>Run status</td>
</tr>
<!-- TODO: Separate to pending/running/disabled/canceled categories -->
<tr>
<td>Not executed</td>
<td>{{ value.numTotalCases - getNumResults(value) }} of {{ value.numTotalCases }}</td>
<td ng-if="value.numTotalCases != 0">{{ (value.numTotalCases - getNumResults(value)) / value.numTotalCases | percent }}</td>
</tr>
</table>
</div>
</div>
</div>