mongodb_logger 0.1.1 → 0.1.2
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/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
|