mountain-goat 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|