rack-insight 0.5.27 → 0.5.28
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.
- data/CHANGELOG +32 -0
- data/README.md +32 -7
- data/lib/rack/insight/app.rb +5 -0
- data/lib/rack/insight/config.rb +6 -2
- data/lib/rack/insight/enable-button.rb +3 -4
- data/lib/rack/insight/panels/request_variables_panel.rb +4 -1
- data/lib/rack/insight/public/__insight__/insight.js +134 -128
- data/lib/rack/insight/toolbar.rb +9 -6
- data/lib/rack/insight/version.rb +1 -1
- data/lib/rack/insight/views/toolbar.html.erb +11 -9
- metadata +69 -105
- checksums.yaml +0 -7
- data/.gitignore +0 -13
- data/.rspec +0 -1
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.simplecov +0 -4
- data/.travis.yml +0 -10
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -69
- data/TODO +0 -9
- data/rack-insight.gemspec +0 -42
- data/spec/custom_matchers.rb +0 -0
- data/spec/fixtures/config.ru +0 -8
- data/spec/fixtures/dummy_panel.rb +0 -2
- data/spec/fixtures/sample_app.rb +0 -72
- data/spec/fixtures/star_trek_panel.rb +0 -6
- data/spec/fixtures/views/star_trek.html.erb +0 -17
- data/spec/insight_spec.rb +0 -166
- data/spec/instrumentation_spec.rb +0 -231
- data/spec/rack/insight/config_spec.rb +0 -22
- data/spec/rack/insight/panels/active_record_panel_spec.rb +0 -44
- data/spec/rack/insight/panels/active_resource_panel_spec.rb +0 -40
- data/spec/rack/insight/panels/cache_panel_spec.rb +0 -179
- data/spec/rack/insight/panels/log_panel_spec.rb +0 -43
- data/spec/rack/insight/panels/memory_panel_spec.rb +0 -21
- data/spec/rack/insight/panels/mongo_panel_spec_pending.rb +0 -52
- data/spec/rack/insight/panels/rails_info_panel_spec.rb +0 -30
- data/spec/rack/insight/panels/redis_panel_spec.rb +0 -82
- data/spec/rack/insight/panels/speedtracer_panel_spec.rb +0 -87
- data/spec/rack/insight/panels/sql_panel_spec.rb +0 -150
- data/spec/rack/insight/panels/templates_panel_spec.rb +0 -88
- data/spec/rack/insight/panels/timer_panel_spec.rb +0 -39
- data/spec/rcov.opts +0 -1
- data/spec/spec.opts +0 -1
- data/spec/spec_helper.rb +0 -120
data/CHANGELOG
CHANGED
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
== 0.5.28 / 2014-01-14
|
|
2
|
+
|
|
3
|
+
* Bug Fixes
|
|
4
|
+
|
|
5
|
+
* All specs passing by Peter Boling
|
|
6
|
+
|
|
7
|
+
* Other
|
|
8
|
+
|
|
9
|
+
* No reliance on rack's request.media_type by Peter Boling
|
|
10
|
+
|
|
11
|
+
* Update README.md by Peter Boling
|
|
12
|
+
|
|
13
|
+
* Add a Bitdeli badge to README by Bitdeli Chef
|
|
14
|
+
|
|
15
|
+
* Quicker access to config by Peter Boling
|
|
16
|
+
|
|
17
|
+
* Respond to requests with text/plain mime type by Peter Boling
|
|
18
|
+
|
|
19
|
+
* Implement :handle_javascript option (default true) by Peter Boling
|
|
20
|
+
|
|
21
|
+
* Remove dependency on git for gemspec by Peter Boling
|
|
22
|
+
|
|
23
|
+
* Fix typo in example code by Peter Boling
|
|
24
|
+
|
|
25
|
+
* Attributions by Peter Boling
|
|
26
|
+
|
|
27
|
+
* Improved Readme by Peter Boling
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
1
31
|
== 0.5.27 / 2013-09-03
|
|
2
32
|
|
|
3
33
|
* Other
|
|
@@ -25,7 +55,9 @@
|
|
|
25
55
|
* Bug Fixes
|
|
26
56
|
|
|
27
57
|
* Dont reload page, just close panel by Harry Walter
|
|
58
|
+
|
|
28
59
|
* Allow panels to scroll when fixed to bottom by Harry Walter
|
|
60
|
+
|
|
29
61
|
* Set position to fixed to keep toolbar at bottom by Harry Walter
|
|
30
62
|
|
|
31
63
|
* Other
|
data/README.md
CHANGED
|
@@ -1,16 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
=============
|
|
1
|
+
rack-insight will be merging back home into Rack Bug.
|
|
3
2
|
|
|
3
|
+
@brynary and I have discussed it, and I will do the work to re-namespace Rack Insight. Rack Insight, née Rack Bug, will be the basis of the next major release of Rack Bug.
|
|
4
4
|
|
|
5
|
+
I will be the new maintainer of the project.
|
|
5
6
|
|
|
7
|
+
Rack::Insight
|
|
8
|
+
=============
|
|
6
9
|
|
|
7
|
-
|
|
10
|
+
Summary
|
|
8
11
|
-----------
|
|
9
12
|
|
|
10
13
|
Rack::Insight adds a diagnostics toolbar to Rack apps. When enabled, it injects a floating div
|
|
11
14
|
allowing exploration of logging, database queries, template rendering times, etc. Rack::Insight
|
|
12
15
|
stores debugging info over many requests, incuding AJAX requests.
|
|
13
16
|
|
|
17
|
+
|
|
18
|
+
| Project | Rack Insight |
|
|
19
|
+
|------------------------ | ----------------- |
|
|
20
|
+
| gem name | rack-insight |
|
|
21
|
+
| license | MIT |
|
|
22
|
+
| moldiness | [](http://stillmaintained.com/pboling/rack-insight) |
|
|
23
|
+
| version | [](http://badge.fury.io/rb/rack-insight) |
|
|
24
|
+
| dependencies | [](https://gemnasium.com/pboling/rack-insight) |
|
|
25
|
+
| code quality | [](https://codeclimate.com/github/pboling/rack-insight) |
|
|
26
|
+
| continuous integration | [](https://travis-ci.org/pboling/rack-insight) |
|
|
27
|
+
| test coverage | [](https://coveralls.io/r/pboling/rack-insight) |
|
|
28
|
+
| homepage | [https://github.com/pboling/rack-insight][homepage] |
|
|
29
|
+
| documentation | [http://rdoc.info/github/pboling/rack-insight/frames][documentation] |
|
|
30
|
+
| author | [Peter Boling](https://coderbits.com/pboling) |
|
|
31
|
+
| Spread ~♡ⓛⓞⓥⓔ♡~ | [](http://coderwall.com/pboling) |
|
|
32
|
+
|
|
14
33
|
Features
|
|
15
34
|
--------
|
|
16
35
|
|
|
@@ -198,7 +217,7 @@ Restrict access using a password:
|
|
|
198
217
|
|
|
199
218
|
ActionController::Dispatcher.middleware.use "Rack::Insight::App",
|
|
200
219
|
:secret_key => "someverylongandveryhardtoguesspreferablyrandomstring",
|
|
201
|
-
:ip_masks => false # Default is 127.0.0.1
|
|
220
|
+
:ip_masks => false, # Default is 127.0.0.1
|
|
202
221
|
:password => "yourpassword"
|
|
203
222
|
|
|
204
223
|
#### custom file path for the request recording database ####
|
|
@@ -297,9 +316,6 @@ For example:
|
|
|
297
316
|
|
|
298
317
|
spec.add_dependency 'rack-insight', '~> 0.5'
|
|
299
318
|
|
|
300
|
-
[semver]: http://semver.org/
|
|
301
|
-
[pvc]: http://docs.rubygems.org/read/chapter/16#page74
|
|
302
|
-
|
|
303
319
|
Thanks
|
|
304
320
|
------
|
|
305
321
|
|
|
@@ -327,3 +343,12 @@ Legacy files: would like to re-include them, but they need work
|
|
|
327
343
|
|
|
328
344
|
This one is mostly just a curiosity
|
|
329
345
|
lib/rack/insight/panels/speedtracer_panel/profiling.rb
|
|
346
|
+
|
|
347
|
+
[semver]: http://semver.org/
|
|
348
|
+
[pvc]: http://docs.rubygems.org/read/chapter/16#page74
|
|
349
|
+
[railsbling]: http://www.railsbling.com
|
|
350
|
+
[peterboling]: http://www.peterboling.com
|
|
351
|
+
[documentation]: http://rdoc.info/github/pboling/rack-insight/frames
|
|
352
|
+
[homepage]: https://github.com/pboling/rack-insight
|
|
353
|
+
|
|
354
|
+
[](https://bitdeli.com/free "Bitdeli Badge")
|
data/lib/rack/insight/app.rb
CHANGED
|
@@ -45,6 +45,11 @@ module Rack::Insight
|
|
|
45
45
|
end
|
|
46
46
|
attr_accessor :panels
|
|
47
47
|
|
|
48
|
+
# allow access to configuration settings directly through the app object!
|
|
49
|
+
def config
|
|
50
|
+
Rack::Insight::Config.config
|
|
51
|
+
end
|
|
52
|
+
|
|
48
53
|
def call(env)
|
|
49
54
|
@original_request = Rack::Request.new(env)
|
|
50
55
|
if insight_active?
|
data/lib/rack/insight/config.rb
CHANGED
|
@@ -16,7 +16,7 @@ module Rack::Insight
|
|
|
16
16
|
class << self
|
|
17
17
|
attr_reader :config, :verbosity, :log_file, :log_level, :rails_log_copy,
|
|
18
18
|
:filtered_backtrace, :panel_configs, :silence_magic_insight_warnings,
|
|
19
|
-
:database
|
|
19
|
+
:database, :handle_javascript
|
|
20
20
|
end
|
|
21
21
|
@log_file = STDOUT
|
|
22
22
|
@log_level = ::Logger::DEBUG
|
|
@@ -48,6 +48,7 @@ module Rack::Insight
|
|
|
48
48
|
:raise_encoding_errors => false, # Either way will be logged
|
|
49
49
|
:raise_decoding_errors => true, # Either way will be logged
|
|
50
50
|
}
|
|
51
|
+
@handle_javascript = true # Set false if you want to handle the javascript yourself.
|
|
51
52
|
|
|
52
53
|
DEFAULTS = {
|
|
53
54
|
# You can augment or replace the default set of panel load paths.
|
|
@@ -69,7 +70,7 @@ module Rack::Insight
|
|
|
69
70
|
:filtered_backtrace => @filtered_backtrace, # Full back-traces, or filtered ones?
|
|
70
71
|
:panel_configs => @panel_configs, # Allow specific panels to have their own configurations, and make it extensible
|
|
71
72
|
:silence_magic_insight_warnings => @silence_magic_insight_warnings, # Should Rack::Insight warn when the MagicInsight is used?
|
|
72
|
-
:database => @database # a hash. Keys :raise_encoding_errors, and :raise_decoding_errors are self explanatory
|
|
73
|
+
:database => @database, # a hash. Keys :raise_encoding_errors, and :raise_decoding_errors are self explanatory
|
|
73
74
|
# :raise_encoding_errors
|
|
74
75
|
# When set to true, if there is an encoding error (unlikely)
|
|
75
76
|
# it will cause a 500 error on your site. !!!WARNING!!!
|
|
@@ -78,6 +79,8 @@ module Rack::Insight
|
|
|
78
79
|
# but custom panel implementations may prefer one over the other
|
|
79
80
|
# The bundled panels will capture these errors and perform admirably.
|
|
80
81
|
# Site won't go down unless a custom panel is not handling the errors well.
|
|
82
|
+
:handle_javascript => @handle_javascript # If Your setup is AMD, and you are handling your javascript module loading,
|
|
83
|
+
# including that of jQuery, then you will need to set this to false.
|
|
81
84
|
}
|
|
82
85
|
|
|
83
86
|
@config ||= DEFAULTS
|
|
@@ -98,6 +101,7 @@ module Rack::Insight
|
|
|
98
101
|
@filtered_backtrace = config[:filtered_backtrace]
|
|
99
102
|
@silence_magic_insight_warnings = config[:silence_magic_insight_warnings]
|
|
100
103
|
@database = config[:database]
|
|
104
|
+
@handle_javascript = !!config[:handle_javascript] # Cast to boolean
|
|
101
105
|
|
|
102
106
|
config[:panel_configs].each do |panel_name_sym, config|
|
|
103
107
|
set_panel_config(panel_name_sym, config)
|
|
@@ -2,7 +2,7 @@ module Rack::Insight
|
|
|
2
2
|
class EnableButton
|
|
3
3
|
include Render
|
|
4
4
|
|
|
5
|
-
MIME_TYPES = ["text/html", "application/xhtml+xml"]
|
|
5
|
+
MIME_TYPES = ["text/plain", "text/html", "application/xhtml+xml"]
|
|
6
6
|
|
|
7
7
|
def initialize(app, insight)
|
|
8
8
|
@app = app
|
|
@@ -21,10 +21,9 @@ module Rack::Insight
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def okay_to_modify?(env, response)
|
|
24
|
+
return false unless response.ok?
|
|
24
25
|
req = Rack::Request.new(env)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
response.ok? && MIME_TYPES.include?(content_type) && !req.xhr?
|
|
26
|
+
return MIME_TYPES.include?(req.media_type) && !req.xhr?
|
|
28
27
|
end
|
|
29
28
|
|
|
30
29
|
def inject_button(response)
|
|
@@ -5,7 +5,10 @@ module Rack::Insight
|
|
|
5
5
|
sections = {}
|
|
6
6
|
sections["GET"] = sort(@request.GET) if @request.GET.any?
|
|
7
7
|
sections["POST"] = sort(@request.POST) if @request.POST.any?
|
|
8
|
-
|
|
8
|
+
# TODO: Fix for Rails 4 (as part of splitting panels into separate gems)
|
|
9
|
+
unless defined?(ActionDispatch::Request::Session)
|
|
10
|
+
sections["Session"] = sort(@request.env["rack.session"]) if @request.env["rack.session"] && @request.env["rack.session"].any?
|
|
11
|
+
end
|
|
9
12
|
sections["Cookies"] = sort(@request.env["rack.request.cookie_hash"]) if @request.env["rack.request.cookie_hash"] && @request.env["rack.request.cookie_hash"].any?
|
|
10
13
|
server, rack = split_and_filter_env(@env)
|
|
11
14
|
sections["SERVER VARIABLES"] = sort(server)
|
|
@@ -1,136 +1,142 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
(function (factory) {
|
|
2
|
+
if (typeof define === 'function' && define.amd) {
|
|
3
|
+
// AMD. Register as anonymous module.
|
|
4
|
+
define(['jquery'], factory);
|
|
5
|
+
} else {
|
|
6
|
+
// Browser globals.
|
|
7
|
+
factory(jQuery);
|
|
8
|
+
}
|
|
9
|
+
}(function ($) {
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
$(document).trigger('close.insight')
|
|
35
|
-
this.request_id = req_number
|
|
36
|
-
this.switchCurrentPanel()
|
|
37
|
-
if(this.current.length <= 0) {
|
|
38
|
-
this.getPanelContent()
|
|
11
|
+
function Insight() {
|
|
12
|
+
this.current = null
|
|
13
|
+
this.request_id = null
|
|
14
|
+
this.panel_id = null
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
Insight.prototype = {
|
|
18
|
+
switchCurrentPanel: function() {
|
|
19
|
+
console.log(this.panel_id);
|
|
20
|
+
if(this.request_id && this.panel_id) {
|
|
21
|
+
this.current = $('#rack-insight #request_' + this.request_id + ' #' + this.panel_id)
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
getPanelContent: function() {
|
|
25
|
+
$.get("/__insight__/panels_content?request_id=" + this.request_id, function(data) {
|
|
26
|
+
$('#rack-insight').append(data)
|
|
27
|
+
$.insight.switchCurrentPanel()
|
|
28
|
+
$.insight.openCurrent()
|
|
29
|
+
})
|
|
30
|
+
},
|
|
31
|
+
toggleCurrent: function() {
|
|
32
|
+
if(this.current) {
|
|
33
|
+
if (this.current.is(':visible')) {
|
|
34
|
+
$(document).trigger('close.insight');
|
|
39
35
|
} else {
|
|
40
36
|
this.openCurrent()
|
|
41
37
|
}
|
|
42
|
-
$.get("/__insight__/panels_header?request_id=" + this.request_id, function(data) {
|
|
43
|
-
$('ul.panels').html(data)
|
|
44
|
-
})
|
|
45
|
-
},
|
|
46
|
-
openCurrent: function() {
|
|
47
|
-
$('#rack-insight .panel_content').hide();
|
|
48
|
-
this.current.show();
|
|
49
|
-
this.open();
|
|
50
|
-
},
|
|
51
|
-
open: function() {
|
|
52
|
-
$(document).bind('keydown.insight', function(e) {
|
|
53
|
-
if (e.keyCode == 27) {
|
|
54
|
-
$.insight.close();
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
$('table.sortable').tablesorter();
|
|
58
|
-
},
|
|
59
|
-
toggle_content: function(elem) {
|
|
60
|
-
if (elem.is(':visible')) {
|
|
61
|
-
elem.hide();
|
|
62
|
-
} else {
|
|
63
|
-
elem.show();
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
close: function() {
|
|
67
|
-
$(document).trigger('close.insight');
|
|
68
|
-
return false;
|
|
69
38
|
}
|
|
39
|
+
},
|
|
40
|
+
changeRequest: function(req_number) {
|
|
41
|
+
$(document).trigger('close.insight')
|
|
42
|
+
this.request_id = req_number
|
|
43
|
+
this.switchCurrentPanel()
|
|
44
|
+
if(this.current.length <= 0) {
|
|
45
|
+
this.getPanelContent()
|
|
46
|
+
} else {
|
|
47
|
+
this.openCurrent()
|
|
48
|
+
}
|
|
49
|
+
$.get("/__insight__/panels_header?request_id=" + this.request_id, function(data) {
|
|
50
|
+
$('ul.panels').html(data)
|
|
51
|
+
})
|
|
52
|
+
},
|
|
53
|
+
openCurrent: function() {
|
|
54
|
+
$('#rack-insight .panel_content').hide();
|
|
55
|
+
this.current.show();
|
|
56
|
+
this.open();
|
|
57
|
+
},
|
|
58
|
+
open: function() {
|
|
59
|
+
$(document).bind('keydown.insight', function(e) {
|
|
60
|
+
if (e.keyCode == 27) {
|
|
61
|
+
$.insight.close();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
$('table.sortable').tablesorter();
|
|
65
|
+
},
|
|
66
|
+
toggle_content: function(elem) {
|
|
67
|
+
if (elem.is(':visible')) {
|
|
68
|
+
elem.hide();
|
|
69
|
+
} else {
|
|
70
|
+
elem.show();
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
close: function() {
|
|
74
|
+
$(document).trigger('close.insight');
|
|
75
|
+
return false;
|
|
70
76
|
}
|
|
77
|
+
}
|
|
71
78
|
|
|
72
|
-
|
|
79
|
+
$.insight = new Insight
|
|
73
80
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
$ = _$;
|
|
81
|
+
$(document).bind('close.insight', function() {
|
|
82
|
+
$(document).unbind('keydown.insight');
|
|
83
|
+
$('.panel_content').hide();
|
|
84
|
+
});
|
|
85
|
+
$('#rack-insight ul.panels li a').on('click', function() {
|
|
86
|
+
$.insight.panel_id = this.className
|
|
87
|
+
$.insight.switchCurrentPanel()
|
|
88
|
+
$.insight.toggleCurrent()
|
|
89
|
+
return false;
|
|
90
|
+
});
|
|
91
|
+
$('#rack-insight .panel_content .rack-insight_close').on('click', function() {
|
|
92
|
+
$.insight.panel_id = this.id
|
|
93
|
+
$.insight.switchCurrentPanel()
|
|
94
|
+
$.insight.toggleCurrent()
|
|
95
|
+
return false;
|
|
96
|
+
});
|
|
97
|
+
$('#rack-insight_debug_window a.back').on('click',function() {
|
|
98
|
+
$(this).parent().hide();
|
|
99
|
+
return false;
|
|
100
|
+
});
|
|
101
|
+
$('#rack-insight a.remote_call').on('click',function() {
|
|
102
|
+
$('#rack-insight_debug_window').load(this.href, null, function() {
|
|
103
|
+
$('#rack-insight_debug_window').show();
|
|
104
|
+
})
|
|
105
|
+
return false;
|
|
106
|
+
});
|
|
107
|
+
$('#rack-insight a.reveal_backtrace').on('click',function() {
|
|
108
|
+
$(this).parents("tr").next().toggle();
|
|
109
|
+
return false;
|
|
110
|
+
});
|
|
111
|
+
$('#rack-insight a.reveal_response').on('click',function() {
|
|
112
|
+
$(this).parents("tr").next().next().toggle();
|
|
113
|
+
return false;
|
|
114
|
+
});
|
|
115
|
+
$('#rack-insight a.insight_close').on('click',function() {
|
|
116
|
+
$(document).trigger('close.insight');
|
|
117
|
+
return false;
|
|
118
|
+
});
|
|
119
|
+
$('#request_id_menu').on('change', function(){
|
|
120
|
+
$.insight.changeRequest($(this).val())
|
|
121
|
+
});
|
|
122
|
+
$('#rack-insight_debug_button').on('click',function(){
|
|
123
|
+
new_position = ($('#rack-insight').attr('class')== 'rack-insight_top') ? 'bottom' : 'top';
|
|
124
|
+
document.createCookie('rack-insight_position', new_position);
|
|
125
|
+
$('#rack-insight').removeClass('rack-insight_top rack-insight_bottom').addClass('rack-insight_' + new_position);
|
|
126
|
+
return false;
|
|
127
|
+
});
|
|
128
|
+
$('#rack-insight_disable_button').on('click',function(){
|
|
129
|
+
document.insightDisable();
|
|
130
|
+
return false;
|
|
131
|
+
});
|
|
132
|
+
$.tablesorter.addParser({
|
|
133
|
+
id: 'ms',
|
|
134
|
+
is: function(s) {
|
|
135
|
+
return /ms$/.test(s);
|
|
136
|
+
},
|
|
137
|
+
format: function(s) {
|
|
138
|
+
return $.tablesorter.formatFloat(s.replace(new RegExp(/[^0-9.]/g),""));
|
|
139
|
+
},
|
|
140
|
+
type: "numeric"
|
|
141
|
+
});
|
|
142
|
+
}));
|