action_tracker 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 469c3d3178839b4b363a1486cd7ab1a48bce4562
4
- data.tar.gz: 378183a75a3a54544d6eef48e92ed4714da11d95
3
+ metadata.gz: 638907fb87e39ca2a30f4b47e2943ddafd38c404
4
+ data.tar.gz: 4ae63d3897e1f6af7c32de1f50723e4d95e9d228
5
5
  SHA512:
6
- metadata.gz: f318632a0b0fe0ebc5e8cada9b7b157d2f0bcdcec88cf97eead2c95e14c8304cf8bd132d01d974fc3ce98f627b3ea8d24b866934d57e17fe51600e4d1d45a140
7
- data.tar.gz: 72cb25c4a82f5ec36b460974cb714e55e92215447cfd2a6db2f6503ed7693928368a82450ccc5a5bc53368bbd0579738ab310a9d86e96ec92f51fabd6947b46a
6
+ metadata.gz: d1ca2681d020e4c0188f1204335a8925de6fed957a45f3724a558f8e5a78c43eff7d6b71a1a6a153f37d008fb62185606a9f16175a28b06bcab0355f2dfb46de
7
+ data.tar.gz: 4725862c5725de5bd8930c010e73cd47ba9ee6bc6c4b183d7fa61b3a7062228709cdc9c20a49fe8ee89a4bab9a1eff5e351669fbb9a79d915b175e3325e6804d
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  <a href="https://codeclimate.com/github/appprova/action_tracker"><img src="https://codeclimate.com/github/appprova/action_tracker/badges/gpa.svg" /></a>
2
2
  [![Build Status](https://travis-ci.org/appprova/action_tracker.svg?branch=develop)](https://travis-ci.org/appprova/action_tracker)
3
+ [ ![Codeship Status for appprova/action_tracker](https://codeship.com/projects/a038f7b0-f2ce-0133-3399-42c612817579/status?branch=master)](https://codeship.com/projects/149594)
3
4
 
4
5
  # Action Tracker
5
6
 
@@ -0,0 +1,115 @@
1
+
2
+ var ActionTracker = function () {
3
+
4
+ var storage,
5
+ callbacks = {};
6
+
7
+ function constructor() {
8
+ storage = new Storage();
9
+ }
10
+
11
+ function setCallbacks(callbacksObj) {
12
+ callbacks = callbacksObj;
13
+ }
14
+
15
+ function start(list) {
16
+ storage.queue(list);
17
+ }
18
+
19
+ function process() {
20
+ while(typeof storage.getFirst() !== 'undefined') {
21
+ var tracker = new Tracker(storage.dequeue());
22
+ tracker.send();
23
+ }
24
+ }
25
+
26
+ function Storage() {
27
+
28
+ this.storage = [];
29
+
30
+ this.constructor = function() {
31
+ if(sessionStorage.getItem('action_tracker_storage'))
32
+ this.getStorage();
33
+ else
34
+ this.setStorage();
35
+ };
36
+
37
+ this.getStorage = function() {
38
+ this.storage = JSON.parse(sessionStorage.getItem('action_tracker_storage'));
39
+ };
40
+
41
+ this.setStorage = function() {
42
+ sessionStorage.setItem('action_tracker_storage', JSON.stringify(this.storage));
43
+ };
44
+
45
+ this.queue = function(list) {
46
+ if(list != null) {
47
+ this.getStorage();
48
+ for (var i = 0; i < list.length; i++)
49
+ this.storage.push(list[i]);
50
+ this.setStorage();
51
+ }
52
+ };
53
+
54
+ this.dequeue = function() {
55
+ this.getStorage();
56
+ var first = this.storage[0];
57
+ this.storage.splice(0, 1);
58
+ this.setStorage();
59
+ return first;
60
+ };
61
+
62
+ this.getFirst = function() {
63
+ this.getStorage();
64
+ return this.storage[0];
65
+ };
66
+
67
+ this.constructor();
68
+ };
69
+
70
+ function Tracker(tracker_data) {
71
+
72
+ this.userFlag = false;
73
+ this.dataFlag = false;
74
+ this.user = null;
75
+ this.data = null;
76
+
77
+ if(typeof tracker_data !== 'undefined') {
78
+ if(typeof tracker_data.identify !== 'undefined') {
79
+ this.userFlag = true;
80
+ this.user = new User(tracker_data.identify);
81
+ }
82
+ if(typeof tracker_data.track !== 'undefined') {
83
+ this.dataFlag = true;
84
+ this.data = tracker_data.track;
85
+ }
86
+ }
87
+
88
+ this.send = function() {
89
+ if(this.userFlag) callbacks.identify(this.user.getData());
90
+ if(this.dataFlag) callbacks.track(this.data);
91
+ };
92
+ };
93
+
94
+ function User(user_data) {
95
+ this.data = user_data;
96
+ this.data.id = callbacks.generateID(this.data.email);
97
+
98
+ this.getData = function() {
99
+ return this.data;
100
+ };
101
+ };
102
+
103
+ var public = {
104
+ Tracker: Tracker,
105
+ User: User,
106
+ Storage: Storage,
107
+ new: start,
108
+ push: process,
109
+ callbacks: setCallbacks
110
+ };
111
+
112
+ constructor();
113
+
114
+ return public;
115
+ }();
@@ -13,7 +13,7 @@ module ActionTracker
13
13
  end
14
14
 
15
15
  def render(*args)
16
- track_event
16
+ conditional_track_event
17
17
  session[:action_tracked] = true
18
18
  super
19
19
  end
@@ -34,6 +34,14 @@ module ActionTracker
34
34
  session[:action_tracker] << tracker_params unless tracker_params.blank?
35
35
  end
36
36
 
37
+ def digest
38
+ return unless session[:action_tracker].present?
39
+ session[:action_tracked] = true
40
+ output = session[:action_tracker].flatten
41
+ session[:action_tracker] = nil
42
+ output
43
+ end
44
+
37
45
  def tracker_klass
38
46
  @tracker_klass ||= "#{namespace}#{controller_name.camelize}Tracker"
39
47
  end
@@ -0,0 +1 @@
1
+ require 'action_tracker/matchers/have_action_tracker_matcher'
@@ -0,0 +1,17 @@
1
+ RSpec::Matchers.define :have_action_tracker do
2
+ match do |actual|
3
+ actual.respond_to? 'track_event'
4
+ end
5
+
6
+ description do
7
+ "responds to #track_event."
8
+ end
9
+
10
+ failure_message do |actual|
11
+ "expected that #{actual} responded to #track_event, but it didn't."
12
+ end
13
+
14
+ failure_message_when_negated do |actual|
15
+ "expected that #{actual} would not respond to #track_event, but it did."
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module ActionTracker
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.1.4'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_tracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Taiar
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-05-02 00:00:00.000000000 Z
12
+ date: 2016-05-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -156,6 +156,7 @@ files:
156
156
  - README.md
157
157
  - Rakefile
158
158
  - action_tracker.gemspec
159
+ - app/assets/javascripts/action_tracker.js
159
160
  - bin/console
160
161
  - bin/setup
161
162
  - lib/action_tracker.rb
@@ -164,6 +165,8 @@ files:
164
165
  - lib/action_tracker/configuration.rb
165
166
  - lib/action_tracker/engine.rb
166
167
  - lib/action_tracker/helpers/render.rb
168
+ - lib/action_tracker/matchers.rb
169
+ - lib/action_tracker/matchers/have_action_tracker_matcher.rb
167
170
  - lib/action_tracker/version.rb
168
171
  homepage: http://coders.appprova.com.br/
169
172
  licenses:
@@ -185,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
185
188
  version: '0'
186
189
  requirements: []
187
190
  rubyforge_project:
188
- rubygems_version: 2.4.5
191
+ rubygems_version: 2.4.8
189
192
  signing_key:
190
193
  specification_version: 4
191
194
  summary: Easy way to track actions in your application.