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>