github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/service/templates/grid.html (about) 1 {{define "scripts"}} 2 <script src="{{Static "js" "grid.js"}}?hash={{ StaticsMD5 }}"></script> 3 <script type="text/javascript"> 4 var baseVersion = {{.ProjectData.Version}}; 5 var baseRef = {{.ProjectData.ProjectRef}}; 6 var gridCells = {{.GridCells}}; 7 var allVersions = {{.Versions}}; 8 var revisionFailures = {{.RevisionFailures}}; 9 var failures = {{.Failures}} 10 var userTz = {{GetTimezone $.User}}; 11 </script> 12 {{end}} 13 {{define "title"}} 14 Evergreen - Grid 15 {{end}} 16 {{define "content"}} 17 <div id="content" class="container-fluid" ng-controller="VersionMatrixController"> 18 <header class="clearfix"> 19 <h1>Summary</h1> 20 </header> 21 <div class="row"> 22 {{if not .ProjectData.Version}} 23 <p class="text-center">There are no builds of this project</p> 24 {{end}} 25 </div> 26 <ul class="nav nav-tabs"> 27 <li ng-class="{active:tab == consts.recentFailuresView}"><a href="#" ng-click="setTab(consts.recentFailuresView)">Recent Failures</a></li> 28 <li ng-class="{active:tab == consts.gridView}"><a href="#" ng-click="setTab(consts.gridView)">Grid</a></li> 29 </ul> 30 <div class="col-lg-12 summary" ng-hide="tab != consts.recentFailuresView "> 31 <div class="gridtable-small"> 32 <h3 ng-show="currentFailures.length == 0">Hooray! There are no recent test failures.</h3> 33 <div ng-show="currentFailures.length != 0"> 34 <div class="row"> 35 <div class="pull-left" style="margin-left:20px"> 36 <h4> Group Failures By: </h4> 37 <div class = "btn-group btn-group-sm"> 38 <a class="pointer btn btn-default" ng-class="{active:currentFailureView==consts.taskFailuresView}" ng-click="setFailureView(consts.taskFailuresView)"> Task </a> 39 <a class="pointer btn btn-default" ng-class="{active:currentFailureView==consts.testFailuresView}" ng-click="setFailureView(consts.testFailuresView)"> Test </a> 40 <a class="pointer btn btn-default" ng-class="{active:currentFailureView==consts.variantFailuresView}" ng-click="setFailureView(consts.variantFailuresView)"> Variant </a> 41 <a class="pointer btn btn-default" ng-class="{active:currentFailureView==consts.revisionFailuresView}" ng-click="setFailureView(consts.revisionFailuresView)"> Revision </a> 42 </div> 43 </div> 44 <div class="col-lg-2" ng-show="currentFailureView != consts.revisionFailuresView"> 45 <h4> Sort Groups By: </h4> 46 <div class="btn-group btn-group-sm"> 47 <a class="pointer btn btn-default" ng-class="{active:sortBy==consts.numFailures}" ng-click="setSort(consts.numFailures)"># of Failures </a> 48 <a class="pointer btn btn-default" ng-class="{active:sortBy==consts.nameSort}" ng-click="setSort(consts.nameSort)"> Name </a> 49 </div> 50 </div> 51 <div class="col-lg-4"> 52 <h4> </h4> 53 <div class="btn-group btn-group-sm"> 54 <a class="pointer btn btn-default" ng-click="expandAll()">Expand All </a> 55 <a class="pointer btn btn-default" ng-click="collapseAll()"> Collapse All </a> 56 </div> 57 </div> 58 </div> 59 60 <div ng-repeat="(index,failure) in currentFailures"> 61 <div class="row"> 62 <div class="col-lg-8"> 63 <div ng-click="toggleView(index)" style="cursor:pointer" > 64 <h4 ng-show="currentFailureView != consts.revisionFailuresView"> 65 <i class="fa" ng-class="getToggleClass(failure.hidden)"></i> 66 [[failure.groupingField]] 67 <span class="muted small"> <ng-pluralize count="failure.fields.length" when="{'one': '1 failure', 'other': '{} failures'}"></ng-pluralize></span> 68 </h4> 69 <div ng-show="currentFailureView == consts.revisionFailuresView" class="version-header-expanded" style="margin-top:15px"> 70 <div> 71 <i class="fa" ng-class="getToggleClass(failure.hidden)"></i> 72 <span class="btn btn-default btn-hash history-item-revision"> 73 <a href="/version/[[allVersions[failure.groupingField].id]]"> [[failure.groupingField.substring(0,5)]] </a> 74 </span> 75 [[allVersions[failure.groupingField].create_time | date: "MM/dd/yyyy 'at' h:mma"]] 76 </div> 77 <div style="margin-left:10px"> 78 <strong>[[allVersions[failure.groupingField].author]] - </strong> 79 [[allVersions[failure.groupingField].message.substring(0,100)]]<span ng-show="allVersions[failure.groupingField].message.length > 100">...</span> 80 <span class="muted small"> <ng-pluralize count="failure.fields.length" when="{'one': '1 failure', 'other': '{} failures'}"></ng-pluralize></span> 81 </div> 82 </div> 83 </div> 84 </div> 85 </div> 86 <div class="row"> 87 <div ng-show="!failure.hidden" class="col-lg-8"> 88 <table class="table table-new table-hover" style="margin-bottom:5px"> 89 <thead> 90 <tr> 91 <th style="width:4%"></th> 92 <th ng-repeat="headerField in currentHeaders" ng-click="setSelectedHeader(headerField)" style="width:[[widthPercentage()]]%"> 93 [[headerField.name]] <i class="fa" ng-class="selectedClass(headerField)" style="margin-left:2px;"></i> 94 </th> 95 </tr> 96 </thead> 97 <tbody> 98 <tr ng-repeat="field in failure.fields = (failure.fields | orderBy: selectedHeader.by: selectedHeader.order)"> 99 <td align="center"> 100 <a class="failure-link" ng-href="/task/[[field.task_id]]"> 101 <span class="tooltip-task-status failed" ng-class="task | statusFilter"> </span> 102 </a> 103 </td> 104 <td ng-repeat="(index, header) in currentHeaders"> 105 <a class="failure-link" ng-href="/task/[[field.task_id]]"> 106 [[getHeaderVal(field, index)]] 107 </a> 108 </td> 109 </tr> 110 </tbody> 111 </table> 112 </div> 113 </div> 114 </div> 115 </div> 116 </div> 117 </div> 118 <div class="row" ng-hide="tab != consts.gridView"> 119 <div class="row"></div> 120 <div id="popover"></div> 121 <div class="gridtable-small"> 122 <div class="top-header-row"> 123 <div class="header-cell" ng-repeat="task in taskNames" id="[['buildVariant' + $index]]"> 124 <span class="header-text"> 125 <a ng-href="/task_history/[[project]]/[[task]]">[[task]]</a> 126 </span> 127 </div> 128 </div> 129 <div class="tablerow" ng-repeat="buildVariant in buildVariants"> 130 <div class="header"> 131 <div class="taskNames" id="[['task' + $index]]">[[buildVariant]]</div> 132 </div> 133 <div class="cells"> 134 <div ng-repeat="task in taskNames" ng-class="'cell ' + getGridClass(buildVariant, task)" ng-mouseover="highlightHeader($parent.$parent.$index, $index)" bs-popover="'/static/partials/popover_content.html'" data-container="#popover" data-unique="1" ng-click="showTaskPopover(buildVariant, task, $event.target);"> </div> 135 </div> 136 </div> 137 </div> 138 </div> 139 </div> 140 {{end}}