| Index: gm/rebaseline_server/static/new/partials/rebaseline-view.html
|
| diff --git a/gm/rebaseline_server/static/new/partials/rebaseline-view.html b/gm/rebaseline_server/static/new/partials/rebaseline-view.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a2c28f7357c342337974fda1e8753f722b1e35d2
|
| --- /dev/null
|
| +++ b/gm/rebaseline_server/static/new/partials/rebaseline-view.html
|
| @@ -0,0 +1,207 @@
|
| +<div class="container-fluid ng-cloak" ng-cloak>
|
| +
|
| + <div class="row" ng-show="state === c.ST_LOADING">
|
| + <h4>Loading ...</h4>
|
| + </div>
|
| +
|
| + <div class="row" ng-show="state === c.ST_STILL_LOADING">
|
| + <h4>Still loading from backend.</h4>
|
| + <div>
|
| + Load time so far: {{ loadTime | number:0 }} s.
|
| + </div>
|
| + </div>
|
| +
|
| + <div class="row" ng-show="state === c.ST_READY">
|
| + <tabset>
|
| + <tab heading="Unfiled">
|
| + <!-- settings -->
|
| + <div class="container controlBox">
|
| + <form class="form-inline settingsForm" novalidate >
|
| + <legend class="simpleLegend">Settings</legend>
|
| + <div class="checkbox formPadding">
|
| + <label>
|
| + <input type="checkbox"
|
| + ng-model="settings.showThumbnails">Show thumbnails
|
| + </label>
|
| + </div>
|
| +
|
| + <div class="checkbox formPadding">
|
| + <label>
|
| + <input type="checkbox"
|
| + ng-model="settings.mergeIdenticalRows"
|
| + ng-change="mergeRowsChanged(mergeIdenticalRows)"> Merge identical rows
|
| + </label>
|
| + </div>
|
| +
|
| + <div class="form-group formPadding">
|
| + <label for="imageWidth">Image Width</label>
|
| + <select ng-model="settings.imageSize"
|
| + ng-options="iSize for iSize in c.IMAGE_SIZES"
|
| + class="form-control input-sm">
|
| +
|
| + </select>
|
| + </div>
|
| + <div class="form-group formPadding">
|
| + <label>Max records</label>
|
| + <select ng-model="settings.nRecords"
|
| + ng-options="n for n in c.MAX_RECORDS"
|
| + ng-change="maxRecordsChanged();"
|
| + class="form-control input-sm">
|
| + </select>
|
| + </div>
|
| + </form>
|
| + <br>
|
| +
|
| + <form class="form settingsForm" novalidate>
|
| + <legend class="simpleLegend">Filters</legend>
|
| + <div class="container-fluid">
|
| + <div class="col-lg-2 filterBox" ng-repeat="oneCol in filterCols">
|
| + <div class="filterKey">{{ oneCol.key }}</div>
|
| +
|
| + <!-- If we filter this column using free-form text match... -->
|
| + <div ng-if="oneCol.ftype === c.FILTER_FREE_FORM">
|
| + <input type="text"
|
| + ng-model="filterVals[$index]"
|
| + typeahead="opt.value for opt in oneCol.foptions | filter:$viewValue"
|
| + class="form-control input-sm">
|
| + <br>
|
| + <a ng-click="filterVals[$index]=''"
|
| + ng-disabled="'' === filterVals[$index]"
|
| + href="">
|
| + Clear
|
| + </a>
|
| + </div>
|
| +
|
| + <!-- If we filter this column using checkboxes... -->
|
| + <div ng-if="oneCol.ftype === c.FILTER_CHECK_BOX">
|
| +
|
| + <div class="checkbox" ng-repeat="oneOpt in oneCol.foptions">
|
| + <label>
|
| + <input type="checkbox"
|
| + ng-model="filterVals[$parent.$index][$index]">{{oneOpt.value}} ({{ oneOpt.count }})
|
| + </label>
|
| + </div>
|
| + <div>
|
| + <a ng-click="setFilterAll($index, true)" href="">All</a> -
|
| + <a ng-click="setFilterAll($index, False)" href="">None</a> -
|
| + <a ng-click="setFilterToggle($index)" href="">Toggle</a>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + <br>
|
| + </div>
|
| +
|
| + <div class="container updateBtn">
|
| + <button class="btn btn-success col-lg-4 pull-left"
|
| + ng-click="filtersChanged()"
|
| + ng-disabled="updating">
|
| + {{ updating && 'Updating ...' || 'Update' }}
|
| + </button>
|
| + </div>
|
| +
|
| + </form>
|
| +
|
| + <br>
|
| +
|
| + <!-- Rows -->
|
| +
|
| + <!-- results header -->
|
| + <div class="col-lg-12 resultsHeaderActions well">
|
| + <div class="col-lg-6">
|
| + <h4>Showing {{showingRecords}} of {{selectedRecords}} (of {{totalRecords}} total)</h4>
|
| + <span ng-show="renderTime > 0">
|
| + Rendered in {{renderTime | number:0 }} ms (filtered and sorted in {{ filterTime | number:0 }} ms).
|
| + </span>
|
| + <br>
|
| + (click on the column header radio buttons to re-sort by that column)
|
| + </div>
|
| +
|
| +
|
| + <div class="col-lg-6">
|
| + All tests shown:
|
| + <button class="btn btn-default btn-sm" ng-click="selectAllImagePairs()">Select</button>
|
| + <button class="btn btn-default btn-sm" ng-click="clearAllImagePairs()">Clear</button>
|
| + <button class="btn btn-default btn-sm" ng-click="toggleAllImagePairs()">Toggle</button>
|
| +
|
| + <div ng-repeat="otherTab in tabs">
|
| + <button class="btn btn-default btn-sm"
|
| + ng-click="moveSelectedImagePairsToTab(otherTab)"
|
| + ng-disabled="selectedImagePairs.length == 0"
|
| + ng-show="otherTab != viewingTab">
|
| + Move {{selectedImagePairs.length}} selected tests to {{otherTab}} tab
|
| + </button>
|
| + </div>
|
| + </div>
|
| + <br>
|
| + </div>
|
| +
|
| + <!-- results -->
|
| + <table class="table table-bordered">
|
| + <thead>
|
| + <tr>
|
| + <!-- Most column headers are displayed in a common fashion... -->
|
| + <th ng-repeat="oneCol in allCols" ng-style="{ 'min-width': getImageWidthStyle(oneCol, 20, 'auto') }">
|
| + <a ng-class="getSortedClass('sort', $index, '')"
|
| + ng-click="sortBy($index)"
|
| + href=""
|
| + class="sortableHeader">
|
| + {{ oneCol.ctitle }}
|
| + </a>
|
| + </th>
|
| + <th>
|
| + <div class="checkbox">
|
| + <label>
|
| + <input type="checkbox" ng-model="allChecked" ng-change="checkAll()">All
|
| + </label>
|
| + </div>
|
| + </th>
|
| + </tr>
|
| + </thead>
|
| + <tbody>
|
| + <tr ng-repeat="oneRow in data">
|
| + <td ng-repeat="oneColVal in oneRow.dataCols">
|
| + {{oneColVal}}
|
| + </td>
|
| +
|
| + <td ng-repeat="oneCol in oneRow.imageCols" ng-if="oneRow.rowspan > 0" rowspan="{{ oneRow.rowspan }}">
|
| + <div ng-show="oneCol.url">
|
| + <a href="{{ oneCol.url }}" target="_blank">View Image</a><br/>
|
| + <img ng-if="settings.showThumbnails"
|
| + ng-style="{ width: settings.imageSize+'px' }"
|
| + ng-src="{{ oneCol.url }}" />
|
| + <div ng-if="oneCol.percent && oneCol.value">
|
| + {{oneCol.percent}}% ({{ oneCol.value }})
|
| + </div>
|
| + </div>
|
| + <div ng-hide="oneCol.url" style="text-align:center">
|
| + <span ng-show="oneCol.url === null">–none–</span>
|
| + <span ng-hide="oneCol.url === null"> </span>
|
| + </div>
|
| + </td>
|
| +
|
| + <td ng-if="oneRow.rowspan > 0" rowspan="{{ oneRow.rowspan }}">
|
| + <div class="checkbox">
|
| + <input type="checkbox"
|
| + ng-model="checkRows[$index]"
|
| + ng-change="rowCheckChanged($index)">
|
| + </div>
|
| + </td>
|
| + </tr>
|
| + </tbody>
|
| + </table>
|
| +
|
| + </div>
|
| + </tab>
|
| +
|
| + <tab heading="Hidden">
|
| + <h3>Hidden</h3>
|
| + </tab>
|
| +
|
| + <tab heading="Pending Approval">
|
| + <h3>Pending Approval</h3>
|
| + </tab>
|
| +
|
| + </tabset>
|
| +
|
| + </div>
|
| +</div>
|
|
|