bandit 0.0.4 → 0.0.5
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/README.rdoc +5 -3
- data/lib/bandit/version.rb +1 -1
- data/lib/generators/bandit/templates/bandit_controller.rb +3 -1
- data/lib/generators/bandit/templates/dashboard/css/base.css +7 -1
- data/lib/generators/bandit/templates/dashboard/helpers/bandit_helper.rb +4 -0
- data/lib/generators/bandit/templates/dashboard/js/bandit.js +24 -7
- data/lib/generators/bandit/templates/dashboard/view/_experiment_table.html.erb +19 -0
- data/lib/generators/bandit/templates/dashboard/view/index.html.erb +1 -8
- data/lib/generators/bandit/templates/dashboard/view/show.html.erb +4 -9
- metadata +5 -4
data/README.rdoc
CHANGED
@@ -35,7 +35,7 @@ For instance, in a link:
|
|
35
35
|
|
36
36
|
<%= link_to "new purchase", new_purchase_path, :style => "font-size: #{bandit_choose(:click_test)}px;" %>
|
37
37
|
|
38
|
-
You can force a particular alternative by adding a query parameter named "bandit_<
|
38
|
+
You can force a particular alternative by adding a query parameter named "bandit_<experiment name>" and setting it's value to the alternative you want. For instance, given the above experiment in the configuration example:
|
39
39
|
|
40
40
|
http://<yourhost>/<path>?bandit_click_test=40
|
41
41
|
|
@@ -52,7 +52,7 @@ To track a conversion in your controller:
|
|
52
52
|
|
53
53
|
Then, add the following to your config/routes.rb file:
|
54
54
|
|
55
|
-
|
55
|
+
resources :bandit
|
56
56
|
|
57
57
|
To see a dashboard with relevant information, go to:
|
58
58
|
|
@@ -61,7 +61,9 @@ To see a dashboard with relevant information, go to:
|
|
61
61
|
= Tests
|
62
62
|
To run tests:
|
63
63
|
|
64
|
-
rake
|
64
|
+
rake test_memory
|
65
|
+
rake test_memcache
|
66
|
+
rake test_redis
|
65
67
|
|
66
68
|
To produce fake data for the past week, first create an experiment definition. Then, run the following rake task:
|
67
69
|
|
data/lib/bandit/version.rb
CHANGED
@@ -17,7 +17,9 @@ class BanditController < ApplicationController
|
|
17
17
|
def experiment_csv(experiment)
|
18
18
|
rows = []
|
19
19
|
experiment.alternatives.each { |alt|
|
20
|
-
experiment.alternative_start(alt)
|
20
|
+
start = experiment.alternative_start(alt)
|
21
|
+
next if start.nil?
|
22
|
+
start.date.upto(Date.today) { |d|
|
21
23
|
pcount = Bandit::DateHour.date_inject(d, 0) { |sum,dh| sum + experiment.participant_count(alt, dh) }
|
22
24
|
ccount = Bandit::DateHour.date_inject(d, 0) { |sum,dh| sum + experiment.conversion_count(alt, dh) }
|
23
25
|
rows << [ alt, d.year, d.month, d.day, pcount, ccount ].join("\t")
|
@@ -19,4 +19,10 @@ nav ul li a { display: block; padding: 0 30px 0 0; text-deco
|
|
19
19
|
|
20
20
|
/* FOOTER
|
21
21
|
---------------------------- */
|
22
|
-
footer
|
22
|
+
footer { border-top: 3px solid #f1f1f1; padding: 15px 0; margin-top: 20px; }
|
23
|
+
|
24
|
+
table { margin-top: 30px; margin-bottom: 30px; }
|
25
|
+
|
26
|
+
.graph { margin-top: 20px; }
|
27
|
+
|
28
|
+
table { padding-left: 30px; }
|
@@ -4,31 +4,48 @@ function show_chart(title, url) {
|
|
4
4
|
|
5
5
|
function show_chart_data(title, data) {
|
6
6
|
var options = {
|
7
|
-
chart: { renderTo: '
|
7
|
+
chart: { renderTo: 'totals_gcontainer' },
|
8
8
|
title: { text: title },
|
9
9
|
rangeSelector: { selected: 1 },
|
10
|
-
subtitle: { text: "
|
11
|
-
yAxis: { title: { text: "
|
10
|
+
subtitle: { text: "participant / conversion totals" },
|
11
|
+
yAxis: { title: { text: "people" } },
|
12
|
+
series: []
|
13
|
+
};
|
14
|
+
|
15
|
+
var percent_options = {
|
16
|
+
chart: { renderTo: 'percents_gcontainer' },
|
17
|
+
title: { text: title },
|
18
|
+
rangeSelector: { selected: 1 },
|
19
|
+
subtitle: { text: "conversion percents" },
|
20
|
+
yAxis: { title: { text: "% converted" } },
|
12
21
|
series: []
|
13
22
|
};
|
14
23
|
|
15
24
|
var series_c = null;
|
16
25
|
var series_p = null;
|
26
|
+
var series_percent = null;
|
17
27
|
$.each(data.split('\n'), function(lineNo, line) {
|
18
28
|
var items = line.split("\t");
|
19
29
|
var ctitle = items[0] + " conversions";
|
20
30
|
var ptitle = items[0] + " participants";
|
31
|
+
var percent_title = items[0] + " conversion %";
|
21
32
|
if(series_c == null || series_c.name != ctitle) {
|
22
|
-
if(series_c != null) { options.series.push(series_p); options.series.push(series_c); }
|
33
|
+
if(series_c != null) { options.series.push(series_p); options.series.push(series_c); percent_options.series.push(series_percent); }
|
23
34
|
series_c = { data: [], name: ctitle };
|
24
35
|
series_p = { data: [], name: ptitle };
|
36
|
+
series_percent = { data: [], name: percent_title, yDecimals: 2 };
|
25
37
|
}
|
26
38
|
var date = Date.UTC(parseInt(items[1]), parseInt(items[2]), parseInt(items[3]));
|
27
|
-
var
|
28
|
-
|
29
|
-
|
39
|
+
var participants = parseFloat(items[4]);
|
40
|
+
var conversions = parseFloat(items[5]);
|
41
|
+
var conversion_percent = Math.round((conversions / participants) * 100) / 100;
|
42
|
+
series_p.data.push([date, participants]);
|
43
|
+
series_c.data.push([date, conversions]);
|
44
|
+
series_percent.data.push([date, conversion_percent]);
|
30
45
|
});
|
31
46
|
options.series.push(series_p);
|
32
47
|
options.series.push(series_c);
|
48
|
+
percent_options.series.push(series_percent);
|
33
49
|
var chart = new Highcharts.StockChart(options);
|
50
|
+
var charttwo = new Highcharts.StockChart(percent_options);
|
34
51
|
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<table cellspacing="0">
|
2
|
+
<tbody>
|
3
|
+
<tr>
|
4
|
+
<th scope="col" class="name">Alternative</th>
|
5
|
+
<th scope="col">Participants</th>
|
6
|
+
<th scope="col">Conversions</th>
|
7
|
+
<th scope="col">Conversion Rate</th>
|
8
|
+
</tr>
|
9
|
+
|
10
|
+
<% experiment.alternatives.each_with_index { |alt, index| %>
|
11
|
+
<tr<%= (index % 2 == 0) ? '' : ' class="alt"'.html_safe %>>
|
12
|
+
<td class="name"><%= alt %></td>
|
13
|
+
<td><%= experiment.participant_count(alt) %></td>
|
14
|
+
<td><%= experiment.conversion_count(alt) %></td>
|
15
|
+
<td><%= round_percent experiment.conversion_rate(alt) %> %</td>
|
16
|
+
</tr>
|
17
|
+
<% } %>
|
18
|
+
</tbody>
|
19
|
+
</table>
|
@@ -9,13 +9,6 @@
|
|
9
9
|
<p>
|
10
10
|
<%= experiment.description %>
|
11
11
|
</p>
|
12
|
-
|
13
|
-
<h3>Alternative: <%= alt %></h3>
|
14
|
-
<ul>
|
15
|
-
<li>Participants: <%= experiment.participant_count(alt) %></li>
|
16
|
-
<li>Conversions: <%= experiment.conversion_count(alt) %></li>
|
17
|
-
<li>Conversion rate: <%= experiment.conversion_rate(alt) %> %</li>
|
18
|
-
</ul>
|
19
|
-
<% } %>
|
12
|
+
<%= render :partial => 'experiment_table', :locals => { :experiment => experiment } %>
|
20
13
|
<% } %>
|
21
14
|
</section>
|
@@ -4,16 +4,11 @@
|
|
4
4
|
<%= @experiment.description %>
|
5
5
|
</p>
|
6
6
|
|
7
|
-
|
7
|
+
<%= render :partial => 'experiment_table', :locals => { :experiment => @experiment } %>
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
<
|
12
|
-
<li>Participants: <%= @experiment.participant_count(alt) %></li>
|
13
|
-
<li>Conversions: <%= @experiment.conversion_count(alt) %></li>
|
14
|
-
<li>Conversion rate: <%= @experiment.conversion_rate(alt) %> %</li>
|
15
|
-
</ul>
|
16
|
-
<% } %>
|
9
|
+
<div id="totals_gcontainer" class="graph"></div>
|
10
|
+
|
11
|
+
<div id="percents_gcontainer" class="graph"></div>
|
17
12
|
|
18
13
|
</section>
|
19
14
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bandit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 5
|
10
|
+
version: 0.0.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Brian Muller
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-11-
|
18
|
+
date: 2011-11-12 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- lib/generators/bandit/templates/dashboard/js/bandit.js
|
120
120
|
- lib/generators/bandit/templates/dashboard/js/highstock.js
|
121
121
|
- lib/generators/bandit/templates/dashboard/js/jquery.min.js
|
122
|
+
- lib/generators/bandit/templates/dashboard/view/_experiment_table.html.erb
|
122
123
|
- lib/generators/bandit/templates/dashboard/view/index.html.erb
|
123
124
|
- lib/generators/bandit/templates/dashboard/view/show.html.erb
|
124
125
|
- players.rdoc
|