rack-mini-profiler 0.1.23 → 0.1.24
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.
Potentially problematic release.
This version of rack-mini-profiler might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/Ruby/CHANGELOG +55 -35
- data/Ruby/README.md +19 -1
- data/Ruby/lib/html/includes.css +451 -75
- data/Ruby/lib/html/includes.js +59 -12
- data/Ruby/lib/html/includes.less +38 -35
- data/Ruby/lib/html/includes.tmpl +4 -3
- data/Ruby/lib/html/profile_handler.js +1 -1
- data/Ruby/lib/mini_profiler/config.rb +4 -1
- data/Ruby/lib/mini_profiler/context.rb +11 -10
- data/Ruby/lib/mini_profiler/flame_graph.rb +54 -0
- data/Ruby/lib/mini_profiler/gc_profiler.rb +8 -4
- data/Ruby/lib/mini_profiler/profiler.rb +179 -170
- data/Ruby/lib/mini_profiler/profiling_methods.rb +131 -108
- data/Ruby/lib/mini_profiler/storage/abstract_store.rb +31 -27
- data/Ruby/lib/mini_profiler/storage/file_store.rb +111 -109
- data/Ruby/lib/mini_profiler/storage/memcache_store.rb +11 -9
- data/Ruby/lib/mini_profiler/storage/memory_store.rb +65 -63
- data/Ruby/lib/mini_profiler/storage/redis_store.rb +14 -4
- data/Ruby/lib/mini_profiler/version.rb +2 -2
- data/Ruby/lib/patches/sql_patches.rb +70 -48
- data/rack-mini-profiler.gemspec +1 -1
- metadata +40 -55
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ded491fde33bb6a9cf0a4a8f1244369e2a74b4a9
|
4
|
+
data.tar.gz: 20ceb4111b05b4710e80f81d0823a39308bc6961
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3ee1c16f8a999d43b612e8006af87743687c0ec5ed75adbbdc8bc1348611ba35b7c905e18c9936d81d02766bfc306ea9af12bb79368917234cd929c179085a92
|
7
|
+
data.tar.gz: 94bc2bb61a21d1f1ca193891cbf7f3cf81709707753ab0836dee498422b44494bf36fbfeb576e65427fe4ff02497a185e2e899e8b92034ecb4278891409127e2
|
data/Ruby/CHANGELOG
CHANGED
@@ -1,77 +1,77 @@
|
|
1
|
-
28-June-2012 - Sam
|
2
|
-
|
1
|
+
28-June-2012 - Sam
|
2
|
+
|
3
3
|
* Started change log
|
4
4
|
* Corrected profiler so it properly captures POST requests (was supressing non 200s)
|
5
|
-
* Amended Rack.MiniProfiler.config[:user_provider] to use ip addres for identity
|
5
|
+
* Amended Rack.MiniProfiler.config[:user_provider] to use ip addres for identity
|
6
6
|
* Fixed bug where unviewed missing ids never got cleared
|
7
7
|
* Supress all '/assets/' in the rails tie (makes debugging easier)
|
8
8
|
* record_sql was mega buggy
|
9
9
|
* added MemcacheStore
|
10
10
|
|
11
|
-
9-July-2012 - Sam
|
11
|
+
9-July-2012 - Sam
|
12
12
|
|
13
13
|
* Cleaned up mechanism for profiling in production, all you need to do now
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
is call Rack::MiniProfiler.authorize_request to get profiling working in
|
15
|
+
production
|
16
|
+
* Added option to display full backtraces pp=full-backtrace
|
17
|
+
* Cleaned up railties, got rid of the post authorize callback
|
18
|
+
* Version 0.1.3
|
19
19
|
|
20
|
-
12-July-2012 - Sam
|
20
|
+
12-July-2012 - Sam
|
21
21
|
|
22
22
|
* Fixed incorrect profiling steps (was not indenting or measuring start time right
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
* Implemented native PG and MySql2 interceptors, this gives way more accurate times
|
24
|
+
* Refactored context so its a proper class and not a hash
|
25
|
+
* Added some more client probing built in to rails
|
26
|
+
* More tests
|
27
|
+
|
28
|
+
18-July-2012 - Sam
|
27
29
|
|
28
|
-
18-July-2012 - Sam
|
29
|
-
|
30
30
|
* Added First Paint time for chrome
|
31
31
|
* Bug fix to ensure non Rails installs have mini profiler
|
32
32
|
* Version 0.1.7
|
33
33
|
|
34
|
-
30-July-2012 - Sam
|
35
|
-
|
34
|
+
30-July-2012 - Sam
|
35
|
+
|
36
36
|
* Made compliant with ancient versions of Rack (including Rack used by Rails2)
|
37
|
-
* Fixed broken share link
|
37
|
+
* Fixed broken share link
|
38
38
|
* Fixed crashes on startup (in MemoryStore and FileStore)
|
39
39
|
* Version 0.1.8
|
40
|
-
* Unicode fix
|
40
|
+
* Unicode fix
|
41
41
|
* Version 0.1.9
|
42
42
|
|
43
43
|
7-August-2012 - Sam
|
44
44
|
|
45
45
|
* Added option to disable profiler for the current session (pp=disable / pp=enable)
|
46
|
-
* yajl compatability contributed by Sven Riedel
|
46
|
+
* yajl compatability contributed by Sven Riedel
|
47
47
|
|
48
|
-
10-August-2012 - Sam
|
48
|
+
10-August-2012 - Sam
|
49
49
|
|
50
|
-
* Added basic prepared statement profiling for postgres
|
50
|
+
* Added basic prepared statement profiling for postgres
|
51
51
|
|
52
|
-
20-August-2012 - Sam
|
53
|
-
|
54
|
-
* 1.12.pre
|
52
|
+
20-August-2012 - Sam
|
53
|
+
|
54
|
+
* 1.12.pre
|
55
55
|
* Cap X-MiniProfiler-Ids at 10, otherwise the header can get killed
|
56
56
|
|
57
57
|
3-September-2012 - Sam
|
58
58
|
|
59
59
|
* 1.13.pre
|
60
|
-
* pg gem prepared statements were not being logged correctly
|
60
|
+
* pg gem prepared statements were not being logged correctly
|
61
61
|
* added setting config.backtrace_ignores = [] - an array of regexes that match on caller lines that get ignored
|
62
|
-
* added setting config.backtrace_includes = [] - an array of regexes that get included in the trace by default
|
62
|
+
* added setting config.backtrace_includes = [] - an array of regexes that get included in the trace by default
|
63
63
|
* cleaned up the way client settings are stored
|
64
64
|
* made pp=full-backtrace "sticky"
|
65
65
|
* added pp=normal-backtrace to clear the "sticky" state
|
66
66
|
* change "pp=sample" to work with "caller" no need for stack trace gem
|
67
67
|
|
68
|
-
4-September-2012 - Sam
|
68
|
+
4-September-2012 - Sam
|
69
69
|
|
70
70
|
* 1.15.pre
|
71
|
-
* fixed annoying bug where client settings were not sticking
|
71
|
+
* fixed annoying bug where client settings were not sticking
|
72
72
|
* fixed long standing issue with Rack::ConditionalGet stopping MiniProfiler from working properly
|
73
73
|
|
74
|
-
5-September-2012 - Sam
|
74
|
+
5-September-2012 - Sam
|
75
75
|
|
76
76
|
* 1.16
|
77
77
|
* fixed long standing problem specs (issue with memory store)
|
@@ -83,25 +83,45 @@
|
|
83
83
|
* 1.17
|
84
84
|
* pp=sample was bust unless stacktrace was installed
|
85
85
|
|
86
|
-
10-September-2012 - Sam
|
86
|
+
10-September-2012 - Sam
|
87
87
|
|
88
88
|
* 1.19
|
89
89
|
* fix compat issue with 1.8.7
|
90
90
|
|
91
91
|
12-September-2012 - Sam
|
92
|
-
|
92
|
+
|
93
93
|
* 1.20
|
94
94
|
* Added pp=profile-gc , it allows you to profile the GC in Ruby 1.9.3
|
95
95
|
|
96
96
|
17-September-2012
|
97
97
|
* 1.21
|
98
|
-
* New MemchacedStore
|
98
|
+
* New MemchacedStore
|
99
99
|
* Rails 4 support
|
100
100
|
|
101
101
|
17-September-2012
|
102
102
|
* Allow rack-mini-profiler to be sourced from github
|
103
103
|
* Extracted the pp=profile-gc-time out, the object space profiler needs to disable gc
|
104
104
|
|
105
|
-
20-September-
|
105
|
+
20-September-2012
|
106
106
|
* 1.22
|
107
107
|
* Fix permission issue in the gem
|
108
|
+
|
109
|
+
8-April-2013
|
110
|
+
* 1.24
|
111
|
+
* Flame Graph Support see: http://samsaffron.com/archive/2013/03/19/flame-graphs-in-ruby-miniprofiler
|
112
|
+
* Fix file retention leak in file_store
|
113
|
+
* New toggle_shortcut and start_hidden options
|
114
|
+
* Fix for AngularJS support and MooTools
|
115
|
+
* More robust gc profiling
|
116
|
+
* Mongoid support
|
117
|
+
* Fix for html5 implicit body tags
|
118
|
+
* script tag initialized via data-attributes
|
119
|
+
* new - Rack::MiniProfiler.counter counter_name {}
|
120
|
+
* Allow usage of existing jQuery if its already loaded
|
121
|
+
* Fix pp=enable
|
122
|
+
* 1.8.7 support ... grrr
|
123
|
+
* Net:HTTP profiling
|
124
|
+
* pre authorize to run in all non development? and production? modes
|
125
|
+
|
126
|
+
|
127
|
+
|
data/Ruby/README.md
CHANGED
@@ -79,6 +79,22 @@ RedisStore/MemcacheStore work in multi process and multi machine environments (R
|
|
79
79
|
|
80
80
|
Additionally you may implement an AbstractStore for your own provider.
|
81
81
|
|
82
|
+
## User result segregation
|
83
|
+
|
84
|
+
MiniProfiler will attempt to keep all user results isolated, out-of-the-box the user provider uses the ip address:
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
Rack::MiniProfiler.config.user_provider = Proc.new{|env| Rack::Request.new(env).ip}
|
88
|
+
```
|
89
|
+
|
90
|
+
You can override (something that is very important in a multi-machine production setup):
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
Rack::MiniProfiler.config.user_provider = Proc.new{ |env| CurrentUser.get(env) }
|
94
|
+
```
|
95
|
+
|
96
|
+
The string this function returns should be unique for each user on the system (for anonymous you may need to fall back to ip address)
|
97
|
+
|
82
98
|
## Running the Specs
|
83
99
|
|
84
100
|
```
|
@@ -136,8 +152,10 @@ end
|
|
136
152
|
* skip_schema_queries - Whether or not you want to log the queries about the schema of your tables. Default is 'false', 'true' in rails development.
|
137
153
|
* auto_inject (default true) - when false the miniprofiler script is not injected in the page
|
138
154
|
* backtrace_filter - a regex you can use to filter out unwanted lines from the backtraces
|
155
|
+
* toggle_shortcut (default Alt+P) - a jquery.hotkeys.js-style keyboard shortcut, used to toggle the mini_profiler's visibility. See http://code.google.com/p/js-hotkeys/ for more info.
|
156
|
+
* start_hidden (default false) - Whether or not you want the mini_profiler to be visible when loading a page
|
139
157
|
|
140
158
|
## Special query strings
|
141
159
|
|
142
|
-
If you include the query string `pp=help` at the end of your request you will see the various
|
160
|
+
If you include the query string `pp=help` at the end of your request you will see the various options available. You can use these options to extend or contract the amount of diagnostics rack-mini-profiler gathers.
|
143
161
|
|
data/Ruby/lib/html/includes.css
CHANGED
@@ -1,75 +1,451 @@
|
|
1
|
-
.profiler-result
|
2
|
-
.profiler-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
.profiler-result
|
8
|
-
.profiler-
|
9
|
-
.profiler-result
|
10
|
-
.profiler-
|
11
|
-
.profiler-result
|
12
|
-
.profiler-
|
13
|
-
.profiler-result
|
14
|
-
.profiler-
|
15
|
-
.profiler-result
|
16
|
-
.profiler-
|
17
|
-
.profiler-result
|
18
|
-
.profiler-
|
19
|
-
.profiler-result
|
20
|
-
.profiler-
|
21
|
-
.profiler-result
|
22
|
-
.profiler-
|
23
|
-
.profiler-result
|
24
|
-
.profiler-
|
25
|
-
.profiler-result
|
26
|
-
.profiler-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
.profiler-result
|
38
|
-
.profiler-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
.profiler-result
|
43
|
-
.profiler-
|
44
|
-
.profiler-result
|
45
|
-
.profiler-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
.profiler-
|
50
|
-
.profiler-
|
51
|
-
|
52
|
-
|
53
|
-
.profiler-
|
54
|
-
.profiler-
|
55
|
-
|
56
|
-
|
57
|
-
.profiler-
|
58
|
-
|
59
|
-
|
60
|
-
.profiler-
|
61
|
-
|
62
|
-
|
63
|
-
.profiler-
|
64
|
-
|
65
|
-
|
66
|
-
.profiler-result
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
.profiler-result
|
72
|
-
|
73
|
-
|
74
|
-
.profiler-result
|
75
|
-
|
1
|
+
.profiler-result,
|
2
|
+
.profiler-queries {
|
3
|
+
color: #555;
|
4
|
+
line-height: 1;
|
5
|
+
font-size: 12px;
|
6
|
+
}
|
7
|
+
.profiler-result pre,
|
8
|
+
.profiler-queries pre,
|
9
|
+
.profiler-result code,
|
10
|
+
.profiler-queries code,
|
11
|
+
.profiler-result label,
|
12
|
+
.profiler-queries label,
|
13
|
+
.profiler-result table,
|
14
|
+
.profiler-queries table,
|
15
|
+
.profiler-result tbody,
|
16
|
+
.profiler-queries tbody,
|
17
|
+
.profiler-result thead,
|
18
|
+
.profiler-queries thead,
|
19
|
+
.profiler-result tfoot,
|
20
|
+
.profiler-queries tfoot,
|
21
|
+
.profiler-result tr,
|
22
|
+
.profiler-queries tr,
|
23
|
+
.profiler-result th,
|
24
|
+
.profiler-queries th,
|
25
|
+
.profiler-result td,
|
26
|
+
.profiler-queries td {
|
27
|
+
margin: 0;
|
28
|
+
padding: 0;
|
29
|
+
border: 0;
|
30
|
+
font-size: 100%;
|
31
|
+
font: inherit;
|
32
|
+
vertical-align: baseline;
|
33
|
+
background-color: transparent;
|
34
|
+
overflow: visible;
|
35
|
+
max-height: none;
|
36
|
+
}
|
37
|
+
.profiler-result table,
|
38
|
+
.profiler-queries table {
|
39
|
+
border-collapse: collapse;
|
40
|
+
border-spacing: 0;
|
41
|
+
}
|
42
|
+
.profiler-result a,
|
43
|
+
.profiler-queries a,
|
44
|
+
.profiler-result a:hover,
|
45
|
+
.profiler-queries a:hover {
|
46
|
+
cursor: pointer;
|
47
|
+
color: #0077cc;
|
48
|
+
}
|
49
|
+
.profiler-result a,
|
50
|
+
.profiler-queries a {
|
51
|
+
text-decoration: none;
|
52
|
+
}
|
53
|
+
.profiler-result a:hover,
|
54
|
+
.profiler-queries a:hover {
|
55
|
+
text-decoration: underline;
|
56
|
+
}
|
57
|
+
.profiler-result {
|
58
|
+
font-family: Helvetica, Arial, sans-serif;
|
59
|
+
}
|
60
|
+
.profiler-result .profiler-toggle-duration-with-children {
|
61
|
+
float: right;
|
62
|
+
}
|
63
|
+
.profiler-result table.profiler-client-timings {
|
64
|
+
margin-top: 10px;
|
65
|
+
}
|
66
|
+
.profiler-result .profiler-label {
|
67
|
+
color: #555555;
|
68
|
+
overflow: hidden;
|
69
|
+
text-overflow: ellipsis;
|
70
|
+
}
|
71
|
+
.profiler-result .profiler-unit {
|
72
|
+
color: #aaaaaa;
|
73
|
+
}
|
74
|
+
.profiler-result .profiler-trivial {
|
75
|
+
display: none;
|
76
|
+
}
|
77
|
+
.profiler-result .profiler-trivial td,
|
78
|
+
.profiler-result .profiler-trivial td * {
|
79
|
+
color: #aaaaaa !important;
|
80
|
+
}
|
81
|
+
.profiler-result pre,
|
82
|
+
.profiler-result code,
|
83
|
+
.profiler-result .profiler-number,
|
84
|
+
.profiler-result .profiler-unit {
|
85
|
+
font-family: Consolas, monospace, serif;
|
86
|
+
}
|
87
|
+
.profiler-result .profiler-number {
|
88
|
+
color: #111111;
|
89
|
+
}
|
90
|
+
.profiler-result .profiler-info {
|
91
|
+
text-align: right;
|
92
|
+
}
|
93
|
+
.profiler-result .profiler-info .profiler-name {
|
94
|
+
float: left;
|
95
|
+
}
|
96
|
+
.profiler-result .profiler-info .profiler-server-time {
|
97
|
+
white-space: nowrap;
|
98
|
+
}
|
99
|
+
.profiler-result .profiler-timings th {
|
100
|
+
background-color: #fff;
|
101
|
+
color: #aaaaaa;
|
102
|
+
text-align: right;
|
103
|
+
}
|
104
|
+
.profiler-result .profiler-timings th,
|
105
|
+
.profiler-result .profiler-timings td {
|
106
|
+
white-space: nowrap;
|
107
|
+
}
|
108
|
+
.profiler-result .profiler-timings .profiler-duration-with-children {
|
109
|
+
display: none;
|
110
|
+
}
|
111
|
+
.profiler-result .profiler-timings .profiler-duration {
|
112
|
+
font-family: Consolas, monospace, serif;
|
113
|
+
color: #111111;
|
114
|
+
text-align: right;
|
115
|
+
}
|
116
|
+
.profiler-result .profiler-timings .profiler-indent {
|
117
|
+
letter-spacing: 4px;
|
118
|
+
}
|
119
|
+
.profiler-result .profiler-timings .profiler-queries-show .profiler-number,
|
120
|
+
.profiler-result .profiler-timings .profiler-queries-show .profiler-unit {
|
121
|
+
color: #0077cc;
|
122
|
+
}
|
123
|
+
.profiler-result .profiler-timings .profiler-queries-duration {
|
124
|
+
padding-left: 6px;
|
125
|
+
}
|
126
|
+
.profiler-result .profiler-timings .profiler-percent-in-sql {
|
127
|
+
white-space: nowrap;
|
128
|
+
text-align: right;
|
129
|
+
}
|
130
|
+
.profiler-result .profiler-timings tfoot td {
|
131
|
+
padding-top: 10px;
|
132
|
+
text-align: right;
|
133
|
+
}
|
134
|
+
.profiler-result .profiler-timings tfoot td a {
|
135
|
+
font-size: 95%;
|
136
|
+
display: inline-block;
|
137
|
+
margin-left: 12px;
|
138
|
+
}
|
139
|
+
.profiler-result .profiler-timings tfoot td a:first-child {
|
140
|
+
float: left;
|
141
|
+
margin-left: 0px;
|
142
|
+
}
|
143
|
+
.profiler-result .profiler-timings tfoot td a.profiler-custom-link {
|
144
|
+
float: left;
|
145
|
+
}
|
146
|
+
.profiler-result .profiler-queries {
|
147
|
+
font-family: Helvetica, Arial, sans-serif;
|
148
|
+
}
|
149
|
+
.profiler-result .profiler-queries .profiler-stack-trace {
|
150
|
+
margin-bottom: 15px;
|
151
|
+
}
|
152
|
+
.profiler-result .profiler-queries pre {
|
153
|
+
font-family: Consolas, monospace, serif;
|
154
|
+
white-space: pre-wrap;
|
155
|
+
}
|
156
|
+
.profiler-result .profiler-queries th {
|
157
|
+
background-color: #fff;
|
158
|
+
border-bottom: 1px solid #555;
|
159
|
+
font-weight: bold;
|
160
|
+
padding: 15px;
|
161
|
+
white-space: nowrap;
|
162
|
+
}
|
163
|
+
.profiler-result .profiler-queries td {
|
164
|
+
padding: 15px;
|
165
|
+
text-align: left;
|
166
|
+
background-color: #fff;
|
167
|
+
}
|
168
|
+
.profiler-result .profiler-queries td:last-child {
|
169
|
+
padding-right: 25px;
|
170
|
+
}
|
171
|
+
.profiler-result .profiler-queries .profiler-odd td {
|
172
|
+
background-color: #e5e5e5;
|
173
|
+
}
|
174
|
+
.profiler-result .profiler-queries .profiler-since-start,
|
175
|
+
.profiler-result .profiler-queries .profiler-duration {
|
176
|
+
text-align: right;
|
177
|
+
}
|
178
|
+
.profiler-result .profiler-queries .profiler-info div {
|
179
|
+
text-align: right;
|
180
|
+
margin-bottom: 5px;
|
181
|
+
}
|
182
|
+
.profiler-result .profiler-queries .profiler-gap-info,
|
183
|
+
.profiler-result .profiler-queries .profiler-gap-info td {
|
184
|
+
background-color: #ccc;
|
185
|
+
}
|
186
|
+
.profiler-result .profiler-queries .profiler-gap-info .profiler-unit {
|
187
|
+
color: #777;
|
188
|
+
}
|
189
|
+
.profiler-result .profiler-queries .profiler-gap-info .profiler-info {
|
190
|
+
text-align: right;
|
191
|
+
}
|
192
|
+
.profiler-result .profiler-queries .profiler-gap-info.profiler-trivial-gaps {
|
193
|
+
display: none;
|
194
|
+
}
|
195
|
+
.profiler-result .profiler-queries .profiler-trivial-gap-container {
|
196
|
+
text-align: center;
|
197
|
+
}
|
198
|
+
.profiler-result .profiler-queries .str {
|
199
|
+
color: #800000;
|
200
|
+
}
|
201
|
+
.profiler-result .profiler-queries .kwd {
|
202
|
+
color: #00008b;
|
203
|
+
}
|
204
|
+
.profiler-result .profiler-queries .com {
|
205
|
+
color: #808080;
|
206
|
+
}
|
207
|
+
.profiler-result .profiler-queries .typ {
|
208
|
+
color: #2b91af;
|
209
|
+
}
|
210
|
+
.profiler-result .profiler-queries .lit {
|
211
|
+
color: #800000;
|
212
|
+
}
|
213
|
+
.profiler-result .profiler-queries .pun {
|
214
|
+
color: #000000;
|
215
|
+
}
|
216
|
+
.profiler-result .profiler-queries .pln {
|
217
|
+
color: #000000;
|
218
|
+
}
|
219
|
+
.profiler-result .profiler-queries .tag {
|
220
|
+
color: #800000;
|
221
|
+
}
|
222
|
+
.profiler-result .profiler-queries .atn {
|
223
|
+
color: #ff0000;
|
224
|
+
}
|
225
|
+
.profiler-result .profiler-queries .atv {
|
226
|
+
color: #0000ff;
|
227
|
+
}
|
228
|
+
.profiler-result .profiler-queries .dec {
|
229
|
+
color: #800080;
|
230
|
+
}
|
231
|
+
.profiler-result .profiler-warning,
|
232
|
+
.profiler-result .profiler-warning *,
|
233
|
+
.profiler-result .profiler-warning .profiler-queries-show,
|
234
|
+
.profiler-result .profiler-warning .profiler-queries-show .profiler-unit {
|
235
|
+
color: #f00;
|
236
|
+
}
|
237
|
+
.profiler-result .profiler-warning:hover,
|
238
|
+
.profiler-result .profiler-warning *:hover,
|
239
|
+
.profiler-result .profiler-warning .profiler-queries-show:hover,
|
240
|
+
.profiler-result .profiler-warning .profiler-queries-show .profiler-unit:hover {
|
241
|
+
color: #f00;
|
242
|
+
}
|
243
|
+
.profiler-result .profiler-nuclear {
|
244
|
+
color: #f00;
|
245
|
+
font-weight: bold;
|
246
|
+
padding-right: 2px;
|
247
|
+
}
|
248
|
+
.profiler-result .profiler-nuclear:hover {
|
249
|
+
color: #f00;
|
250
|
+
}
|
251
|
+
.profiler-results {
|
252
|
+
z-index: 2147483643;
|
253
|
+
position: fixed;
|
254
|
+
top: 0px;
|
255
|
+
}
|
256
|
+
.profiler-results.profiler-left {
|
257
|
+
left: 0px;
|
258
|
+
}
|
259
|
+
.profiler-results.profiler-left.profiler-no-controls .profiler-result:last-child .profiler-button,
|
260
|
+
.profiler-results.profiler-left .profiler-controls {
|
261
|
+
-webkit-border-bottom-right-radius: 10px;
|
262
|
+
-moz-border-radius-bottomright: 10px;
|
263
|
+
border-bottom-right-radius: 10px;
|
264
|
+
}
|
265
|
+
.profiler-results.profiler-left .profiler-button,
|
266
|
+
.profiler-results.profiler-left .profiler-controls {
|
267
|
+
border-right: 1px solid #888888;
|
268
|
+
}
|
269
|
+
.profiler-results.profiler-right {
|
270
|
+
right: 0px;
|
271
|
+
}
|
272
|
+
.profiler-results.profiler-right.profiler-no-controls .profiler-result:last-child .profiler-button,
|
273
|
+
.profiler-results.profiler-right .profiler-controls {
|
274
|
+
-webkit-border-bottom-left-radius: 10px;
|
275
|
+
-moz-border-radius-bottomleft: 10px;
|
276
|
+
border-bottom-left-radius: 10px;
|
277
|
+
}
|
278
|
+
.profiler-results.profiler-right .profiler-button,
|
279
|
+
.profiler-results.profiler-right .profiler-controls {
|
280
|
+
border-left: 1px solid #888888;
|
281
|
+
}
|
282
|
+
.profiler-results .profiler-button,
|
283
|
+
.profiler-results .profiler-controls {
|
284
|
+
display: none;
|
285
|
+
z-index: 2147483640;
|
286
|
+
border-bottom: 1px solid #888888;
|
287
|
+
background-color: #fff;
|
288
|
+
padding: 4px 7px;
|
289
|
+
text-align: right;
|
290
|
+
cursor: pointer;
|
291
|
+
}
|
292
|
+
.profiler-results .profiler-button.profiler-button-active,
|
293
|
+
.profiler-results .profiler-controls.profiler-button-active {
|
294
|
+
background-color: maroon;
|
295
|
+
}
|
296
|
+
.profiler-results .profiler-button.profiler-button-active .profiler-number,
|
297
|
+
.profiler-results .profiler-controls.profiler-button-active .profiler-number,
|
298
|
+
.profiler-results .profiler-button.profiler-button-active .profiler-nuclear,
|
299
|
+
.profiler-results .profiler-controls.profiler-button-active .profiler-nuclear {
|
300
|
+
color: #fff;
|
301
|
+
font-weight: bold;
|
302
|
+
}
|
303
|
+
.profiler-results .profiler-button.profiler-button-active .profiler-unit,
|
304
|
+
.profiler-results .profiler-controls.profiler-button-active .profiler-unit {
|
305
|
+
color: #fff;
|
306
|
+
font-weight: normal;
|
307
|
+
}
|
308
|
+
.profiler-results .profiler-controls {
|
309
|
+
display: block;
|
310
|
+
font-size: 12px;
|
311
|
+
font-family: Consolas, monospace, serif;
|
312
|
+
cursor: default;
|
313
|
+
text-align: center;
|
314
|
+
}
|
315
|
+
.profiler-results .profiler-controls span {
|
316
|
+
border-right: 1px solid #aaaaaa;
|
317
|
+
padding-right: 5px;
|
318
|
+
margin-right: 5px;
|
319
|
+
cursor: pointer;
|
320
|
+
}
|
321
|
+
.profiler-results .profiler-controls span:last-child {
|
322
|
+
border-right: none;
|
323
|
+
}
|
324
|
+
.profiler-results .profiler-popup {
|
325
|
+
display: none;
|
326
|
+
z-index: 2147483641;
|
327
|
+
position: absolute;
|
328
|
+
background-color: #fff;
|
329
|
+
border: 1px solid #aaa;
|
330
|
+
padding: 5px 10px;
|
331
|
+
text-align: left;
|
332
|
+
line-height: 18px;
|
333
|
+
overflow: auto;
|
334
|
+
-moz-box-shadow: 0px 1px 15px #555555;
|
335
|
+
-webkit-box-shadow: 0px 1px 15px #555555;
|
336
|
+
box-shadow: 0px 1px 15px #555555;
|
337
|
+
}
|
338
|
+
.profiler-results .profiler-popup .profiler-info {
|
339
|
+
margin-bottom: 3px;
|
340
|
+
padding-bottom: 2px;
|
341
|
+
border-bottom: 1px solid #ddd;
|
342
|
+
}
|
343
|
+
.profiler-results .profiler-popup .profiler-info .profiler-name {
|
344
|
+
font-size: 110%;
|
345
|
+
font-weight: bold;
|
346
|
+
}
|
347
|
+
.profiler-results .profiler-popup .profiler-info .profiler-name .profiler-overall-duration {
|
348
|
+
display: none;
|
349
|
+
}
|
350
|
+
.profiler-results .profiler-popup .profiler-info .profiler-server-time {
|
351
|
+
font-size: 95%;
|
352
|
+
}
|
353
|
+
.profiler-results .profiler-popup .profiler-timings th,
|
354
|
+
.profiler-results .profiler-popup .profiler-timings td {
|
355
|
+
padding-left: 6px;
|
356
|
+
padding-right: 6px;
|
357
|
+
}
|
358
|
+
.profiler-results .profiler-popup .profiler-timings th {
|
359
|
+
font-size: 95%;
|
360
|
+
padding-bottom: 3px;
|
361
|
+
}
|
362
|
+
.profiler-results .profiler-popup .profiler-timings .profiler-label {
|
363
|
+
max-width: 275px;
|
364
|
+
}
|
365
|
+
.profiler-results .profiler-queries {
|
366
|
+
display: none;
|
367
|
+
z-index: 2147483643;
|
368
|
+
position: absolute;
|
369
|
+
overflow-y: auto;
|
370
|
+
overflow-x: auto;
|
371
|
+
background-color: #fff;
|
372
|
+
}
|
373
|
+
.profiler-results .profiler-queries th {
|
374
|
+
font-size: 17px;
|
375
|
+
}
|
376
|
+
.profiler-results.profiler-min .profiler-result {
|
377
|
+
display: none;
|
378
|
+
}
|
379
|
+
.profiler-results.profiler-min .profiler-controls span {
|
380
|
+
display: none;
|
381
|
+
}
|
382
|
+
.profiler-results.profiler-min .profiler-controls .profiler-min-max {
|
383
|
+
border-right: none;
|
384
|
+
padding: 0px;
|
385
|
+
margin: 0px;
|
386
|
+
}
|
387
|
+
.profiler-queries-bg {
|
388
|
+
z-index: 2147483642;
|
389
|
+
display: none;
|
390
|
+
background: #000;
|
391
|
+
opacity: 0.7;
|
392
|
+
position: absolute;
|
393
|
+
top: 0px;
|
394
|
+
left: 0px;
|
395
|
+
min-width: 100%;
|
396
|
+
}
|
397
|
+
.profiler-result-full .profiler-result {
|
398
|
+
width: 950px;
|
399
|
+
margin: 30px auto;
|
400
|
+
}
|
401
|
+
.profiler-result-full .profiler-result .profiler-button {
|
402
|
+
display: none;
|
403
|
+
}
|
404
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-info {
|
405
|
+
font-size: 25px;
|
406
|
+
border-bottom: 1px solid #aaaaaa;
|
407
|
+
padding-bottom: 3px;
|
408
|
+
margin-bottom: 25px;
|
409
|
+
}
|
410
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-info .profiler-overall-duration {
|
411
|
+
padding-right: 20px;
|
412
|
+
font-size: 80%;
|
413
|
+
color: #888;
|
414
|
+
}
|
415
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-timings td,
|
416
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-timings th {
|
417
|
+
padding-left: 8px;
|
418
|
+
padding-right: 8px;
|
419
|
+
}
|
420
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-timings th {
|
421
|
+
padding-bottom: 7px;
|
422
|
+
}
|
423
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-timings td {
|
424
|
+
font-size: 14px;
|
425
|
+
padding-bottom: 4px;
|
426
|
+
}
|
427
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-timings td:first-child {
|
428
|
+
padding-left: 10px;
|
429
|
+
}
|
430
|
+
.profiler-result-full .profiler-result .profiler-popup .profiler-timings .profiler-label {
|
431
|
+
max-width: 550px;
|
432
|
+
}
|
433
|
+
.profiler-result-full .profiler-result .profiler-queries {
|
434
|
+
margin: 25px 0;
|
435
|
+
}
|
436
|
+
.profiler-result-full .profiler-result .profiler-queries table {
|
437
|
+
width: 100%;
|
438
|
+
}
|
439
|
+
.profiler-result-full .profiler-result .profiler-queries th {
|
440
|
+
font-size: 16px;
|
441
|
+
color: #555;
|
442
|
+
line-height: 20px;
|
443
|
+
}
|
444
|
+
.profiler-result-full .profiler-result .profiler-queries td {
|
445
|
+
padding: 15px 10px;
|
446
|
+
text-align: left;
|
447
|
+
}
|
448
|
+
.profiler-result-full .profiler-result .profiler-queries .profiler-info div {
|
449
|
+
text-align: right;
|
450
|
+
margin-bottom: 5px;
|
451
|
+
}
|