diff options
Diffstat (limited to 'gm/rebaseline_server/static/new/partials/rebaseline-view.html')
-rw-r--r-- | gm/rebaseline_server/static/new/partials/rebaseline-view.html | 207 |
1 files changed, 207 insertions, 0 deletions
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 0000000000..a2c28f7357 --- /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> |