routes_coverage 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +5 -0
- data/README.md +17 -55
- data/Rakefile +14 -0
- data/compiled_assets/routes.css +320 -0
- data/compiled_assets/routes.js +526 -0
- data/gemfiles/rails_40.gemfile +4 -1
- data/gemfiles/rails_40.gemfile.lock +12 -1
- data/gemfiles/rails_40_rspec.gemfile +4 -1
- data/gemfiles/rails_40_rspec.gemfile.lock +12 -1
- data/gemfiles/rails_40_simplecov.gemfile +3 -1
- data/gemfiles/rails_40_simplecov.gemfile.lock +4 -1
- data/gemfiles/rails_42.gemfile +4 -1
- data/gemfiles/rails_42.gemfile.lock +11 -1
- data/gemfiles/rails_5.gemfile +4 -1
- data/gemfiles/rails_5.gemfile.lock +12 -1
- data/gemfiles/rails_51.gemfile +4 -1
- data/gemfiles/rails_51.gemfile.lock +12 -1
- data/lib/routes_coverage/adapters/atexit.rb +0 -2
- data/lib/routes_coverage/formatters/html.rb +116 -0
- data/lib/routes_coverage/formatters/html_views/layout.erb +18 -29
- data/lib/routes_coverage/formatters/html_views/route_group.erb +3 -0
- data/lib/routes_coverage/version.rb +1 -1
- data/lib/routes_coverage.rb +19 -5
- metadata +5 -3
- data/lib/routes_coverage/formatters/simplecov_html.rb +0 -97
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 196f0c90f40628cebcdbb0eaf0589b417beb4cb0
|
4
|
+
data.tar.gz: 63355da36cb4e70ce4f49bfb546c5bd87b68000c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a24baa38a0ca0d879d80c4cbae233d14c792956bf65f9dc5d6066a28730c5cc2607e4c40cf843d83d0be724065b5a9f8794d460e04c8a7a6a82e38c8182d408
|
7
|
+
data.tar.gz: 7a808aeb2315c8dcf08a9aa22f28e521b7163fe0c0c68525f295a0a83ffefc4a531a23f3d6618ae5bf70fdedc981bd37a8f69b85125b00a8b6b1cf9cfc2ceb1e
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,8 @@
|
|
4
4
|
|
5
5
|
Sometimes you need to know which routes are covered by your rails test suite.
|
6
6
|
|
7
|
-
(
|
7
|
+

|
8
|
+
|
8
9
|
|
9
10
|
## Installation
|
10
11
|
|
@@ -24,73 +25,30 @@ Or install it yourself as:
|
|
24
25
|
|
25
26
|
## Usage
|
26
27
|
|
27
|
-
Install the gem and run your tests
|
28
|
-
|
29
|
-
# Running tests:
|
30
|
-
|
31
|
-
....
|
32
|
-
|
33
|
-
Finished tests in 0.037646s, 106.2530 tests/s, 106.2530 assertions/s.
|
34
|
-
|
35
|
-
4 tests, 4 assertions, 0 failures, 0 errors, 0 skips
|
36
|
-
Routes coverage is 11.1% (1 of 9 routes hit at 1.0 hits average)
|
37
|
-
|
38
|
-
To get more detailed information somewhere in your test helper add
|
39
|
-
|
40
|
-
```ruby
|
41
|
-
RoutesCoverage.settings.format = :full_text
|
42
|
-
```
|
43
|
-
|
44
|
-
or into RSpec config:
|
45
|
-
|
46
|
-
```ruby
|
47
|
-
RSpec.configure do |config|
|
48
|
-
config.routes_coverage.format = :full_text
|
49
|
-
end
|
50
|
-
```
|
51
|
-
|
52
|
-
Routes coverage is 11.1% (1 of 9 routes hit at 1.0 hits average)
|
53
|
-
Coverage failed. Need at least 8
|
28
|
+
Install the gem and run your tests, then open generated report file `coverage/routes.html`.
|
54
29
|
|
55
|
-
Covered routes:
|
56
|
-
Verb URI Pattern Controller#Action Hits
|
57
|
-
POST /reqs/current(.:format) dummy#current 1
|
58
|
-
|
59
|
-
Pending routes:
|
60
|
-
Verb URI Pattern Controller#Action
|
61
|
-
GET /reqs(.:format) dummy#index
|
62
|
-
POST /reqs(.:format) dummy#create
|
63
|
-
GET /reqs/new(.:format) dummy#new
|
64
|
-
GET /reqs/:id/edit(.:format) dummy#edit
|
65
|
-
GET /reqs/:id(.:format) dummy#show
|
66
|
-
PATCH /reqs/:id(.:format) dummy#update
|
67
|
-
PUT /reqs/:id(.:format) dummy#update
|
68
|
-
DELETE /reqs/:id(.:format) dummy#destroy
|
69
|
-
|
70
|
-
### Usage with SimpleCov
|
71
|
-
|
72
|
-
Use `RoutesCoverage.settings.format = :simplecov_html` along with simplecov to generate a html report like this:
|
73
|
-
|
74
|
-

|
75
|
-
|
76
|
-
at the moment it shares styles with simplecov's one,
|
77
|
-
code coverage report does not need to be generated each time as long as you have `/coverage` directory with all the resources.
|
78
30
|
|
79
31
|
### Configuration
|
80
32
|
|
81
|
-
|
33
|
+
By default html report with no groupping is generated. If you need more funtionality - options in `RoutesCoverage.settings` or rspec's `config.routes_coverage`:
|
82
34
|
|
83
35
|
```ruby
|
84
36
|
RSpec.configure do |config|
|
85
|
-
config.routes_coverage.format = :full_text
|
86
37
|
config.routes_coverage.exclude_patterns << %r{PATCH /reqs} # excludes all requests matching regex
|
87
38
|
config.routes_coverage.exclude_namespaces << 'somenamespace' # excludes /somenamespace/*
|
39
|
+
|
40
|
+
config.groups["Some Route group title"] = %r{^/somespace/}
|
41
|
+
config.groups["Admin"] = %r{^/admin/}
|
42
|
+
|
43
|
+
config.routes_coverage.format = :html # html is default, others are :full_text and :summary_text, or your custom formatter class
|
44
|
+
|
88
45
|
config.routes_coverage.minimum_coverage = 80 # %, your coverage goal
|
89
46
|
config.routes_coverage.round_precision = 0 # just round to whole percents
|
90
47
|
end
|
91
48
|
```
|
49
|
+
Excluded routes do not show in pending, but are shown if they're hit.
|
92
50
|
|
93
|
-
|
51
|
+
If rspec is not your choice - use
|
94
52
|
|
95
53
|
```ruby
|
96
54
|
RoutesCoverage.configure do |config|
|
@@ -99,8 +57,12 @@ RoutesCoverage.configure do |config|
|
|
99
57
|
end
|
100
58
|
```
|
101
59
|
|
60
|
+
or
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
RoutesCoverage.settings.format = :full_text
|
64
|
+
```
|
102
65
|
|
103
|
-
Excluded routes do not show in pending, but are shown if they're hit.
|
104
66
|
|
105
67
|
|
106
68
|
## Development
|
data/Rakefile
CHANGED
@@ -19,3 +19,17 @@ task :default => :spec
|
|
19
19
|
|
20
20
|
$:.push File.expand_path("../lib", __FILE__)
|
21
21
|
require 'routes_coverage/version'
|
22
|
+
|
23
|
+
namespace :assets do
|
24
|
+
desc "Compiles all assets"
|
25
|
+
task :compile do
|
26
|
+
puts "Compiling assets"
|
27
|
+
require "sprockets"
|
28
|
+
assets = Sprockets::Environment.new
|
29
|
+
assets.append_path "assets/javascripts"
|
30
|
+
assets.append_path "assets/stylesheets"
|
31
|
+
compiled_path = "compiled_assets"
|
32
|
+
assets["application.js"].write_to("#{compiled_path}/routes.js")
|
33
|
+
assets["application.css"].write_to("#{compiled_path}/routes.css")
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,320 @@
|
|
1
|
+
/* -----------------------------------------------------------------------
|
2
|
+
|
3
|
+
|
4
|
+
Blueprint CSS Framework 0.9
|
5
|
+
http://blueprintcss.org
|
6
|
+
|
7
|
+
* Copyright (c) 2007-Present. See LICENSE for more info.
|
8
|
+
* See README for instructions on how to use Blueprint.
|
9
|
+
* For credits and origins, see AUTHORS.
|
10
|
+
* This is a compressed file. See the sources in the 'src' directory.
|
11
|
+
|
12
|
+
----------------------------------------------------------------------- */
|
13
|
+
|
14
|
+
/* reset.css */
|
15
|
+
|
16
|
+
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
|
17
|
+
article, aside, dialog, figure, footer, header, hgroup, nav, section {display:block;}
|
18
|
+
body {line-height:1.5;}
|
19
|
+
table {border-collapse:separate;border-spacing:0;}
|
20
|
+
caption, th, td {text-align:left;font-weight:normal;}
|
21
|
+
table, td, th {vertical-align:middle;}
|
22
|
+
blockquote:before, blockquote:after, q:before, q:after {content:"";}
|
23
|
+
blockquote, q {quotes:"" "";}
|
24
|
+
a img {border:none;}
|
25
|
+
|
26
|
+
/* typography.css */
|
27
|
+
html {font-size:100.01%;}
|
28
|
+
body {font-size:82%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
|
29
|
+
h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
|
30
|
+
h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
|
31
|
+
h2 {font-size:2em;margin-bottom:0.75em;}
|
32
|
+
h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
|
33
|
+
h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
|
34
|
+
h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
|
35
|
+
h6 {font-size:1em;font-weight:bold;}
|
36
|
+
h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
|
37
|
+
p {margin:0 0 1.5em;}
|
38
|
+
p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
|
39
|
+
p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
|
40
|
+
a:focus, a:hover {color:#000;}
|
41
|
+
a {color:#009;text-decoration:underline;}
|
42
|
+
blockquote {margin:1.5em;color:#666;font-style:italic;}
|
43
|
+
strong {font-weight:bold;}
|
44
|
+
em, dfn {font-style:italic;}
|
45
|
+
dfn {font-weight:bold;}
|
46
|
+
sup, sub {line-height:0;}
|
47
|
+
abbr, acronym {border-bottom:1px dotted #666;}
|
48
|
+
address {margin:0 0 1.5em;font-style:italic;}
|
49
|
+
del {color:#666;}
|
50
|
+
pre {margin:1.5em 0;white-space:pre;}
|
51
|
+
pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
|
52
|
+
li ul, li ol {margin:0;}
|
53
|
+
ul, ol {margin:0 1.5em 1.5em 0;padding-left:3.333em;}
|
54
|
+
ul {list-style-type:disc;}
|
55
|
+
ol {list-style-type:decimal;}
|
56
|
+
dl {margin:0 0 1.5em 0;}
|
57
|
+
dl dt {font-weight:bold;}
|
58
|
+
dd {margin-left:1.5em;}
|
59
|
+
table {margin-bottom:1.4em;width:100%;}
|
60
|
+
th {font-weight:bold;}
|
61
|
+
thead th {background:#c3d9ff;}
|
62
|
+
th, td, caption {padding:4px 10px 4px 5px;}
|
63
|
+
tr.even td {background:#efefef;}
|
64
|
+
tfoot {font-style:italic;}
|
65
|
+
caption {background:#eee;}
|
66
|
+
.small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
|
67
|
+
.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
|
68
|
+
.hide {display:none;}
|
69
|
+
.quiet {color:#666;}
|
70
|
+
.loud {color:#000;}
|
71
|
+
.highlight {background:#ff0;}
|
72
|
+
.added {background:#060;color:#fff;}
|
73
|
+
.removed {background:#900;color:#fff;}
|
74
|
+
.first {margin-left:0;padding-left:0;}
|
75
|
+
.last {margin-right:0;padding-right:0;}
|
76
|
+
.top {margin-top:0;padding-top:0;}
|
77
|
+
.bottom {margin-bottom:0;padding-bottom:0;}
|
78
|
+
|
79
|
+
/* forms.css */
|
80
|
+
label {font-weight:bold;}
|
81
|
+
fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
|
82
|
+
legend {font-weight:bold;font-size:1.2em;}
|
83
|
+
input[type=text], input[type=password], input.text, input.title, textarea, select {background-color:#fff;border:1px solid #bbb;}
|
84
|
+
input[type=text]:focus, input[type=password]:focus, input.text:focus, input.title:focus, textarea:focus, select:focus {border-color:#666;}
|
85
|
+
input[type=text], input[type=password], input.text, input.title, textarea, select {margin:0.5em 0;}
|
86
|
+
input.text, input.title {width:300px;padding:5px;}
|
87
|
+
input.title {font-size:1.5em;}
|
88
|
+
textarea {width:390px;height:250px;padding:5px;}
|
89
|
+
input[type=checkbox], input[type=radio], input.checkbox, input.radio {position:relative;top:.25em;}
|
90
|
+
form.inline {line-height:3;}
|
91
|
+
form.inline p {margin-bottom:0;}
|
92
|
+
.error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;}
|
93
|
+
.error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
|
94
|
+
.notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
|
95
|
+
.success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
|
96
|
+
.error a {color:#8a1f11;}
|
97
|
+
.notice a {color:#514721;}
|
98
|
+
.success a {color:#264409;}
|
99
|
+
.box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
|
100
|
+
hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
|
101
|
+
hr.space {background:#fff;color:#fff;visibility:hidden;}
|
102
|
+
.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
|
103
|
+
.clearfix, .container {display:block;}
|
104
|
+
.clear {clear:both;}
|
105
|
+
@charset "UTF-8";
|
106
|
+
.ui-icon {
|
107
|
+
display: block; }
|
108
|
+
.ui-icon.ui-icon-triangle-1-n:before {
|
109
|
+
content: "🔺"; }
|
110
|
+
.ui-icon.ui-icon-triangle-1-s:before {
|
111
|
+
content: "🔻"; }
|
112
|
+
.ui-icon.ui-icon-carat-1-n:before {
|
113
|
+
content: "△"; }
|
114
|
+
.ui-icon.ui-icon-carat-1-s:before {
|
115
|
+
content: "▽"; }
|
116
|
+
/*
|
117
|
+
* jQuery UI CSS Framework @VERSION
|
118
|
+
*
|
119
|
+
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
120
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
121
|
+
* http://jquery.org/license
|
122
|
+
*
|
123
|
+
* http://docs.jquery.com/UI/Theming/API
|
124
|
+
*/
|
125
|
+
|
126
|
+
/* Layout helpers
|
127
|
+
----------------------------------*/
|
128
|
+
|
129
|
+
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
|
130
|
+
.ui-helper-clearfix { display: inline-block; }
|
131
|
+
/* required comment for clearfix to work in Opera \*/
|
132
|
+
* html .ui-helper-clearfix { height:1%; }
|
133
|
+
.ui-helper-clearfix { display:block; }
|
134
|
+
/* end clearfix */
|
135
|
+
|
136
|
+
|
137
|
+
/* Component containers
|
138
|
+
----------------------------------*/
|
139
|
+
.ui-widget-header {
|
140
|
+
border: 1px solid #aaaaaa;
|
141
|
+
background: #cccccc;
|
142
|
+
/*TODO: gradient?*/
|
143
|
+
color: #222222; font-weight: bold;
|
144
|
+
}
|
145
|
+
.ui-widget-header a { color: #222222; }
|
146
|
+
|
147
|
+
/* Interaction states
|
148
|
+
----------------------------------*/
|
149
|
+
.ui-state-default, .ui-widget-header .ui-state-default {
|
150
|
+
border: 1px solid #d3d3d3;
|
151
|
+
background: #e6e6e6;
|
152
|
+
/*TODO: gradient?*/
|
153
|
+
font-weight: normal; color: #555555;
|
154
|
+
}
|
155
|
+
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
|
156
|
+
|
157
|
+
/* Interaction Cues
|
158
|
+
----------------------------------*/
|
159
|
+
.ui-state-disabled { cursor: default !important; }
|
160
|
+
.ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
161
|
+
|
162
|
+
|
163
|
+
/* Misc visuals
|
164
|
+
----------------------------------*/
|
165
|
+
|
166
|
+
/* Corner radius */
|
167
|
+
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
|
168
|
+
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
|
169
|
+
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
|
170
|
+
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
171
|
+
|
172
|
+
/*
|
173
|
+
unused:
|
174
|
+
.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
|
175
|
+
.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
176
|
+
.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
177
|
+
.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
|
178
|
+
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
|
179
|
+
*/
|
180
|
+
#loading {
|
181
|
+
position: fixed;
|
182
|
+
color: white;
|
183
|
+
left: 40%;
|
184
|
+
top: 50%; }
|
185
|
+
|
186
|
+
a {
|
187
|
+
color: #333;
|
188
|
+
text-decoration: none; }
|
189
|
+
a:hover {
|
190
|
+
color: #000;
|
191
|
+
text-decoration: underline; }
|
192
|
+
|
193
|
+
body {
|
194
|
+
font-family: "Lucida Grande", Helvetica, "Helvetica Neue", Arial, sans-serif;
|
195
|
+
padding: 12px;
|
196
|
+
background-color: #333; }
|
197
|
+
|
198
|
+
h1, h2, h3, h4 {
|
199
|
+
color: #1C2324;
|
200
|
+
margin: 0;
|
201
|
+
padding: 0;
|
202
|
+
margin-bottom: 12px; }
|
203
|
+
|
204
|
+
table {
|
205
|
+
width: 100%; }
|
206
|
+
|
207
|
+
#content {
|
208
|
+
clear: left;
|
209
|
+
background-color: white;
|
210
|
+
border: 2px solid #ddd;
|
211
|
+
border-top: 8px solid #ddd;
|
212
|
+
padding: 18px;
|
213
|
+
-webkit-border-bottom-left-radius: 5px;
|
214
|
+
-webkit-border-bottom-right-radius: 5px;
|
215
|
+
-webkit-border-top-right-radius: 5px;
|
216
|
+
-moz-border-radius-bottomleft: 5px;
|
217
|
+
-moz-border-radius-bottomright: 5px;
|
218
|
+
-moz-border-radius-topright: 5px;
|
219
|
+
border-bottom-left-radius: 5px;
|
220
|
+
border-bottom-right-radius: 5px;
|
221
|
+
border-top-right-radius: 5px; }
|
222
|
+
|
223
|
+
.dataTables_filter, .dataTables_info {
|
224
|
+
padding: 2px 6px; }
|
225
|
+
|
226
|
+
abbr.timeago {
|
227
|
+
text-decoration: none;
|
228
|
+
border: none;
|
229
|
+
font-weight: bold; }
|
230
|
+
|
231
|
+
.timestamp {
|
232
|
+
float: right;
|
233
|
+
color: #ddd; }
|
234
|
+
|
235
|
+
.group_tabs {
|
236
|
+
list-style: none;
|
237
|
+
float: left;
|
238
|
+
margin: 0;
|
239
|
+
padding: 0; }
|
240
|
+
.group_tabs li {
|
241
|
+
display: inline;
|
242
|
+
float: left; }
|
243
|
+
.group_tabs li a {
|
244
|
+
font-family: Helvetica, Arial, sans-serif;
|
245
|
+
display: block;
|
246
|
+
float: left;
|
247
|
+
text-decoration: none;
|
248
|
+
padding: 4px 8px;
|
249
|
+
background-color: #aaa;
|
250
|
+
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#dddddd), to(#aaaaaa));
|
251
|
+
background: -moz-linear-gradient(#dddddd, #aaaaaa);
|
252
|
+
background: linear-gradient(#dddddd, #aaaaaa);
|
253
|
+
text-shadow: #e5e5e5 1px 1px 0px;
|
254
|
+
border-bottom: none;
|
255
|
+
color: #333;
|
256
|
+
font-weight: bold;
|
257
|
+
margin-right: 8px;
|
258
|
+
border-top: 1px solid #efefef;
|
259
|
+
-webkit-border-top-left-radius: 2px;
|
260
|
+
-webkit-border-top-right-radius: 2px;
|
261
|
+
-moz-border-radius-topleft: 2px;
|
262
|
+
-moz-border-radius-topright: 2px;
|
263
|
+
border-top-left-radius: 2px;
|
264
|
+
border-top-right-radius: 2px; }
|
265
|
+
.group_tabs li a:hover {
|
266
|
+
background-color: #ccc;
|
267
|
+
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#eeeeee), to(#aaaaaa));
|
268
|
+
background: -moz-linear-gradient(#eeeeee, #aaaaaa);
|
269
|
+
background: linear-gradient(#eeeeee, #aaaaaa); }
|
270
|
+
.group_tabs li a:active {
|
271
|
+
padding-top: 5px;
|
272
|
+
padding-bottom: 3px; }
|
273
|
+
.group_tabs li.active a {
|
274
|
+
color: black;
|
275
|
+
text-shadow: #fff 1px 1px 0px;
|
276
|
+
background-color: #ddd;
|
277
|
+
background: -webkit-gradient(linear, 0 0, 0 bottom, from(white), to(#dddddd));
|
278
|
+
background: -moz-linear-gradient(white, #dddddd);
|
279
|
+
background: linear-gradient(white, #dddddd); }
|
280
|
+
|
281
|
+
.route_list {
|
282
|
+
margin-bottom: 18px; }
|
283
|
+
|
284
|
+
tr, td {
|
285
|
+
margin: 0;
|
286
|
+
padding: 0; }
|
287
|
+
|
288
|
+
th {
|
289
|
+
white-space: nowrap; }
|
290
|
+
th.ui-state-default {
|
291
|
+
cursor: pointer; }
|
292
|
+
th span.ui-icon {
|
293
|
+
float: left; }
|
294
|
+
|
295
|
+
td {
|
296
|
+
padding: 4px 8px; }
|
297
|
+
td.strong {
|
298
|
+
font-weight: bold; }
|
299
|
+
|
300
|
+
#footer {
|
301
|
+
color: #ddd;
|
302
|
+
font-size: 12px;
|
303
|
+
font-weight: bold;
|
304
|
+
margin-top: 12px;
|
305
|
+
text-align: right; }
|
306
|
+
#footer a {
|
307
|
+
color: #eee;
|
308
|
+
text-decoration: underline; }
|
309
|
+
#footer a:hover {
|
310
|
+
color: #fff;
|
311
|
+
text-decoration: none; }
|
312
|
+
|
313
|
+
.green {
|
314
|
+
color: #090; }
|
315
|
+
|
316
|
+
.red {
|
317
|
+
color: #900; }
|
318
|
+
|
319
|
+
.yellow {
|
320
|
+
color: #da0; }
|