github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/service/templates/task_history.html (about) 1 {{define "scripts"}} 2 <script src="{{Static "js" "task_history.js"}}?hash={{ StaticsMD5 }}"></script> 3 <script type="text/javascript"> 4 var failedTasks = {{.Data.FailedTests}} 5 var taskName = {{.Data.TaskName}} 6 var tasksByCommit = {{.Data.Tasks}} 7 var variants = {{.Data.Variants}} 8 var versions = {{.Data.Versions}} 9 var exhaustedBefore = {{.Data.ExhaustedBefore}} 10 var exhaustedAfter = {{.Data.ExhaustedAfter}} 11 var selectedRevision = {{.Data.SelectedRevision}} 12 </script> 13 {{end}} 14 15 {{define "title"}} 16 Evergreen - Task History 17 {{end}} 18 19 {{define "content"}} 20 <div id="content" class="container-fluid" ng-controller="TaskHistoryController" ng-init="init(project);"> 21 <div class="row"> 22 <div class="gridtable-timeline"> 23 <div class="task-history-gridtable gridtable-small" style="padding-top: 60px"> 24 <div class="col-lg-1"> 25 <button type="button" class="btn btn-info" ng-click="loadMore(false)" 26 ng-disabled="taskHistoryFilter.testsLoading" ng-hide="exhaustedAfter"> 27 <span ng-hide="taskHistoryFilter.testsLoading"> Load Newer Entries </span> 28 <span ng-show="taskHistoryFilter.testsLoading"> 29 Loading <span class="spinner"><i class="fa fa-spin fa-circle-o-notch"></i></span> 30 </span> 31 </button> 32 </div> 33 <div class="top-header-row locked" style="margin-top: -124px; padding-top: 124px; width: 60%"> 34 <div class="header-cell" 35 ng-repeat="bv in variants" 36 id="[['bv' + $index]]" 37 ng-class="variantInFilter(taskHistoryFilter.filter, bv) | conditional:'full-opacity':'semi-transparent'"> 38 <span class="header-text"> 39 <a ng-href="/build_variant/[[project]]/[[bv]]"> 40 [[ bv ]] 41 </a> 42 </span> 43 </div> 44 </div> 45 <div class="tablebody locked"> 46 <div class="tablerow" 47 ng-repeat="taskGroup in tasksByVariantByCommit" 48 style="margin-bottom: 0px;"> 49 <div ng-hide="hideInactiveVersions.get() && isTaskGroupInactive[taskGroup._id] || (!taskGroupHasTaskMatchingFilter(variants, taskGroup) && hideUnmatchingVersions.get())"> 50 <div class="header" 51 ng-class="taskGroupHasTaskMatchingFilter(variants, taskGroup) | conditional:'full-opacity':'semi-transparent'"> 52 <div ng-class="{'highlight-bg': taskGroup._id == selectedRevision}"> 53 <a href="/version/[[getVersionForCommit(taskGroup._id).id]]" title="[[ getVersionForCommit(taskGroup._id).message ]]">[[ getVersionForCommit(taskGroup._id).message ]]</a> 54 </div> 55 <div class="revision-date">[[ getVersionForCommit(taskGroup._id).create_time | date:"medium" ]]</div> 56 </div> 57 <div class="cells" style="height: 50px; margin-left: 9px"> 58 <div ng-repeat="bv in variants" 59 class="task-history-cell-wrapper column-[[$index]]"> 60 <a href="/task/[[getTestForVariant(taskGroup, bv)._id]]" 61 data-element-tooltip="getTaskTooltip(taskGroup, bv)" 62 data-animation="" 63 ng-class="variantInFilter(taskHistoryFilter.filter, bv) | 64 conditional:'full-opacity':'transparent'"> 65 <span ng-class="taskMatchesFilter(getTestForVariant(taskGroup, bv)) | conditional:'full-opacity':'semi-transparent'"> 66 <div ng-class="'cell ' + getGridClass(getTestForVariant(taskGroup, bv)) + ' ' + (taskMatchesFilter(getTestForVariant(taskGroup, bv)) | conditional:'':'task-doesnt-match')"></div> 67 </span> 68 </a> 69 </div> 70 <div style="clear: both"></div> 71 </div> 72 </div> 73 <div ng-show="hideInactiveVersions.get() && inactiveTaskGroupCount[$index] && !hideUnmatchingVersions.get() "> 74 <div class="header muted" style="text-align: center; position: relative"> 75 <div class="task-history-divider-line">z 76 </div> 77 <div class="task-history-inactive-count-wrapper"> 78 [[ inactiveTaskGroupCount[$index] ]] inactive 79 </div> 80 </div> 81 <div class="cells" style="height: 25px; margin-left: 9px"> 82 <div ng-repeat="bv in variants" 83 class="task-history-cell-wrapper column-[[$index]]" 84 style="height: 31px !important;"> 85 </div> 86 <div style="clear: both"></div> 87 </div> 88 </div> 89 </div> 90 </div> 91 </div> 92 <div class="filter-table"> 93 <div style="position: relative"> 94 <div> 95 <h3>Filter</h3> 96 <h5>By Tests:</h5> 97 98 <input ng-model="taskHistoryFilter.testsSearchString" 99 ng-change="taskHistoryFilter.searchTestNames()" 100 mci-focus="taskHistoryFilter.showTestNameResults()" 101 mci-blur="taskHistoryFilter.hideTestNameResults()" 102 mci-key-return="taskHistoryFilter.filterTest(taskHistoryFilter.testsSearchString, 'fail')"> 103 <i class="fa fa-plus" 104 style="cursor: pointer" 105 ng-click="taskHistoryFilter.filterTest(taskHistoryFilter.testsSearchString, 'fail')"></i> 106 <div class="autocomplete-container" ng-show="taskHistoryFilter.testsSearchDisplay"> 107 <div class="autocomplete-element" 108 ng-repeat="testName in taskHistoryFilter.testsSearchResults" 109 ng-click="taskHistoryFilter.filterTest(testName, 'fail')"> 110 [[ testName ]] 111 </div> 112 </div> 113 <div ng-repeat="(test, status) in taskHistoryFilter.filter.tests" class="filter-atom"> 114 <span ng-click="taskHistoryFilter.removeTestFilter(test)" style="cursor: pointer"> 115 <i class="fa fa-remove"></i> 116 </span> 117 [[ test ]] 118 <select ng-options="status for status in ['pass', 'fail', 'ran']" 119 ng-model="taskHistoryFilter.filter.tests[test]" 120 ng-change=" taskHistoryFilter.setLocationHash(); 121 taskHistoryFilter.queryServer();"></select> 122 </div> 123 124 <h3> Options <span class="small"> ([[tasksByVariantByCommit.length]] Versions)</span></h3> 125 126 <div class="checkbox"> 127 <label> 128 <input type="checkbox" ng-model="hideInactiveVersions.v"> 129 Hide Inactive Versions 130 </label> 131 </div> 132 <div ng-hide="hideUnmatchingVersions.hidden()" class="checkbox"> 133 <label> 134 <input type="checkbox" ng-model="hideUnmatchingVersions.v"> 135 Hide Unmatched Versions 136 </label> 137 </div> 138 </div> 139 <br> 140 <div style="display: none"> 141 <h4>Build Variants</h4> 142 143 <input ng-model="taskHistoryFilter.buildVariantSearchString" 144 ng-change="taskHistoryFilter.searchBuildVariants(variants)" 145 mci-focus="taskHistoryFilter.showBuildVariantResults()" 146 mci-blur="taskHistoryFilter.hideBuildVariantResults()" 147 mci-key-return="taskHistoryFilter.filterBuildVariant(taskHistoryFilter.buildVariantSearchString)"> 148 <i class="fa fa-plus" 149 style="cursor: pointer" 150 ng-click="taskHistoryFilter.filterBuildVariant(taskHistoryFilter.buildVariantSearchString)"></i> 151 <div class="autocomplete-container" 152 ng-show="taskHistoryFilter.buildVariantSearchDisplay"> 153 <div class="autocomplete-element" 154 ng-repeat="variant in taskHistoryFilter.buildVariantSearchResults" 155 ng-click="taskHistoryFilter.filterBuildVariant(variant)"> 156 [[ variant ]] 157 </div> 158 </div> 159 <div ng-repeat="variant in taskHistoryFilter.filter.buildVariants" 160 class="filter-atom"> 161 <span ng-click="taskHistoryFilter.removeBuildVariant($index)" style="cursor: pointer"> 162 <i class="fa fa-remove"></i> 163 </span> 164 [[ variant ]] 165 </div> 166 </div> 167 </div> 168 </div> 169 </div> 170 </div> 171 <div class="row" style="margin-top: 10px"> 172 <div class="col-lg-3"> 173 <button type="button" class="btn btn-info" ng-click="loadMore(true)" 174 ng-hide="exhaustedBefore" ng-disabled="taskHistoryFilter.testsLoading"> 175 <span ng-hide="taskHistoryFilter.testsLoading"> Load Older Entries </span> 176 <span ng-show="taskHistoryFilter.testsLoading"> 177 Loading <span class="spinner"><i class="fa fa-spin fa-circle-o-notch"></i></span> 178 </span> 179 </button> 180 <notify-box ng-init="destination='errorNearButton'"></notify-box> 181 </div> 182 </div> 183 <div class="row"> </div> 184 </div> 185 {{end}} 186