saw 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/examples/active_admin/saw.rb +7 -8
- data/lib/saw.rb +3 -2
- data/lib/saw/hit.rb +16 -0
- data/lib/saw/util.rb +40 -0
- data/lib/saw/version.rb +1 -1
- data/lib/saw/visit.rb +18 -30
- data/test/models/hit.rb +16 -0
- data/test/models/visit.rb +18 -30
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 10a19585b68bf2d75c22c686e95b183acb11aee0
|
|
4
|
+
data.tar.gz: 7666fb2b7ace755a9b36f967e2e74c889b7baa1a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5599f1ab6c78d157b133c96ed549db80fd9486714ff05abf868840198480108db0cabfba076650f02f86520d996f3bc342c1c1ffed7ff642bda8eaacc448d395
|
|
7
|
+
data.tar.gz: 6782a3b90894b9b34b9db20c65d6bd4a46ccc672a8e51236923f482efac44922979514436e91fec48f5f369d4d7011e1b9d8fec47bd991179cafa88f4d9d0203
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
ActiveAdmin.register Visit do
|
|
2
2
|
menu :parent => "Users"
|
|
3
3
|
belongs_to :user, :optional => true
|
|
4
|
-
|
|
5
4
|
actions :index, :show, :destroy
|
|
6
5
|
|
|
7
6
|
index do
|
|
@@ -37,20 +36,20 @@ end
|
|
|
37
36
|
|
|
38
37
|
ActiveAdmin.register Hit do
|
|
39
38
|
menu false
|
|
40
|
-
|
|
41
39
|
belongs_to :visit, :optional => true
|
|
42
|
-
|
|
43
|
-
actions :index, :show, :destroy
|
|
40
|
+
actions :index, :show
|
|
44
41
|
|
|
45
42
|
index do
|
|
46
43
|
selectable_column
|
|
47
|
-
column
|
|
48
|
-
resource.created_at.strftime('%T %Z')
|
|
49
|
-
end
|
|
44
|
+
column :after
|
|
50
45
|
column :note do |resource|
|
|
51
46
|
resource.note.html_safe
|
|
52
47
|
end
|
|
53
|
-
|
|
54
48
|
default_actions
|
|
55
49
|
end
|
|
50
|
+
|
|
51
|
+
filter :note
|
|
52
|
+
filter :visit, :as => :select, :collection => proc { params[:visit_id] ? Visit.find(params[:visit_id]).user.visits : Visit.scoped }
|
|
53
|
+
filter :url
|
|
54
|
+
filter :created_at
|
|
56
55
|
end
|
data/lib/saw.rb
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
require "saw/version"
|
|
2
|
+
require "saw/util.rb"
|
|
2
3
|
require "saw/visit.rb"
|
|
3
4
|
require "saw/hit.rb"
|
|
4
|
-
require "saw/controller.rb"
|
|
5
5
|
|
|
6
6
|
module Saw
|
|
7
7
|
class Railtie < ::Rails::Railtie
|
|
8
8
|
config.after_initialize do
|
|
9
|
-
require "saw/visits_controller"
|
|
10
9
|
require "saw/user_addition"
|
|
10
|
+
require "saw/controller.rb"
|
|
11
|
+
require "saw/visits_controller"
|
|
11
12
|
end
|
|
12
13
|
end
|
|
13
14
|
end
|
data/lib/saw/hit.rb
CHANGED
|
@@ -3,4 +3,20 @@ class Hit < ActiveRecord::Base
|
|
|
3
3
|
serialize :json_data, JSON
|
|
4
4
|
attr_accessible :url, :http_method, :action, :params
|
|
5
5
|
belongs_to :visit
|
|
6
|
+
|
|
7
|
+
def last_hit
|
|
8
|
+
visit.hits.where(' hits.id < ? ', id).last
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def next_hit
|
|
12
|
+
visit.hits.where(' hits.id > ? ', id).first
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def after
|
|
16
|
+
Saw::Util.time_diff visit.starts_with.created_at, created_at
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def user_visits
|
|
20
|
+
visit.user.visits
|
|
21
|
+
end
|
|
6
22
|
end
|
data/lib/saw/util.rb
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Saw
|
|
2
|
+
module Util
|
|
3
|
+
def self.time_diff dt1, dt2
|
|
4
|
+
diff = nil
|
|
5
|
+
#diff = 1 unless dt1 or dt1.kind_of? DateTime
|
|
6
|
+
#diff ||= 1 unless dt2 or dt2.kind_of? DateTime
|
|
7
|
+
diff ||= dt2 - dt1
|
|
8
|
+
|
|
9
|
+
return '00:00:00' if diff==1
|
|
10
|
+
|
|
11
|
+
str = ''
|
|
12
|
+
|
|
13
|
+
hours_diff = (diff/1.hour).round
|
|
14
|
+
if hours_diff > 0
|
|
15
|
+
str << "#{format('%02d', hours_diff)}"
|
|
16
|
+
diff = diff - hours_diff.hours
|
|
17
|
+
else
|
|
18
|
+
str << "00"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
minutes_diff = (diff/1.minute).round
|
|
22
|
+
if minutes_diff > 0
|
|
23
|
+
str << ":#{format('%02d', minutes_diff)}"
|
|
24
|
+
diff = diff - minutes_diff.minutes
|
|
25
|
+
else
|
|
26
|
+
str << ":00"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
seconds_diff = (diff/1.second).round
|
|
30
|
+
if seconds_diff > 0
|
|
31
|
+
str << ":#{format('%02d', seconds_diff)}"
|
|
32
|
+
#diff = diff - seconds_diff.seconds
|
|
33
|
+
else
|
|
34
|
+
str << ":00"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
str
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
data/lib/saw/version.rb
CHANGED
data/lib/saw/visit.rb
CHANGED
|
@@ -1,45 +1,33 @@
|
|
|
1
1
|
class Visit < ActiveRecord::Base
|
|
2
2
|
default_scope order('id')
|
|
3
3
|
|
|
4
|
-
attr_accessible :user_id, :session_id, :remote_host
|
|
4
|
+
attr_accessible :user_id, :session_id, :remote_host, :user_agent
|
|
5
5
|
|
|
6
6
|
has_many :hits, :dependent => :destroy
|
|
7
7
|
belongs_to :user
|
|
8
8
|
|
|
9
9
|
def title
|
|
10
|
-
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def lasts
|
|
14
|
-
str = ''
|
|
10
|
+
user_name = ''
|
|
15
11
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
str << "#{format('%02d', hours_diff)}"
|
|
22
|
-
diff = diff - hours_diff.hours
|
|
23
|
-
else
|
|
24
|
-
str << "00"
|
|
12
|
+
%w(name first_name username email).each do |attr|
|
|
13
|
+
if user.respond_to? attr
|
|
14
|
+
user_name = user.send attr
|
|
15
|
+
break
|
|
16
|
+
end
|
|
25
17
|
end
|
|
26
18
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
str << ":#{format('%02d', minutes_diff)}"
|
|
30
|
-
diff = diff - minutes_diff.minutes
|
|
31
|
-
else
|
|
32
|
-
str << ":00"
|
|
33
|
-
end
|
|
19
|
+
"#{user_name}(#{lasts}) on #{created_at.strftime('%b %-d %Y, %l %P')}"
|
|
20
|
+
end
|
|
34
21
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
#diff = diff - seconds_diff.seconds
|
|
39
|
-
else
|
|
40
|
-
str << ":00"
|
|
41
|
-
end
|
|
22
|
+
def starts_with
|
|
23
|
+
hits.first
|
|
24
|
+
end
|
|
42
25
|
|
|
43
|
-
|
|
26
|
+
def ends_with
|
|
27
|
+
hits.last
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def lasts
|
|
31
|
+
Saw::Util.time_diff created_at, ends_with.created_at if ends_with
|
|
44
32
|
end
|
|
45
33
|
end
|
data/test/models/hit.rb
CHANGED
|
@@ -3,4 +3,20 @@ class Hit < ActiveRecord::Base
|
|
|
3
3
|
serialize :json_data, JSON
|
|
4
4
|
attr_accessible :url, :http_method, :action, :params
|
|
5
5
|
belongs_to :visit
|
|
6
|
+
|
|
7
|
+
def last_hit
|
|
8
|
+
visit.hits.where(' hits.id < ? ', id).last
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def next_hit
|
|
12
|
+
visit.hits.where(' hits.id > ? ', id).first
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def after
|
|
16
|
+
Saw::Util.time_diff visit.starts_with.created_at, created_at
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def user_visits
|
|
20
|
+
visit.user.visits
|
|
21
|
+
end
|
|
6
22
|
end
|
data/test/models/visit.rb
CHANGED
|
@@ -1,45 +1,33 @@
|
|
|
1
1
|
class Visit < ActiveRecord::Base
|
|
2
2
|
default_scope order('id')
|
|
3
3
|
|
|
4
|
-
attr_accessible :user_id, :session_id, :remote_host
|
|
4
|
+
attr_accessible :user_id, :session_id, :remote_host, :user_agent
|
|
5
5
|
|
|
6
6
|
has_many :hits, :dependent => :destroy
|
|
7
7
|
belongs_to :user
|
|
8
8
|
|
|
9
9
|
def title
|
|
10
|
-
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def lasts
|
|
14
|
-
str = ''
|
|
10
|
+
user_name = ''
|
|
15
11
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
str << "#{format('%02d', hours_diff)}"
|
|
22
|
-
diff = diff - hours_diff.hours
|
|
23
|
-
else
|
|
24
|
-
str << "00"
|
|
12
|
+
%w(name first_name username email).each do |attr|
|
|
13
|
+
if user.respond_to? attr
|
|
14
|
+
user_name = user.send attr
|
|
15
|
+
break
|
|
16
|
+
end
|
|
25
17
|
end
|
|
26
18
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
str << ":#{format('%02d', minutes_diff)}"
|
|
30
|
-
diff = diff - minutes_diff.minutes
|
|
31
|
-
else
|
|
32
|
-
str << ":00"
|
|
33
|
-
end
|
|
19
|
+
"#{user_name}(#{lasts}) on #{created_at.strftime('%b %-d %Y, %l %P')}"
|
|
20
|
+
end
|
|
34
21
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
#diff = diff - seconds_diff.seconds
|
|
39
|
-
else
|
|
40
|
-
str << ":00"
|
|
41
|
-
end
|
|
22
|
+
def starts_with
|
|
23
|
+
hits.first
|
|
24
|
+
end
|
|
42
25
|
|
|
43
|
-
|
|
26
|
+
def ends_with
|
|
27
|
+
hits.last
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def lasts
|
|
31
|
+
Saw::Util.time_diff created_at, ends_with.created_at if ends_with
|
|
44
32
|
end
|
|
45
33
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: saw
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Amol Pujari
|
|
@@ -44,6 +44,7 @@ files:
|
|
|
44
44
|
- lib/saw/controller.rb
|
|
45
45
|
- lib/saw/hit.rb
|
|
46
46
|
- lib/saw/user_addition.rb
|
|
47
|
+
- lib/saw/util.rb
|
|
47
48
|
- lib/saw/version.rb
|
|
48
49
|
- lib/saw/visit.rb
|
|
49
50
|
- lib/saw/visits_controller.rb
|