coverband 4.0.0 → 4.0.1.alpha
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/.rubocop.yml +0 -4
- data/changes.md +57 -52
- data/coverband.gemspec +3 -5
- data/lib/coverband.rb +6 -1
- data/lib/coverband/reporters/html_report.rb +36 -0
- data/lib/coverband/reporters/web.rb +16 -13
- data/lib/coverband/utils/file_list.rb +68 -0
- data/lib/coverband/utils/html_formatter.rb +119 -0
- data/lib/coverband/utils/lines_classifier.rb +54 -0
- data/lib/coverband/utils/result.rb +108 -0
- data/lib/coverband/utils/s3_report.rb +2 -4
- data/lib/coverband/utils/source_file.rb +208 -0
- data/lib/coverband/utils/tasks.rb +2 -6
- data/lib/coverband/version.rb +1 -1
- data/public/application.css +799 -0
- data/public/application.js +1708 -0
- data/public/colorbox/border.png +0 -0
- data/public/colorbox/controls.png +0 -0
- data/public/colorbox/loading.gif +0 -0
- data/public/colorbox/loading_background.png +0 -0
- data/public/favicon_green.png +0 -0
- data/public/favicon_red.png +0 -0
- data/public/favicon_yellow.png +0 -0
- data/public/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/public/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/public/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/images/ui-icons_222222_256x240.png +0 -0
- data/public/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/images/ui-icons_454545_256x240.png +0 -0
- data/public/images/ui-icons_888888_256x240.png +0 -0
- data/public/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/loading.gif +0 -0
- data/public/magnify.png +0 -0
- data/test/unit/full_stack_test.rb +2 -2
- data/test/unit/reports_console_test.rb +1 -1
- data/test/unit/{reports_simple_cov_test.rb → reports_html_test.rb} +4 -7
- data/test/unit/reports_web_test.rb +3 -4
- data/test/unit/utils_s3_report_test.rb +1 -3
- data/views/file_list.erb +45 -0
- data/views/layout.erb +39 -0
- data/views/source_file.erb +23 -0
- metadata +49 -17
- data/lib/coverband/reporters/simple_cov_report.rb +0 -45
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
####
|
4
|
+
# Thanks for all the help SimpleCov https://github.com/colszowka/simplecov-html
|
5
|
+
# initial version pulled into Coverband from Simplecov 12/04/2018
|
6
|
+
#
|
7
|
+
# Classifies whether lines are relevant for code coverage analysis.
|
8
|
+
# Comments & whitespace lines, and :nocov: token blocks, are considered not relevant.
|
9
|
+
####
|
10
|
+
module Coverband
|
11
|
+
module Utils
|
12
|
+
class LinesClassifier
|
13
|
+
RELEVANT = 0
|
14
|
+
NOT_RELEVANT = nil
|
15
|
+
|
16
|
+
WHITESPACE_LINE = /^\s*$/
|
17
|
+
COMMENT_LINE = /^\s*#/
|
18
|
+
WHITESPACE_OR_COMMENT_LINE = Regexp.union(WHITESPACE_LINE, COMMENT_LINE)
|
19
|
+
|
20
|
+
def self.no_cov_line
|
21
|
+
/^(\s*)#(\s*)(\:nocov\:)/o
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.no_cov_line?(line)
|
25
|
+
line =~ no_cov_line
|
26
|
+
rescue ArgumentError
|
27
|
+
# E.g., line contains an invalid byte sequence in UTF-8
|
28
|
+
false
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.whitespace_line?(line)
|
32
|
+
line =~ WHITESPACE_OR_COMMENT_LINE
|
33
|
+
rescue ArgumentError
|
34
|
+
# E.g., line contains an invalid byte sequence in UTF-8
|
35
|
+
false
|
36
|
+
end
|
37
|
+
|
38
|
+
def classify(lines)
|
39
|
+
skipping = false
|
40
|
+
|
41
|
+
lines.map do |line|
|
42
|
+
if self.class.no_cov_line?(line)
|
43
|
+
skipping = !skipping
|
44
|
+
NOT_RELEVANT
|
45
|
+
elsif skipping || self.class.whitespace_line?(line)
|
46
|
+
NOT_RELEVANT
|
47
|
+
else
|
48
|
+
RELEVANT
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'digest/sha1'
|
4
|
+
require 'forwardable'
|
5
|
+
|
6
|
+
####
|
7
|
+
# Thanks for all the help SimpleCov https://github.com/colszowka/simplecov
|
8
|
+
# initial version pulled into Coverband from Simplecov 12/04/2018
|
9
|
+
#
|
10
|
+
# A code coverage result, initialized from the Hash stdlib built-in coverage
|
11
|
+
# library generates (Coverage.result).
|
12
|
+
####
|
13
|
+
module Coverband
|
14
|
+
module Utils
|
15
|
+
class Result
|
16
|
+
extend Forwardable
|
17
|
+
# Returns the original Coverage.result used for this instance of SimpleCov::Result
|
18
|
+
attr_reader :original_result
|
19
|
+
# Returns all files that are applicable to this result (sans filters!) as instances of SimpleCov::SourceFile. Aliased as :source_files
|
20
|
+
attr_reader :files
|
21
|
+
alias source_files files
|
22
|
+
# Explicitly set the Time this result has been created
|
23
|
+
attr_writer :created_at
|
24
|
+
# Explicitly set the command name that was used for this coverage result. Defaults to SimpleCov.command_name
|
25
|
+
attr_writer :command_name
|
26
|
+
|
27
|
+
def_delegators :files, :covered_percent, :covered_percentages, :least_covered_file, :covered_strength, :covered_lines, :missed_lines
|
28
|
+
def_delegator :files, :lines_of_code, :total_lines
|
29
|
+
|
30
|
+
# Initialize a new SimpleCov::Result from given Coverage.result (a Hash of filenames each containing an array of
|
31
|
+
# coverage data)
|
32
|
+
def initialize(original_result)
|
33
|
+
@original_result = original_result.freeze
|
34
|
+
@files = Coverband::Utils::FileList.new(original_result.map do |filename, coverage|
|
35
|
+
Coverband::Utils::SourceFile.new(filename, coverage) if File.file?(filename)
|
36
|
+
end.compact.sort_by(&:filename))
|
37
|
+
filter!
|
38
|
+
end
|
39
|
+
|
40
|
+
# Returns all filenames for source files contained in this result
|
41
|
+
def filenames
|
42
|
+
files.map(&:filename)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Returns a Hash of groups for this result. Define groups using SimpleCov.add_group 'Models', 'app/models'
|
46
|
+
def groups
|
47
|
+
@groups ||= [] # SimpleCov.grouped(files)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Applies the configured SimpleCov.formatter on this result
|
51
|
+
def format!
|
52
|
+
# SimpleCov.formatter.new.format(self)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Defines when this result has been created. Defaults to Time.now
|
56
|
+
def created_at
|
57
|
+
@created_at ||= Time.now
|
58
|
+
end
|
59
|
+
|
60
|
+
# The command name that launched this result.
|
61
|
+
# Delegated to SimpleCov.command_name if not set manually
|
62
|
+
def command_name
|
63
|
+
@command_name ||= 'SimpleCov.command_name'
|
64
|
+
end
|
65
|
+
|
66
|
+
# Returns a hash representation of this Result that can be used for marshalling it into JSON
|
67
|
+
def to_hash
|
68
|
+
{ command_name => { 'coverage' => coverage, 'timestamp' => created_at.to_i } }
|
69
|
+
end
|
70
|
+
|
71
|
+
# Loads a SimpleCov::Result#to_hash dump
|
72
|
+
def self.from_hash(hash)
|
73
|
+
command_name, data = hash.first
|
74
|
+
result = new(data['coverage'])
|
75
|
+
result.command_name = command_name
|
76
|
+
result.created_at = Time.at(data['timestamp'])
|
77
|
+
result
|
78
|
+
end
|
79
|
+
|
80
|
+
# Finds files that were to be tracked but were not loaded and initializes
|
81
|
+
# the line-by-line coverage to zero (if relevant) or nil (comments / whitespace etc).
|
82
|
+
def self.add_not_loaded_files(result, tracked_files)
|
83
|
+
if tracked_files
|
84
|
+
result = result.dup
|
85
|
+
Dir[tracked_files].each do |file|
|
86
|
+
absolute = File.expand_path(file)
|
87
|
+
|
88
|
+
result[absolute] ||= Coverband::Utils::LinesClassifier.new.classify(File.foreach(absolute))
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
result
|
93
|
+
end
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
def coverage
|
98
|
+
keys = original_result.keys & filenames
|
99
|
+
Hash[keys.zip(original_result.values_at(*keys))]
|
100
|
+
end
|
101
|
+
|
102
|
+
# Applies all configured SimpleCov filters on this result's source files
|
103
|
+
def filter!
|
104
|
+
@files = files
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
@@ -52,10 +52,8 @@ module Coverband
|
|
52
52
|
private
|
53
53
|
|
54
54
|
def coverage_content
|
55
|
-
version =
|
56
|
-
File.read("#{
|
57
|
-
rescue StandardError
|
58
|
-
File.read("#{SimpleCov.coverage_dir}/index.html").to_s.gsub('./assets/0.10.1/', '')
|
55
|
+
version = Coverband::VERSION
|
56
|
+
File.read("#{Coverband.configuration.root}/coverage/index.html").gsub("./assets/#{version}/", '')
|
59
57
|
end
|
60
58
|
|
61
59
|
def object
|
@@ -0,0 +1,208 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
####
|
4
|
+
# Thanks for all the help SimpleCov https://github.com/colszowka/simplecov
|
5
|
+
# initial version pulled into Coverband from Simplecov 12/04/2018
|
6
|
+
#
|
7
|
+
# Representation of a source file including it's coverage data, source code,
|
8
|
+
# source lines and featuring helpers to interpret that data.
|
9
|
+
####
|
10
|
+
module Coverband
|
11
|
+
module Utils
|
12
|
+
class SourceFile
|
13
|
+
# Representation of a single line in a source file including
|
14
|
+
# this specific line's source code, line_number and code coverage,
|
15
|
+
# with the coverage being either nil (coverage not applicable, e.g. comment
|
16
|
+
# line), 0 (line not covered) or >1 (the amount of times the line was
|
17
|
+
# executed)
|
18
|
+
class Line
|
19
|
+
# The source code for this line. Aliased as :source
|
20
|
+
attr_reader :src
|
21
|
+
# The line number in the source file. Aliased as :line, :number
|
22
|
+
attr_reader :line_number
|
23
|
+
# The coverage data for this line: either nil (never), 0 (missed) or >=1 (times covered)
|
24
|
+
attr_reader :coverage
|
25
|
+
# Whether this line was skipped
|
26
|
+
attr_reader :skipped
|
27
|
+
|
28
|
+
# Lets grab some fancy aliases, shall we?
|
29
|
+
alias source src
|
30
|
+
alias line line_number
|
31
|
+
alias number line_number
|
32
|
+
|
33
|
+
def initialize(src, line_number, coverage)
|
34
|
+
raise ArgumentError, 'Only String accepted for source' unless src.is_a?(String)
|
35
|
+
raise ArgumentError, 'Only Integer accepted for line_number' unless line_number.is_a?(Integer)
|
36
|
+
raise ArgumentError, 'Only Integer and nil accepted for coverage' unless coverage.is_a?(Integer) || coverage.nil?
|
37
|
+
@src = src
|
38
|
+
@line_number = line_number
|
39
|
+
@coverage = coverage
|
40
|
+
@skipped = false
|
41
|
+
end
|
42
|
+
|
43
|
+
# Returns true if this is a line that should have been covered, but was not
|
44
|
+
def missed?
|
45
|
+
!never? && !skipped? && coverage.zero?
|
46
|
+
end
|
47
|
+
|
48
|
+
# Returns true if this is a line that has been covered
|
49
|
+
def covered?
|
50
|
+
!never? && !skipped? && coverage > 0
|
51
|
+
end
|
52
|
+
|
53
|
+
# Returns true if this line is not relevant for coverage
|
54
|
+
def never?
|
55
|
+
!skipped? && coverage.nil?
|
56
|
+
end
|
57
|
+
|
58
|
+
# Flags this line as skipped
|
59
|
+
def skipped!
|
60
|
+
@skipped = true
|
61
|
+
end
|
62
|
+
|
63
|
+
# Returns true if this line was skipped, false otherwise. Lines are skipped if they are wrapped with
|
64
|
+
# # :nocov: comment lines.
|
65
|
+
def skipped?
|
66
|
+
!!skipped
|
67
|
+
end
|
68
|
+
|
69
|
+
# The status of this line - either covered, missed, skipped or never. Useful i.e. for direct use
|
70
|
+
# as a css class in report generation
|
71
|
+
def status
|
72
|
+
return 'skipped' if skipped?
|
73
|
+
return 'never' if never?
|
74
|
+
return 'missed' if missed?
|
75
|
+
return 'covered' if covered?
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# The full path to this source file (e.g. /User/colszowka/projects/simplecov/lib/simplecov/source_file.rb)
|
80
|
+
attr_reader :filename
|
81
|
+
# The array of coverage data received from the Coverage.result
|
82
|
+
attr_reader :coverage
|
83
|
+
|
84
|
+
def initialize(filename, coverage)
|
85
|
+
@filename = filename
|
86
|
+
@coverage = coverage
|
87
|
+
end
|
88
|
+
|
89
|
+
# The path to this source file relative to the projects directory
|
90
|
+
def project_filename
|
91
|
+
@filename.sub(/^#{Coverband.configuration.root}/, '')
|
92
|
+
end
|
93
|
+
|
94
|
+
# The source code for this file. Aliased as :source
|
95
|
+
def src
|
96
|
+
# We intentionally read source code lazily to
|
97
|
+
# suppress reading unused source code.
|
98
|
+
@src ||= File.open(filename, 'rb', &:readlines)
|
99
|
+
end
|
100
|
+
alias source src
|
101
|
+
|
102
|
+
# Returns all source lines for this file as instances of SimpleCov::SourceFile::Line,
|
103
|
+
# and thus including coverage data. Aliased as :source_lines
|
104
|
+
def lines
|
105
|
+
@lines ||= build_lines
|
106
|
+
end
|
107
|
+
alias source_lines lines
|
108
|
+
|
109
|
+
def build_lines
|
110
|
+
coverage_exceeding_source_warn if coverage.size > src.size
|
111
|
+
|
112
|
+
lines = src.map.with_index(1) do |src, i|
|
113
|
+
Coverband::Utils::SourceFile::Line.new(src, i, coverage[i - 1])
|
114
|
+
end
|
115
|
+
|
116
|
+
process_skipped_lines(lines)
|
117
|
+
end
|
118
|
+
|
119
|
+
# Warning to identify condition from Issue #56
|
120
|
+
def coverage_exceeding_source_warn
|
121
|
+
warn "Warning: coverage data provided by Coverage [#{coverage.size}] exceeds number of lines in #{filename} [#{src.size}]"
|
122
|
+
end
|
123
|
+
|
124
|
+
# Access SimpleCov::SourceFile::Line source lines by line number
|
125
|
+
def line(number)
|
126
|
+
lines[number - 1]
|
127
|
+
end
|
128
|
+
|
129
|
+
# The coverage for this file in percent. 0 if the file has no relevant lines
|
130
|
+
def covered_percent
|
131
|
+
return 100.0 if no_lines?
|
132
|
+
|
133
|
+
return 0.0 if relevant_lines.zero?
|
134
|
+
|
135
|
+
Float(covered_lines.size * 100.0 / relevant_lines.to_f)
|
136
|
+
end
|
137
|
+
|
138
|
+
def covered_strength
|
139
|
+
return 0.0 if relevant_lines.zero?
|
140
|
+
|
141
|
+
round_float(lines_strength / relevant_lines.to_f, 1)
|
142
|
+
end
|
143
|
+
|
144
|
+
def no_lines?
|
145
|
+
lines.length.zero? || (lines.length == never_lines.size)
|
146
|
+
end
|
147
|
+
|
148
|
+
def lines_strength
|
149
|
+
lines.map(&:coverage).compact.reduce(:+)
|
150
|
+
end
|
151
|
+
|
152
|
+
def relevant_lines
|
153
|
+
lines.size - never_lines.size - skipped_lines.size
|
154
|
+
end
|
155
|
+
|
156
|
+
# Returns all covered lines as SimpleCov::SourceFile::Line
|
157
|
+
def covered_lines
|
158
|
+
@covered_lines ||= lines.select(&:covered?)
|
159
|
+
end
|
160
|
+
|
161
|
+
# Returns all lines that should have been, but were not covered
|
162
|
+
# as instances of SimpleCov::SourceFile::Line
|
163
|
+
def missed_lines
|
164
|
+
@missed_lines ||= lines.select(&:missed?)
|
165
|
+
end
|
166
|
+
|
167
|
+
# Returns all lines that are not relevant for coverage as
|
168
|
+
# SimpleCov::SourceFile::Line instances
|
169
|
+
def never_lines
|
170
|
+
@never_lines ||= lines.select(&:never?)
|
171
|
+
end
|
172
|
+
|
173
|
+
# Returns all lines that were skipped as SimpleCov::SourceFile::Line instances
|
174
|
+
def skipped_lines
|
175
|
+
@skipped_lines ||= lines.select(&:skipped?)
|
176
|
+
end
|
177
|
+
|
178
|
+
# Returns the number of relevant lines (covered + missed)
|
179
|
+
def lines_of_code
|
180
|
+
covered_lines.size + missed_lines.size
|
181
|
+
end
|
182
|
+
|
183
|
+
# Will go through all source files and mark lines that are wrapped within # :nocov: comment blocks
|
184
|
+
# as skipped.
|
185
|
+
def process_skipped_lines(lines)
|
186
|
+
skipping = false
|
187
|
+
|
188
|
+
lines.each do |line|
|
189
|
+
if false # SimpleCov::LinesClassifier.no_cov_line?(line.src)
|
190
|
+
skipping = !skipping
|
191
|
+
line.skipped!
|
192
|
+
elsif skipping
|
193
|
+
line.skipped!
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
private
|
199
|
+
|
200
|
+
# ruby 1.9 could use Float#round(places) instead
|
201
|
+
# @return [Float]
|
202
|
+
def round_float(float, places)
|
203
|
+
factor = Float(10 * places)
|
204
|
+
Float((float * factor).round / factor)
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
@@ -11,21 +11,17 @@ namespace :coverband do
|
|
11
11
|
desc 'report runtime Coverband code coverage'
|
12
12
|
task coverage: :environment do
|
13
13
|
if Coverband.configuration.reporter == 'scov'
|
14
|
-
Coverband::Reporters::
|
14
|
+
Coverband::Reporters::HTMLReport.report(Coverband.configuration.store)
|
15
15
|
else
|
16
16
|
Coverband::Reporters::ConsoleReport.report(Coverband.configuration.store)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
def clear_simplecov_filters
|
21
|
-
SimpleCov.filters.clear if defined? SimpleCov
|
22
|
-
end
|
23
|
-
|
24
20
|
desc 'report runtime coverband code coverage after disabling simplecov filters'
|
25
21
|
task coverage_no_filters: :environment do
|
26
22
|
if Coverband.configuration.reporter == 'scov'
|
27
23
|
clear_simplecov_filters
|
28
|
-
Coverband::Reporters::
|
24
|
+
Coverband::Reporters::HTMLReport.report(Coverband.configuration.store)
|
29
25
|
else
|
30
26
|
puts 'coverage without filters only makes sense for SimpleCov reports'
|
31
27
|
end
|
data/lib/coverband/version.rb
CHANGED
@@ -0,0 +1,799 @@
|
|
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
|
+
/*
|
106
|
+
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
|
107
|
+
*/
|
108
|
+
|
109
|
+
|
110
|
+
pre code {
|
111
|
+
}
|
112
|
+
|
113
|
+
pre .comment,
|
114
|
+
pre .template_comment,
|
115
|
+
pre .diff .header,
|
116
|
+
pre .javadoc {
|
117
|
+
color: #998;
|
118
|
+
font-style: italic
|
119
|
+
}
|
120
|
+
|
121
|
+
pre .keyword,
|
122
|
+
pre .css .rule .keyword,
|
123
|
+
pre .winutils,
|
124
|
+
pre .javascript .title,
|
125
|
+
pre .lisp .title {
|
126
|
+
color: #000;
|
127
|
+
font-weight: bold
|
128
|
+
}
|
129
|
+
|
130
|
+
pre .number,
|
131
|
+
pre .hexcolor {
|
132
|
+
color: #458
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
pre .string,
|
137
|
+
pre .tag .value,
|
138
|
+
pre .phpdoc,
|
139
|
+
pre .tex .formula {
|
140
|
+
color: #d14
|
141
|
+
}
|
142
|
+
|
143
|
+
pre .subst {
|
144
|
+
color: #712;
|
145
|
+
}
|
146
|
+
|
147
|
+
pre .constant,
|
148
|
+
pre .title,
|
149
|
+
pre .id {
|
150
|
+
color: #900;
|
151
|
+
font-weight: bold
|
152
|
+
}
|
153
|
+
|
154
|
+
pre .javascript .title,
|
155
|
+
pre .lisp .title,
|
156
|
+
pre .subst {
|
157
|
+
font-weight: normal
|
158
|
+
}
|
159
|
+
|
160
|
+
pre .class .title,
|
161
|
+
pre .haskell .label,
|
162
|
+
pre .tex .command {
|
163
|
+
color: #458;
|
164
|
+
font-weight: bold
|
165
|
+
}
|
166
|
+
|
167
|
+
pre .tag,
|
168
|
+
pre .tag .title,
|
169
|
+
pre .rules .property,
|
170
|
+
pre .django .tag .keyword {
|
171
|
+
color: #000080;
|
172
|
+
font-weight: normal
|
173
|
+
}
|
174
|
+
|
175
|
+
pre .attribute,
|
176
|
+
pre .variable,
|
177
|
+
pre .instancevar,
|
178
|
+
pre .lisp .body {
|
179
|
+
color: #008080
|
180
|
+
}
|
181
|
+
|
182
|
+
pre .regexp {
|
183
|
+
color: #009926
|
184
|
+
}
|
185
|
+
|
186
|
+
pre .class {
|
187
|
+
color: #458;
|
188
|
+
font-weight: bold
|
189
|
+
}
|
190
|
+
|
191
|
+
pre .symbol,
|
192
|
+
pre .ruby .symbol .string,
|
193
|
+
pre .ruby .symbol .keyword,
|
194
|
+
pre .ruby .symbol .keymethods,
|
195
|
+
pre .lisp .keyword,
|
196
|
+
pre .tex .special,
|
197
|
+
pre .input_number {
|
198
|
+
color: #990073
|
199
|
+
}
|
200
|
+
|
201
|
+
pre .builtin,
|
202
|
+
pre .built_in,
|
203
|
+
pre .lisp .title {
|
204
|
+
color: #0086b3
|
205
|
+
}
|
206
|
+
|
207
|
+
pre .preprocessor,
|
208
|
+
pre .pi,
|
209
|
+
pre .doctype,
|
210
|
+
pre .shebang,
|
211
|
+
pre .cdata {
|
212
|
+
color: #999;
|
213
|
+
font-weight: bold
|
214
|
+
}
|
215
|
+
|
216
|
+
pre .deletion {
|
217
|
+
background: #fdd
|
218
|
+
}
|
219
|
+
|
220
|
+
pre .addition {
|
221
|
+
background: #dfd
|
222
|
+
}
|
223
|
+
|
224
|
+
pre .diff .change {
|
225
|
+
background: #0086b3
|
226
|
+
}
|
227
|
+
|
228
|
+
pre .chunk {
|
229
|
+
color: #aaa
|
230
|
+
}
|
231
|
+
|
232
|
+
pre .tex .formula {
|
233
|
+
opacity: 0.5;
|
234
|
+
}
|
235
|
+
/*
|
236
|
+
* jQuery UI CSS Framework @VERSION
|
237
|
+
*
|
238
|
+
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
239
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
240
|
+
* http://jquery.org/license
|
241
|
+
*
|
242
|
+
* http://docs.jquery.com/UI/Theming/API
|
243
|
+
*/
|
244
|
+
|
245
|
+
/* Layout helpers
|
246
|
+
----------------------------------*/
|
247
|
+
|
248
|
+
.ui-helper-hidden { display: none; }
|
249
|
+
.ui-helper-hidden-accessible { position: absolute; left: -99999999px; }
|
250
|
+
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
251
|
+
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
|
252
|
+
.ui-helper-clearfix { display: inline-block; }
|
253
|
+
/* required comment for clearfix to work in Opera \*/
|
254
|
+
* html .ui-helper-clearfix { height:1%; }
|
255
|
+
.ui-helper-clearfix { display:block; }
|
256
|
+
/* end clearfix */
|
257
|
+
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
258
|
+
|
259
|
+
|
260
|
+
/* Interaction Cues
|
261
|
+
----------------------------------*/
|
262
|
+
.ui-state-disabled { cursor: default !important; }
|
263
|
+
|
264
|
+
|
265
|
+
/* Icons
|
266
|
+
----------------------------------*/
|
267
|
+
|
268
|
+
/* states and images */
|
269
|
+
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
270
|
+
|
271
|
+
|
272
|
+
/* Misc visuals
|
273
|
+
----------------------------------*/
|
274
|
+
|
275
|
+
/* Overlays */
|
276
|
+
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
277
|
+
|
278
|
+
|
279
|
+
/*
|
280
|
+
* jQuery UI CSS Framework @VERSION
|
281
|
+
*
|
282
|
+
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
283
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
284
|
+
* http://jquery.org/license
|
285
|
+
*
|
286
|
+
* http://docs.jquery.com/UI/Theming/API
|
287
|
+
*
|
288
|
+
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
|
289
|
+
*/
|
290
|
+
|
291
|
+
|
292
|
+
/* Component containers
|
293
|
+
----------------------------------*/
|
294
|
+
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
|
295
|
+
.ui-widget .ui-widget { font-size: 1em; }
|
296
|
+
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
|
297
|
+
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
|
298
|
+
.ui-widget-content a { color: #222222; }
|
299
|
+
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
|
300
|
+
.ui-widget-header a { color: #222222; }
|
301
|
+
|
302
|
+
/* Interaction states
|
303
|
+
----------------------------------*/
|
304
|
+
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
|
305
|
+
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
|
306
|
+
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
|
307
|
+
.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
|
308
|
+
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
|
309
|
+
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
|
310
|
+
.ui-widget :active { outline: none; }
|
311
|
+
|
312
|
+
/* Interaction Cues
|
313
|
+
----------------------------------*/
|
314
|
+
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
|
315
|
+
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
|
316
|
+
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
|
317
|
+
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
|
318
|
+
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
|
319
|
+
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
320
|
+
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
321
|
+
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
322
|
+
|
323
|
+
/* Icons
|
324
|
+
----------------------------------*/
|
325
|
+
|
326
|
+
/* states and images */
|
327
|
+
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
|
328
|
+
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
329
|
+
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
330
|
+
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
|
331
|
+
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
|
332
|
+
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
|
333
|
+
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
|
334
|
+
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
|
335
|
+
|
336
|
+
/* positioning */
|
337
|
+
.ui-icon-carat-1-n { background-position: 0 0; }
|
338
|
+
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
339
|
+
.ui-icon-carat-1-e { background-position: -32px 0; }
|
340
|
+
.ui-icon-carat-1-se { background-position: -48px 0; }
|
341
|
+
.ui-icon-carat-1-s { background-position: -64px 0; }
|
342
|
+
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
343
|
+
.ui-icon-carat-1-w { background-position: -96px 0; }
|
344
|
+
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
345
|
+
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
346
|
+
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
347
|
+
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
348
|
+
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
349
|
+
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
350
|
+
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
351
|
+
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
352
|
+
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
353
|
+
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
354
|
+
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
355
|
+
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
356
|
+
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
357
|
+
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
358
|
+
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
359
|
+
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
360
|
+
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
361
|
+
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
362
|
+
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
363
|
+
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
364
|
+
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
365
|
+
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
366
|
+
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
367
|
+
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
368
|
+
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
369
|
+
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
370
|
+
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
371
|
+
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
372
|
+
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
373
|
+
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
374
|
+
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
375
|
+
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
376
|
+
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
377
|
+
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
378
|
+
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
379
|
+
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
380
|
+
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
381
|
+
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
382
|
+
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
383
|
+
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
384
|
+
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
385
|
+
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
386
|
+
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
387
|
+
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
388
|
+
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
389
|
+
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
390
|
+
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
391
|
+
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
392
|
+
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
393
|
+
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
394
|
+
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
395
|
+
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
396
|
+
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
397
|
+
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
398
|
+
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
399
|
+
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
400
|
+
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
401
|
+
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
402
|
+
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
403
|
+
.ui-icon-extlink { background-position: -32px -80px; }
|
404
|
+
.ui-icon-newwin { background-position: -48px -80px; }
|
405
|
+
.ui-icon-refresh { background-position: -64px -80px; }
|
406
|
+
.ui-icon-shuffle { background-position: -80px -80px; }
|
407
|
+
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
408
|
+
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
409
|
+
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
410
|
+
.ui-icon-folder-open { background-position: -16px -96px; }
|
411
|
+
.ui-icon-document { background-position: -32px -96px; }
|
412
|
+
.ui-icon-document-b { background-position: -48px -96px; }
|
413
|
+
.ui-icon-note { background-position: -64px -96px; }
|
414
|
+
.ui-icon-mail-closed { background-position: -80px -96px; }
|
415
|
+
.ui-icon-mail-open { background-position: -96px -96px; }
|
416
|
+
.ui-icon-suitcase { background-position: -112px -96px; }
|
417
|
+
.ui-icon-comment { background-position: -128px -96px; }
|
418
|
+
.ui-icon-person { background-position: -144px -96px; }
|
419
|
+
.ui-icon-print { background-position: -160px -96px; }
|
420
|
+
.ui-icon-trash { background-position: -176px -96px; }
|
421
|
+
.ui-icon-locked { background-position: -192px -96px; }
|
422
|
+
.ui-icon-unlocked { background-position: -208px -96px; }
|
423
|
+
.ui-icon-bookmark { background-position: -224px -96px; }
|
424
|
+
.ui-icon-tag { background-position: -240px -96px; }
|
425
|
+
.ui-icon-home { background-position: 0 -112px; }
|
426
|
+
.ui-icon-flag { background-position: -16px -112px; }
|
427
|
+
.ui-icon-calendar { background-position: -32px -112px; }
|
428
|
+
.ui-icon-cart { background-position: -48px -112px; }
|
429
|
+
.ui-icon-pencil { background-position: -64px -112px; }
|
430
|
+
.ui-icon-clock { background-position: -80px -112px; }
|
431
|
+
.ui-icon-disk { background-position: -96px -112px; }
|
432
|
+
.ui-icon-calculator { background-position: -112px -112px; }
|
433
|
+
.ui-icon-zoomin { background-position: -128px -112px; }
|
434
|
+
.ui-icon-zoomout { background-position: -144px -112px; }
|
435
|
+
.ui-icon-search { background-position: -160px -112px; }
|
436
|
+
.ui-icon-wrench { background-position: -176px -112px; }
|
437
|
+
.ui-icon-gear { background-position: -192px -112px; }
|
438
|
+
.ui-icon-heart { background-position: -208px -112px; }
|
439
|
+
.ui-icon-star { background-position: -224px -112px; }
|
440
|
+
.ui-icon-link { background-position: -240px -112px; }
|
441
|
+
.ui-icon-cancel { background-position: 0 -128px; }
|
442
|
+
.ui-icon-plus { background-position: -16px -128px; }
|
443
|
+
.ui-icon-plusthick { background-position: -32px -128px; }
|
444
|
+
.ui-icon-minus { background-position: -48px -128px; }
|
445
|
+
.ui-icon-minusthick { background-position: -64px -128px; }
|
446
|
+
.ui-icon-close { background-position: -80px -128px; }
|
447
|
+
.ui-icon-closethick { background-position: -96px -128px; }
|
448
|
+
.ui-icon-key { background-position: -112px -128px; }
|
449
|
+
.ui-icon-lightbulb { background-position: -128px -128px; }
|
450
|
+
.ui-icon-scissors { background-position: -144px -128px; }
|
451
|
+
.ui-icon-clipboard { background-position: -160px -128px; }
|
452
|
+
.ui-icon-copy { background-position: -176px -128px; }
|
453
|
+
.ui-icon-contact { background-position: -192px -128px; }
|
454
|
+
.ui-icon-image { background-position: -208px -128px; }
|
455
|
+
.ui-icon-video { background-position: -224px -128px; }
|
456
|
+
.ui-icon-script { background-position: -240px -128px; }
|
457
|
+
.ui-icon-alert { background-position: 0 -144px; }
|
458
|
+
.ui-icon-info { background-position: -16px -144px; }
|
459
|
+
.ui-icon-notice { background-position: -32px -144px; }
|
460
|
+
.ui-icon-help { background-position: -48px -144px; }
|
461
|
+
.ui-icon-check { background-position: -64px -144px; }
|
462
|
+
.ui-icon-bullet { background-position: -80px -144px; }
|
463
|
+
.ui-icon-radio-off { background-position: -96px -144px; }
|
464
|
+
.ui-icon-radio-on { background-position: -112px -144px; }
|
465
|
+
.ui-icon-pin-w { background-position: -128px -144px; }
|
466
|
+
.ui-icon-pin-s { background-position: -144px -144px; }
|
467
|
+
.ui-icon-play { background-position: 0 -160px; }
|
468
|
+
.ui-icon-pause { background-position: -16px -160px; }
|
469
|
+
.ui-icon-seek-next { background-position: -32px -160px; }
|
470
|
+
.ui-icon-seek-prev { background-position: -48px -160px; }
|
471
|
+
.ui-icon-seek-end { background-position: -64px -160px; }
|
472
|
+
.ui-icon-seek-start { background-position: -80px -160px; }
|
473
|
+
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
474
|
+
.ui-icon-seek-first { background-position: -80px -160px; }
|
475
|
+
.ui-icon-stop { background-position: -96px -160px; }
|
476
|
+
.ui-icon-eject { background-position: -112px -160px; }
|
477
|
+
.ui-icon-volume-off { background-position: -128px -160px; }
|
478
|
+
.ui-icon-volume-on { background-position: -144px -160px; }
|
479
|
+
.ui-icon-power { background-position: 0 -176px; }
|
480
|
+
.ui-icon-signal-diag { background-position: -16px -176px; }
|
481
|
+
.ui-icon-signal { background-position: -32px -176px; }
|
482
|
+
.ui-icon-battery-0 { background-position: -48px -176px; }
|
483
|
+
.ui-icon-battery-1 { background-position: -64px -176px; }
|
484
|
+
.ui-icon-battery-2 { background-position: -80px -176px; }
|
485
|
+
.ui-icon-battery-3 { background-position: -96px -176px; }
|
486
|
+
.ui-icon-circle-plus { background-position: 0 -192px; }
|
487
|
+
.ui-icon-circle-minus { background-position: -16px -192px; }
|
488
|
+
.ui-icon-circle-close { background-position: -32px -192px; }
|
489
|
+
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
490
|
+
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
491
|
+
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
492
|
+
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
493
|
+
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
494
|
+
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
495
|
+
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
496
|
+
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
497
|
+
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
498
|
+
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
499
|
+
.ui-icon-circle-check { background-position: -208px -192px; }
|
500
|
+
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
501
|
+
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
502
|
+
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
503
|
+
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
504
|
+
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
505
|
+
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
506
|
+
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
507
|
+
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
508
|
+
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
509
|
+
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
510
|
+
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
511
|
+
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
512
|
+
|
513
|
+
|
514
|
+
/* Misc visuals
|
515
|
+
----------------------------------*/
|
516
|
+
|
517
|
+
/* Corner radius */
|
518
|
+
.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
|
519
|
+
.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
|
520
|
+
.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
|
521
|
+
.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
522
|
+
.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; }
|
523
|
+
.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; }
|
524
|
+
.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; }
|
525
|
+
.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; }
|
526
|
+
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
|
527
|
+
|
528
|
+
/* Overlays */
|
529
|
+
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
|
530
|
+
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }
|
531
|
+
/*
|
532
|
+
ColorBox Core Style:
|
533
|
+
The following CSS is consistent between example themes and should not be altered.
|
534
|
+
*/
|
535
|
+
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
|
536
|
+
#cboxOverlay{position:fixed; width:100%; height:100%;}
|
537
|
+
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
|
538
|
+
#cboxContent{position:relative;}
|
539
|
+
#cboxLoadedContent{overflow:auto;}
|
540
|
+
#cboxTitle{margin:0;}
|
541
|
+
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
|
542
|
+
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
|
543
|
+
.cboxPhoto{float:left; margin:auto; border:0; display:block; max-width:none;}
|
544
|
+
.cboxIframe{width:100%; height:100%; display:block; border:0;}
|
545
|
+
#colorbox, #cboxContent, #cboxLoadedContent{box-sizing:content-box;}
|
546
|
+
|
547
|
+
/*
|
548
|
+
User Style:
|
549
|
+
Change the following styles to modify the appearance of ColorBox. They are
|
550
|
+
ordered & tabbed in a way that represents the nesting of the generated HTML.
|
551
|
+
*/
|
552
|
+
#cboxOverlay{background:#000;}
|
553
|
+
#colorbox{}
|
554
|
+
#cboxTopLeft{width:14px; height:14px; background:url(colorbox/controls.png) no-repeat 0 0;}
|
555
|
+
#cboxTopCenter{height:14px; background:url(colorbox/border.png) repeat-x top left;}
|
556
|
+
#cboxTopRight{width:14px; height:14px; background:url(colorbox/controls.png) no-repeat -36px 0;}
|
557
|
+
#cboxBottomLeft{width:14px; height:43px; background:url(colorbox/controls.png) no-repeat 0 -32px;}
|
558
|
+
#cboxBottomCenter{height:43px; background:url(colorbox/border.png) repeat-x bottom left;}
|
559
|
+
#cboxBottomRight{width:14px; height:43px; background:url(colorbox/controls.png) no-repeat -36px -32px;}
|
560
|
+
#cboxMiddleLeft{width:14px; background:url(colorbox/controls.png) repeat-y -175px 0;}
|
561
|
+
#cboxMiddleRight{width:14px; background:url(colorbox/controls.png) repeat-y -211px 0;}
|
562
|
+
#cboxContent{background:#fff; overflow:visible;}
|
563
|
+
.cboxIframe{background:#fff;}
|
564
|
+
#cboxError{padding:50px; border:1px solid #ccc;}
|
565
|
+
#cboxLoadedContent{margin-bottom:5px;}
|
566
|
+
#cboxLoadingOverlay{background:url(colorbox/loading_background.png) no-repeat center center;}
|
567
|
+
#cboxLoadingGraphic{background:url(colorbox/loading.gif) no-repeat center center;}
|
568
|
+
#cboxTitle{position:absolute; bottom:-25px; left:0; text-align:center; width:100%; font-weight:bold; color:#7C7C7C;}
|
569
|
+
#cboxCurrent{position:absolute; bottom:-25px; left:58px; font-weight:bold; color:#7C7C7C;}
|
570
|
+
|
571
|
+
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{position:absolute; bottom:-29px; background:url(colorbox/controls.png) no-repeat 0px 0px; width:23px; height:23px; text-indent:-9999px;}
|
572
|
+
#cboxPrevious{left:0px; background-position: -51px -25px;}
|
573
|
+
#cboxPrevious:hover{background-position:-51px 0px;}
|
574
|
+
#cboxNext{left:27px; background-position:-75px -25px;}
|
575
|
+
#cboxNext:hover{background-position:-75px 0px;}
|
576
|
+
#cboxClose{right:0; background-position:-100px -25px;}
|
577
|
+
#cboxClose:hover{background-position:-100px 0px;}
|
578
|
+
|
579
|
+
.cboxSlideshow_on #cboxSlideshow{background-position:-125px 0px; right:27px;}
|
580
|
+
.cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0px;}
|
581
|
+
.cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px; right:27px;}
|
582
|
+
.cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0px;}
|
583
|
+
#loading {
|
584
|
+
position: fixed;
|
585
|
+
left: 40%;
|
586
|
+
top: 50%; }
|
587
|
+
|
588
|
+
a {
|
589
|
+
color: #333333;
|
590
|
+
text-decoration: none; }
|
591
|
+
a:hover {
|
592
|
+
color: black;
|
593
|
+
text-decoration: underline; }
|
594
|
+
|
595
|
+
body {
|
596
|
+
font-family: "Lucida Grande", Helvetica, "Helvetica Neue", Arial, sans-serif;
|
597
|
+
padding: 12px;
|
598
|
+
background-color: #333333; }
|
599
|
+
|
600
|
+
h1, h2, h3, h4 {
|
601
|
+
color: #1c2324;
|
602
|
+
margin: 0;
|
603
|
+
padding: 0;
|
604
|
+
margin-bottom: 12px; }
|
605
|
+
|
606
|
+
table {
|
607
|
+
width: 100%; }
|
608
|
+
|
609
|
+
#content {
|
610
|
+
clear: left;
|
611
|
+
background-color: white;
|
612
|
+
border: 2px solid #dddddd;
|
613
|
+
border-top: 8px solid #dddddd;
|
614
|
+
padding: 18px;
|
615
|
+
-webkit-border-bottom-left-radius: 5px;
|
616
|
+
-webkit-border-bottom-right-radius: 5px;
|
617
|
+
-webkit-border-top-right-radius: 5px;
|
618
|
+
-moz-border-radius-bottomleft: 5px;
|
619
|
+
-moz-border-radius-bottomright: 5px;
|
620
|
+
-moz-border-radius-topright: 5px;
|
621
|
+
border-bottom-left-radius: 5px;
|
622
|
+
border-bottom-right-radius: 5px;
|
623
|
+
border-top-right-radius: 5px; }
|
624
|
+
|
625
|
+
.dataTables_filter, .dataTables_info {
|
626
|
+
padding: 2px 6px; }
|
627
|
+
|
628
|
+
abbr.timeago {
|
629
|
+
text-decoration: none;
|
630
|
+
border: none;
|
631
|
+
font-weight: bold; }
|
632
|
+
|
633
|
+
.timestamp {
|
634
|
+
float: right;
|
635
|
+
color: #dddddd; }
|
636
|
+
|
637
|
+
.group_tabs {
|
638
|
+
list-style: none;
|
639
|
+
float: left;
|
640
|
+
margin: 0;
|
641
|
+
padding: 0; }
|
642
|
+
.group_tabs li {
|
643
|
+
display: inline;
|
644
|
+
float: left; }
|
645
|
+
.group_tabs li a {
|
646
|
+
font-family: Helvetica, Arial, sans-serif;
|
647
|
+
display: block;
|
648
|
+
float: left;
|
649
|
+
text-decoration: none;
|
650
|
+
padding: 4px 8px;
|
651
|
+
background-color: #aaaaaa;
|
652
|
+
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#dddddd), to(#aaaaaa));
|
653
|
+
background: -moz-linear-gradient(#dddddd, #aaaaaa);
|
654
|
+
background: linear-gradient(#dddddd, #aaaaaa);
|
655
|
+
text-shadow: #e5e5e5 1px 1px 0px;
|
656
|
+
border-bottom: none;
|
657
|
+
color: #333333;
|
658
|
+
font-weight: bold;
|
659
|
+
margin-right: 8px;
|
660
|
+
border-top: 1px solid #efefef;
|
661
|
+
-webkit-border-top-left-radius: 2px;
|
662
|
+
-webkit-border-top-right-radius: 2px;
|
663
|
+
-moz-border-radius-topleft: 2px;
|
664
|
+
-moz-border-radius-topright: 2px;
|
665
|
+
border-top-left-radius: 2px;
|
666
|
+
border-top-right-radius: 2px; }
|
667
|
+
.group_tabs li a:hover {
|
668
|
+
background-color: #cccccc;
|
669
|
+
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#eeeeee), to(#aaaaaa));
|
670
|
+
background: -moz-linear-gradient(#eeeeee, #aaaaaa);
|
671
|
+
background: linear-gradient(#eeeeee, #aaaaaa); }
|
672
|
+
.group_tabs li a:active {
|
673
|
+
padding-top: 5px;
|
674
|
+
padding-bottom: 3px; }
|
675
|
+
.group_tabs li.active a {
|
676
|
+
color: black;
|
677
|
+
text-shadow: white 1px 1px 0px;
|
678
|
+
background-color: #dddddd;
|
679
|
+
background: -webkit-gradient(linear, 0 0, 0 bottom, from(white), to(#dddddd));
|
680
|
+
background: -moz-linear-gradient(white, #dddddd);
|
681
|
+
background: linear-gradient(white, #dddddd); }
|
682
|
+
|
683
|
+
.file_list {
|
684
|
+
margin-bottom: 18px; }
|
685
|
+
|
686
|
+
a.src_link {
|
687
|
+
background: url("./magnify.png") no-repeat left 50%;
|
688
|
+
padding-left: 18px; }
|
689
|
+
|
690
|
+
tr, td {
|
691
|
+
margin: 0;
|
692
|
+
padding: 0; }
|
693
|
+
|
694
|
+
th {
|
695
|
+
white-space: nowrap; }
|
696
|
+
th.ui-state-default {
|
697
|
+
cursor: pointer; }
|
698
|
+
th span.ui-icon {
|
699
|
+
float: left; }
|
700
|
+
|
701
|
+
td {
|
702
|
+
padding: 4px 8px; }
|
703
|
+
td.strong {
|
704
|
+
font-weight: bold; }
|
705
|
+
|
706
|
+
.source_table h3, .source_table h4 {
|
707
|
+
padding: 0;
|
708
|
+
margin: 0;
|
709
|
+
margin-bottom: 4px; }
|
710
|
+
.source_table .header {
|
711
|
+
padding: 10px; }
|
712
|
+
.source_table pre {
|
713
|
+
margin: 0;
|
714
|
+
padding: 0;
|
715
|
+
white-space: normal;
|
716
|
+
color: black;
|
717
|
+
font-family: "Monaco", "Inconsolata", "Consolas", monospace; }
|
718
|
+
.source_table code {
|
719
|
+
color: black;
|
720
|
+
font-family: "Monaco", "Inconsolata", "Consolas", monospace; }
|
721
|
+
.source_table pre {
|
722
|
+
background-color: #333333; }
|
723
|
+
.source_table pre ol {
|
724
|
+
margin: 0px;
|
725
|
+
padding: 0px;
|
726
|
+
margin-left: 45px;
|
727
|
+
font-size: 12px;
|
728
|
+
color: white; }
|
729
|
+
.source_table pre li {
|
730
|
+
margin: 0px;
|
731
|
+
padding: 2px 6px;
|
732
|
+
border-left: 5px solid white; }
|
733
|
+
.source_table pre li code {
|
734
|
+
white-space: pre;
|
735
|
+
white-space: pre-wrap; }
|
736
|
+
.source_table pre .hits {
|
737
|
+
float: right;
|
738
|
+
margin-left: 10px;
|
739
|
+
padding: 2px 4px;
|
740
|
+
background-color: #444444;
|
741
|
+
background: -webkit-gradient(linear, 0 0, 0 bottom, from(#222222), to(#666666));
|
742
|
+
background: -moz-linear-gradient(#222222, #666666);
|
743
|
+
background: linear-gradient(#222222, #666666);
|
744
|
+
color: white;
|
745
|
+
font-family: Helvetica, "Helvetica Neue", Arial, sans-serif;
|
746
|
+
font-size: 10px;
|
747
|
+
font-weight: bold;
|
748
|
+
text-align: center;
|
749
|
+
border-radius: 6px; }
|
750
|
+
|
751
|
+
#footer {
|
752
|
+
color: #dddddd;
|
753
|
+
font-size: 12px;
|
754
|
+
font-weight: bold;
|
755
|
+
margin-top: 12px;
|
756
|
+
text-align: right; }
|
757
|
+
#footer a {
|
758
|
+
color: #eeeeee;
|
759
|
+
text-decoration: underline; }
|
760
|
+
#footer a:hover {
|
761
|
+
color: white;
|
762
|
+
text-decoration: none; }
|
763
|
+
|
764
|
+
.green {
|
765
|
+
color: #009900; }
|
766
|
+
|
767
|
+
.red {
|
768
|
+
color: #990000; }
|
769
|
+
|
770
|
+
.yellow {
|
771
|
+
color: #ddaa00; }
|
772
|
+
|
773
|
+
.source_table .covered {
|
774
|
+
border-color: #009900; }
|
775
|
+
.source_table .missed {
|
776
|
+
border-color: #990000; }
|
777
|
+
.source_table .never {
|
778
|
+
border-color: black; }
|
779
|
+
.source_table .skipped {
|
780
|
+
border-color: #ffcc00; }
|
781
|
+
.source_table .covered:nth-child(odd) {
|
782
|
+
background-color: #cdf2cd; }
|
783
|
+
.source_table .covered:nth-child(even) {
|
784
|
+
background-color: #dbf2db; }
|
785
|
+
.source_table .missed:nth-child(odd) {
|
786
|
+
background-color: #f7c0c0; }
|
787
|
+
.source_table .missed:nth-child(even) {
|
788
|
+
background-color: #f7cfcf; }
|
789
|
+
.source_table .never:nth-child(odd) {
|
790
|
+
background-color: #efefef; }
|
791
|
+
.source_table .never:nth-child(even) {
|
792
|
+
background-color: #f4f4f4; }
|
793
|
+
.source_table .skipped:nth-child(odd) {
|
794
|
+
background-color: #fbf0c0; }
|
795
|
+
.source_table .skipped:nth-child(even) {
|
796
|
+
background-color: #fbffcf; }
|
797
|
+
|
798
|
+
|
799
|
+
|