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.

@@ -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
+ }