mongodb_logger 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +22 -0
- data/README.md +6 -4
- data/Rakefile +28 -0
- data/config.ru +3 -2
- data/features/rails.feature +2 -0
- data/features/step_definitions/rails_application_steps.rb +8 -1
- data/lib/mongodb_logger/logger.rb +10 -4
- data/lib/mongodb_logger/server.rb +12 -27
- data/lib/mongodb_logger/server/{views → coffee}/application.coffee +5 -4
- data/lib/mongodb_logger/server/model/filter.rb +24 -9
- data/lib/mongodb_logger/server/public/javascripts/application.js +80 -0
- data/lib/mongodb_logger/server/public/javascripts/jquery-ui-1.8.16.effects.min.js +221 -0
- data/lib/mongodb_logger/server/view_helpers.rb +23 -0
- data/lib/mongodb_logger/server/views/layout.erb +2 -1
- data/lib/mongodb_logger/server/views/overview.erb +12 -11
- data/lib/mongodb_logger/version.rb +1 -1
- data/mongodb_logger.gemspec +10 -7
- metadata +58 -51
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) Alexey Vasiliev
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person
|
4
|
+
obtaining a copy of this software and associated documentation
|
5
|
+
files (the "Software"), to deal in the Software without
|
6
|
+
restriction, including without limitation the rights to use,
|
7
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
|
+
copies of the Software, and to permit persons to whom the
|
9
|
+
Software is furnished to do so, subject to the following
|
10
|
+
conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be
|
13
|
+
included in all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
17
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
19
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
20
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
21
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
22
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -122,12 +122,14 @@ It:
|
|
122
122
|
|
123
123
|
mongodb_logger_web config.yml -p 8282
|
124
124
|
|
125
|
-
### Passenger
|
125
|
+
### Passenger, Unicorn, Thin, etc.
|
126
126
|
|
127
|
-
Using Passenger? MongodbLogger ships with a `config.ru` you can use. See
|
127
|
+
Using Passenger, Unicorn, Thin, etc? MongodbLogger ships with a `config.ru` you can use. See guide:
|
128
128
|
|
129
|
-
* Apache: <http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_a_rack_based_ruby_application>
|
130
|
-
* Nginx: <http://www.modrails.com/documentation/Users%20guide%20Nginx.html#deploying_a_rack_app>
|
129
|
+
* Passenger Apache: <http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_a_rack_based_ruby_application>
|
130
|
+
* Passenger Nginx: <http://www.modrails.com/documentation/Users%20guide%20Nginx.html#deploying_a_rack_app>
|
131
|
+
* Unicorn: <http://unicorn.bogomips.org>
|
132
|
+
* Thin: <http://code.macournoyer.com/thin/usage>
|
131
133
|
|
132
134
|
Don't forget setup MONGODBLOGGERCONFIG env variable, which provide information about MongodbLogger config. Example starting with unicorn:
|
133
135
|
|
data/Rakefile
CHANGED
@@ -11,6 +11,34 @@ end
|
|
11
11
|
require "bundler/gem_tasks"
|
12
12
|
|
13
13
|
|
14
|
+
#########################################
|
15
|
+
### Help tasks
|
16
|
+
#########################################
|
17
|
+
|
18
|
+
require 'coffee-script'
|
19
|
+
namespace :js do
|
20
|
+
desc "compile coffee-scripts from ./lib/mongodb_logger/server/coffee to ./lib/mongodb_logger/server/public/javascripts"
|
21
|
+
task :compile do
|
22
|
+
source = "#{File.dirname(__FILE__)}/lib/mongodb_logger/server/coffee/"
|
23
|
+
javascripts = "#{File.dirname(__FILE__)}/lib/mongodb_logger/server/public/javascripts/"
|
24
|
+
|
25
|
+
Dir.foreach(source) do |cf|
|
26
|
+
unless cf == '.' || cf == '..'
|
27
|
+
js = CoffeeScript.compile File.read("#{source}#{cf}")
|
28
|
+
open "#{javascripts}#{cf.gsub('.coffee', '.js')}", 'w' do |f|
|
29
|
+
f.puts js
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
puts "All done."
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
#########################################
|
39
|
+
### TESTS
|
40
|
+
#########################################
|
41
|
+
|
14
42
|
desc 'Default: run unit tests.'
|
15
43
|
task :default => [:test]
|
16
44
|
#task :default => [:test, "cucumber:rails:all"]
|
data/config.ru
CHANGED
@@ -8,9 +8,10 @@ require 'mongodb_logger/server'
|
|
8
8
|
# config file you want loaded on boot.
|
9
9
|
if ENV['MONGODBLOGGERCONFIG'] && ::File.exists?(::File.expand_path(ENV['MONGODBLOGGERCONFIG']))
|
10
10
|
MongodbLogger::ServerConfig.set_config(::File.expand_path(ENV['MONGODBLOGGERCONFIG']))
|
11
|
+
use Rack::ShowExceptions
|
12
|
+
run MongodbLogger::Server.new
|
11
13
|
else
|
12
14
|
raise "Please provide config file"
|
15
|
+
exit 1
|
13
16
|
end
|
14
17
|
|
15
|
-
use Rack::ShowExceptions
|
16
|
-
run MongodbLogger::Server.new
|
data/features/rails.feature
CHANGED
@@ -7,4 +7,6 @@ Feature: Install the Gem in a Rails application and test it
|
|
7
7
|
When I generate a new Rails application
|
8
8
|
And I configure my application to require the "mongodb_logger" gem
|
9
9
|
And I setup mongodb_logger tests
|
10
|
+
And I setup all gems for rails
|
11
|
+
And I prepare rails environment for testing
|
10
12
|
Then the tests should have run successfully
|
@@ -32,12 +32,19 @@ When /^I setup mongodb_logger tests$/ do
|
|
32
32
|
add_routes
|
33
33
|
end
|
34
34
|
|
35
|
-
|
35
|
+
When /^I setup all gems for rails$/ do
|
36
36
|
bundle_gem("therubyracer", nil) if rails31?
|
37
37
|
step %{I run "bundle install"}
|
38
38
|
@terminal.status.exitstatus.should == 0
|
39
|
+
end
|
40
|
+
|
41
|
+
When /^I prepare rails environment for testing$/ do
|
39
42
|
step %{I run "rake db:create db:migrate RAILS_ENV=test --trace"}
|
40
43
|
@terminal.status.exitstatus.should == 0
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
Then /^the tests should have run successfully$/ do
|
41
48
|
step %{I run "rake test RAILS_ENV=test --trace"}
|
42
49
|
@terminal.status.exitstatus.should == 0
|
43
50
|
end
|
@@ -43,19 +43,25 @@ module MongodbLogger
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def add(severity, message = nil, progname = nil, &block)
|
46
|
-
if @level <= severity && message.present? && @mongo_record.present?
|
46
|
+
if @level && @level <= severity && message.present? && @mongo_record.present?
|
47
47
|
# do not modify the original message used by the buffered logger
|
48
48
|
msg = logging_colorized? ? message.to_s.gsub(/(\e(\[([\d;]*[mz]?))?)?/, '').strip : message
|
49
49
|
@mongo_record[:messages][LOG_LEVEL_SYM[severity]] << msg
|
50
50
|
end
|
51
51
|
# may modify the original message
|
52
|
-
disable_file_logging? ? message : super
|
52
|
+
disable_file_logging? ? message : (@level ? super : message)
|
53
53
|
end
|
54
54
|
|
55
55
|
# Drop the capped_collection and recreate it
|
56
56
|
def reset_collection
|
57
|
-
@mongo_collection
|
58
|
-
|
57
|
+
if @mongo_connection && @mongo_collection
|
58
|
+
@mongo_collection.drop
|
59
|
+
create_collection
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def flush
|
64
|
+
# do nothing
|
59
65
|
end
|
60
66
|
|
61
67
|
def mongoize(options={})
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'sinatra/base'
|
2
2
|
require 'erubis'
|
3
3
|
require 'json'
|
4
|
+
require 'active_support'
|
5
|
+
|
6
|
+
require 'mongodb_logger/server/view_helpers'
|
4
7
|
require 'mongodb_logger/server/partials'
|
5
8
|
require 'mongodb_logger/server/model/filter'
|
6
9
|
require 'mongodb_logger/server_config'
|
@@ -11,6 +14,7 @@ end
|
|
11
14
|
|
12
15
|
module MongodbLogger
|
13
16
|
class Server < Sinatra::Base
|
17
|
+
helpers Sinatra::ViewHelpers
|
14
18
|
helpers Sinatra::Partials
|
15
19
|
|
16
20
|
dir = File.dirname(File.expand_path(__FILE__))
|
@@ -22,7 +26,7 @@ module MongodbLogger
|
|
22
26
|
else
|
23
27
|
set :public, "#{dir}/server/public"
|
24
28
|
end
|
25
|
-
|
29
|
+
set :environment, :production
|
26
30
|
set :static, true
|
27
31
|
|
28
32
|
helpers do
|
@@ -42,19 +46,6 @@ module MongodbLogger
|
|
42
46
|
request.env['SCRIPT_NAME']
|
43
47
|
end
|
44
48
|
|
45
|
-
def get_field_val(key)
|
46
|
-
return MongodbLogger::ServerModel::Filter::DEFAULT_LIMIT if !@filter_model && "limit" == key
|
47
|
-
@filter_model ? @filter_model.get_val(key) : nil
|
48
|
-
end
|
49
|
-
|
50
|
-
def select_tag(name, values, selected = nil)
|
51
|
-
selector = ["<select name=#{name}>"]
|
52
|
-
values.each do |val|
|
53
|
-
selector << "<option value='#{val}' #{"selected='selected'" if val.to_s == selected.to_s}>#{val}</option>"
|
54
|
-
end
|
55
|
-
selector << "</select>"
|
56
|
-
selector.join("\n")
|
57
|
-
end
|
58
49
|
end
|
59
50
|
|
60
51
|
before do
|
@@ -70,10 +61,11 @@ module MongodbLogger
|
|
70
61
|
erb :error, {:layout => false}, :error => "Can't connect to MongoDB!"
|
71
62
|
return false
|
72
63
|
end
|
64
|
+
|
65
|
+
cache_control :private, :must_revalidate, :max_age => 0
|
73
66
|
end
|
74
67
|
|
75
68
|
def show(page, layout = true)
|
76
|
-
response["Cache-Control"] = "max-age=0, private, must-revalidate"
|
77
69
|
begin
|
78
70
|
erb page.to_sym, {:layout => layout}
|
79
71
|
rescue => e
|
@@ -88,13 +80,8 @@ module MongodbLogger
|
|
88
80
|
|
89
81
|
%w( overview ).each do |page|
|
90
82
|
get "/#{page}/?" do
|
91
|
-
|
92
|
-
|
93
|
-
@logs = @collection.find(@filter_model.get_conditions).limit(@filter_model.get_limit)
|
94
|
-
else
|
95
|
-
@logs = @collection.find.limit(MongodbLogger::ServerModel::Filter::DEFAULT_LIMIT)
|
96
|
-
end
|
97
|
-
@logs = @logs.sort('$natural', -1)
|
83
|
+
@filter = MongodbLogger::ServerModel::Filter.new(params[:filter])
|
84
|
+
@logs = @collection.find(@filter.get_mongo_conditions).sort('$natural', -1).limit(@filter.get_mongo_limit)
|
98
85
|
show page
|
99
86
|
end
|
100
87
|
end
|
@@ -126,11 +113,9 @@ module MongodbLogger
|
|
126
113
|
partial(:"shared/log_info", :object => @log)
|
127
114
|
end
|
128
115
|
|
129
|
-
|
130
|
-
|
131
|
-
content_type 'text/javascript'
|
132
|
-
coffee :application
|
116
|
+
error do
|
117
|
+
erb :error, {:layout => false}, :error => 'Sorry there was a nasty error. Maybe no connection to MongoDB. Debug: ' + env['sinatra.error'].inspect
|
133
118
|
end
|
134
119
|
|
135
120
|
end
|
136
|
-
end
|
121
|
+
end
|
@@ -43,12 +43,13 @@ MongodbLoggerJS =
|
|
43
43
|
url: url
|
44
44
|
dataType: "json"
|
45
45
|
success: (data) ->
|
46
|
-
if count != data.count
|
47
|
-
if data.content? && data.content.length > 0
|
48
|
-
$('#logs_list tr:first').after(data.content)
|
49
|
-
count = data.count
|
50
46
|
if data.time
|
51
47
|
$('#tail_logs_time').text(data.time)
|
48
|
+
if count != data.count
|
49
|
+
count = data.count
|
50
|
+
if data.content? && data.content.length > 0
|
51
|
+
data.content += '<tr class="tail_date"><td colspan="6">' + data.time + '</td></tr>'
|
52
|
+
$('#logs_list tr:first').after(data.content).effect("highlight", {}, 1000)
|
52
53
|
if MongodbLoggerJS.tail_log_started
|
53
54
|
fcallback = -> MongodbLoggerJS.tail_logs(count)
|
54
55
|
setTimeout fcallback, 2000
|
@@ -4,32 +4,47 @@ module MongodbLogger
|
|
4
4
|
|
5
5
|
DEFAULT_LIMIT = 2000
|
6
6
|
FIXED_PARAMS = ['action', 'controller', 'ip', 'application_name']
|
7
|
-
attr_reader :params, :mongo_conditions
|
7
|
+
attr_reader :params, :mongo_conditions, :mongo_limit
|
8
8
|
|
9
9
|
def initialize(params)
|
10
|
+
if params.nil?
|
11
|
+
params = Hash.new
|
12
|
+
FIXED_PARAMS.each do |key|
|
13
|
+
params[key] = nil
|
14
|
+
end
|
15
|
+
end
|
10
16
|
@params = params
|
17
|
+
params.each do |k,v|
|
18
|
+
self.instance_variable_set("@#{k}", v) ## create instance variable
|
19
|
+
self.class.send(:define_method, k, proc{self.instance_variable_get("@#{k}")}) ## method to return instance variable
|
20
|
+
self.class.send(:define_method, "#{k}=", proc{|v| self.instance_variable_set("@#{k}", v)}) ## method to set instance variable
|
21
|
+
end
|
11
22
|
build_mongo_conditions
|
12
23
|
end
|
13
24
|
|
14
25
|
def build_mongo_conditions
|
15
26
|
@mongo_conditions = Hash.new
|
16
27
|
FIXED_PARAMS.each do |param_key|
|
17
|
-
|
28
|
+
if self.respond_to?(param_key)
|
29
|
+
value = self.send param_key
|
30
|
+
@mongo_conditions[param_key.to_s] = value unless value.blank?
|
31
|
+
end
|
18
32
|
end
|
33
|
+
# set limit
|
34
|
+
@mongo_limit = DEFAULT_LIMIT
|
35
|
+
@mongo_limit = self.limit if self.respond_to?("limit")
|
19
36
|
end
|
20
37
|
|
21
|
-
def
|
38
|
+
def get_mongo_conditions
|
22
39
|
@mongo_conditions
|
23
40
|
end
|
24
41
|
|
25
|
-
def
|
26
|
-
|
42
|
+
def get_mongo_limit
|
43
|
+
@mongo_limit
|
27
44
|
end
|
28
45
|
|
29
|
-
def
|
30
|
-
|
31
|
-
limit = DEFAULT_LIMIT if !limit || (limit && (limit < 1 || limit > 10000))
|
32
|
-
limit
|
46
|
+
def form_name
|
47
|
+
"filter"
|
33
48
|
end
|
34
49
|
|
35
50
|
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
(function() {
|
2
|
+
var MongodbLoggerJS;
|
3
|
+
|
4
|
+
$(function() {
|
5
|
+
return MongodbLoggerJS.init();
|
6
|
+
});
|
7
|
+
|
8
|
+
MongodbLoggerJS = {
|
9
|
+
tail_logs_url: null,
|
10
|
+
tail_log_started: false,
|
11
|
+
init: function() {
|
12
|
+
var _this = this;
|
13
|
+
$(document).ajaxStart(function() {
|
14
|
+
return $('#ajax_loader').show();
|
15
|
+
});
|
16
|
+
$(document).ajaxStop(function() {
|
17
|
+
return $('#ajax_loader').hide();
|
18
|
+
});
|
19
|
+
$('#tail_logs_link').live('click', function(event) {
|
20
|
+
MongodbLoggerJS.tail_logs_url = $(event.target).attr('data-url');
|
21
|
+
$('#tail_logs_block').addClass('started');
|
22
|
+
MongodbLoggerJS.tail_logs(null);
|
23
|
+
return false;
|
24
|
+
});
|
25
|
+
$('#tail_logs_stop_link').live('click', function(event) {
|
26
|
+
MongodbLoggerJS.tail_log_started = false;
|
27
|
+
$('#tail_logs_block').removeClass('started');
|
28
|
+
return false;
|
29
|
+
});
|
30
|
+
return $('.log_info').live('click', function(event) {
|
31
|
+
var elm_obj, url;
|
32
|
+
elm_obj = $(event.target);
|
33
|
+
url = elm_obj.attr('data-url');
|
34
|
+
if (!(url != null)) url = elm_obj.parents('tr').attr('data-url');
|
35
|
+
if (url != null) {
|
36
|
+
elm_obj.parents('table').find('tr').removeClass('current');
|
37
|
+
elm_obj.parents('tr').addClass('current');
|
38
|
+
$('#log_info').load(url);
|
39
|
+
}
|
40
|
+
return false;
|
41
|
+
});
|
42
|
+
},
|
43
|
+
tail_logs: function(count) {
|
44
|
+
var url;
|
45
|
+
url = MongodbLoggerJS.tail_logs_url;
|
46
|
+
if (count != null) {
|
47
|
+
url = MongodbLoggerJS.tail_logs_url + "/" + count;
|
48
|
+
} else {
|
49
|
+
MongodbLoggerJS.tail_log_started = true;
|
50
|
+
count = 0;
|
51
|
+
}
|
52
|
+
if (MongodbLoggerJS.tail_log_started) {
|
53
|
+
return $.ajax({
|
54
|
+
url: url,
|
55
|
+
dataType: "json",
|
56
|
+
success: function(data) {
|
57
|
+
var fcallback;
|
58
|
+
if (data.time) {
|
59
|
+
$('#tail_logs_time').text(data.time);
|
60
|
+
if (count !== data.count) {
|
61
|
+
count = data.count;
|
62
|
+
if ((data.content != null) && data.content.length > 0) {
|
63
|
+
data.content += '<tr class="tail_date"><td colspan="6">' + data.time + '</td></tr>';
|
64
|
+
$('#logs_list tr:first').after(data.content).effect("highlight", {}, 1000);
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
68
|
+
if (MongodbLoggerJS.tail_log_started) {
|
69
|
+
fcallback = function() {
|
70
|
+
return MongodbLoggerJS.tail_logs(count);
|
71
|
+
};
|
72
|
+
return setTimeout(fcallback, 2000);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
});
|
76
|
+
}
|
77
|
+
}
|
78
|
+
};
|
79
|
+
|
80
|
+
}).call(this);
|
@@ -0,0 +1,221 @@
|
|
1
|
+
/*
|
2
|
+
* jQuery UI Effects 1.8.16
|
3
|
+
*
|
4
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
5
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
6
|
+
* http://jquery.org/license
|
7
|
+
*
|
8
|
+
* http://docs.jquery.com/UI/Effects/
|
9
|
+
*/
|
10
|
+
jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
|
11
|
+
16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
|
12
|
+
a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
|
13
|
+
a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor",
|
14
|
+
"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,
|
15
|
+
0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,
|
16
|
+
211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,
|
17
|
+
d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})};
|
18
|
+
f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,
|
19
|
+
[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.16",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=
|
20
|
+
0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),
|
21
|
+
d=document.activeElement;c.wrap(b);if(c[0]===d||f.contains(c[0],d))f(d).focus();b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(e,g){a[g]=c.css(g);if(isNaN(parseInt(a[g],10)))a[g]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){var a,b=document.activeElement;
|
22
|
+
if(c.parent().is(".ui-effects-wrapper")){a=c.parent().replaceWith(c);if(c[0]===b||f.contains(c[0],b))f(b).focus();return a}return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});
|
23
|
+
return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,
|
24
|
+
arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/
|
25
|
+
2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,
|
26
|
+
d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,
|
27
|
+
a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,
|
28
|
+
d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=
|
29
|
+
0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;
|
30
|
+
if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,
|
31
|
+
a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
|
32
|
+
;/*
|
33
|
+
* jQuery UI Effects Blind 1.8.16
|
34
|
+
*
|
35
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
36
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
37
|
+
* http://jquery.org/license
|
38
|
+
*
|
39
|
+
* http://docs.jquery.com/UI/Effects/Blind
|
40
|
+
*
|
41
|
+
* Depends:
|
42
|
+
* jquery.effects.core.js
|
43
|
+
*/
|
44
|
+
(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,
|
45
|
+
g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);
|
46
|
+
;/*
|
47
|
+
* jQuery UI Effects Bounce 1.8.16
|
48
|
+
*
|
49
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
50
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
51
|
+
* http://jquery.org/license
|
52
|
+
*
|
53
|
+
* http://docs.jquery.com/UI/Effects/Bounce
|
54
|
+
*
|
55
|
+
* Depends:
|
56
|
+
* jquery.effects.core.js
|
57
|
+
*/
|
58
|
+
(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/
|
59
|
+
3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);
|
60
|
+
b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);
|
61
|
+
;/*
|
62
|
+
* jQuery UI Effects Clip 1.8.16
|
63
|
+
*
|
64
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
65
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
66
|
+
* http://jquery.org/license
|
67
|
+
*
|
68
|
+
* http://docs.jquery.com/UI/Effects/Clip
|
69
|
+
*
|
70
|
+
* Depends:
|
71
|
+
* jquery.effects.core.js
|
72
|
+
*/
|
73
|
+
(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,
|
74
|
+
c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);
|
75
|
+
;/*
|
76
|
+
* jQuery UI Effects Drop 1.8.16
|
77
|
+
*
|
78
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
79
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
80
|
+
* http://jquery.org/license
|
81
|
+
*
|
82
|
+
* http://docs.jquery.com/UI/Effects/Drop
|
83
|
+
*
|
84
|
+
* Depends:
|
85
|
+
* jquery.effects.core.js
|
86
|
+
*/
|
87
|
+
(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e==
|
88
|
+
"show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
|
89
|
+
;/*
|
90
|
+
* jQuery UI Effects Explode 1.8.16
|
91
|
+
*
|
92
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
93
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
94
|
+
* http://jquery.org/license
|
95
|
+
*
|
96
|
+
* http://docs.jquery.com/UI/Effects/Explode
|
97
|
+
*
|
98
|
+
* Depends:
|
99
|
+
* jquery.effects.core.js
|
100
|
+
*/
|
101
|
+
(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=
|
102
|
+
0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
|
103
|
+
e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
|
104
|
+
;/*
|
105
|
+
* jQuery UI Effects Fade 1.8.16
|
106
|
+
*
|
107
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
108
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
109
|
+
* http://jquery.org/license
|
110
|
+
*
|
111
|
+
* http://docs.jquery.com/UI/Effects/Fade
|
112
|
+
*
|
113
|
+
* Depends:
|
114
|
+
* jquery.effects.core.js
|
115
|
+
*/
|
116
|
+
(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
|
117
|
+
;/*
|
118
|
+
* jQuery UI Effects Fold 1.8.16
|
119
|
+
*
|
120
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
121
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
122
|
+
* http://jquery.org/license
|
123
|
+
*
|
124
|
+
* http://docs.jquery.com/UI/Effects/Fold
|
125
|
+
*
|
126
|
+
* Depends:
|
127
|
+
* jquery.effects.core.js
|
128
|
+
*/
|
129
|
+
(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],
|
130
|
+
10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
|
131
|
+
;/*
|
132
|
+
* jQuery UI Effects Highlight 1.8.16
|
133
|
+
*
|
134
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
135
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
136
|
+
* http://jquery.org/license
|
137
|
+
*
|
138
|
+
* http://docs.jquery.com/UI/Effects/Highlight
|
139
|
+
*
|
140
|
+
* Depends:
|
141
|
+
* jquery.effects.core.js
|
142
|
+
*/
|
143
|
+
(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
|
144
|
+
this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
|
145
|
+
;/*
|
146
|
+
* jQuery UI Effects Pulsate 1.8.16
|
147
|
+
*
|
148
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
149
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
150
|
+
* http://jquery.org/license
|
151
|
+
*
|
152
|
+
* http://docs.jquery.com/UI/Effects/Pulsate
|
153
|
+
*
|
154
|
+
* Depends:
|
155
|
+
* jquery.effects.core.js
|
156
|
+
*/
|
157
|
+
(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,
|
158
|
+
a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);
|
159
|
+
;/*
|
160
|
+
* jQuery UI Effects Scale 1.8.16
|
161
|
+
*
|
162
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
163
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
164
|
+
* http://jquery.org/license
|
165
|
+
*
|
166
|
+
* http://docs.jquery.com/UI/Effects/Scale
|
167
|
+
*
|
168
|
+
* Depends:
|
169
|
+
* jquery.effects.core.js
|
170
|
+
*/
|
171
|
+
(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,
|
172
|
+
b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=
|
173
|
+
1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],
|
174
|
+
p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};
|
175
|
+
if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);
|
176
|
+
a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);
|
177
|
+
child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,
|
178
|
+
n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
|
179
|
+
;/*
|
180
|
+
* jQuery UI Effects Shake 1.8.16
|
181
|
+
*
|
182
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
183
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
184
|
+
* http://jquery.org/license
|
185
|
+
*
|
186
|
+
* http://docs.jquery.com/UI/Effects/Shake
|
187
|
+
*
|
188
|
+
* Depends:
|
189
|
+
* jquery.effects.core.js
|
190
|
+
*/
|
191
|
+
(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=
|
192
|
+
(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);
|
193
|
+
;/*
|
194
|
+
* jQuery UI Effects Slide 1.8.16
|
195
|
+
*
|
196
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
197
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
198
|
+
* http://jquery.org/license
|
199
|
+
*
|
200
|
+
* http://docs.jquery.com/UI/Effects/Slide
|
201
|
+
*
|
202
|
+
* Depends:
|
203
|
+
* jquery.effects.core.js
|
204
|
+
*/
|
205
|
+
(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e);
|
206
|
+
var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
|
207
|
+
;/*
|
208
|
+
* jQuery UI Effects Transfer 1.8.16
|
209
|
+
*
|
210
|
+
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
211
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
212
|
+
* http://jquery.org/license
|
213
|
+
*
|
214
|
+
* http://docs.jquery.com/UI/Effects/Transfer
|
215
|
+
*
|
216
|
+
* Depends:
|
217
|
+
* jquery.effects.core.js
|
218
|
+
*/
|
219
|
+
(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
|
220
|
+
b.dequeue()})})}})(jQuery);
|
221
|
+
;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# view helpers
|
2
|
+
module Sinatra::ViewHelpers
|
3
|
+
|
4
|
+
def text_field_tag(object, name, options = {})
|
5
|
+
value = ""
|
6
|
+
value = options.delete(:value) if options[:value]
|
7
|
+
value = object.send name if object
|
8
|
+
attr = []
|
9
|
+
options.each do |key, val|
|
10
|
+
attr << "#{key}='#{val}'"
|
11
|
+
end
|
12
|
+
"<input type='text' name='#{object.form_name}[#{name.to_s}]' value='#{value}' #{attr.join(" ")} />"
|
13
|
+
end
|
14
|
+
|
15
|
+
def submit_tag(name, value, options = {})
|
16
|
+
attr = []
|
17
|
+
options.each do |key, val|
|
18
|
+
attr << "#{key}='#{val}'"
|
19
|
+
end
|
20
|
+
"<input type='submit' name='#{name.to_s}]' value='#{value}' #{attr.join(" ")} />"
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -4,7 +4,8 @@
|
|
4
4
|
<title>MongoDB logger</title>
|
5
5
|
<link href="<%=u 'stylesheets/all.css' %>" media="screen" rel="stylesheet" type="text/css">
|
6
6
|
<script src="<%=u 'javascripts/jquery-1.7.min.js' %>" type="text/javascript"></script>
|
7
|
-
<script src="<%=u '
|
7
|
+
<script src="<%=u 'javascripts/jquery-ui-1.8.16.effects.min.js' %>" type="text/javascript"></script>
|
8
|
+
<script src="<%=u 'javascripts/application.js' %>" type="text/javascript"></script>
|
8
9
|
</head>
|
9
10
|
<body>
|
10
11
|
<div class="page">
|
@@ -25,22 +25,22 @@
|
|
25
25
|
<div class="unit size1of3">
|
26
26
|
<div class="unit size1of2">
|
27
27
|
<div class="prm">
|
28
|
-
|
28
|
+
<%= text_field_tag @filter, :controller, :placeholder => "Controller" %>
|
29
29
|
</div> <!-- prm -->
|
30
30
|
</div>
|
31
31
|
<div class="unit size1of2">
|
32
32
|
<div class="prm">
|
33
|
-
|
33
|
+
<%= text_field_tag @filter, :action, :placeholder => "Action" %>
|
34
34
|
</div>
|
35
35
|
</div>
|
36
36
|
</div>
|
37
37
|
<div class="unit size1of3">
|
38
|
-
<div class="unit size1of2">
|
39
|
-
|
38
|
+
<div class="unit size1of2">
|
39
|
+
<%#= select_tag @filter, :limit, :options => [100, 500, 1000, 2000, 5000, 10000] %>
|
40
40
|
</div>
|
41
41
|
</div>
|
42
42
|
<div class="unit size1of3 txtR">
|
43
|
-
|
43
|
+
<%= submit_tag :submit, "Filter", :class => "button primary" %>
|
44
44
|
<a href="<%=h url_path("overview") %>" class="button small mls">Clear</a>
|
45
45
|
</div>
|
46
46
|
</div> <!-- outer -->
|
@@ -48,21 +48,22 @@
|
|
48
48
|
<div class="unit size1of3">
|
49
49
|
<div class="unit size1of2">
|
50
50
|
<div class="prm">
|
51
|
-
|
51
|
+
<%= text_field_tag @filter, :application_name, :placeholder => "Application Name" %>
|
52
52
|
</div>
|
53
53
|
</div>
|
54
54
|
<div class="unit size1of2">
|
55
55
|
<div class="prm">
|
56
|
-
|
56
|
+
<%= text_field_tag @filter, :ip, :placeholder => "IP" %>
|
57
57
|
</div>
|
58
58
|
</div>
|
59
59
|
</div>
|
60
60
|
<div class="unit size1of3">
|
61
61
|
<div class="unit size1of2">
|
62
|
-
<div class="prm ptxs">
|
63
|
-
|
64
|
-
|
62
|
+
<div class="prm ptxs">
|
63
|
+
<%#= f.check_box :is_exception %>
|
64
|
+
<%#= f.label :is_exception, "Filter exceptions" %>
|
65
65
|
</div>
|
66
|
+
</div>
|
66
67
|
</div> <!-- unit -->
|
67
68
|
</div> <!-- outer -->
|
68
69
|
</form>
|
@@ -74,8 +75,8 @@
|
|
74
75
|
<table id="logs_list">
|
75
76
|
<tr>
|
76
77
|
<th>Received</th>
|
77
|
-
<th>Action</th>
|
78
78
|
<th>Controller</th>
|
79
|
+
<th>Action</th>
|
79
80
|
<th>IP</th>
|
80
81
|
<th>URL</th>
|
81
82
|
<th>Runtime</th>
|
data/mongodb_logger.gemspec
CHANGED
@@ -6,15 +6,19 @@ Gem::Specification.new do |gem|
|
|
6
6
|
gem.email = ["leopard.not.a@gmail.com"]
|
7
7
|
gem.description = %q{MongoDB logger for Rails 3}
|
8
8
|
gem.summary = %q{MongoDB logger for Rails 3}
|
9
|
-
gem.homepage = ""
|
9
|
+
gem.homepage = "http://mongodb-logger.catware.org"
|
10
10
|
|
11
|
-
gem.
|
12
|
-
gem.
|
13
|
-
|
14
|
-
gem.add_development_dependency "
|
11
|
+
gem.extra_rdoc_files = [ "LICENSE", "README.md" ]
|
12
|
+
gem.rdoc_options = ["--charset=UTF-8"]
|
13
|
+
|
14
|
+
gem.add_development_dependency "rspec", "~> 2.7.0"
|
15
|
+
gem.add_development_dependency "shoulda", ">= 2.0.0"
|
16
|
+
gem.add_development_dependency "mocha", "~> 0.10.0"
|
17
|
+
gem.add_development_dependency "cucumber", "~> 1.1.2"
|
18
|
+
gem.add_development_dependency "coffee-script", "~> 2.2.0"
|
19
|
+
gem.add_development_dependency "therubyracer", "~> 0.9.9"
|
15
20
|
|
16
21
|
gem.add_runtime_dependency "rake", "~> 0.9.0"
|
17
|
-
gem.add_runtime_dependency "bundler", ">= 1.0.0"
|
18
22
|
gem.add_runtime_dependency "mongo", "~> 1.4.0"
|
19
23
|
gem.add_runtime_dependency "bson_ext", "~> 1.4.0"
|
20
24
|
gem.add_runtime_dependency "i18n", ">= 0.4.1"
|
@@ -22,7 +26,6 @@ Gem::Specification.new do |gem|
|
|
22
26
|
gem.add_runtime_dependency "activesupport", ">= 3.0.0"
|
23
27
|
gem.add_runtime_dependency "sinatra", ">= 1.2.0"
|
24
28
|
gem.add_runtime_dependency "erubis", ">= 2.6.6"
|
25
|
-
gem.add_runtime_dependency "coffee-script", "~> 2.2.0"
|
26
29
|
gem.add_runtime_dependency "vegas", "~> 0.1.2"
|
27
30
|
|
28
31
|
gem.rubyforge_project = "mongodb_logger"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongodb_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70100132933360 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.7.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70100132933360
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: shoulda
|
27
|
-
requirement: &
|
27
|
+
requirement: &70100132931920 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 2.0.0
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70100132931920
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mocha
|
38
|
-
requirement: &
|
38
|
+
requirement: &70100132942920 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.10.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70100132942920
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cucumber
|
49
|
-
requirement: &
|
49
|
+
requirement: &70100132940840 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,32 +54,43 @@ dependencies:
|
|
54
54
|
version: 1.1.2
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70100132940840
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement: &
|
59
|
+
name: coffee-script
|
60
|
+
requirement: &70100132954040 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
64
64
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
66
|
-
type: :
|
65
|
+
version: 2.2.0
|
66
|
+
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70100132954040
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
71
|
-
requirement: &
|
70
|
+
name: therubyracer
|
71
|
+
requirement: &70100132952500 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - ~>
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
76
|
+
version: 0.9.9
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70100132952500
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rake
|
82
|
+
requirement: &70100132950780 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 0.9.0
|
77
88
|
type: :runtime
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: *
|
90
|
+
version_requirements: *70100132950780
|
80
91
|
- !ruby/object:Gem::Dependency
|
81
92
|
name: mongo
|
82
|
-
requirement: &
|
93
|
+
requirement: &70100132948020 !ruby/object:Gem::Requirement
|
83
94
|
none: false
|
84
95
|
requirements:
|
85
96
|
- - ~>
|
@@ -87,10 +98,10 @@ dependencies:
|
|
87
98
|
version: 1.4.0
|
88
99
|
type: :runtime
|
89
100
|
prerelease: false
|
90
|
-
version_requirements: *
|
101
|
+
version_requirements: *70100132948020
|
91
102
|
- !ruby/object:Gem::Dependency
|
92
103
|
name: bson_ext
|
93
|
-
requirement: &
|
104
|
+
requirement: &70100132960200 !ruby/object:Gem::Requirement
|
94
105
|
none: false
|
95
106
|
requirements:
|
96
107
|
- - ~>
|
@@ -98,10 +109,10 @@ dependencies:
|
|
98
109
|
version: 1.4.0
|
99
110
|
type: :runtime
|
100
111
|
prerelease: false
|
101
|
-
version_requirements: *
|
112
|
+
version_requirements: *70100132960200
|
102
113
|
- !ruby/object:Gem::Dependency
|
103
114
|
name: i18n
|
104
|
-
requirement: &
|
115
|
+
requirement: &70100132957100 !ruby/object:Gem::Requirement
|
105
116
|
none: false
|
106
117
|
requirements:
|
107
118
|
- - ! '>='
|
@@ -109,10 +120,10 @@ dependencies:
|
|
109
120
|
version: 0.4.1
|
110
121
|
type: :runtime
|
111
122
|
prerelease: false
|
112
|
-
version_requirements: *
|
123
|
+
version_requirements: *70100132957100
|
113
124
|
- !ruby/object:Gem::Dependency
|
114
125
|
name: json
|
115
|
-
requirement: &
|
126
|
+
requirement: &70100132980140 !ruby/object:Gem::Requirement
|
116
127
|
none: false
|
117
128
|
requirements:
|
118
129
|
- - ~>
|
@@ -120,10 +131,10 @@ dependencies:
|
|
120
131
|
version: 1.6.1
|
121
132
|
type: :runtime
|
122
133
|
prerelease: false
|
123
|
-
version_requirements: *
|
134
|
+
version_requirements: *70100132980140
|
124
135
|
- !ruby/object:Gem::Dependency
|
125
136
|
name: activesupport
|
126
|
-
requirement: &
|
137
|
+
requirement: &70100132978380 !ruby/object:Gem::Requirement
|
127
138
|
none: false
|
128
139
|
requirements:
|
129
140
|
- - ! '>='
|
@@ -131,10 +142,10 @@ dependencies:
|
|
131
142
|
version: 3.0.0
|
132
143
|
type: :runtime
|
133
144
|
prerelease: false
|
134
|
-
version_requirements: *
|
145
|
+
version_requirements: *70100132978380
|
135
146
|
- !ruby/object:Gem::Dependency
|
136
147
|
name: sinatra
|
137
|
-
requirement: &
|
148
|
+
requirement: &70100132977100 !ruby/object:Gem::Requirement
|
138
149
|
none: false
|
139
150
|
requirements:
|
140
151
|
- - ! '>='
|
@@ -142,10 +153,10 @@ dependencies:
|
|
142
153
|
version: 1.2.0
|
143
154
|
type: :runtime
|
144
155
|
prerelease: false
|
145
|
-
version_requirements: *
|
156
|
+
version_requirements: *70100132977100
|
146
157
|
- !ruby/object:Gem::Dependency
|
147
158
|
name: erubis
|
148
|
-
requirement: &
|
159
|
+
requirement: &70100132975940 !ruby/object:Gem::Requirement
|
149
160
|
none: false
|
150
161
|
requirements:
|
151
162
|
- - ! '>='
|
@@ -153,21 +164,10 @@ dependencies:
|
|
153
164
|
version: 2.6.6
|
154
165
|
type: :runtime
|
155
166
|
prerelease: false
|
156
|
-
version_requirements: *
|
157
|
-
- !ruby/object:Gem::Dependency
|
158
|
-
name: coffee-script
|
159
|
-
requirement: &70142944230460 !ruby/object:Gem::Requirement
|
160
|
-
none: false
|
161
|
-
requirements:
|
162
|
-
- - ~>
|
163
|
-
- !ruby/object:Gem::Version
|
164
|
-
version: 2.2.0
|
165
|
-
type: :runtime
|
166
|
-
prerelease: false
|
167
|
-
version_requirements: *70142944230460
|
167
|
+
version_requirements: *70100132975940
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: vegas
|
170
|
-
requirement: &
|
170
|
+
requirement: &70100132974300 !ruby/object:Gem::Requirement
|
171
171
|
none: false
|
172
172
|
requirements:
|
173
173
|
- - ~>
|
@@ -175,19 +175,22 @@ dependencies:
|
|
175
175
|
version: 0.1.2
|
176
176
|
type: :runtime
|
177
177
|
prerelease: false
|
178
|
-
version_requirements: *
|
178
|
+
version_requirements: *70100132974300
|
179
179
|
description: MongoDB logger for Rails 3
|
180
180
|
email:
|
181
181
|
- leopard.not.a@gmail.com
|
182
182
|
executables:
|
183
183
|
- mongodb_logger_web
|
184
184
|
extensions: []
|
185
|
-
extra_rdoc_files:
|
185
|
+
extra_rdoc_files:
|
186
|
+
- LICENSE
|
187
|
+
- README.md
|
186
188
|
files:
|
187
189
|
- .gitignore
|
188
190
|
- .rvmrc
|
189
191
|
- .travis.yml
|
190
192
|
- Gemfile
|
193
|
+
- LICENSE
|
191
194
|
- README.md
|
192
195
|
- Rakefile
|
193
196
|
- SUPPORTED_RAILS_VERSIONS
|
@@ -206,6 +209,7 @@ files:
|
|
206
209
|
- lib/mongodb_logger/railtie.rb
|
207
210
|
- lib/mongodb_logger/replica_set_helper.rb
|
208
211
|
- lib/mongodb_logger/server.rb
|
212
|
+
- lib/mongodb_logger/server/coffee/application.coffee
|
209
213
|
- lib/mongodb_logger/server/model/filter.rb
|
210
214
|
- lib/mongodb_logger/server/partials.rb
|
211
215
|
- lib/mongodb_logger/server/public/images/ajax-loader.gif
|
@@ -214,7 +218,9 @@ files:
|
|
214
218
|
- lib/mongodb_logger/server/public/images/play-icon.png
|
215
219
|
- lib/mongodb_logger/server/public/images/stop-icon.png
|
216
220
|
- lib/mongodb_logger/server/public/images/success.png
|
221
|
+
- lib/mongodb_logger/server/public/javascripts/application.js
|
217
222
|
- lib/mongodb_logger/server/public/javascripts/jquery-1.7.min.js
|
223
|
+
- lib/mongodb_logger/server/public/javascripts/jquery-ui-1.8.16.effects.min.js
|
218
224
|
- lib/mongodb_logger/server/public/stylesheets/all.css
|
219
225
|
- lib/mongodb_logger/server/public/stylesheets/grids.css
|
220
226
|
- lib/mongodb_logger/server/public/stylesheets/group-buttons.css
|
@@ -225,7 +231,7 @@ files:
|
|
225
231
|
- lib/mongodb_logger/server/public/stylesheets/library.css
|
226
232
|
- lib/mongodb_logger/server/public/stylesheets/reset.css
|
227
233
|
- lib/mongodb_logger/server/public/stylesheets/spaces.css
|
228
|
-
- lib/mongodb_logger/server/
|
234
|
+
- lib/mongodb_logger/server/view_helpers.rb
|
229
235
|
- lib/mongodb_logger/server/views/error.erb
|
230
236
|
- lib/mongodb_logger/server/views/layout.erb
|
231
237
|
- lib/mongodb_logger/server/views/overview.erb
|
@@ -252,10 +258,11 @@ files:
|
|
252
258
|
- test/test_helper.rb
|
253
259
|
- test/unit/mongodb_logger_replica_test.rb
|
254
260
|
- test/unit/mongodb_logger_test.rb
|
255
|
-
homepage:
|
261
|
+
homepage: http://mongodb-logger.catware.org
|
256
262
|
licenses: []
|
257
263
|
post_install_message:
|
258
|
-
rdoc_options:
|
264
|
+
rdoc_options:
|
265
|
+
- --charset=UTF-8
|
259
266
|
require_paths:
|
260
267
|
- lib
|
261
268
|
required_ruby_version: !ruby/object:Gem::Requirement
|