| <!-- |
| 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" ng-controller="BatchResultCtrl" ng-show="batchResult"> |
| <div class="panel-heading clearfix"> |
| <!-- \todo [nuutti] Hacky positioning all around. --> |
| <h3 class="panel-title pull-left"> |
| <!-- \todo [nuutti] The length attribute in the spinner is a workaround for terrible lagging in Firefox; if |
| the width attribute in line 243 in spin.js is too *small*, UI is very laggy for some reason. |
| Find proper solution? --> |
| <!-- \todo [petri] use some helper function to detect which statuses should show spinner (eg, initializing)? --> |
| <div id="batchResultSpinner" style="margin-right: 10px;" class="spinner-box" ng-show="batchResult.status === BATCH_STATUS_CODE.RUNNING" us-spinner="{radius:6, width:3, lines:10, length:12, color:'#88f'}"></div> |
| <span class="batch-result-name"> |
| <!-- \note The width of the name input field is determined by the width of its text. There doesn't |
| seem to be a straightforward way to do this, so it's done in a hacky way by setting the |
| contents of the (hidden) batchResultNameWidthHelper to the input's value, getting its |
| width and setting the input's width based on that. If more than one things like this are |
| needed on the same page, something more sophisticated than an element-id-based jquery hack |
| is needed. --> |
| <input id="batchResultNameInput" type="text" ng-model="batchResultNameInput" ng-trim="false" class="batch-result-name-input" ng-style="{width:batchResultNameInputWidth()}" /> |
| <span id="batchResultNameWidthHelper" class="batch-result-name-width-helper"><span id="batchResultName">{{ batchResultNameInput }}</span></span> |
| </span> |
| <span id="batchResultStatus" class="batch-result-status">[{{ batchResult.status | batchStatusHumanReadable }}]</span> |
| <span class="batch-result-device-name">{{ deviceConfigName }}</span> |
| </h3> |
| <!-- \note Here, the purpose of the download attribute is to make the browser |
| download the thing without leaving the current page. The download |
| attribute isn't supported by latest IE, but the latest IE seems to |
| do the desired thing anyway. --> |
| <a class="btn" ng-disabled="!isInitialized" ng-href="/export/{{ batchResultId | encodeURIComponent }}" download>Export batch log</a> |
| <a class="btn" ng-disabled="!isInitialized" ng-href="/executionLog/{{ batchResultId | encodeURIComponent }}">Show execution log</a> |
| <span class="pull-right"> |
| <button class="btn btn-default" type="button" ng-click="executeSubBatch()" ng-disabled="!isInitialized || !anyNodesForSubBatch">Execute selected</button> |
| <button class="btn btn-success" type="button" ng-click="continueExecution()" ng-disabled="!isContinuable">Continue</button> |
| <button class="btn btn-danger" type="button" ng-click="stopExecution()" ng-disabled="!isStoppable">Stop</button> |
| </span> |
| </div> |
| |
| <div class="panel-body" id="mainPanelBody"> |
| <!-- Test case list --> |
| <div id="testCaseListContainer" style="float:left;"> |
| <div ng-switch="isInitialized"> |
| <div ng-switch-when="false">Initializing... |
| <div class="progress"> |
| <div class="de-progress-bar" ng-style="{width:initProgress()*100+'%'}"></div> |
| </div> |
| </div> |
| <div ng-switch-when="true" ng-controller="TestCaseListCtrl"> |
| <!-- Treeview --> |
| <div class="panel panel-default"> |
| <div class="panel-heading"> |
| <span class="test-path-filter-input-container"> |
| <input id="testCasePathFilter" type="text" placeholder="Path filter" class="form-control input-sm test-path-filter-input" ng-model="testCasePathFilter" /> |
| </span> |
| </div> |
| <div class="panel-body" style="overflow-y:scroll;" sized-by-window ng-click="maybeUnselectNodes($event)"> |
| <div id="testCaseTree" class="tree-border"> |
| <treecontrol class="tree-light" tree-model="testCaseTree" tree-selectable="{selectionType:treeSelectionType, setAccess:setTreeAccess}"> |
| <!-- TEST GROUP --> |
| <div id="testCaseGroupNode" ng-if="node.type === 'testGroup'"> |
| <a id="nodePath" class="test-case-tree-item" node-path="{{node.path}}" ui-sref="batchResult.group({testGroupPath:node.path})"> |
| <span id="nodeLabel">{{ node.label }}</span> |
| <div class="test-case-status-box" ng-controller="TreeGroupCtrl" ng-init="init(batchResultId + node.headerIdSuffix)"> |
| <div class="progress tree-progress test-group-progress test-node-status" ng-include src="'partials/testTreeGroupStatus.html'"></div> |
| </div> |
| </a> |
| </div> |
| |
| <!-- TEST CASE --> |
| <div id="testCaseLeafNode" ng-if="node.type === 'testCase'"> |
| <a id="nodePath" class="test-case-tree-item" node-path="{{node.path}}" ui-sref="batchResult.case({testCasePath:node.path})"> |
| <span id="nodeLabel">{{ node.label }}</span> |
| <div class="test-case-status-box" ng-controller="TreeLeafCtrl" ng-init="init(batchResultId + node.headerIdSuffix)"> |
| <div class="test-node-status" ng-include src="'partials/testTreeLeafStatus.html'"></div> |
| </div> |
| </a> |
| </div> |
| </treecontrol> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div sized-by-window class="size-drag-bar" style="float:left;" size-drag-bar='{"left":"testCaseListContainer", "right":"testCaseContainer", "container":"mainPanelBody", "leftMinWidthRatio":0.2, "rightMinWidthRatio":0.2, "initialLeftWidthRatio":0.3}'></div> |
| |
| <!-- Test case result or test group view --> |
| <div id="testCaseContainer" style="float:left;"> |
| <ui-view ng-if="isInitialized" /> |
| </div> |
| </div> |
| </div> |