mountain-goat 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. data/lib/flotilla.rb +169 -0
  2. data/lib/mountain_goat/controllers/mountain_goat/mountain_goat_controller.rb +11 -1
  3. data/lib/mountain_goat/metric_tracking.rb +2 -1
  4. data/lib/mountain_goat/public/containerbg.png +0 -0
  5. data/lib/mountain_goat/public/dirtyred.png +0 -0
  6. data/lib/mountain_goat/public/dottedblack.png +0 -0
  7. data/lib/mountain_goat/public/dottedblue.png +0 -0
  8. data/lib/mountain_goat/public/jquery.flot.js +2615 -0
  9. data/lib/mountain_goat/public/mg.css +334 -0
  10. data/lib/mountain_goat/public/mg.png +0 -0
  11. data/lib/mountain_goat/public/raster.png +0 -0
  12. data/lib/mountain_goat/version.rb +1 -1
  13. data/lib/mountain_goat/views/mountain_goat/layouts/.tmp_mountain_goat.html.erb.2801~ +53 -0
  14. data/lib/mountain_goat/views/mountain_goat/layouts/mountain_goat.html.erb +16 -21
  15. data/lib/mountain_goat/views/mountain_goat/mountain_goat_converts/.tmp_index.html.erb.67861~ +33 -0
  16. data/lib/mountain_goat/views/mountain_goat/mountain_goat_converts/.tmp_index.html.erb.97796~ +49 -0
  17. data/lib/mountain_goat/views/mountain_goat/mountain_goat_converts/index.html.erb +37 -21
  18. data/lib/mountain_goat/views/mountain_goat/mountain_goat_metric_variants/.tmp_show.html.erb.24381~ +14 -0
  19. data/lib/mountain_goat/views/mountain_goat/mountain_goat_metrics/.tmp_show.html.erb.21427~ +59 -0
  20. data/lib/mountain_goat/views/mountain_goat/mountain_goat_metrics/.tmp_show.html.erb.65988~ +59 -0
  21. data/lib/mountain_goat/views/mountain_goat/mountain_goat_metrics/show.html.erb +49 -36
  22. data/mountain-goat-0.0.3.gem +0 -0
  23. data/mountain-goat-0.0.4.gem +0 -0
  24. metadata +21 -4
@@ -0,0 +1,334 @@
1
+
2
+ body {
3
+ color: #666666;
4
+ margin: 0px;
5
+ padding: 0px;
6
+ text-decoration: none;
7
+ background: rgb(167,207,223); /* Old browsers */
8
+ background: -moz-linear-gradient(top, rgba(167,207,223,1) 0%, rgba(35,83,138,1) 100%); /* FF3.6+ */
9
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(167,207,223,1)), color-stop(100%,rgba(35,83,138,1))); /* Chrome,Safari4+ */
10
+ background: -webkit-linear-gradient(top, rgba(167,207,223,1) 0%,rgba(35,83,138,1) 100%); /* Chrome10+,Safari5.1+ */
11
+ background: -o-linear-gradient(top, rgba(167,207,223,1) 0%,rgba(35,83,138,1) 100%); /* Opera11.10+ */
12
+ background: -ms-linear-gradient(top, rgba(167,207,223,1) 0%,rgba(35,83,138,1) 100%); /* IE10+ */
13
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a7cfdf', endColorstr='#23538a',GradientType=0 ); /* IE6-9 */
14
+ background: linear-gradient(top, rgba(167,207,223,1) 0%,rgba(35,83,138,1) 100%); /* W3C */
15
+ }
16
+
17
+ body, select, pre {
18
+ font: 14px/20px Calibri,Helvetica,Arial;
19
+ }
20
+
21
+ a {
22
+ color: #fff;
23
+ text-decoration: none;
24
+ }
25
+
26
+ a:hover {
27
+ color: #000;
28
+ text-decoration: underline;
29
+ }
30
+
31
+ .header {
32
+ top: 0;
33
+ width: 100%;
34
+ position: fixed;
35
+ height: 107px;
36
+ background-color: rgba(2,2,2,0.7);
37
+ }
38
+
39
+ .header .head {
40
+ width: 900px;
41
+ margin: 0 auto;
42
+ height: 107px;
43
+ }
44
+
45
+ .header ul.nav {
46
+ margin: 0;
47
+ float: right;
48
+ height: 100%;
49
+ }
50
+
51
+ .header ul.nav li {
52
+ float: left;
53
+ list-style: none outside none;
54
+ width: 140px;
55
+ box-shadow: 0px 0px 3px rgba(222,222,222,0.2) inset;
56
+ height: 107px;
57
+ margin-right: -1px;
58
+ }
59
+
60
+ .header ul.nav li:hover {
61
+ background-color: #FF2800;
62
+ }
63
+
64
+ .header ul.nav li > a{
65
+ display: block;
66
+ font-size: 24px;
67
+ padding: 42px 0px;
68
+ width: 100%;
69
+ vertical-align: baseline;
70
+ text-align: center;
71
+ }
72
+
73
+ .content {
74
+ margin: 0 auto 0 auto;
75
+ width: 1010px;
76
+ padding: 117px 0 0 0;
77
+ background-color: rgba(50,50,50,0.2);
78
+ }
79
+
80
+ .content .content-inner {
81
+ margin: 15px 25px 0px 25px;
82
+ background: url(/mg/public/containerbg_png);
83
+ min-height: 520px;
84
+ padding: 30px;
85
+ }
86
+
87
+ h1 {
88
+ padding: 6px 18px;
89
+ width: 500px;
90
+ margin: 10px auto 10px auto;
91
+ background: url(/mg/public/dottedblack_png) repeat;
92
+ font-size: 30px;
93
+ color: white;
94
+ }
95
+
96
+ /* The Converts Page */
97
+
98
+ .conversions .explanation {
99
+ display: block;
100
+ width: 33%;
101
+ margin: 40px;
102
+ padding-right: 40px;
103
+ border-right: 1px solid black;
104
+ float: left;
105
+
106
+ }
107
+
108
+ .conversions .explanation .inner {
109
+ color: #fff;
110
+ font-size: 18px;
111
+ display: block;
112
+ background: url(/mg/public/dirtyred_png) repeat;
113
+ padding: 30px;
114
+ width: 80%;
115
+ }
116
+
117
+ .conversions .converts {
118
+ width: 40%;
119
+ float: left;
120
+ margin-top: 50px;
121
+ }
122
+
123
+ .conversions .converts h2 {
124
+ padding: 6px 18px;
125
+ width: 40%;
126
+ margin: 10px auto 10px auto;
127
+ background: url(/mg/public/dirtyred_png) repeat;
128
+ font-size: 30px;
129
+ }
130
+
131
+ .metric-category {
132
+ width: 100%;
133
+ }
134
+
135
+ .mt-metrics .metric-category {
136
+ padding: 50px 0;
137
+ }
138
+
139
+ .metric-category .metric a{
140
+ display: block;
141
+ width: 70%;
142
+ color: #000;
143
+ font-size: 18px;
144
+ font-weight: bold;
145
+ margin-bottom: 5px;
146
+ }
147
+
148
+ .metric-category .item.rate {
149
+ width: 400px;
150
+ height: 40px;
151
+ }
152
+
153
+ .metric-category .item.rate .rate-holder{
154
+ display: block;
155
+ width: 70%;
156
+ background: rgba(20, 20, 20, 0.2);
157
+ height: 30px;
158
+ float: left;
159
+ overflow: hidden;
160
+ }
161
+
162
+ .metric-category .item.rate .title{
163
+ position: relative;
164
+ left: 0px;
165
+ float: left;
166
+ z-index: 5;
167
+ padding: 3px;
168
+ }
169
+
170
+ .metric-category .item.rate .rates{
171
+ height: 100%;
172
+ display: block;
173
+ background: url(/mg/public/dottedblue_png) repeat;
174
+ z-index: 1;
175
+ }
176
+
177
+ .metric-category .item.rate .percent-holder {
178
+ float: left;
179
+ margin-left: 30px;
180
+ }
181
+
182
+ .content ul.nav {
183
+ margin: 0;
184
+ width: 100%;
185
+ height: 50px;
186
+ }
187
+
188
+ .content ul.nav li {
189
+ color: white;
190
+ float: left;
191
+ list-style: none outside none;
192
+ width: 170px;
193
+ height: 30px;
194
+ font-size: 20px;
195
+ box-shadow: 0px 0px 3px rgba(222,222,222,0.2) inset;
196
+ margin-right: 6px;
197
+ background-color: red;
198
+ padding-left: 10px;
199
+ padding-top: 10px;
200
+ border-radius: 5px;
201
+ box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.2);
202
+ text-shadow: 0 0 4px #333333;
203
+ background: -moz-linear-gradient(center top , #6699CC, #3366AA) repeat scroll 0 0 transparent;
204
+ }
205
+
206
+ .button {
207
+ display: block;
208
+ color: white;
209
+ width: 170px;
210
+ height: 30px;
211
+ font-size: 20px;
212
+ box-shadow: 0px 0px 3px rgba(222,222,222,0.2) inset;
213
+ margin-right: 6px;
214
+ background-color: red;
215
+ padding-left: 10px;
216
+ padding-top: 10px;
217
+ border-radius: 5px;
218
+ box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.2);
219
+ text-shadow: 0 0 4px #333333;
220
+ background: -moz-linear-gradient(center top , #6699CC, #3366AA) repeat scroll 0 0 transparent;
221
+ }
222
+
223
+ .actions {
224
+ height: 50px;
225
+ width: 400px;
226
+ margin: 50px auto;
227
+ }
228
+
229
+ .actions .button {
230
+ float: left;
231
+ }
232
+
233
+ /* ANALYTICS */
234
+ .statboard{
235
+ float: left;
236
+ background: rgb(30,30,30);
237
+ background: rgba(0,0,0,.9);
238
+
239
+ width: 900px;
240
+ margin: 0px 0px 0px 40px;
241
+ padding: 0px 10px 10px 10px;
242
+ color: #D6D6D6;
243
+ }
244
+ .stat-header, .statpad .title, .statpad .statbody{
245
+ background: #222222;
246
+ border-top: 1px solid #333333;
247
+ border-bottom: 1px solid #151617;
248
+ }
249
+ .stat-header, .statpad, .statnote{
250
+ box-shadow: 2px 0 3px #0D0D0D, -2px 0 3px #0D0D0D, 0 3px 3px #0D0D0D, 0 -2px 3px #0D0D0D;
251
+ }
252
+ .stat-header{
253
+ float: left;
254
+ width: 100%;
255
+ height: 50px;
256
+ line-height: 50px;
257
+ margin: 10px 0px 0px 0px;
258
+ font-size: 30px;
259
+ text-align: center;
260
+ }
261
+ .statpad{
262
+ float: left;
263
+ width: 445px;
264
+ margin-top: 10px;
265
+
266
+ }
267
+ .statpad .title{
268
+ float: left;
269
+ width: 100%;
270
+ padding: 3px 0px;
271
+ font-size: 17px;
272
+ text-align: center;
273
+ }
274
+ .statpad .statbody{
275
+ float: left;
276
+ width: 425px;
277
+ height: 260px;
278
+ padding: 10px;
279
+ }
280
+ .statpads >:nth-child(2n+1) {
281
+ margin-right: 10px;
282
+ }
283
+ .statbody.pie{
284
+ width: 345px;
285
+ padding-left: 90px;
286
+ }
287
+ .statbody.pie .legend{
288
+ display: none;
289
+ }
290
+
291
+ .quad.statpad{
292
+ box-shadow: none;
293
+ }
294
+ .statnote {
295
+ float: left;
296
+ width: 220px;
297
+ }
298
+ .statnote .statbody {
299
+ width: 200px;
300
+ height: 100px;
301
+ line-height: 100px;
302
+ text-align: center;
303
+ font-size: 70px;
304
+ font-family: Arial,Helvetica,sans-serif;
305
+ text-shadow: 1px 1px 1px #3F3F3F, -1px -1px 1px #3F3F3F;
306
+ }
307
+ .quad.statpad > *:nth-child(2n+1) {
308
+ margin-right: 5px;
309
+ }
310
+ .quad.statpad > *:nth-child(3), .quad.statpad > *:nth-child(4) {
311
+ margin-top: 10px;
312
+ }
313
+ .statbody.attendance{
314
+ color: #99DD66;
315
+ }
316
+ .statbody.views{
317
+ color: #DDDD66;
318
+ }
319
+ .statbody.interactions{
320
+ color: #6666DD;
321
+ }
322
+ .statbody.remaining{
323
+ color: #DD6666;
324
+ }
325
+
326
+ .legendLabel{
327
+ width: 150px;
328
+ padding-left: 3px;
329
+ font-size: 12px;
330
+ }
331
+ .asterisk{
332
+ font-size: 12px;
333
+ }
334
+
Binary file
Binary file
@@ -1,3 +1,3 @@
1
1
  class MountainGoat
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,53 @@
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
+
18
+ </head>
19
+
20
+ <body>
21
+
22
+ <% if !flash[:message].blank? %>
23
+ <div class="ocelot-flash message">
24
+ <div class="message"><%= flash[:message] %></div>
25
+ </div>
26
+ <% end %>
27
+
28
+ <% if !flash[:model].blank? %>
29
+ <div class="ocelot-flash-model model">
30
+ <div class="jqmWindow" id="dialog">
31
+ <a href="#" class="jqmClose">Close</a>
32
+ <div class="model"><%= flash[:model] %></div>
33
+ </div>
34
+ </div>
35
+ <% end %>
36
+
37
+ <% if !flash[:notice].blank? || !flash[:error].blank? %>
38
+ <div class="ocelot-flash">
39
+ <% if !flash[:error].blank? %><div class="error"><%= flash[:error] %></div><% end %>
40
+ <% if !flash[:notice].blank? %><div class="notice"><%= flash[:notice] %></div><% end %>
41
+ </div>
42
+ <% end %>
43
+
44
+ <div id="ocelot-main">
45
+ <%= yield %>
46
+
47
+ <div id="container-footer">
48
+
49
+ </div>
50
+ </div>
51
+ </body>
52
+
53
+ </html>
@@ -14,6 +14,8 @@
14
14
  <!--<meta content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;' name='viewport' />-->
15
15
  <meta name="viewport" content="width=device-width" />
16
16
 
17
+ <link rel="stylesheet" href="/mg/public/mg_css" type="text/css" />
18
+
17
19
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
18
20
  <script src="/mg/public/jquery_flot_js" type="text/javascript"></script>
19
21
 
@@ -21,31 +23,24 @@
21
23
 
22
24
  <body>
23
25
 
24
- <% if !flash[:message].blank? %>
25
- <div class="ocelot-flash message">
26
- <div class="message"><%= flash[:message] %></div>
27
- </div>
28
- <% end %>
29
-
30
- <% if !flash[:model].blank? %>
31
- <div class="ocelot-flash-model model">
32
- <div class="jqmWindow" id="dialog">
33
- <a href="#" class="jqmClose">Close</a>
34
- <div class="model"><%= flash[:model] %></div>
35
- </div>
26
+ <div class="header">
27
+ <div class="head">
28
+ <a href="/mg" class="logo">
29
+ <img src="/mg/public/mg_png" />
30
+ </a>
31
+ <ul class="nav">
32
+ <li><a href="<%= mountain_goat_converts_url %>">Goals</a></li>
33
+ <li><a href="<%= mountain_goat_metrics_url %>">Metrics</a></li>
34
+ </ul>
36
35
  </div>
37
- <% end %>
36
+ </div>
38
37
 
39
- <% if !flash[:notice].blank? || !flash[:error].blank? %>
40
- <div class="ocelot-flash">
41
- <% if !flash[:error].blank? %><div class="error"><%= flash[:error] %></div><% end %>
42
- <% if !flash[:notice].blank? %><div class="notice"><%= flash[:notice] %></div><% end %>
38
+ <div class="content">
39
+ <div class="content-inner">
40
+ <%= yield %>
43
41
  </div>
44
- <% end %>
42
+ </div>
45
43
 
46
- <div id="ocelot-main">
47
- <%= yield %>
48
-
49
44
  <div id="container-footer">
50
45
 
51
46
  </div>
@@ -0,0 +1,33 @@
1
+
2
+
3
+ <div id="container-main" class="mt-converts">
4
+ <div class="mountain-goat-panel centered">
5
+
6
+ <h2>Conversion Goals</h2>
7
+ <span class="explanation">Below are a list of conversion goals. Each goal has a set of metrics designed to achieve that goal. For each metric, there is a list of variants, each coupled with its conversation rate.</span>
8
+ <% @converts.each do |convert| %>
9
+ <h2><a href="<%= mountain_goat_convert_url :id => convert.id %>"><%=h convert.name %></a></h2>
10
+ <% convert.metrics.each do |metric| %>
11
+ <div class="metric-category">
12
+ <span class="metric"><a href="<%= mountain_goat_metric_url :id => metric.id %>"><%= metric.title %></a></span>
13
+ <% if metric.metric_variants.count == 0 %>
14
+ <span class="none">No metric variants [<a href="<%= new_mountain_goat_metric_mountain_goat_metric_variant_url :mountain_goat_metric_id => metric.id %>">Add one</a>]</span>
15
+ <% else %>
16
+ <% metric.metric_variants.each do |mv| %>
17
+ <div class="item rate">
18
+ <span class="rates"><%=h mv.name %></span>:
19
+ <span class="conversions"><%= mv.conversions %></span> /
20
+ <span class="served"><%= mv.served %></span>
21
+ (<span class="val"><%= number_to_percentage(mv.conversion_rate, :precision => 0) %></span>)
22
+ </div>
23
+ <% end %>
24
+ <% end %>
25
+ </div>
26
+ <% end %>
27
+ <% end %>
28
+
29
+ <div class="new">
30
+ <a href="<%= new_mountain_goat_convert_url %>">New conversation type</a>
31
+ </div>
32
+ </div>
33
+ </div>
@@ -0,0 +1,49 @@
1
+
2
+
3
+ <div id="container-main" class="mt-converts">
4
+ <div class="mountain-goat-panel centered">
5
+
6
+ <h1>Conversion Goals</h1>
7
+
8
+ <div class="conversions">
9
+ <div class="explanation">
10
+ <span class="inner">
11
+ Below are a list of conversion goals. Each goal has a set of metrics designed to achieve that goal. For each metric, there is a list of variants, each coupled with its conversation rate.</span>
12
+ </span>
13
+ </div>
14
+
15
+ <div class="converts">
16
+ <% @converts.each do |convert| %>
17
+ <h2><a href="<%= mountain_goat_convert_url :id => convert.id %>"><%=h convert.name %></a></h2>
18
+ <% convert.metrics.each do |metric| %>
19
+ <div class="metric-category">
20
+ <span class="metric"><a href="<%= mountain_goat_metric_url :id => metric.id %>"><%= metric.title %></a></span>
21
+ <% if metric.metric_variants.count == 0 %>
22
+ <span class="none">No metric variants [<a href="<%= new_mountain_goat_metric_mountain_goat_metric_variant_url :mountain_goat_metric_id => metric.id %>">Add one</a>]</span>
23
+ <% else %>
24
+ <% metric.metric_variants.each do |mv| %>
25
+ <div class="item rate">
26
+ <span class="rate-holder">
27
+ <span class="title"><%=h mv.name %></span>
28
+ <span class="rates" style="width:<%= number_to_percentage(mv.conversion_rate, :precision => 0) %>"></span>
29
+ </span>
30
+
31
+ <span class="percent-holder">
32
+ <span class="val"><%= number_to_percentage(mv.conversion_rate, :precision => 0) %></span>
33
+ (<span class="conversions"><%= mv.conversions %></span> /
34
+ <span class="served"><%= mv.served %></span>)
35
+ </span>
36
+ </div>
37
+ <% end %>
38
+ <% end %>
39
+ </div>
40
+ <% end %>
41
+ <% end %>
42
+ </div>
43
+ </div>
44
+
45
+ <div class="new">
46
+ <a href="<%= new_mountain_goat_convert_url %>">New conversation type</a>
47
+ </div>
48
+ </div>
49
+ </div>
@@ -3,28 +3,44 @@
3
3
  <div id="container-main" class="mt-converts">
4
4
  <div class="mountain-goat-panel centered">
5
5
 
6
- <h2>Conversion Goals</h2>
7
- <span class="explanation">Below are a list of conversion goals. Each goal has a set of metrics designed to achieve that goal. For each metric, there is a list of variants, each coupled with its conversation rate.</span>
8
- <% @converts.each do |convert| %>
9
- <h2><a href="<%= mountain_goat_convert_url :id => convert.id %>"><%=h convert.name %></a></h2>
10
- <% convert.metrics.each do |metric| %>
11
- <div class="metric-category">
12
- <span class="metric"><a href="<%= mountain_goat_metric_url :id => metric.id %>"><%= metric.title %></a></span>
13
- <% if metric.metric_variants.count == 0 %>
14
- <span class="none">No metric variants [<a href="<%= new_mountain_goat_metric_mountain_goat_metric_variant_url :mountain_goat_metric_id => metric.id %>">Add one</a>]</span>
15
- <% else %>
16
- <% metric.metric_variants.each do |mv| %>
17
- <div class="item rate">
18
- <span class="rates"><%=h mv.name %></span>:
19
- <span class="conversions"><%= mv.conversions %></span> /
20
- <span class="served"><%= mv.served %></span>
21
- (<span class="val"><%= number_to_percentage(mv.conversion_rate, :precision => 0) %></span>)
22
- </div>
23
- <% end %>
6
+ <h1>Conversion Goals</h1>
7
+
8
+ <div class="conversions">
9
+ <div class="explanation">
10
+ <span class="inner">
11
+ Below are a list of conversion goals. Each goal has a set of metrics designed to achieve that goal. For each metric, there is a list of variants, each coupled with its conversation rate.</span>
12
+ </span>
13
+ </div>
14
+
15
+ <div class="converts">
16
+ <% @converts.each do |convert| %>
17
+ <h2><a href="<%= mountain_goat_convert_url :id => convert.id %>"><%=h convert.name %></a></h2>
18
+ <% convert.metrics.each do |metric| %>
19
+ <div class="metric-category">
20
+ <span class="metric"><a href="<%= mountain_goat_metric_url :id => metric.id %>"><%= metric.title %></a></span>
21
+ <% if metric.metric_variants.count == 0 %>
22
+ <span class="none">No metric variants [<a href="<%= new_mountain_goat_metric_mountain_goat_metric_variant_url :mountain_goat_metric_id => metric.id %>">Add one</a>]</span>
23
+ <% else %>
24
+ <% metric.metric_variants.each do |mv| %>
25
+ <div class="item rate">
26
+ <span class="rate-holder">
27
+ <span class="title"><a href="<%= mountain_goat_metric_variant_url mv %>"><%=h mv.name %></a></span>
28
+ <span class="rates" style="width:<%= number_to_percentage(mv.conversion_rate, :precision => 0) %>"></span>
29
+ </span>
30
+
31
+ <span class="percent-holder">
32
+ <span class="val"><%= number_to_percentage(mv.conversion_rate, :precision => 0) %></span>
33
+ (<span class="conversions"><%= mv.conversions %></span> /
34
+ <span class="served"><%= mv.served %></span>)
35
+ </span>
36
+ </div>
37
+ <% end %>
38
+ <% end %>
39
+ </div>
24
40
  <% end %>
25
- </div>
26
- <% end %>
27
- <% end %>
41
+ <% end %>
42
+ </div>
43
+ </div>
28
44
 
29
45
  <div class="new">
30
46
  <a href="<%= new_mountain_goat_convert_url %>">New conversation type</a>
@@ -0,0 +1,14 @@
1
+
2
+
3
+ <div id="container-main" class="mt-metric-variants">
4
+ <div class="mountain-goat-panel cenetered">
5
+ <a href="<%= mountain_goat_converts_url %>">Goals</a> > <a href="<%= mountain_goat_convert_url :id => @metric_variant.metric.convert.id %>"><%=h @metric_variant.metric.convert.name %> Goal</a> > <a href="<%= mountain_goat_metric_url :id => @metric_variant.metric.id %>"><%=h @metric_variant.metric.title %></a>
6
+
7
+ <h2><%=h @metric_variant.name %></h2>
8
+
9
+ <div class="value"><%=h @metric_variant.value %></div>
10
+ <div class="serves-converts"><%=h @metric_variant.served %> / <%=h @metric_variant.conversions %> (<%=h number_to_percentage(@metric_variant.conversion_rate, :precision => 0) %>)</div>
11
+
12
+ <a href="<%= edit_mountain_goat_metric_variant_url :id => @metric_variant.id %>">Edit</a>
13
+ </div>
14
+ </div>
@@ -0,0 +1,59 @@
1
+
2
+ <% if !respond_to?(:chart) %>
3
+ <% def chart(*args); 'Please install Flotilla plugin (http://flotilla.rubyforge.org/) for charts'; end; %>
4
+ <% end %>
5
+
6
+ <div id="container-main" class="mt-metrics">
7
+ <div class="mountain-goat-panel cenetered">
8
+ <a href="<%= mountain_goat_converts_url %>">Goals</a> > <a href="<%= mountain_goat_convert_url :id => @metric.convert.id %>"><%=h @metric.convert.name %> Goal</a> > <span class="metric-type"><%=h @metric.metric_type %></span>
9
+
10
+ <h2><%=h @metric.title %></h2>
11
+
12
+ <div class="variants">
13
+ <% if @metric.metric_variants.count == 0 %>
14
+ <span class="none">No metric variants</span>
15
+ <% else %>
16
+ <div class="flyer-analysis countbar">
17
+ <div class="title">Conversion Rates</div>
18
+ <div class="graph">
19
+ <%= 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 => {:autoscaleMargin => 0.1, :ticks => @rates[:titles].map { |i,t| [i + 0.5, t] }.sort }, :yaxis => { :min => 0, :minTickSize => 1 }, :bars => { :show => true }, :legend => { :position => "ne" } }, :placeholder_size => "300x200") %>
23
+
24
+ </div>
25
+ <div class="graph">
26
+ <%= chart("analysis_conv_graph#{@metric.id}",
27
+ { "Conversion Rate (%)" => { :collection => @rates[:conversion_rates], :x => :variant_type, :y => :value } },
28
+ { :xaxis => {:autoscaleMargin => 0.1, :ticks => @rates[:titles].map { |i,t| [i + 0.5, t] }.sort }, :yaxis => { :min => 0, :minTickSize => 1 }, :bars => { :show => true }, :legend => { :position => "ne" } }, :placeholder_size => "300x200") %>
29
+
30
+ </div>
31
+ </div>
32
+ <% @metric.metric_variants.each do |mv| %>
33
+ <div class="metric-variant">
34
+ <div class="item name">
35
+ <span class="desc">Name</span>
36
+ <span class="val"><a href="<%= mountain_goat_metric_variant_url mv %>"><%= mv.name %></a> [<a href="<%= edit_mountain_goat_metric_variant_url :id => mv.id %>">Edit</a>]</span>
37
+ </div>
38
+
39
+ <div class="item value">
40
+ <span class="desc">Value</span>
41
+ <span class="val"><%= mv.value %></span>
42
+ </div>
43
+
44
+ <div class="item rate">
45
+ <span class="rates">Conversion:</span>
46
+ <span class="conversions"><%= mv.conversions %></span> /
47
+ <span class="served"><%= mv.served %></span>
48
+ (<span class="val"><%= number_to_percentage(mv.conversion_rate, :precision => 0) %></span>)
49
+ </div>
50
+ </div>
51
+
52
+ <% end %>
53
+ <% end %>
54
+ </div>
55
+
56
+ <a href="<%= edit_mountain_goat_metric_url :id => @metric %>">Edit Metric</a> |
57
+ <a href="<%= new_mountain_goat_metric_mountain_goat_metric_variant_url :mountain_goat_metric_id => @metric.id %>">New Variant</a>
58
+ </div>
59
+ </div>