mountain-goat 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/README.md +84 -70
  2. data/generators/mg/mg_generator.rb +9 -3
  3. data/generators/mg/templates/create_mountain_goat_tables.rb +4 -0
  4. data/generators/mg/templates/mountain-goat.yml +1 -0
  5. data/lib/mountain-goat.rb +12 -12
  6. data/lib/mountain-goat/controllers/mg/mountain_goat_controller.rb +1 -1
  7. data/lib/mountain-goat/controllers/mg/report_items_controller.rb +5 -5
  8. data/lib/mountain-goat/controllers/mg/reports_controller.rb +28 -1
  9. data/lib/mountain-goat/metric_tracking.rb +4 -4
  10. data/lib/mountain-goat/models/mg/report.rb +4 -4
  11. data/lib/mountain-goat/models/mg/report_item.rb +2 -2
  12. data/lib/mountain-goat/models/mg/report_mailer.rb +7 -0
  13. data/lib/mountain-goat/public/jquery.raphael.js +25 -1
  14. data/lib/mountain-goat/public/mg.css +307 -316
  15. data/lib/mountain-goat/public/mg.js +17 -16
  16. data/lib/mountain-goat/public/mg.png +0 -0
  17. data/lib/mountain-goat/version.rb +1 -1
  18. data/lib/mountain-goat/views/mountain_goat/layouts/mountain_goat.html.erb +21 -20
  19. data/lib/mountain-goat/views/mountain_goat/mg/mountain_goat/login.html.erb +11 -19
  20. data/lib/mountain-goat/views/mountain_goat/mg/report_items/_report_item_form.html.erb +1 -1
  21. data/lib/mountain-goat/views/mountain_goat/mg/report_items/_report_item_pivot_form.html.erb +4 -4
  22. data/lib/mountain-goat/views/mountain_goat/mg/reports/_report_form.html.erb +7 -2
  23. data/lib/mountain-goat/views/mountain_goat/mg/reports/_report_report_items.html.erb +1 -1
  24. data/lib/mountain-goat/views/mountain_goat/mg/reports/edit.html.erb +27 -30
  25. data/lib/mountain-goat/views/mountain_goat/mg/reports/index.html.erb +24 -20
  26. data/lib/mountain-goat/views/mountain_goat/mg/reports/new.html.erb +14 -13
  27. data/lib/mountain-goat/views/mountain_goat/mg/reports/show.html.erb +10 -13
  28. data/mountain-goat.gemspec +2 -2
  29. metadata +31 -54
  30. data/lib/mountain-goat/controllers/mg/metric_variants_controller.rb +0 -81
  31. data/lib/mountain-goat/controllers/mg/metrics_controller.rb +0 -110
  32. data/lib/mountain-goat/controllers/mg/rallies_controller.rb +0 -43
  33. data/lib/mountain-goat/models/mg/ci_meta.rb +0 -10
  34. data/lib/mountain-goat/models/mg/convert.rb +0 -147
  35. data/lib/mountain-goat/models/mg/convert_meta_type.rb +0 -20
  36. data/lib/mountain-goat/models/mg/cs_meta.rb +0 -10
  37. data/lib/mountain-goat/models/mg/metric.rb +0 -8
  38. data/lib/mountain-goat/models/mg/metric_variant.rb +0 -25
  39. data/lib/mountain-goat/models/mg/rally.rb +0 -59
  40. data/lib/mountain-goat/views/mountain_goat/mg/converts/.tmp_show.html.erb.4433~ +0 -69
  41. data/lib/mountain-goat/views/mountain_goat/mg/converts/_convert_form.html.erb +0 -26
  42. data/lib/mountain-goat/views/mountain_goat/mg/converts/_convert_meta_type_form.html.erb +0 -27
  43. data/lib/mountain-goat/views/mountain_goat/mg/converts/edit.html.erb +0 -13
  44. data/lib/mountain-goat/views/mountain_goat/mg/converts/index.html.erb +0 -25
  45. data/lib/mountain-goat/views/mountain_goat/mg/converts/new.html.erb +0 -13
  46. data/lib/mountain-goat/views/mountain_goat/mg/converts/show.html.erb +0 -44
  47. data/lib/mountain-goat/views/mountain_goat/mg/metric_variants/_metric_variant_form.html.erb +0 -37
  48. data/lib/mountain-goat/views/mountain_goat/mg/metric_variants/edit.html.erb +0 -13
  49. data/lib/mountain-goat/views/mountain_goat/mg/metric_variants/index.html.erb +0 -34
  50. data/lib/mountain-goat/views/mountain_goat/mg/metric_variants/new.html.erb +0 -15
  51. data/lib/mountain-goat/views/mountain_goat/mg/metric_variants/show.html.erb +0 -30
  52. data/lib/mountain-goat/views/mountain_goat/mg/metrics/.tmp_show.html.erb.21270~ +0 -68
  53. data/lib/mountain-goat/views/mountain_goat/mg/metrics/_metric_form.html.erb +0 -24
  54. data/lib/mountain-goat/views/mountain_goat/mg/metrics/edit.html.erb +0 -13
  55. data/lib/mountain-goat/views/mountain_goat/mg/metrics/index.html.erb +0 -14
  56. data/lib/mountain-goat/views/mountain_goat/mg/metrics/new.html.erb +0 -14
  57. data/lib/mountain-goat/views/mountain_goat/mg/metrics/show.html.erb +0 -67
  58. data/lib/mountain-goat/views/mountain_goat/mg/rallies/.tmp__rally.html.erb.40484~ +0 -12
  59. data/lib/mountain-goat/views/mountain_goat/mg/rallies/_rallies.html.erb +0 -5
  60. data/lib/mountain-goat/views/mountain_goat/mg/rallies/_rallies_form.html.erb +0 -21
  61. data/lib/mountain-goat/views/mountain_goat/mg/rallies/_rally.html.erb +0 -12
  62. data/lib/mountain-goat/views/mountain_goat/mg/rallies/edit.html.erb +0 -13
  63. data/lib/mountain-goat/views/mountain_goat/mg/rallies/index.html.erb +0 -19
  64. data/lib/mountain-goat/views/mountain_goat/mg/rallies/new.html.erb +0 -13
  65. data/lib/mountain-goat/views/mountain_goat/mg/rallies/show.html.erb +0 -14
@@ -1,24 +0,0 @@
1
- <%# locals => f %>
2
-
3
- <% if f.object.new_record? %>
4
- <div class="item metric-type">
5
- <%= f.label :metric_type, 'Type (this is technical)' %>
6
- <%= f.text_field :metric_type %>
7
- </div>
8
- <% else %>
9
- <h2><%= f.object.metric_type %></h2>
10
- <% end %>
11
-
12
- <div class="item title">
13
- <%= f.label :title %>
14
- <%= f.text_field :title %>
15
- </div>
16
-
17
- <div class="item tally-each-serve">
18
- <%= f.check_box :tally_each_serve %>
19
- <%= f.label :tally_each_serve, "Tally every hit (or just once per user)" %>
20
- </div>
21
-
22
- <div class="item submit">
23
- <%= f.submit 'Submit' %>
24
- </div>
@@ -1,13 +0,0 @@
1
-
2
-
3
- <div id="container-main" class="mt-metrics">
4
- <div class="mountain-goat-panel centered">
5
- <h1>Edit <%= @metric.title %></h1>
6
-
7
- <% form_for :metric, @metric, :url => mg_metric_url(:id => @metric.id), :html => { :method => :put } do |f| %>
8
- <%= f.error_messages %>
9
-
10
- <%= render :partial => 'mg/metrics/metric_form', :locals => { :f => f } %>
11
- <% end %>
12
- </div>
13
- </div>
@@ -1,14 +0,0 @@
1
-
2
- <div id="container-main" class="mt-metrics">
3
- <div class="mountain-goat-panel">
4
- <h1>All metrics</h1>
5
-
6
- <% @metrics.each do |metric| %>
7
- <h2><a href="<%= mg_metric_url metric %>"><%=h metric.title %> </a></h2>
8
- <% end %>
9
-
10
- <span class="actions">
11
- <a class="button" href="<%= new_mg_metric_url %>">New metric</a>
12
- </span>
13
- </div>
14
- </div>
@@ -1,14 +0,0 @@
1
-
2
-
3
- <div id="container-main" class="mt-metrics">
4
- <div class="mountain-goat-panel cenetered">
5
- <h2>New metric</h2>
6
-
7
- <% form_for :metric, @metric, :url => mg_metrics_url do |f| %>
8
- <%= f.error_messages %>
9
-
10
- <%= render :partial => 'mg/metrics/metric_form', :locals => { :f => f } %>
11
- <% end %>
12
-
13
- </div>
14
- </div>
@@ -1,67 +0,0 @@
1
-
2
- <div id="container-main" class="mt-metrics">
3
- <div class="mountain-goat-panel cenetered">
4
- <ul class="nav">
5
- <li><a href="<%= mg_converts_url %>">Goals</a></li>
6
- <li><a href="<%= mg_metric_url :id => @metric.id %>"><%=h @metric.title %></a></li>
7
- </ul>
8
-
9
- <h1><%=h @metric.title %> Metric</h1>
10
-
11
- <div class="variants">
12
- <% if @metric.metric_variants.count == 0 %>
13
- <span class="none">No metric variants</span>
14
- <% else %>
15
- <div class="statpads">
16
- <div class="flyer-analysis statpad">
17
- <div class="title">Conversions</div>
18
- <div class="statbody">
19
- <%= mg_chart("analysis_graph#{@metric.id}",
20
- { "Served" => { :collection => @rates[:served], :x => :variant_type, :y => :value },
21
- "Conversions" => { :collection => @rates[:conversions], :x => :variant_type, :y => :value } },
22
- { :xaxis => { :ticks => @rates[:titles].map { |i,t| [i + 0.5, t] }.sort }, :yaxis => { :min => 0, :minTickSize => 1 }, :bars => { :show => true }, :legend => { :show => false, :position => "ne" }, :grid => { :hoverable => true, :clickable => true }, :inline => false }, :placeholder_size => "420x260", :pie_hover => true, :line_hover_absolute => true, :item_title => "view(s)") %>
23
-
24
- </div>
25
- </div>
26
- <div class="flyer-analysis statpad">
27
- <div class="title">Conversion Rates</div>
28
- <div class="statbody">
29
- <%= mg_chart("analysis_conv_graph#{@metric.id}",
30
- { "Conversion Rate (%)" => { :collection => @rates[:conversion_rates], :x => :variant_type, :y => :value } },
31
- { :xaxis => { :ticks => @rates[:titles].map { |i,t| [i + 0.5, t] }.sort }, :yaxis => { :min => 0, :minTickSize => 1 }, :bars => { :show => true }, :legend => { :show => false, :position => "ne" }, :grid => { :hoverable => true, :clickable => true }, :inline => false }, :placeholder_size => "420x260", :pie_hover => true, :line_hover_absolute => true, :item_title => "%") %>
32
-
33
- </div>
34
- </div>
35
- </div>
36
-
37
-
38
- <div class="metric-category">
39
- <span class="metric"><a href="<%= mg_metric_url :id => @metric.id %>"><%= @metric.title %></a></span>
40
- <% if @metric.metric_variants.count == 0 %>
41
- <span class="none">No metric variants [<a href="<%= new_mg_metric_metric_variant_url :metric_id => @metric.id %>">Add one</a>]</span>
42
- <% else %>
43
- <% @metric.metric_variants.each do |mv| %>
44
- <div class="item rate">
45
- <span class="rate-holder">
46
- <span class="title"><a href="<%= mg_metric_variant_url mv %>"><%=h mv.name %></a></span>
47
- <span class="rates" style="width:<%= number_to_percentage(mv.conversion_rate, :precision => 0) %>"></span>
48
- </span>
49
-
50
- <span class="percent-holder">
51
- <span class="val"><%= number_to_percentage(mv.conversion_rate, :precision => 0) %></span>
52
- (<span class="conversions"><%= mv.conversions %></span> /
53
- <span class="served"><%= mv.served %></span>)
54
- </span>
55
- </div>
56
- <% end %>
57
- <% end %>
58
- </div>
59
- <% end %>
60
- </div>
61
-
62
- <div class="actions">
63
- <a class="button" href="<%= edit_mg_metric_url :id => @metric %>">Edit Metric</a>
64
- <a class="button" href="<%= new_mg_metric_metric_variant_url :metric_id => @metric.id %>">New Variant</a>
65
- </div>
66
- </div>
67
- </div>
@@ -1,12 +0,0 @@
1
- <%# locals => rally %>
2
-
3
- <li class="rally" data-rally-id="<%= rally.id %>"><span class="name"><%= rally.convert.name %></span>
4
- <ul>
5
- <% rally.all_metas.each do |k,v| %>
6
- <% if !v.blank? %>
7
- <li><%= k %>: <%= v %></li>
8
- <% end %>
9
- <% end %>
10
- </ul>
11
- <span class="time"><%= content_tag(:abbr, rally.created_at.to_s, :title => rally.created_at.getutc.iso8601, :class => "time-ago") %></span>
12
- </li>
@@ -1,5 +0,0 @@
1
- <%# locals => rallies %>
2
-
3
- <% rallies.each do |rally| %>
4
- <%= render :partial => 'mg/rallies/rally', :locals => { :rally => rally } %>
5
- <% end %>
@@ -1,21 +0,0 @@
1
- <%# locals => f %>
2
-
3
- <% if f.object.new_record? %>
4
- <div class="item metric-type">
5
- <%= f.label :convert_type, 'Type (this is technical)' %>
6
- <%= f.text_field :convert_type %>
7
- </div>
8
- <% else %>
9
- <%= f.hidden_field(:convert_id) %>
10
- <h2><%= f.object.convert.name %></h2>
11
- <span class="item created_at">
12
- <%= f.label :created_at %>
13
- <%= f.text_field :created_at %>
14
- </span>
15
- <% end %>
16
-
17
- <%# TODO: Metas %>
18
-
19
- <div class="item submit">
20
- <%= f.submit 'Submit' %>
21
- </div>
@@ -1,12 +0,0 @@
1
- <%# locals => rally %>
2
-
3
- <li class="rally" data-rally-id="<%= rally.id %>"><span class="name"><%= rally.convert.name %></span>
4
- <ul>
5
- <% rally.all_metas.each do |k,v| %>
6
- <% if !v.blank? %>
7
- <li><%= k %>: <%= v %></li>
8
- <% end %>
9
- <% end %>
10
- </ul>
11
- <span class="time"><%= content_tag(:abbr, rally.created_at.to_s, :title => rally.created_at.getutc.iso8601, :class => "time-ago") %></span>
12
- </li>
@@ -1,13 +0,0 @@
1
-
2
- <div id="container-main" class="mt-rallies">
3
- <div class="mountain-goat-panel cenetered">
4
- <h2>Edit rally</h2>
5
-
6
- <% form_for :rally, @rally, :url => mg_rallies_url do |f| %>
7
- <%= f.error_messages %>
8
-
9
- <%= render :partial => 'mg/rallies/rallies_form', :locals => { :f => f } %>
10
- <% end %>
11
-
12
- </div>
13
- </div>
@@ -1,19 +0,0 @@
1
-
2
- <div id="container-main" class="mt-rallies">
3
- <div class="mountain-goat-panel">
4
- <h1>Rallies <% if @convert %>for <%=h @convert.name %><% else %>for all Goals<% end %></h1>
5
-
6
- <div class="recent-rally" data-reload="true" data-rally-id="<%= @rallies.count > 0 ? @rallies.first.id : -1 %>" data-convert-id="<%= @convert ? @convert.id : '' %>"></div>
7
- <a href="javascript:void(0)" class="reload">Reload</a>
8
-
9
- <% if @rallies.count > 0 %>
10
- <ul class="rally-list">
11
- <% @rallies.each do |rally| %>
12
- <%= render 'rally', :rally => rally %>
13
- <% end %>
14
- </ul>
15
- <% else %>
16
- <h2>No rallies for yet this goal.</h2>
17
- <% end %>
18
- </div>
19
- </div>
@@ -1,13 +0,0 @@
1
-
2
- <div id="container-main" class="mt-rallies">
3
- <div class="mountain-goat-panel cenetered">
4
- <h2>New rally</h2>
5
-
6
- <% form_for :rally, @rally, :url => mg_rallies_url do |f| %>
7
- <%= f.error_messages %>
8
-
9
- <%= render :partial => 'mg/rallies/rallies_form', :locals => { :f => f } %>
10
- <% end %>
11
-
12
- </div>
13
- </div>
@@ -1,14 +0,0 @@
1
-
2
- <div id="container-main" class="mt-rallies">
3
- <div class="mountain-goat-panel cenetered">
4
- <h2>Rally for <%=h @rally.convert.name %></h2>
5
-
6
- <div class="rally">
7
- <span class="occured"><%= @rally.created_at.to_s %></span>
8
- </div>
9
-
10
- <div class="actions">
11
- <a class="button" href="<%= edit_mg_rally_url @rally.id %>">Edit</a>
12
- </div>
13
- </div>
14
- </div>