rack-mini-profiler 0.1.23 → 0.1.24

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rack-mini-profiler might be problematic. Click here for more details.

@@ -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
@@ -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
- 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
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
- * 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
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-2010
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
+
@@ -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 option you have. You can use these options to extend or contract the amount of diagnostics rack-mini-profiler gathers.
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
 
@@ -1,75 +1,451 @@
1
- .profiler-result,.profiler-queries{color:#555;line-height:1;font-size:12px;}.profiler-result pre,.profiler-queries pre,.profiler-result code,.profiler-queries code,.profiler-result label,.profiler-queries label,.profiler-result table,.profiler-queries table,.profiler-result tbody,.profiler-queries tbody,.profiler-result thead,.profiler-queries thead,.profiler-result tfoot,.profiler-queries tfoot,.profiler-result tr,.profiler-queries tr,.profiler-result th,.profiler-queries th,.profiler-result td,.profiler-queries td{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;background-color:transparent;overflow:visible;max-height:none;}
2
- .profiler-result table,.profiler-queries table{border-collapse:collapse;border-spacing:0;}
3
- .profiler-result a,.profiler-queries a,.profiler-result a:hover,.profiler-queries a:hover{cursor:pointer;color:#0077cc;}
4
- .profiler-result a,.profiler-queries a{text-decoration:none;}.profiler-result a:hover,.profiler-queries a:hover{text-decoration:underline;}
5
- .profiler-result{font-family:Helvetica,Arial,sans-serif;}.profiler-result .profiler-toggle-duration-with-children{float:right;}
6
- .profiler-result table.profiler-client-timings{margin-top:10px;}
7
- .profiler-result .profiler-label{color:#555555;overflow:hidden;text-overflow:ellipsis;}
8
- .profiler-result .profiler-unit{color:#aaaaaa;}
9
- .profiler-result .profiler-trivial{display:none;}.profiler-result .profiler-trivial td,.profiler-result .profiler-trivial td *{color:#aaaaaa !important;}
10
- .profiler-result pre,.profiler-result code,.profiler-result .profiler-number,.profiler-result .profiler-unit{font-family:Consolas,monospace,serif;}
11
- .profiler-result .profiler-number{color:#111111;}
12
- .profiler-result .profiler-info{text-align:right;}.profiler-result .profiler-info .profiler-name{float:left;}
13
- .profiler-result .profiler-info .profiler-server-time{white-space:nowrap;}
14
- .profiler-result .profiler-timings th{background-color:#fff;color:#aaaaaa;text-align:right;}
15
- .profiler-result .profiler-timings th,.profiler-result .profiler-timings td{white-space:nowrap;}
16
- .profiler-result .profiler-timings .profiler-duration-with-children{display:none;}
17
- .profiler-result .profiler-timings .profiler-duration{font-family:Consolas,monospace,serif;color:#111111;text-align:right;}
18
- .profiler-result .profiler-timings .profiler-indent{letter-spacing:4px;}
19
- .profiler-result .profiler-timings .profiler-queries-show .profiler-number,.profiler-result .profiler-timings .profiler-queries-show .profiler-unit{color:#0077cc;}
20
- .profiler-result .profiler-timings .profiler-queries-duration{padding-left:6px;}
21
- .profiler-result .profiler-timings .profiler-percent-in-sql{white-space:nowrap;text-align:right;}
22
- .profiler-result .profiler-timings tfoot td{padding-top:10px;text-align:right;}.profiler-result .profiler-timings tfoot td a{font-size:95%;display:inline-block;margin-left:12px;}.profiler-result .profiler-timings tfoot td a:first-child{float:left;margin-left:0px;}
23
- .profiler-result .profiler-queries{font-family:Helvetica,Arial,sans-serif;}.profiler-result .profiler-queries .profiler-stack-trace{margin-bottom:15px;}
24
- .profiler-result .profiler-queries pre{font-family:Consolas,monospace,serif;white-space:pre-wrap;}
25
- .profiler-result .profiler-queries th{background-color:#fff;border-bottom:1px solid #555;font-weight:bold;padding:15px;white-space:nowrap;}
26
- .profiler-result .profiler-queries td{padding:15px;text-align:left;background-color:#fff;}.profiler-result .profiler-queries td:last-child{padding-right:25px;}
27
- .profiler-result .profiler-queries .profiler-odd td{background-color:#e5e5e5;}
28
- .profiler-result .profiler-queries .profiler-since-start,.profiler-result .profiler-queries .profiler-duration{text-align:right;}
29
- .profiler-result .profiler-queries .profiler-info div{text-align:right;margin-bottom:5px;}
30
- .profiler-result .profiler-queries .profiler-gap-info,.profiler-result .profiler-queries .profiler-gap-info td{background-color:#ccc;}
31
- .profiler-result .profiler-queries .profiler-gap-info .profiler-unit{color:#777;}
32
- .profiler-result .profiler-queries .profiler-gap-info .profiler-info{text-align:right;}
33
- .profiler-result .profiler-queries .profiler-gap-info.profiler-trivial-gaps{display:none;}
34
- .profiler-result .profiler-queries .profiler-trivial-gap-container{text-align:center;}
35
- .profiler-result .profiler-queries .str{color:#800000;}
36
- .profiler-result .profiler-queries .kwd{color:#00008b;}
37
- .profiler-result .profiler-queries .com{color:#808080;}
38
- .profiler-result .profiler-queries .typ{color:#2b91af;}
39
- .profiler-result .profiler-queries .lit{color:#800000;}
40
- .profiler-result .profiler-queries .pun{color:#000000;}
41
- .profiler-result .profiler-queries .pln{color:#000000;}
42
- .profiler-result .profiler-queries .tag{color:#800000;}
43
- .profiler-result .profiler-queries .atn{color:#ff0000;}
44
- .profiler-result .profiler-queries .atv{color:#0000ff;}
45
- .profiler-result .profiler-queries .dec{color:#800080;}
46
- .profiler-result .profiler-warning,.profiler-result .profiler-warning *,.profiler-result .profiler-warning .profiler-queries-show,.profiler-result .profiler-warning .profiler-queries-show .profiler-unit{color:#f00;}.profiler-result .profiler-warning:hover,.profiler-result .profiler-warning *:hover,.profiler-result .profiler-warning .profiler-queries-show:hover,.profiler-result .profiler-warning .profiler-queries-show .profiler-unit:hover{color:#f00;}
47
- .profiler-result .profiler-nuclear{color:#f00;font-weight:bold;padding-right:2px;}.profiler-result .profiler-nuclear:hover{color:#f00;}
48
- .profiler-results{z-index:2147483643;position:fixed;top:0px;}.profiler-results.profiler-left{left:0px;}.profiler-results.profiler-left.profiler-no-controls .profiler-result:last-child .profiler-button,.profiler-results.profiler-left .profiler-controls{-webkit-border-bottom-right-radius:10px;-moz-border-radius-bottomright:10px;border-bottom-right-radius:10px;}
49
- .profiler-results.profiler-left .profiler-button,.profiler-results.profiler-left .profiler-controls{border-right:1px solid #888888;}
50
- .profiler-results.profiler-right{right:0px;}.profiler-results.profiler-right.profiler-no-controls .profiler-result:last-child .profiler-button,.profiler-results.profiler-right .profiler-controls{-webkit-border-bottom-left-radius:10px;-moz-border-radius-bottomleft:10px;border-bottom-left-radius:10px;}
51
- .profiler-results.profiler-right .profiler-button,.profiler-results.profiler-right .profiler-controls{border-left:1px solid #888888;}
52
- .profiler-results .profiler-button,.profiler-results .profiler-controls{display:none;z-index:2147483640;border-bottom:1px solid #888888;background-color:#fff;padding:4px 7px;text-align:right;cursor:pointer;}.profiler-results .profiler-button.profiler-button-active,.profiler-results .profiler-controls.profiler-button-active{background-color:maroon;}.profiler-results .profiler-button.profiler-button-active .profiler-number,.profiler-results .profiler-controls.profiler-button-active .profiler-number,.profiler-results .profiler-button.profiler-button-active .profiler-nuclear,.profiler-results .profiler-controls.profiler-button-active .profiler-nuclear{color:#fff;font-weight:bold;}
53
- .profiler-results .profiler-button.profiler-button-active .profiler-unit,.profiler-results .profiler-controls.profiler-button-active .profiler-unit{color:#fff;font-weight:normal;}
54
- .profiler-results .profiler-controls{display:block;font-size:12px;font-family:Consolas,monospace,serif;cursor:default;text-align:center;}.profiler-results .profiler-controls span{border-right:1px solid #aaaaaa;padding-right:5px;margin-right:5px;cursor:pointer;}
55
- .profiler-results .profiler-controls span:last-child{border-right:none;}
56
- .profiler-results .profiler-popup{display:none;z-index:2147483641;position:absolute;background-color:#fff;border:1px solid #aaa;padding:5px 10px;text-align:left;line-height:18px;overflow:auto;-moz-box-shadow:0px 1px 15px #555555;-webkit-box-shadow:0px 1px 15px #555555;box-shadow:0px 1px 15px #555555;}.profiler-results .profiler-popup .profiler-info{margin-bottom:3px;padding-bottom:2px;border-bottom:1px solid #ddd;}.profiler-results .profiler-popup .profiler-info .profiler-name{font-size:110%;font-weight:bold;}.profiler-results .profiler-popup .profiler-info .profiler-name .profiler-overall-duration{display:none;}
57
- .profiler-results .profiler-popup .profiler-info .profiler-server-time{font-size:95%;}
58
- .profiler-results .profiler-popup .profiler-timings th,.profiler-results .profiler-popup .profiler-timings td{padding-left:6px;padding-right:6px;}
59
- .profiler-results .profiler-popup .profiler-timings th{font-size:95%;padding-bottom:3px;}
60
- .profiler-results .profiler-popup .profiler-timings .profiler-label{max-width:275px;}
61
- .profiler-results .profiler-queries{display:none;z-index:2147483643;position:absolute;overflow-y:auto;overflow-x:auto;background-color:#fff;}.profiler-results .profiler-queries th{font-size:17px;}
62
- .profiler-results.profiler-min .profiler-result{display:none;}
63
- .profiler-results.profiler-min .profiler-controls span{display:none;}
64
- .profiler-results.profiler-min .profiler-controls .profiler-min-max{border-right:none;padding:0px;margin:0px;}
65
- .profiler-queries-bg{z-index:2147483642;display:none;background:#000;opacity:0.7;position:absolute;top:0px;left:0px;min-width:100%;}
66
- .profiler-result-full .profiler-result{width:950px;margin:30px auto;}.profiler-result-full .profiler-result .profiler-button{display:none;}
67
- .profiler-result-full .profiler-result .profiler-popup .profiler-info{font-size:25px;border-bottom:1px solid #aaaaaa;padding-bottom:3px;margin-bottom:25px;}.profiler-result-full .profiler-result .profiler-popup .profiler-info .profiler-overall-duration{padding-right:20px;font-size:80%;color:#888;}
68
- .profiler-result-full .profiler-result .profiler-popup .profiler-timings td,.profiler-result-full .profiler-result .profiler-popup .profiler-timings th{padding-left:8px;padding-right:8px;}
69
- .profiler-result-full .profiler-result .profiler-popup .profiler-timings th{padding-bottom:7px;}
70
- .profiler-result-full .profiler-result .profiler-popup .profiler-timings td{font-size:14px;padding-bottom:4px;}.profiler-result-full .profiler-result .profiler-popup .profiler-timings td:first-child{padding-left:10px;}
71
- .profiler-result-full .profiler-result .profiler-popup .profiler-timings .profiler-label{max-width:550px;}
72
- .profiler-result-full .profiler-result .profiler-queries{margin:25px 0;}.profiler-result-full .profiler-result .profiler-queries table{width:100%;}
73
- .profiler-result-full .profiler-result .profiler-queries th{font-size:16px;color:#555;line-height:20px;}
74
- .profiler-result-full .profiler-result .profiler-queries td{padding:15px 10px;text-align:left;}
75
- .profiler-result-full .profiler-result .profiler-queries .profiler-info div{text-align:right;margin-bottom:5px;}
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
+ }