github.com/abayer/test-infra@v0.0.5/mungegithub/cherrypick/www/index.html (about) 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <link rel="stylesheet" href="https://cdn.gitcdn.link/cdn/angular/bower-material/v1.1.0-rc4/angular-material.min.css" type="text/css"> 6 <link rel="stylesheet" href="md-data-table.min.css" type="text/css"> 7 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=RobotoDraft:300,400,500,700,400italic" type="text/css"> 8 <link rel="stylesheet" href="style.css" type="text/css"> 9 <link rel="shortcut icon" href="https://raw.githubusercontent.com/kubernetes/kubernetes/master/logo/logo.png"> 10 <meta name="viewport" content="initial-scale=1"> 11 12 <title>Kubernetes Cherrypick Queue</title> 13 </head> 14 15 <body ng-app="CherrypickModule" ng-controller="CPCntl as cntl"> 16 <!-- Indent the whole thing --> 17 <md-content class="md-padding" layout="column"> 18 <!-- Display the white border around the indented portion --> 19 <md-content class="md-whiteframe-z2"> 20 <md-toolbar layout="row" layout-align="space-around center"> 21 <h1 class="md-display-2">Cherrypick Queue Status</h1> 22 <a ng-href="https://k8s.io"><img src="https://raw.githubusercontent.com/kubernetes/kubernetes/master/logo/logo.png" class="titleLogo"></a> 23 </md-toolbar> 24 <md-content class="md-padding"> 25 <md-tabs md-selected="cntl.selected" md-dynamic-height md-border-bottom> 26 27 <md-tab label="Queue" md-on-select="cntl.selectTab('queue')"> 28 <md-toolbar class="md-whiteframe-z2"> 29 <h2 class="md-toolbar-tools">PRs proposed to be cherrypicked ({{cntl.queueData.MergedAndApproved.length + cntl.queueData.Merged.length + cntl.queueData.Unmerged.length}})</h2> 30 </md-toolbar> 31 <md-list flex> 32 <md-subheader>Merged And Approved ({{cntl.queueData.MergedAndApproved.length}})</md-subheader> 33 <md-list-item class="md-2-line" ng-repeat="pr in cntl.queueData.MergedAndApproved track by pr.Number"> 34 <a class="md-avatar" ng-href="https://github.com/kubernetes/kubernetes/pulls/{{pr.Login}}"> 35 <img ng-src="{{pr.AvatarURL}}" alt="{{pr.Login}}"> 36 </a> 37 <md-content class="md-list-item-text" layout="column"> 38 <h3 class="md-body-1"> 39 <a ng-href="{{pr.URL}}">#{{pr.Number}}: {{pr.Title}}</a> 40 </h3> 41 <h4 class="md-body2"> 42 {{pr.ExtraInfo}} 43 </h4> 44 </md-content> 45 </md-list-item> 46 <md-divider></md-divider> 47 <md-subheader>Merged ({{cntl.queueData.Merged.length}})</md-subheader> 48 <md-list-item class="md-2-line" ng-repeat="pr in cntl.queueData.Merged track by pr.Number"> 49 <a class="md-avatar" ng-href="https://github.com/kubernetes/kubernetes/pulls/{{pr.Login}}"> 50 <img ng-src="{{pr.AvatarURL}}" alt="{{pr.Login}}"> 51 </a> 52 <md-content class="md-list-item-text" layout="column"> 53 <h3 class="md-body-1"> 54 <a ng-href="{{pr.URL}}">#{{pr.Number}}: {{pr.Title}}</a> 55 </h3> 56 <h4 class="md-body2"> 57 {{pr.ExtraInfo}} 58 </h4> 59 </md-content> 60 </md-list-item> 61 <md-divider></md-divider> 62 <md-subheader>Unmerged ({{cntl.queueData.Unmerged.length}})</md-subheader> 63 <md-list-item class="md-2-line" ng-repeat="pr in cntl.queueData.Unmerged track by pr.Number"> 64 <a class="md-avatar" ng-href="https://github.com/kubernetes/kubernetes/pulls/{{pr.Login}}"> 65 <img ng-src="{{pr.AvatarURL}}" alt="{{pr.Login}}"> 66 </a> 67 <md-content class="md-list-item-text" layout="column"> 68 <h3 class="md-body-1"> 69 <a ng-href="{{pr.URL}}">#{{pr.Number}}: {{pr.Title}}</a> 70 </h3> 71 <h4 class="md-body2"> 72 {{pr.ExtraInfo}} 73 </h4> 74 </md-content> 75 </md-list-item> 76 <md-divider></md-divider> 77 <md-subheader>Other PRs of potential Interest</md-subheader> 78 <md-list-item> 79 <md-content class="md-padding"> 80 <a ng-href='https://github.com/kubernetes/kubernetes/pulls?&q=is:pr+is:open+-base:master+-label:cherrypick-candidate+-label:cherrypick-approved'>Can be found here</a> 81 </md-content> 82 </md-list-item> 83 </md-list> 84 </md-tab> 85 86 <md-tab label="Raw" md-on-select="cntl.selectTab('raw')"> 87 <md-toolbar class="md-whiteframe-z2"> 88 <h2 class="md-toolbar-tools">Raw Merged and Approved (does not automatically refresh)</h2> 89 </md-toolbar> 90 <md-list class="md-dense" flex> 91 <md-subheader class="md-no-sticky">All Info</md-subheader> 92 <md-list-item class="md-2-line" ng-repeat="pr in cntl.raw track by pr.Number"> 93 <md-content class="md-list-item-text" layout="column"> 94 <h3>#{{pr.Number}}: {{pr.Title}}</h3> 95 <p>{{pr.SHA}}</p> 96 </md-content> 97 </md-list-item> 98 <md-divider></md-divider> 99 <md-subheader class="md-no-sticky">SHAs</md-subheader> 100 <md-list-item ng-repeat="pr in cntl.raw track by pr.Number"> 101 <md-content class="md-list-item-text" layout="column"> 102 {{pr.SHA}} 103 </md-content> 104 </md-list-item> 105 <md-divider></md-divider> 106 <md-subheader class="md-no-sticky">Titles</md-subheader> 107 <md-list-item ng-repeat="pr in cntl.raw track by pr.Number"> 108 <md-content class="md-list-item-text" layout="column"> 109 #{{pr.Number}}: {{pr.Title}} 110 </md-content> 111 </md-list-item> 112 </md-list> 113 </md-tab> 114 115 <md-tab label="Info" md-on-select="cntl.selectTab('info')"> 116 <md-content class="md-padding"> 117 <md-tabs md-dynamic-height md-border-bottom> 118 119 <md-tab label="Purpose"> 120 <md-content class="md-whiteframe-z2"> 121 <md-toolbar> 122 <h2 class="md-toolbar-tools">How PRs get ordered in the queue</h2> 123 </md-toolbar> 124 </md-content> 125 <md-content class="md-padding"> 126 <span id="queue-info"></span> 127 </md-content> 128 </md-tab> 129 130 <md-tab label="Bot Stats"> 131 <md-content class="md-whiteframe-z2"> 132 <md-toolbar> 133 <h2 class="md-toolbar-tools">Statistics About the Bot</h2> 134 </md-toolbar> 135 </md-content> 136 <br> 137 <h3 class=md-title>Next Run Loop: <span id="next-run-time"></span></h3> 138 <h3 class=md-title>API Calls Per Second: <span id="api-calls-per-sec"></span></h3> 139 <h3 class=md-title>Github Rate Limit Count: <span id="github-api-limit-count"></span></h3> 140 <h3 class=md-title>Github Rate Limit Next Reset: <span id="github-api-limit-reset"></span></h3> 141 <md-content class="md-whiteframe-z2"> 142 <md-data-table-container> 143 <md-data-table-toolbar> 144 <h2 class="md-title">API Calls During Last Loop</h2> 145 </md-data-table-toolbar> 146 <table md-data-table class="md-primary"> 147 <thead md-order="cntl.StatOrder"> 148 <tr> 149 <th order-by="$key" name="Call"></th> 150 <th order-by="Count" name="Count ({{ cntl.APICount }})" numeric descend-first></th> 151 <th order-by="CachedCount" name="Cached Count ({{ cntl.CachedAPICount }})" numeric descend-first></th> 152 </tr> 153 </thead> 154 <tbody> 155 <tr ng-repeat="stat in cntl.botStats | toArray | orderBy: cntl.StatOrder track by stat.$key"> 156 <td>{{stat.$key}}</td> 157 <td>{{stat.Count}}</td> 158 <td>{{stat.CachedCount}}</td> 159 </tr> 160 </tbody> 161 </table> 162 </md-data-table-container> 163 </md-content> 164 </md-tab> 165 </md-tabs> 166 </md-content> 167 </md-tab> 168 169 </md-tabs> 170 </md-content> 171 </md-content> 172 </md-content> 173 <!-- Angular Material Dependencies --> 174 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js" type="text/javascript"></script> 175 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js" type="text/javascript"></script> 176 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js" type="text/javascript"></script> 177 <script src="https://cdn.gitcdn.link/cdn/angular/bower-material/v1.1.0-rc4/angular-material.min.js" type="text/javascript"></script> 178 <script src="md-data-table.min.js" type="text/javascript"></script> 179 <script src="toArrayFilter.js" type="text/javascript"></script> 180 <script src="script.js" type="text/javascript"></script> 181 </body> 182 183 </html>