mountain-goat 1.0.2 → 1.0.3
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/.gitignore +1 -0
- data/.gitignore~ +2 -0
- data/README.md +4 -3
- data/generators/mg/mg_generator.rb +2 -2
- data/lib/mountain-goat/controllers/mg/goals_controller.rb +4 -7
- data/lib/mountain-goat/controllers/mg/report_items_controller.rb +35 -2
- data/lib/mountain-goat/mg_core.rb +1 -1
- data/lib/mountain-goat/models/mg/goal.rb +1 -1
- data/lib/mountain-goat/models/mg/report.rb +1 -1
- data/lib/mountain-goat/public/g-funnel.js +1 -1
- data/lib/mountain-goat/switch_choice.rb +2 -2
- data/lib/mountain-goat/version.rb +1 -1
- data/lib/mountain-goat/views/mountain_goat/mg/goals/.tmp_show.html.erb.86489~ +32 -0
- data/lib/mountain-goat/views/mountain_goat/mg/goals/show.html.erb +20 -12
- data/lib/mountain-goat/views/mountain_goat/mg/report_items/{.tmp__chart.html.erb.13419~ → .tmp__chart.html.erb.73596~} +0 -0
- data/lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__show.html.erb.52502~ +29 -0
- data/lib/mountain-goat/views/mountain_goat/mg/report_items/_show.html.erb +13 -2
- data/lib/mountain-goat/views/mountain_goat/mg/reports/.tmp__report_form.html.erb.42949~ +26 -0
- data/lib/mountain-goat/views/mountain_goat/mg/reports/{.tmp__report_report_items.html.erb.26030~ → .tmp__report_report_items.html.erb.96264~} +1 -1
- data/lib/mountain-goat/views/mountain_goat/mg/reports/.tmp_edit.html.erb.39909~ +33 -0
- data/lib/mountain-goat/views/mountain_goat/mg/reports/.tmp_show.html.erb.37905~ +18 -0
- data/lib/mountain-goat/views/mountain_goat/mg/reports/_report_form.html.erb +2 -2
- data/lib/mountain-goat/views/mountain_goat/mg/reports/_report_report_items.html.erb +3 -1
- data/lib/mountain-goat/views/mountain_goat/mg/tests/.tmp_show.html.erb.19989~ +63 -0
- metadata +13 -20
- data/lib/mountain-goat/views/mountain_goat/layouts/.tmp_mountain_goat.html.erb.50680~ +0 -76
- data/lib/mountain-goat/views/mountain_goat/mg/goals/.tmp__goal_form.html.erb.5027~ +0 -0
- data/lib/mountain-goat/views/mountain_goat/mg/goals/.tmp__goal_meta_type_form.html.erb.39992~ +0 -0
- data/lib/mountain-goat/views/mountain_goat/mg/goals/.tmp_edit.html.erb.55874~ +0 -0
- data/lib/mountain-goat/views/mountain_goat/mg/goals/.tmp_index.html.erb.97274~ +0 -36
- data/lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__funnel.html.erb.60493~ +0 -18
- data/lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__report_item_form.html.erb.87420~ +0 -10
- data/lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__report_item_pivot_form.html.erb.77056~ +0 -14
- data/lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp_edit.html.erb.31048~ +0 -19
- data/lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp_new.html.erb.36371~ +0 -17
- data/lib/mountain-goat/views/mountain_goat/mg/reports/.tmp__report_form.html.erb.76535~ +0 -21
- data/lib/mountain-goat/views/mountain_goat/mg/reports/.tmp_edit.html.erb.78064~ +0 -36
- data/lib/mountain-goat/views/mountain_goat/mg/reports/.tmp_index.html.erb.74591~ +0 -23
- data/lib/mountain-goat/views/mountain_goat/mg/reports/.tmp_show.html.erb.58427~ +0 -21
data/.gitignore
CHANGED
data/.gitignore~
ADDED
data/README.md
CHANGED
@@ -40,13 +40,13 @@ For more information, read my blog post on how mountain goat quickly accomplishe
|
|
40
40
|
|
41
41
|
## Upgrade from < 1.0.0
|
42
42
|
|
43
|
-
If you are upgrading from Mountain Goat < 1.0.
|
43
|
+
If you are upgrading from Mountain Goat < 1.0.3, please run the following command (please overwrite mountain-goat.yml when prompted):
|
44
44
|
|
45
|
-
./script/generate mg --update=1.0.0,1.0.
|
45
|
+
./script/generate mg --update=1.0.0,1.0.3
|
46
46
|
|
47
47
|
rake db:migrate
|
48
48
|
|
49
|
-
This will install new migrations necessary for version 1.0.
|
49
|
+
This will install new migrations necessary for version 1.0.3. Leave out the 1.0.0 from the command if you are upgrading from version 1.0.0.
|
50
50
|
|
51
51
|
## Install
|
52
52
|
|
@@ -267,6 +267,7 @@ As mountain goat is a suite that is added into your project dynamically, the fol
|
|
267
267
|
* mg_reports
|
268
268
|
|
269
269
|
## Change log
|
270
|
+
1.0.3 - Some overall bug-fixes and start to use Raphael Graphs
|
270
271
|
1.0.2 - Big UI overhaul ~ Robert
|
271
272
|
- Renamed objects to reflect real-world thinking (e.g. metric => test)
|
272
273
|
- Fixed glitch in bandit choice selection
|
@@ -2,7 +2,7 @@ class MgGenerator < Rails::Generator::Base
|
|
2
2
|
def add_options!(opt)
|
3
3
|
opt.on('-p', '--password=password', String, "Your password to access Mountain Goat") { |v| options[:password] = v}
|
4
4
|
opt.on('-w', '--wkhtmltopdf=/path/to/dir', String, "Path to installation of wkhtmltopdf (optional)") { |v| options[:wkhtmltopdf] = v}
|
5
|
-
opt.on('-u', '--update=1.0.0,1.0.
|
5
|
+
opt.on('-u', '--update=1.0.0,1.0.3', String, "If you have previously installed Mountain Goat, use to generate *update* tables.") { |v| options[:update] = v}
|
6
6
|
puts <<-HELPFUL_INSTRUCTIONS
|
7
7
|
|
8
8
|
Mountain Goat is your home for in-house bandit testing.
|
@@ -42,7 +42,7 @@ class MgGenerator < Rails::Generator::Base
|
|
42
42
|
m.migration_template 'update_mountain_goat_tables.rb', 'db/migrate', { :migration_file_name => "update_mountain_goat_tables" }
|
43
43
|
end
|
44
44
|
|
45
|
-
if update.include?("1.0.2") || update.include?("1.0.1")
|
45
|
+
if update.include?("1.0.3") || update.include?("1.0.2") || update.include?("1.0.1")
|
46
46
|
m.migration_template 'update_mountain_goat_tables_v2.rb', 'db/migrate', { :migration_file_name => "update_mountain_goat_tables_v2" }
|
47
47
|
end
|
48
48
|
|
@@ -28,22 +28,19 @@ class Mg::GoalsController < Mg
|
|
28
28
|
end
|
29
29
|
|
30
30
|
@results_by_gmt = {}
|
31
|
-
@results_by_gmt_titles = {}
|
32
31
|
|
33
32
|
@goal.mg_goal_meta_types.each do |gmt|
|
34
33
|
@results_by_gmt[gmt.id] = []
|
35
|
-
|
36
|
-
i = 0
|
34
|
+
|
37
35
|
gmt.meta.all(:select => "data, count(*) as count", :group => "data").each do |meta|
|
38
36
|
next if meta.data.nil?
|
39
37
|
if gmt.meta_type == 'cs_meta' || gmt.meta_type == 'gs_meta'
|
40
|
-
@results_by_gmt[gmt.id].push( { :name =>
|
41
|
-
|
38
|
+
@results_by_gmt[gmt.id].push( { :name => meta.data, :val => meta.count, :title => meta.data } )
|
39
|
+
#@results_by_gmt_titles[gmt.id].merge!({ i => meta.data })
|
42
40
|
else
|
43
|
-
@results_by_gmt[gmt.id].push( { :name => meta.data, :val => meta.count } )
|
41
|
+
@results_by_gmt[gmt.id].push( { :name => meta.data, :val => meta.count, :title => meta.data } )
|
44
42
|
end
|
45
43
|
|
46
|
-
i += 1
|
47
44
|
end
|
48
45
|
end
|
49
46
|
|
@@ -22,7 +22,7 @@ class Mg::ReportItemsController < Mg
|
|
22
22
|
raise ArgumentError, "Invalid report" if @report.nil?
|
23
23
|
|
24
24
|
@report_item = @report.mg_report_items.new(params[:report_item].clone.delete_if { |k, v| k.intern == :reportable || k.intern == :pivot } )
|
25
|
-
@report_item.order = @report.mg_report_items.to_a.map { |ri| ri.order }.push(0).max + 1
|
25
|
+
@report_item.order = @report.mg_report_items.maximum(:order) + 1 # @report.mg_report_items.to_a.map { |ri| ri.order }.push(0).max + 1# -- weird sqlite3 bugs
|
26
26
|
|
27
27
|
if !params[:report_item][:reportable].blank?
|
28
28
|
id, model = params[:report_item][:reportable].split('-')
|
@@ -78,5 +78,38 @@ class Mg::ReportItemsController < Mg
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
|
-
|
81
|
+
def up
|
82
|
+
@report_item = Mg::ReportItem.find(params[:id])
|
83
|
+
|
84
|
+
old_order = @report_item.order
|
85
|
+
@report_item2 = Mg::ReportItem.last( :conditions => ["mg_report_items.order < ?", old_order], :order => "mg_report_items.order")
|
86
|
+
|
87
|
+
( render :json => { :success => true } and return ) if @report_item2.nil?
|
88
|
+
|
89
|
+
@report_item.update_attribute(:order, @report_item2.order)
|
90
|
+
@report_item2.update_attribute(:order, old_order)
|
91
|
+
|
92
|
+
render :json => { :success => true, :result => render_to_string( :partial => "mg/reports/report_report_items", :locals => { :report => @report_item.mg_report } ) }
|
93
|
+
end
|
94
|
+
|
95
|
+
def down
|
96
|
+
@report_item = Mg::ReportItem.find(params[:id])
|
97
|
+
|
98
|
+
old_order = @report_item.order
|
99
|
+
@report_item2 = Mg::ReportItem.first( :conditions => ["mg_report_items.order > ?", old_order], :order => "mg_report_items.order")
|
100
|
+
|
101
|
+
( render :json => { :success => true } and return ) if @report_item2.nil?
|
102
|
+
|
103
|
+
@report_item.update_attribute(:order, @report_item2.order)
|
104
|
+
@report_item2.update_attribute(:order, old_order)
|
105
|
+
|
106
|
+
render :json => { :success => true, :result => render_to_string( :partial => "mg/reports/report_report_items", :locals => { :report => @report_item.mg_report } ) }
|
107
|
+
end
|
108
|
+
|
109
|
+
def destroy
|
110
|
+
@report_item = Mg::ReportItem.find(params[:id])
|
111
|
+
@report_item.destroy
|
112
|
+
|
113
|
+
render :json => { :success => true, :result => render_to_string( :partial => "mg/reports/report_report_items", :locals => { :report => @report_item.mg_report } ) }
|
114
|
+
end
|
82
115
|
end
|
@@ -19,7 +19,7 @@ module MgCore
|
|
19
19
|
mg.resources :tests, :has_many => :choices, :member => { :hide => :get, :unhide => :get }
|
20
20
|
mg.resources :records, :collection => { :new_records => :get }
|
21
21
|
mg.resources :reports, :has_many => :report_items, :member => { :show_svg => :get, :hide => :get, :unhide => :get }
|
22
|
-
mg.resources :report_items, :member => { :destroy => :get, :update => :post }, :collection => { :get_extra => :get }
|
22
|
+
mg.resources :report_items, :member => { :destroy => :get, :update => :post, :up => :get, :down => :get }, :collection => { :get_extra => :get }
|
23
23
|
mg.resources :playground, :collection => { :test => :get }
|
24
24
|
mg.new_records '/records/new', :controller => :records, :action => :new_records
|
25
25
|
mg.fresh_choices '/fresh-choices', :controller => :tests, :action => :fresh_choices
|
@@ -27,7 +27,7 @@ class Mg::Goal < ActiveRecord::Base
|
|
27
27
|
|
28
28
|
# Helper function to retrieve a goal by symbol
|
29
29
|
def self.by_type(s)
|
30
|
-
Mg::Goal.find( :first, :conditions => { :
|
30
|
+
Mg::Goal.find( :first, :conditions => { :goal_type => s.to_s } )
|
31
31
|
end
|
32
32
|
|
33
33
|
# Get all records for given meta (e.g. for "Referer": { "Youtube" => Record1, } ...)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class Mg::Report < ActiveRecord::Base
|
2
2
|
set_table_name :mg_reports
|
3
3
|
|
4
|
-
has_many :mg_report_items, :class_name => "Mg::ReportItem", :foreign_key => "mg_report_id"
|
4
|
+
has_many :mg_report_items, :class_name => "Mg::ReportItem", :foreign_key => "mg_report_id", :order => "mg_report_items.order"
|
5
5
|
has_many :reportables, :through => :mg_report_items
|
6
6
|
|
7
7
|
validates_presence_of :title
|
@@ -58,7 +58,7 @@ Raphael.fn.g.funnelchart = function (cx, cy, cw, ch, values, opts) {
|
|
58
58
|
var path = trap(sx0, sy0, w0, w1, sh);
|
59
59
|
var p = this.path(path).attr({fill: opts.colors && opts.colors[i] || this.g.colors[i] || "#666", stroke: opts.stroke || "#fff", "stroke-width": (opts.strokewidth == null ? 1 : opts.strokewidth), "stroke-linejoin": "round"});
|
60
60
|
if (values[i].labeltext)
|
61
|
-
p.insetLabel = this.text(sx0 + w0 / 2.0, sy0 + sh / 3.0, values[i].labeltext + ( i > 0 ? ( " " + ( values[i] - values[i - 1] / values[i - 1] ) + "%" ) : "")).attr({font: "20px Helvetica", stroke: "#fff", fill: "#eee", "fill-opacity": 0.95, "stroke-opacity": 0 });
|
61
|
+
p.insetLabel = this.text(sx0 + w0 / 2.0, sy0 + sh / 3.0, values[i].labeltext + ( i > 0 ? ( " " + ( ( values[i] - values[i - 1] ) / values[i - 1] ) + "%" ) : "")).attr({font: "20px Helvetica", stroke: "#fff", fill: "#eee", "fill-opacity": 0.95, "stroke-opacity": 0 });
|
62
62
|
|
63
63
|
p.value = values[i];
|
64
64
|
sectors.push(p);
|
@@ -15,9 +15,9 @@ class SwitchChoice
|
|
15
15
|
# each option and make sure we have a back-end entry in choices
|
16
16
|
# for the type
|
17
17
|
@logger.warn "Looking at option #{sym.to_s}"
|
18
|
-
if @test.
|
18
|
+
if @test.mg_choices.find( :first, :conditions => { :switch_type => sym.to_s } ).nil?
|
19
19
|
@logger.warn "Creating switch-type choice #{sym.to_s}"
|
20
|
-
@test.
|
20
|
+
@test.mg_choices.create!( :name => sym.to_s, :switch_type => sym.to_s, :value => nil )
|
21
21
|
end
|
22
22
|
else
|
23
23
|
if @chosen_choice.switch_type.to_s == sym.to_s
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div id="container-main" class="mg-goals show">
|
2
|
+
<h1><%=h @goal.name.capitalize %></h1>
|
3
|
+
<div class="container-content">
|
4
|
+
<div class="statboard">
|
5
|
+
<div class="flyer-analysis statpad">
|
6
|
+
<div class="title">Records by Day</div>
|
7
|
+
<div class="statbody">
|
8
|
+
<%= mg_chart("analysis_graph#{@goal.id}",
|
9
|
+
{ "Conversions" => { :collection => @results_per_day, :x => :date, :y => :val } },
|
10
|
+
{ :xaxis => {:mode => 'time', :timeformat => "%b %d" }, :yaxis => { :min => 0, :minTickSize => 1 }, :lines => { :show => true }, :legend => { :position => "ne" }, :grid => { :hoverable => true, :clickable => true }, :inline => false }, :placeholder_size => "420x260", :pie_hover => true, :line_hover_absolute => true, :item_title => "records(s)") %>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<% @goal.mg_goal_meta_types.each do |gmt| %>
|
15
|
+
<div class="flyer-analysis statpad">
|
16
|
+
<div class="title">Records by <%=h gmt.name %></div>
|
17
|
+
<div class="statbody">
|
18
|
+
<% if gmt.meta_type == 'ci_meta' || gmt.meta_type == 'gi_meta' %>
|
19
|
+
<%= mg_chart("analysis_graph#{gmt.id}",
|
20
|
+
{ "Records" => { :collection => @results_by_gmt[gmt.id], :x => :name, :y => :val } },
|
21
|
+
{ :xaxis => {:autoscaleMargin => 1, :minTickSize => 1 }, :yaxis => { :min => 0, :minTickSize => 1 }, :bars => { :show => true, :align => 'center', :barWidth => 1 }, :legend => { :position => "ne" }, :grid => { :hoverable => true, :clickable => true }, :inline => false }, :placeholder_size => "420x260", :pie_hover => true, :line_hover_absolute => true, :item_title => "records(s)") %>
|
22
|
+
<% elsif gmt.meta_type == 'cs_meta' || gmt.meta_type == 'gs_meta' %>
|
23
|
+
<%= mg_chart("analysis_graph#{gmt.id}",
|
24
|
+
{ "Conversions" => { :collection => @results_by_gmt[gmt.id], :x => :name, :y => :val } },
|
25
|
+
{ :xaxis => {:autoscaleMargin => 0.1, :ticks => @results_by_gmt_titles[gmt.id].map { |i,t| [i + 0.5, t] }.sort }, :yaxis => { :min => 0, :minTickSize => 1 }, :bars => { :show => true }, :legend => { :position => "ne" }, :grid => { :hoverable => true, :clickable => true }, :inline => false }, :placeholder_size => "420x260", :pie_hover => true, :line_hover_absolute => true, :item_title => "records(s)") %>
|
26
|
+
<% end %>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<% end %>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</div>
|
@@ -5,9 +5,16 @@
|
|
5
5
|
<div class="flyer-analysis statpad">
|
6
6
|
<div class="title">Records by Day</div>
|
7
7
|
<div class="statbody">
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
<% if @results_per_day.count > 2 %>
|
9
|
+
<div id="chart_item<%=h @goal.id %>" data-raphael="line" data-x-axis="date"
|
10
|
+
data-title0="Records"
|
11
|
+
data-x0="<%= @results_per_day.map { |i| i[:date] }.join(',') %>"
|
12
|
+
data-y0="<%= @results_per_day.map { |i| i[:val] }.join(',') %>"
|
13
|
+
style="width: 425px; height: 260px;" />
|
14
|
+
</div>
|
15
|
+
<% else %>
|
16
|
+
Results will populate shortly
|
17
|
+
<% end %>
|
11
18
|
</div>
|
12
19
|
</div>
|
13
20
|
|
@@ -15,15 +22,16 @@
|
|
15
22
|
<div class="flyer-analysis statpad">
|
16
23
|
<div class="title">Records by <%=h gmt.name %></div>
|
17
24
|
<div class="statbody">
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
<div id="chart_item_gmt_<%=h gmt.id %>" data-raphael="pie" data-x-axis="date"
|
26
|
+
<% if gmt.meta_type == 'ci_meta' || gmt.meta_type == 'gi_meta' %>
|
27
|
+
data-title="<%= @results_by_gmt[gmt.id].map { |i| "'#{( i[:title] || "(Blank)" )}'" }.join(',') %>"
|
28
|
+
data-x="<%= @results_by_gmt[gmt.id].map { |i| i[:name] }.join(',') %>"
|
29
|
+
<% else %>
|
30
|
+
data-x="<%= @results_by_gmt[gmt.id].map { |i| "'#{i[:name]}'" }.join(',') %>"
|
31
|
+
<% end %>
|
32
|
+
data-y="<%= @results_by_gmt[gmt.id].map { |i| i[:val] }.join(',') %>"
|
33
|
+
style="width: 425px; height: 260px;" />
|
34
|
+
</div>
|
27
35
|
</div>
|
28
36
|
</div>
|
29
37
|
<% end %>
|
File without changes
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<%# locals => report_item %>
|
2
|
+
|
3
|
+
<div class="report-item">
|
4
|
+
<span class="report-info">
|
5
|
+
<span class="report">
|
6
|
+
<% if report_item.reportable.nil? || !report_item.reportable.respond_to?(:name) %>
|
7
|
+
<Undefined>
|
8
|
+
<% else %>
|
9
|
+
<%= report_item.reportable.name %>
|
10
|
+
<% end %>
|
11
|
+
</span>
|
12
|
+
<span class="pivot">
|
13
|
+
<% if report_item.pivot.nil? || !report_item.pivot.respond_to?(:name) %>
|
14
|
+
[None]
|
15
|
+
<% else %>
|
16
|
+
<%= report_item.pivot.name %>
|
17
|
+
<% end %>
|
18
|
+
</span>
|
19
|
+
</span>
|
20
|
+
<span class="report-item-actions">
|
21
|
+
<span class="edit">
|
22
|
+
<a href="javascript:void(0)" class="remote-link smallbutton" data-path="<%= edit_mg_report_item_url(:id => report_item.id) %>" data-res=".report-items-model .model">Edit</a>
|
23
|
+
</span>
|
24
|
+
|
25
|
+
<span class="remove">
|
26
|
+
<a href="javascript:void(0)" class="remote-link smallbutton" data-path="<%= destroy_mg_report_item_url(:id => report_item.id) %>" data-res=".report-items-model .model">Remove</a>
|
27
|
+
</span>
|
28
|
+
</span>
|
29
|
+
</div>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%# locals => report_item %>
|
1
|
+
<%# locals => report_item, show_up, show_down %>
|
2
2
|
|
3
3
|
<div class="report-item">
|
4
4
|
<span class="report-info">
|
@@ -23,7 +23,18 @@
|
|
23
23
|
</span>
|
24
24
|
|
25
25
|
<span class="remove">
|
26
|
-
<a href="javascript:void(0)" class="remote-link smallbutton" data-path="<%= destroy_mg_report_item_url(:id => report_item.id) %>" data-res=".report-items
|
26
|
+
<a href="javascript:void(0)" class="remote-link smallbutton" data-path="<%= destroy_mg_report_item_url(:id => report_item.id) %>" data-res=".report-report-items">Remove</a>
|
27
|
+
</span>
|
28
|
+
|
29
|
+
<span class="up-down">
|
30
|
+
<% if show_up %>
|
31
|
+
<a href="javascript:void(0)" class="remote-link smallbutton" data-path="<%= up_mg_report_item_url(:id => report_item.id) %>" data-res=".report-report-items">Up</a>
|
32
|
+
<% end %>
|
33
|
+
|
34
|
+
<% if show_down %>
|
35
|
+
<% if show_up %>/<% end %>
|
36
|
+
<a href="javascript:void(0)" class="remote-link smallbutton" data-path="<%= down_mg_report_item_url(:id => report_item.id) %>" data-res=".report-report-items">Down</a>
|
37
|
+
<% end %>
|
27
38
|
</span>
|
28
39
|
</span>
|
29
40
|
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%# locals => f %>
|
2
|
+
|
3
|
+
<div class="item title">
|
4
|
+
<%= f.label :title %>
|
5
|
+
<%= f.text_field :title %>
|
6
|
+
</div>
|
7
|
+
|
8
|
+
<div class="item description">
|
9
|
+
<%= f.label :description %>
|
10
|
+
<%= f.text_field :description %>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="item report_type">
|
14
|
+
<%= f.label :report_type, 'Report Type' %>
|
15
|
+
<%= f.select :report_type, options_for_select( [ [ 'Graph', 'graph' ], [ 'Funnel', 'funnel' ] ] ) %>
|
16
|
+
</div>
|
17
|
+
|
18
|
+
<div class="item delivert_set">
|
19
|
+
<%= f.label :delivery_set, 'Frequency' %>
|
20
|
+
<%= f.select :delivery_set, options_for_select( [ [ 'Daily', 'daily' ], [ 'Weekly', 'weekly' ], [ 'Monthly', 'monthly' ], ['Never', 'never'] ] ) %>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<div class="item recipients">
|
24
|
+
<%= f.label :recipients, 'Recipients' %>
|
25
|
+
<%= f.text_area :recipients %>
|
26
|
+
</div>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<div id="container-main" class="mg-report-edit">
|
2
|
+
<h1>Edit <%= @report.title %></h1>
|
3
|
+
<div class="container-content">
|
4
|
+
<div class="edit-form">
|
5
|
+
|
6
|
+
<% form_for :report, @report, :url => mg_report_url(:id => @report.id), :html => { :method => :put } do |f| %>
|
7
|
+
<%= f.error_messages %>
|
8
|
+
|
9
|
+
<%= render :partial => 'mg/reports/report_form', :locals => { :f => f } %>
|
10
|
+
|
11
|
+
<div class="report-report-items">
|
12
|
+
<h4>Report Items</h4>
|
13
|
+
|
14
|
+
<%= render :partial => "mg/reports/report_report_items", :locals => { :report => @report } %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="action-bar">
|
18
|
+
<a href="javascript:void(0)" class="button remote-link" data-path="<%= new_mg_report_report_item_url(:report_id => @report.id) %>" data-res=".report-items-model .model">Add Item</a>
|
19
|
+
|
20
|
+
<%= f.submit 'Submit' %>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
<div class="report-items-model flash-model model">
|
24
|
+
<div class="jqmWindow">
|
25
|
+
<a href="#" class="jqmClose">Close</a>
|
26
|
+
<div class="model" data-model=".jqmWindow"></div>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<% end %>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div id="container-main" class="mg-report-show">
|
2
|
+
<h1><%=h @report.title %></h1>
|
3
|
+
<div class="container-content">
|
4
|
+
<h3><%=h @report.description %></h3>
|
5
|
+
|
6
|
+
<% if @report.report_type == 'graph' %>
|
7
|
+
<% @report.mg_report_items.each do |report_item| %>
|
8
|
+
<%= render 'mg/report_items/chart', :report_item => report_item %>
|
9
|
+
<% end %>
|
10
|
+
<% elsif @report.report_type == 'funnel' %>
|
11
|
+
<%= render 'mg/report_items/funnel', :report => @report %>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="actions">
|
15
|
+
<a class="button" href="<%= edit_mg_report_url @report %>">Edit</a>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
</div>
|
@@ -12,12 +12,12 @@
|
|
12
12
|
|
13
13
|
<div class="item report_type">
|
14
14
|
<%= f.label :report_type, 'Report Type' %>
|
15
|
-
<%= f.select :report_type, options_for_select( [ [ 'Graph', 'graph' ], [ 'Funnel', 'funnel' ] ] ) %>
|
15
|
+
<%= f.select :report_type, options_for_select( [ [ 'Graph', 'graph' ], [ 'Funnel', 'funnel' ] ], f.object.report_type ) %>
|
16
16
|
</div>
|
17
17
|
|
18
18
|
<div class="item delivert_set">
|
19
19
|
<%= f.label :delivery_set, 'Frequency' %>
|
20
|
-
<%= f.select :delivery_set, options_for_select( [ [ 'Daily', 'daily' ], [ 'Weekly', 'weekly' ], [ 'Monthly', 'monthly' ], ['Never', 'never'] ] ) %>
|
20
|
+
<%= f.select :delivery_set, options_for_select( [ [ 'Daily', 'daily' ], [ 'Weekly', 'weekly' ], [ 'Monthly', 'monthly' ], ['Never', 'never'] ], f.object.delivery_set ) %>
|
21
21
|
</div>
|
22
22
|
|
23
23
|
<div class="item recipients">
|
@@ -1,5 +1,7 @@
|
|
1
1
|
<%# locals => report %>
|
2
2
|
|
3
|
+
<% i = 0 %>
|
3
4
|
<% report.mg_report_items.each do |report_item| %>
|
4
|
-
<%= render :partial => 'mg/report_items/show', :locals => { :report_item => report_item } %>
|
5
|
+
<%= render :partial => 'mg/report_items/show', :locals => { :report_item => report_item, :show_up => i > 0, :show_down => i < report.mg_report_items.count - 1 } %>
|
6
|
+
<% i += 1 %>
|
5
7
|
<% end %>
|
@@ -0,0 +1,63 @@
|
|
1
|
+
<div id="container-main" class="mg-tests">
|
2
|
+
<h1><%=h @test.title.capitalize %> Test</h1>
|
3
|
+
<div class="container-content">
|
4
|
+
|
5
|
+
<div class="choices">
|
6
|
+
<% if @test.mg_choices.count == 0 %>
|
7
|
+
<span class="none">No choices</span>
|
8
|
+
<% else %>
|
9
|
+
<div class="statboard">
|
10
|
+
<div class="flyer-analysis statpad">
|
11
|
+
<div class="title">Records</div>
|
12
|
+
<div class="statbody">
|
13
|
+
<%= mg_chart("analysis_graph#{@test.id}",
|
14
|
+
{ "Served" => { :collection => @rates[:served], :x => :choice_type, :y => :value },
|
15
|
+
"Reward Count" => { :collection => @rates[:reward_count], :x => :choice_type, :y => :value } },
|
16
|
+
{ :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 => "record(s)") %>
|
17
|
+
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
<div class="flyer-analysis statpad">
|
21
|
+
<div class="title">Reward Rates</div>
|
22
|
+
<div class="statbody">
|
23
|
+
<%= mg_chart("analysis_conv_graph#{@test.id}",
|
24
|
+
{ "Reward Rate" => { :collection => @rates[:reward_rates], :x => :choice_type, :y => :value } },
|
25
|
+
{ :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 => "") %>
|
26
|
+
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
|
32
|
+
<div class="choices">
|
33
|
+
<% if @test.mg_choices.count == 0 %>
|
34
|
+
<span class="none">No choices [<a href="<%= new_mg_test_choice_url :test_id => @test.id %>">Add one</a>]</span>
|
35
|
+
<% else %>
|
36
|
+
<div class="title-bar">
|
37
|
+
<span class="category choice">Choice</span>
|
38
|
+
<span class="category served">Served</span>
|
39
|
+
<span class="category hit-points">Points</span>
|
40
|
+
<span class="category hit-points-avg">Avg. Points</span>
|
41
|
+
<span class="category actions">Actions</span>
|
42
|
+
</div>
|
43
|
+
<ul class="listed">
|
44
|
+
<% @test.mg_choices.each do |choice| %>
|
45
|
+
<li class="choice">
|
46
|
+
<span class="category choice"><%=h choice.name %></span>
|
47
|
+
<span class="category served"><%= choice.served %></span>
|
48
|
+
<span class="category hit-points"><%= choice.reward || "None" %></span>
|
49
|
+
<span class="category hit-points-avg"><%=h choice.reward_rate || "N/A" %></span>
|
50
|
+
<span class="category actions"><a href="<%= mg_choice_url choice %>">Edit</a></span>
|
51
|
+
</li>
|
52
|
+
<% end %>
|
53
|
+
</ul>
|
54
|
+
<% end %>
|
55
|
+
</div>
|
56
|
+
<% end %>
|
57
|
+
</div>
|
58
|
+
|
59
|
+
<div class="action-bar">
|
60
|
+
<a class="button" href="<%= new_mg_test_choice_url :test_id => @test.id %>">New Choice</a>
|
61
|
+
</div>
|
62
|
+
</div>
|
63
|
+
</div>
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mountain-goat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 3
|
10
|
+
version: 1.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Geoffrey Hayes
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-10-
|
19
|
+
date: 2011-10-11 00:00:00 -07:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -62,6 +62,7 @@ extra_rdoc_files: []
|
|
62
62
|
|
63
63
|
files:
|
64
64
|
- .gitignore
|
65
|
+
- .gitignore~
|
65
66
|
- Gemfile
|
66
67
|
- Gemfile.lock
|
67
68
|
- History.md
|
@@ -128,7 +129,6 @@ files:
|
|
128
129
|
- lib/mountain-goat/public/utils.js
|
129
130
|
- lib/mountain-goat/switch_choice.rb
|
130
131
|
- lib/mountain-goat/version.rb
|
131
|
-
- lib/mountain-goat/views/mountain_goat/layouts/.tmp_mountain_goat.html.erb.50680~
|
132
132
|
- lib/mountain-goat/views/mountain_goat/layouts/_pdf.html.erb
|
133
133
|
- lib/mountain-goat/views/mountain_goat/layouts/mountain_goat.html.erb
|
134
134
|
- lib/mountain-goat/views/mountain_goat/layouts/xhr.html.erb
|
@@ -137,10 +137,7 @@ files:
|
|
137
137
|
- lib/mountain-goat/views/mountain_goat/mg/choices/index.html.erb
|
138
138
|
- lib/mountain-goat/views/mountain_goat/mg/choices/new.html.erb
|
139
139
|
- lib/mountain-goat/views/mountain_goat/mg/choices/show.html.erb
|
140
|
-
- lib/mountain-goat/views/mountain_goat/mg/goals/.
|
141
|
-
- lib/mountain-goat/views/mountain_goat/mg/goals/.tmp__goal_meta_type_form.html.erb.39992~
|
142
|
-
- lib/mountain-goat/views/mountain_goat/mg/goals/.tmp_edit.html.erb.55874~
|
143
|
-
- lib/mountain-goat/views/mountain_goat/mg/goals/.tmp_index.html.erb.97274~
|
140
|
+
- lib/mountain-goat/views/mountain_goat/mg/goals/.tmp_show.html.erb.86489~
|
144
141
|
- lib/mountain-goat/views/mountain_goat/mg/goals/_goal_form.html.erb
|
145
142
|
- lib/mountain-goat/views/mountain_goat/mg/goals/_goal_meta_type_form.html.erb
|
146
143
|
- lib/mountain-goat/views/mountain_goat/mg/goals/edit.html.erb
|
@@ -156,12 +153,8 @@ files:
|
|
156
153
|
- lib/mountain-goat/views/mountain_goat/mg/records/index.html.erb
|
157
154
|
- lib/mountain-goat/views/mountain_goat/mg/records/new.html.erb
|
158
155
|
- lib/mountain-goat/views/mountain_goat/mg/records/show.html.erb
|
159
|
-
- lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__chart.html.erb.
|
160
|
-
- lib/mountain-goat/views/mountain_goat/mg/report_items/.
|
161
|
-
- lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__report_item_form.html.erb.87420~
|
162
|
-
- lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__report_item_pivot_form.html.erb.77056~
|
163
|
-
- lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp_edit.html.erb.31048~
|
164
|
-
- lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp_new.html.erb.36371~
|
156
|
+
- lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__chart.html.erb.73596~
|
157
|
+
- lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__show.html.erb.52502~
|
165
158
|
- lib/mountain-goat/views/mountain_goat/mg/report_items/_chart.html.erb
|
166
159
|
- lib/mountain-goat/views/mountain_goat/mg/report_items/_funnel.html.erb
|
167
160
|
- lib/mountain-goat/views/mountain_goat/mg/report_items/_report_item_form.html.erb
|
@@ -171,11 +164,10 @@ files:
|
|
171
164
|
- lib/mountain-goat/views/mountain_goat/mg/report_items/edit.html.erb
|
172
165
|
- lib/mountain-goat/views/mountain_goat/mg/report_items/new.html.erb
|
173
166
|
- lib/mountain-goat/views/mountain_goat/mg/report_mailer/report.html.erb
|
174
|
-
- lib/mountain-goat/views/mountain_goat/mg/reports/.tmp__report_form.html.erb.
|
175
|
-
- lib/mountain-goat/views/mountain_goat/mg/reports/.tmp__report_report_items.html.erb.
|
176
|
-
- lib/mountain-goat/views/mountain_goat/mg/reports/.tmp_edit.html.erb.
|
177
|
-
- lib/mountain-goat/views/mountain_goat/mg/reports/.
|
178
|
-
- lib/mountain-goat/views/mountain_goat/mg/reports/.tmp_show.html.erb.58427~
|
167
|
+
- lib/mountain-goat/views/mountain_goat/mg/reports/.tmp__report_form.html.erb.42949~
|
168
|
+
- lib/mountain-goat/views/mountain_goat/mg/reports/.tmp__report_report_items.html.erb.96264~
|
169
|
+
- lib/mountain-goat/views/mountain_goat/mg/reports/.tmp_edit.html.erb.39909~
|
170
|
+
- lib/mountain-goat/views/mountain_goat/mg/reports/.tmp_show.html.erb.37905~
|
179
171
|
- lib/mountain-goat/views/mountain_goat/mg/reports/_report.html.erb
|
180
172
|
- lib/mountain-goat/views/mountain_goat/mg/reports/_report_form.html.erb
|
181
173
|
- lib/mountain-goat/views/mountain_goat/mg/reports/_report_report_items.html.erb
|
@@ -183,6 +175,7 @@ files:
|
|
183
175
|
- lib/mountain-goat/views/mountain_goat/mg/reports/index.html.erb
|
184
176
|
- lib/mountain-goat/views/mountain_goat/mg/reports/new.html.erb
|
185
177
|
- lib/mountain-goat/views/mountain_goat/mg/reports/show.html.erb
|
178
|
+
- lib/mountain-goat/views/mountain_goat/mg/tests/.tmp_show.html.erb.19989~
|
186
179
|
- lib/mountain-goat/views/mountain_goat/mg/tests/_test_form.html.erb
|
187
180
|
- lib/mountain-goat/views/mountain_goat/mg/tests/edit.html.erb
|
188
181
|
- lib/mountain-goat/views/mountain_goat/mg/tests/index.html.erb
|
@@ -1,76 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
-
|
3
|
-
<% is_mobile = false if local_assigns[:is_mobile].nil? %>
|
4
|
-
|
5
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
6
|
-
|
7
|
-
<head>
|
8
|
-
<title>Mountain Goat <% if @title %> - <%=h @title %><% end %></title>
|
9
|
-
|
10
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
11
|
-
|
12
|
-
<%# These are mobile specific settings. We are disabling zooming and fixing the width. %>
|
13
|
-
<meta content='True' name='HandheldFriendly' />
|
14
|
-
<!--<meta content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;' name='viewport' />-->
|
15
|
-
<meta name="viewport" content="width=device-width" />
|
16
|
-
|
17
|
-
<link rel="stylesheet" href="/mg/public/mg_css" type="text/css" />
|
18
|
-
<link rel="stylesheet" href="/mg/public/jqModel_css" type="text/css" />
|
19
|
-
|
20
|
-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
|
21
|
-
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js" type="text/javascript"></script>
|
22
|
-
<script src="/mg/public/jqModel_js" type="text/javascript"></script>
|
23
|
-
<script src="/mg/public/raphael-min_js" type="text/javascript"></script>
|
24
|
-
<script src="/mg/public/g-raphael-min_js" type="text/javascript"></script>
|
25
|
-
<script src="/mg/public/g-bar-min_js" type="text/javascript"></script>
|
26
|
-
<script src="/mg/public/g-dot-min_js" type="text/javascript"></script>
|
27
|
-
<script src="/mg/public/g-line-min_js" type="text/javascript"></script>
|
28
|
-
<script src="/mg/public/g-pie-min_js" type="text/javascript"></script>
|
29
|
-
<script src="/mg/public/jquery_flot_js" type="text/javascript"></script>
|
30
|
-
<script src="/mg/public/jquery_timeago_js" type="text/javascript"></script>
|
31
|
-
<script src="/mg/public/jquery_raphael_js" type="text/javascript"></script>
|
32
|
-
<script src="/mg/public/mg_js" type="text/javascript"></script>
|
33
|
-
<script src="/mg/public/utils_js" type="text/javascript"></script>
|
34
|
-
|
35
|
-
</head>
|
36
|
-
|
37
|
-
<body>
|
38
|
-
<div class="mg-header structure">
|
39
|
-
<div class="container-center">
|
40
|
-
<div class="header">
|
41
|
-
<a href="/mg" class="logo">
|
42
|
-
<img src="/mg/public/mg_png" />
|
43
|
-
</a>
|
44
|
-
<ul class="nav">
|
45
|
-
<li><a href="<%= mg_goals_url %>">Goals</a></li>
|
46
|
-
<li><a href="<%= mg_tests_url %>">Tests</a></li>
|
47
|
-
<li><a href="<%= mg_records_url %>">Records</a></li>
|
48
|
-
<li><a href="<%= mg_reports_url %>">Reports</a></li>
|
49
|
-
<li><a href="/">Exit</a></li>
|
50
|
-
</ul>
|
51
|
-
</div>
|
52
|
-
</div>
|
53
|
-
</div>
|
54
|
-
|
55
|
-
<div class="mg-content structure">
|
56
|
-
<div class="container-center">
|
57
|
-
<% if !flash[:notice].blank? || !flash[:error].blank? %>
|
58
|
-
<div class="flash">
|
59
|
-
<% if !flash[:error].blank? %>
|
60
|
-
<div class="error"><%= flash[:error] %></div>
|
61
|
-
<% end %>
|
62
|
-
<% if !flash[:notice].blank? %>
|
63
|
-
<div class="notice"><%= flash[:notice] %></div>
|
64
|
-
<% end %>
|
65
|
-
</div>
|
66
|
-
<% end %>
|
67
|
-
<%= yield %>
|
68
|
-
</div>
|
69
|
-
</div>
|
70
|
-
|
71
|
-
<div class="mg-footer structure">
|
72
|
-
|
73
|
-
</div>
|
74
|
-
</body>
|
75
|
-
|
76
|
-
</html>
|
File without changes
|
data/lib/mountain-goat/views/mountain_goat/mg/goals/.tmp__goal_meta_type_form.html.erb.39992~
DELETED
File without changes
|
File without changes
|
@@ -1,36 +0,0 @@
|
|
1
|
-
<div id="container-main" class="mg-goals">
|
2
|
-
<h1>Your Goals</h1>
|
3
|
-
<div class="container-content">
|
4
|
-
<div class="title-bar">
|
5
|
-
<span class="category name">Goal</span>
|
6
|
-
<span class="category hit-total">Total</span>
|
7
|
-
<span class="category hit-recent">Recent</span>
|
8
|
-
<span class="category hit-points">Points</span>
|
9
|
-
<span class="category actions">Actions</span>
|
10
|
-
</div>
|
11
|
-
<ul class="listed">
|
12
|
-
<% @goals.each do |goal| %>
|
13
|
-
<li class="conversion-goal">
|
14
|
-
<span class="category name"><%=h goal.name %></span>
|
15
|
-
<span class="category hit-total"><%=h goal.mg_records.count %></span>
|
16
|
-
<span class="category hit-recent"><%=h goal.recent_records(1.week).count %></span>
|
17
|
-
<span class="category hit-points"><%=h goal.rewards_total || "None" %></span>
|
18
|
-
<span class="category actions">
|
19
|
-
<a href="<%= mg_goal_url :id => goal.id %>">View</a>
|
20
|
-
<a href="<%= hide_mg_goal_url :id => goal.id %>">Hide</a>
|
21
|
-
</span>
|
22
|
-
</li>
|
23
|
-
<% end %>
|
24
|
-
</ul>
|
25
|
-
<div class="action-bar">
|
26
|
-
<a class="button" href="<%= new_mg_goal_url %>">New Goal</a>
|
27
|
-
</div>
|
28
|
-
</div>
|
29
|
-
|
30
|
-
<div class="hidden-goals">
|
31
|
-
<% @hidden_goals.each do |goal| %>
|
32
|
-
<span class="name"><%=h goal.name %></span>
|
33
|
-
<span class="unhide"><a href="<%= unhide_mg_goal_url :id => goal.id %>">Restore</a></span>
|
34
|
-
<% end %>
|
35
|
-
</div>
|
36
|
-
</div>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<%# locals => report_item %>
|
2
|
-
|
3
|
-
<div class="statpad">
|
4
|
-
<div class="title"><%= report_item.chart_title %></div>
|
5
|
-
<div class="statbody">
|
6
|
-
<div id="chart_item<%=h report_item.id %>" data-raphael="line" data-x-axis="date"
|
7
|
-
<% it = 0 %>
|
8
|
-
<%# TODO: There's a ton of assumptions here %>
|
9
|
-
<% report_item.chart_items.each do |name, channel| %>
|
10
|
-
data-title<%= it %>="<%= name || "Direct" %>"
|
11
|
-
data-x<%= it %>="<%= channel.map { |i| i[:x].to_time.to_i * 1000 }.join(',') %>"
|
12
|
-
data-y<%= it %>="<%= channel.map { |i| i[:y] }.join(',') %>"
|
13
|
-
<% it = it + 1 %>
|
14
|
-
<% end %>
|
15
|
-
style="width: 425px; height: 260px;" />
|
16
|
-
</div>
|
17
|
-
</div>
|
18
|
-
</div>
|
data/lib/mountain-goat/views/mountain_goat/mg/report_items/.tmp__report_item_form.html.erb.87420~
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
<%# locals => f %>
|
2
|
-
<div class="item reportable">
|
3
|
-
<%= f.label :reportable, "Report Item" %>
|
4
|
-
<%= f.select :reportable, options_for_select( [[ "Select a Goal", "" ]] + Mg::Convert.all.map { |conv| [ conv.name, "#{conv.id}-#{conv.class}" ] }, f.object.reportable.nil? ? "" : "#{f.object.reportable_id}-#{f.object.reportable_type}" ), {}, :'data-varies' => 'change', :'data-varies-path' => get_extra_mg_report_items_url, :'data-varies-res' => '#extra' %>
|
5
|
-
</div>
|
6
|
-
<div id="extra">
|
7
|
-
<% if !f.object.nil? && !f.object.reportable.nil? %>
|
8
|
-
<%= render :partial => 'mg/report_items/report_item_pivot_form', :locals => { :reportable => f.object.reportable }.merge( f.object.pivot.nil? ? {} : { :pivot => f.object.pivot } ) %>
|
9
|
-
<% end %>
|
10
|
-
</div>
|
@@ -1,14 +0,0 @@
|
|
1
|
-
<%# locals => reportable, optional => pivot %>
|
2
|
-
|
3
|
-
<% pivot = nil if !local_assigns.has_key?(:pivot) %>
|
4
|
-
|
5
|
-
<% if reportable.instance_of?(Mg::Convert) %>
|
6
|
-
<% cmts = reportable.convert_meta_types %>
|
7
|
-
<% end %>
|
8
|
-
|
9
|
-
<% if !cmts.nil? %>
|
10
|
-
<div class="item pivot">
|
11
|
-
<%= label_tag :'report_item[pivot]', "Pivot" %>
|
12
|
-
<%= select_tag :'report_item[pivot]', options_for_select( [[ "None", "" ]] + cmts.map { |cmt| [ cmt.name, "#{cmt.id}-#{cmt.class}" ] }, pivot.nil? ? "" : "#{pivot.id}-#{pivot.type}" ) %>
|
13
|
-
</div>
|
14
|
-
<% end %>
|
@@ -1,19 +0,0 @@
|
|
1
|
-
|
2
|
-
<div class="header">
|
3
|
-
<span class="title">Edit Report Item</span>
|
4
|
-
</div>
|
5
|
-
<div class="body">
|
6
|
-
<div class="report-items">
|
7
|
-
<% form_for :report_item, @report_item, :url => update_mg_report_item_url(:id => @report_item.id), :html => { :method => :post, :class => "remote-form report-item", :'data-res' => ".report-items-model .model" } do |f| %>
|
8
|
-
|
9
|
-
<div>
|
10
|
-
<%= f.error_messages %>
|
11
|
-
<%= render :partial => 'mg/report_items/report_item_form', :locals => { :f => f } %>
|
12
|
-
</div>
|
13
|
-
|
14
|
-
<div class="submit">
|
15
|
-
<%= f.submit 'Update', :class => 'bluebutton' %>
|
16
|
-
</div>
|
17
|
-
<% end %>
|
18
|
-
</div>
|
19
|
-
</div>
|
@@ -1,17 +0,0 @@
|
|
1
|
-
|
2
|
-
<div class="header">
|
3
|
-
<span class="title">Add a new Report Item</span>
|
4
|
-
</div>
|
5
|
-
<div class="body">
|
6
|
-
<% form_for :report_item, @report_item, :url => mg_report_report_items_url(:report_id => @report.id), :html => { :method => :post, :class => "remote-form report-item", :'data-res' => ".report-items-model .model" } do |f| %>
|
7
|
-
|
8
|
-
<div>
|
9
|
-
<%= f.error_messages %>
|
10
|
-
<%= render :partial => 'mg/report_items/report_item_form', :locals => { :f => f } %>
|
11
|
-
</div>
|
12
|
-
|
13
|
-
<div class="submit">
|
14
|
-
<%= f.submit 'Save', :class => 'bluebutton' %>
|
15
|
-
</div>
|
16
|
-
<% end %>
|
17
|
-
</div>
|
@@ -1,21 +0,0 @@
|
|
1
|
-
<%# locals => f %>
|
2
|
-
|
3
|
-
<div class="item title">
|
4
|
-
<%= f.label :title %>
|
5
|
-
<%= f.text_field :title %>
|
6
|
-
</div>
|
7
|
-
|
8
|
-
<div class="item description">
|
9
|
-
<%= f.label :description %>
|
10
|
-
<%= f.text_area :description %>
|
11
|
-
</div>
|
12
|
-
|
13
|
-
<div class="item delivert_set">
|
14
|
-
<%= f.label :delivery_set, 'Frequency' %>
|
15
|
-
<%= f.select :delivery_set, options_for_select( [ [ 'daily', 'daily' ], [ 'weekly', 'weekly' ], [ 'monthly', 'monthly' ] ] ) %>
|
16
|
-
</div>
|
17
|
-
|
18
|
-
<div class="item recipients">
|
19
|
-
<%= f.label :recipients, 'Recipients' %>
|
20
|
-
<%= f.text_area :recipients %>
|
21
|
-
</div>
|
@@ -1,36 +0,0 @@
|
|
1
|
-
|
2
|
-
<div id="container-main" class="mt-reports">
|
3
|
-
<div class="mountain-goat-panel centered">
|
4
|
-
<ul class="nav">
|
5
|
-
<li><a href="<%= mg_reports_url %>">Reports</a></li>
|
6
|
-
<li><a href="<%= mg_report_url @report.id %>"><%=h @report.title %></a></li>
|
7
|
-
</ul>
|
8
|
-
|
9
|
-
<h1>Edit <%= @report.title %></h1>
|
10
|
-
|
11
|
-
<% form_for :report, @report, :url => mg_report_url(:id => @report.id), :html => { :method => :put } do |f| %>
|
12
|
-
<%= f.error_messages %>
|
13
|
-
|
14
|
-
<div class="report-report-items">
|
15
|
-
<h4>Report Items</h4>
|
16
|
-
<%= render :partial => "mg/reports/report_report_items", :locals => { :report => @report } %>
|
17
|
-
</div>
|
18
|
-
|
19
|
-
<a href="javascript:void(0)" class="smallbutton redbutton remote-link" data-path="<%= new_mg_report_report_item_url(:report_id => @report.id) %>" data-res=".report-items-model .model">+ Add Item</a>
|
20
|
-
|
21
|
-
<%= render :partial => 'mg/reports/report_form', :locals => { :f => f } %>
|
22
|
-
|
23
|
-
<div class="item submit">
|
24
|
-
<%= f.submit 'Submit' %>
|
25
|
-
</div>
|
26
|
-
|
27
|
-
<div class="report-items-model flash-model model">
|
28
|
-
<div class="jqmWindow">
|
29
|
-
<a href="#" class="jqmClose">Close</a>
|
30
|
-
<div class="model" data-model=".jqmWindow"></div>
|
31
|
-
</div>
|
32
|
-
</div>
|
33
|
-
<% end %>
|
34
|
-
</div>
|
35
|
-
</div>
|
36
|
-
|
@@ -1,23 +0,0 @@
|
|
1
|
-
<div id="container-main" class="mg-reports">
|
2
|
-
<h1>Your Reports</h1>
|
3
|
-
<div class="container-content">
|
4
|
-
<div class="title-bar">
|
5
|
-
<span class="category name">Report</span>
|
6
|
-
<span class="category frequency">Frequency</span>
|
7
|
-
<span class="category actions">Actions</span>
|
8
|
-
</div>
|
9
|
-
<ul class="listed">
|
10
|
-
<% @reports.each do |report| %>
|
11
|
-
<li class="report">
|
12
|
-
<span class="category name"><%=h report.title %></span>
|
13
|
-
<span class="category frequency">Frequency</span>
|
14
|
-
<span class="category actions"><a href="<%= edit_mg_report_url :id => report.id %>">Edit</a> Hide</span>
|
15
|
-
</li>
|
16
|
-
<% end %>
|
17
|
-
</ul>
|
18
|
-
|
19
|
-
<div class="action-bar">
|
20
|
-
<a class="button" href="<%= new_mg_report_url %>">New Report</a>
|
21
|
-
</div>
|
22
|
-
</div>
|
23
|
-
</div>
|
@@ -1,21 +0,0 @@
|
|
1
|
-
|
2
|
-
<div id="container-main" class="mt-reports show">
|
3
|
-
<div class="mountain-goat-panel centered">
|
4
|
-
<ul class="nav">
|
5
|
-
<li><a href="<%= mg_reports_url %>">Reports</a></li>
|
6
|
-
<li><a href="<%= mg_report_url @report.id %>"><%=h @report.title %></a></li>
|
7
|
-
</ul>
|
8
|
-
|
9
|
-
<h2><%=h @report.title %></h2>
|
10
|
-
|
11
|
-
<h4><%=h @report.description %></h4>
|
12
|
-
|
13
|
-
<% @report.report_items.each do |report_item| %>
|
14
|
-
<%= render 'mg/report_items/chart', :report_item => report_item %>
|
15
|
-
<% end %>
|
16
|
-
|
17
|
-
<div class="actions">
|
18
|
-
<a class="button" href="<%= edit_mg_report_url @report %>">Edit</a>
|
19
|
-
</div>
|
20
|
-
</div>
|
21
|
-
</div>
|