]> git.lizzy.rs Git - rust.git/blob - util/gh-pages/index.html
Add First Draft of Lint Listing Page
[rust.git] / util / gh-pages / index.html
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4     <meta charset="UTF-8">
5     <title>Clippy</title>
6
7     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/css/bootstrap.min.css"/>
8     <meta name="viewport" content="width=device-width, initial-scale=1"/>
9 </head>
10 <body>
11     <div class="container" ng-app="clippy" ng-controller="lintList">
12         <div class="page-header">
13             <h1>ALL the Clippy Lints</h1>
14         </div>
15
16         <div class="alert alert-info" role="alert" ng-if="loading">
17             Loading&#x2026;
18         </div>
19         <div class="alert alert-danger" role="alert" ng-if="error">
20             Error loading commits!
21         </div>
22
23         <div class="panel panel-default" ng-show="data">
24             <div class="panel-body row">
25                 <div class="col-md-6 form-inline">
26                     <div class="form-group">
27                         <label for="filter-level">Level</label>
28                         <select class="form-control" id="filter-level" ng-model="level.level">
29                             <option value="">All</option>
30                             <option value="Allow">Allow</option>
31                             <option value="Warn">Warn</option>
32                             <option value="Deny">Deny</option>
33                         </select>
34                     </div>
35                 </div>
36                 <div class="col-md-6">
37                     <div class="input-group">
38                         <span class="input-group-addon" id="filter-label">Filter:</span>
39                         <input type="text" class="form-control" placeholder="Keywords or search string" aria-describedby="filter-label" ng-model="search" />
40                         <span class="input-group-btn">
41                             <button class="btn btn-default" type="button" ng-click="search = ''">
42                                 Clear
43                             </button>
44                         </span>
45                     </div>
46                 </div>
47             </div>
48         </div>
49
50         <article class="panel panel-default" ng-repeat="lint in data | filter:level | filter:search | orderBy:'id' track by lint.id">
51             <header class="panel-heading" ng-click="open[lint.id] = !open[lint.id]">
52                 <button class="btn btn-default btn-sm pull-right" style="margin-top: -6px;">
53                     <span ng-show="open[lint.id]">&minus;</span>
54                     <span ng-hide="open[lint.id]">&plus;</span>
55                 </button>
56
57                 <h2 class="panel-title">
58                     {{lint.id}}
59                     <span ng-if="lint.level == 'Allow'" class="label label-info">Allow</span>
60                     <span ng-if="lint.level == 'Warn'" class="label label-warning">Warn</span>
61                     <span ng-if="lint.level == 'Deny'" class="label label-danger">Deny</span>
62                 </h2>
63             </header>
64
65             <ul class="list-group" ng-if="lint.docs" ng-class="{collapse: true, in: open[lint.id]}">
66                 <li class="list-group-item" ng-repeat="(title, text) in lint.docs">
67                     <h4 class="list-group-item-heading">
68                         {{title}}
69                     </h4>
70                     <div class="list-group-item-text" ng-bind-html="text | markdown"></div>
71                 </li>
72             </ul>
73         </article>
74     </div>
75
76     <a href="https://github.com/Manishearth/rust-clippy">
77         <img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"/>
78     </a>
79     
80     <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.2/marked.min.js"></script>
81     <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.12/angular.min.js"></script>
82     <script>
83     (function () {
84         angular.module("clippy", [])
85         .filter('markdown', function ($sce) {
86             return function (text) {
87                 if (typeof text !== 'string') {
88                     text = ''
89                 };
90
91                 return $sce.trustAsHtml(
92                     marked(text)
93                 );
94             };
95         })
96         .controller("lintList", function ($scope, $http) {
97             // Get data
98             $scope.open = {};
99             $scope.loading = true;
100
101             $http.get('./lints.json')
102             .success(function (data) {
103                 $scope.data = data;
104                 $scope.loading = false;
105             })
106             .error(function (data) {
107                 $scope.error = data;
108                 $scope.loading = false;
109             });
110         })
111     })();
112     </script>
113 </body>
114 </html>