shopify_dashboard_plus 0.0.6 → 0.0.7

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3f04778d9e66992f8c93809acf37f63d10d8902e
4
- data.tar.gz: 7b4c66c846e7f039763ede2bc032048c3d429385
3
+ metadata.gz: 9fdfd548de3a3601bf7e6b95a270e47cf5ceaa27
4
+ data.tar.gz: a1d785b1ac756ff95eafd897167ae39ed0035429
5
5
  SHA512:
6
- metadata.gz: 60b1b059c9e554cb51c0f0924e5d6c419ed37da972141c4998005137ce82d3e6fea528a57ede81d13905b9b1f352de57c860751711999977720e1725bdb8ec63
7
- data.tar.gz: 8238bcb96f56b2b95b3326cb5f7383378179d147076c3a90206503ffda42c6587d12d4eda574ad57f0733f26a09823562dff1f327f2b1989dc9780e18da5a56d
6
+ metadata.gz: 2024bcd98be9ced7b9c41a68fdeecf114c0556d7f7a13b2d9dfbe8d39dea0e8bfa2565ef0da7c359332812b3a72d6cab3fbefc10bc9b3052aa4b8f5f204c8ec2
7
+ data.tar.gz: bd114f9ed38cc8ad8f71241835518977db22e486839db4f8ef38a031e64b1bceb94493c59b77ee058349e64af043267221c4bf91aaec6bbc7aee649829736bf5
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Shopify_Dashboard_Plus[![Gem Version](https://badge.fury.io/rb/shopify_dashboard_plus.svg)](http://badge.fury.io/rb/shopify_dashboard_plus)
1
+ # Shopify_Dashboard_Plus [![Gem Version](https://badge.fury.io/rb/shopify_dashboard_plus.svg)](http://badge.fury.io/rb/shopify_dashboard_plus)
2
2
  Pretty Dashboard for Shopify Admin with lots of graphs.
3
3
 
4
4
  ## Screenshots
@@ -43,12 +43,12 @@ Choose the interval over which to get data and see it displayed as:
43
43
  * `git clone https://github.com/at1as/Shopify_Dashboard_Plus.git`
44
44
  * To install using the gem:
45
45
  * `gem install shopify_dashboard_plus`
46
- * For dependencies see:
47
- * `shopify_dashboard_plus.gemfile`
46
+ * `shopify_dashboard_plus.rb`
48
47
  * Retrieve `API Key`, `Password` and `Shop Name` for your store from Shopify Admin
49
48
  * Run (key, password & name can be passed as environment variables, or later thorugh the UI):
50
- * `SHP_KEY="my_key" SHP_PWD="my_password" SHP_NAME="my_shop" ./lib/shopify_dashboard_plus.rb`
51
-
49
+ * `SHP_KEY="API KEY" SHP_PWD="PASSWORD" SHP_NAME="SHOP NAME" ./lib/shopify_dashboard_plus.rb`
50
+
52
51
  ## Notes
53
- * Tested and developed with Ruby 2.1.2 on Mac OS 10.10
54
-
52
+ * Tested and developed with Ruby 2.0.0, 2.1.2, 2.2.0 on Mac OS 10.10
53
+ * Tested against [Learning Photography](http://learning.photography)
54
+ * Requires >= Ruby 2.0.0
@@ -49,8 +49,8 @@ module ApplicationHelpers
49
49
  DateTime.now.strftime('%Y-%m-%d')
50
50
  end
51
51
 
52
- def days(num)
53
- num.to_i == 1 ? "#{num} Day" : "#{num} Days"
52
+ def pluralize(num, singular, plural)
53
+ num.to_i == 1 ? "#{num} #{singular.capitalize}" : "#{num} #{plural.capitalize}"
54
54
  end
55
55
 
56
56
  def strip_protocol(page)
@@ -70,6 +70,10 @@ module ApplicationHelpers
70
70
 
71
71
  ## Metrics Helpers
72
72
 
73
+ def max_hash_key_exclude_value(unsorted_hash, exclude_value)
74
+ unsorted_hash.sort_by{ |k, v| v }.map{ |k, v| [k, v] unless k.downcase == exclude_value }.compact.last
75
+ end
76
+
73
77
  def display_as_currency(value)
74
78
  ShopifyAPI::Shop.current.money_with_currency_format.gsub("{{amount}}", value.to_s)
75
79
  rescue
@@ -69,9 +69,13 @@ module ShopifyDashboardPlus
69
69
  def to_h
70
70
  {
71
71
  :currencies_per_sale => currencies_per_sale,
72
+ :most_used_currency => currencies_per_sale.sort_by{ |k, v| v }.last,
72
73
  :sales_per_country => sales_per_country,
74
+ :most_sales_per_country => sales_per_country.sort_by{ |k, v| v }.last,
73
75
  :sales_per_price => sales_per_price_point,
76
+ :top_selling_price_point => sales_per_price_point.sort_by{ |k, v| v }.last,
74
77
  :sales_per_product => sales_per_product,
78
+ :top_selling_product => sales_per_product.sort_by{ |k, v| v }.last,
75
79
  :sales_per_customer => sales_per_customer,
76
80
  :number_of_sales => number_of_sales
77
81
  }
@@ -111,7 +115,9 @@ module ShopifyDashboardPlus
111
115
  {
112
116
  :revenue_per_country => revenue_per_country,
113
117
  :revenue_per_product => revenue_per_product,
118
+ :top_grossing_product => revenue_per_product.sort_by{ |k, v| v }.last,
114
119
  :revenue_per_price_point => revenue_per_price_point,
120
+ :top_grossing_price_point => revenue_per_price_point.sort_by{ |k, v| v}.last
115
121
  }
116
122
  end
117
123
  end
@@ -132,7 +138,9 @@ module ShopifyDashboardPlus
132
138
  end
133
139
  {
134
140
  :discount_savings => discount_value,
135
- :discount_quantity => discount_used
141
+ :top_discount_savings => discount_value.sort_by{ |k, v| v }.last,
142
+ :discount_quantity => discount_used,
143
+ :most_used_discount_code => discount_used.sort_by{ |k, v| v }.last
136
144
  }
137
145
  end
138
146
 
@@ -159,8 +167,10 @@ module ShopifyDashboardPlus
159
167
  end
160
168
  end
161
169
  {
162
- :referral_sites => (referring_sites.sort().to_h rescue {}),
163
- :referral_pages => (referring_pages.sort().to_h rescue {})
170
+ :referral_sites => referring_sites.sort().to_h,
171
+ :top_referral_site => max_hash_key_exclude_value(referring_sites, 'none'),
172
+ :referral_pages => referring_pages.sort().to_h,
173
+ :top_referral_page => max_hash_key_exclude_value(referring_pages, 'none')
164
174
  }
165
175
  end
166
176
 
@@ -181,8 +191,10 @@ module ShopifyDashboardPlus
181
191
  end
182
192
  end
183
193
  {
184
- :revenue_per_referral_site => (revenue_per_referral_site.sort().to_h rescue {}),
185
- :revenue_per_referral_page => (revenue_per_referral_page.sort().to_h rescue {})
194
+ :revenue_per_referral_site => revenue_per_referral_site.sort().to_h,
195
+ :top_referral_site_revenue => max_hash_key_exclude_value(revenue_per_referral_site, 'none'),
196
+ :revenue_per_referral_page => revenue_per_referral_page.sort().to_h,
197
+ :top_referral_page_revenue => max_hash_key_exclude_value(revenue_per_referral_page, 'none')
186
198
  }
187
199
  end
188
200
 
@@ -1,3 +1,3 @@
1
1
  module ShopifyDashboardPlus
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -62,6 +62,10 @@ h4.graph-heading{
62
62
  font-weight:400;
63
63
  font-size:22px;
64
64
  }
65
+ h4.stats{
66
+ font-weight:300;
67
+ color:#337ab7;
68
+ }
65
69
  .flash{
66
70
  color:red;
67
71
  }
data/views/report.erb CHANGED
@@ -27,10 +27,11 @@
27
27
  </h4>
28
28
  <hr class="graph-seperator">
29
29
  <%= column_chart @metrics[:daily_revenue], library: {hAxis: {direction: -1}} %>
30
+ <hr class="graph-seperator">
30
31
  <div class="graph-metrics">
31
32
  <div class="graph-metric">
32
33
  <h5 class="grey">Duration</h5>
33
- <h3 class="money"><%= days(@metrics[:duration]) %></h3>
34
+ <h3 class="money"><%= pluralize @metrics[:duration], "day", "days" %></h3>
34
35
  </div>
35
36
  <div class="graph-metric">
36
37
  <h5 class="grey">Number of Sales</h5>
@@ -65,6 +66,15 @@
65
66
  </h4>
66
67
  <hr class="graph-seperator">
67
68
  <%= column_chart @metrics[:sales_per_product] %>
69
+ <% if @metrics[:top_selling_product] %>
70
+ <hr class="graph-seperator">
71
+ <div class="graph-metrics">
72
+ <div class="graph-metric">
73
+ <h5 class="grey">Best Selling Product</h5>
74
+ <h4 class="stats"><%= @metrics[:top_selling_product][0] %> : <b><%= pluralize @metrics[:top_selling_product][1], "Sale", "Sales" %></b></h4>
75
+ </div>
76
+ </div>
77
+ <% end %>
68
78
  </div>
69
79
 
70
80
  <div class="graph-border">
@@ -73,6 +83,15 @@
73
83
  </h4>
74
84
  <hr class="graph-seperator">
75
85
  <%= column_chart @metrics[:revenue_per_product] %>
86
+ <% if @metrics[:top_grossing_product] %>
87
+ <hr class="graph-seperator">
88
+ <div class="graph-metrics">
89
+ <div class="graph-metric">
90
+ <h5 class="grey">Most Profitable Product</h5>
91
+ <h4 class="stats"><%= @metrics[:top_grossing_product][0] %> : <b><%= display_as_currency @metrics[:top_grossing_product][1] %></b></h4>
92
+ </div>
93
+ </div>
94
+ <% end %>
76
95
  </div>
77
96
  </div>
78
97
 
@@ -93,6 +112,15 @@
93
112
  </h4>
94
113
  <hr class="graph-seperator">
95
114
  <%= column_chart @metrics[:sales_per_price] %>
115
+ <% if @metrics[:top_selling_price_point] %>
116
+ <hr class="graph-seperator">
117
+ <div class="graph-metrics">
118
+ <div class="graph-metric">
119
+ <h5 class="grey">Top Selling Price Point</h5>
120
+ <h4 class="stats"><b><%= @metrics[:top_selling_price_point][0] %></b> : <%= pluralize @metrics[:top_selling_price_point][1], "Sale", "Sales" %></h4>
121
+ </div>
122
+ </div>
123
+ <% end %>
96
124
  </div>
97
125
 
98
126
  <div class="graph-border">
@@ -101,6 +129,15 @@
101
129
  </h4>
102
130
  <hr class="graph-seperator">
103
131
  <%= column_chart @metrics[:revenue_per_price_point] %>
132
+ <% if @metrics[:top_grossing_price_point] %>
133
+ <hr class="graph-seperator">
134
+ <div class="graph-metrics">
135
+ <div class="graph-metric">
136
+ <h5 class="grey">Top Grossing Price Point</h5>
137
+ <h4 class="stats"><b><%= @metrics[:top_grossing_price_point][0] %></b> : <%= display_as_currency @metrics[:top_grossing_price_point][1] %></h4>
138
+ </div>
139
+ </div>
140
+ <% end %>
104
141
  </div>
105
142
 
106
143
  <div class="graph-border">
@@ -109,6 +146,15 @@
109
146
  </h4>
110
147
  <hr class="graph-seperator">
111
148
  <%= column_chart @metrics[:discount_savings] %>
149
+ <% if @metrics[:top_discount_savings] %>
150
+ <hr class="graph-seperator">
151
+ <div class="graph-metrics">
152
+ <div class="graph-metric">
153
+ <h5 class="grey">Greatest Value Redeemed per Discount Code</h5>
154
+ <h4 class="stats"><%= @metrics[:top_discount_savings][0] %> : <b><%= display_as_currency @metrics[:top_discount_savings][1] %></b></h4>
155
+ </div>
156
+ </div>
157
+ <% end %>
112
158
  </div>
113
159
 
114
160
  <div class="graph-border">
@@ -117,6 +163,15 @@
117
163
  </h4>
118
164
  <hr class="graph-seperator">
119
165
  <%= column_chart @metrics[:discount_quantity] %>
166
+ <% if @metrics[:most_used_discount_code] %>
167
+ <hr class="graph-seperator">
168
+ <div class="graph-metrics">
169
+ <div class="graph-metric">
170
+ <h5 class="grey">Most Used Discount Code</h5>
171
+ <h4 class="stats"><%= @metrics[:most_used_discount_code][0] %> : <b><%= pluralize @metrics[:most_used_discount_code][1], "Time", "Times" %></b></h4>
172
+ </div>
173
+ </div>
174
+ <% end %>
120
175
  </div>
121
176
  </div>
122
177
 
@@ -129,6 +184,15 @@
129
184
  </h4>
130
185
  <hr class="graph-seperator">
131
186
  <%= pie_chart @metrics[:sales_per_country] %>
187
+ <% if @metrics[:most_sales_per_country] %>
188
+ <hr class="graph-seperator">
189
+ <div class="graph-metrics">
190
+ <div class="graph-metric">
191
+ <h5 class="grey">Most Sales Per Country</h5>
192
+ <h4 class="stats"><%= @metrics[:most_sales_per_country][0] %> : <b><%= pluralize @metrics[:most_sales_per_country][1], "Time", "Times"%></b></h4>
193
+ </div>
194
+ </div>
195
+ <% end %>
132
196
  </div>
133
197
 
134
198
  <div class="graph-border">
@@ -149,6 +213,15 @@
149
213
  </h4>
150
214
  <hr class="graph-seperator">
151
215
  <%= pie_chart @metrics[:currencies_per_sale] %>
216
+ <% if @metrics[:most_used_currency] %>
217
+ <hr class="graph-seperator">
218
+ <div class="graph-metrics">
219
+ <div class="graph-metric">
220
+ <h5 class="grey">Most Used Currency</h5>
221
+ <h4 class="stats"><%= @metrics[:most_used_currency][0] %> : <b><%= pluralize @metrics[:most_used_currency][1], "Time", "Times" %></b></h4>
222
+ </div>
223
+ </div>
224
+ <% end %>
152
225
  </div>
153
226
  </div>
154
227
 
@@ -173,6 +246,15 @@
173
246
  </h4>
174
247
  <hr class="graph-seperator">
175
248
  <%= column_chart @metrics[:referral_sites] %>
249
+ <% if @metrics[:top_referral_site] %>
250
+ <hr class="graph-seperator">
251
+ <div class="graph-metrics">
252
+ <div class="graph-metric">
253
+ <h5 class="grey">Top Referral Site</h5>
254
+ <h4 class="stats"><b><%= @metrics[:top_referral_site][0] %></b> : <%= pluralize @metrics[:top_referral_site][1], "Referral", "Referrals" %></h4>
255
+ </div>
256
+ </div>
257
+ <% end %>
176
258
  </div>
177
259
 
178
260
  <div class="graph-border">
@@ -181,6 +263,15 @@
181
263
  </h4>
182
264
  <hr class="graph-seperator">
183
265
  <%= column_chart @metrics[:referral_pages] %>
266
+ <% if @metrics[:top_referral_page] %>
267
+ <hr class="graph-seperator">
268
+ <div class="graph-metrics">
269
+ <div class="graph-metric">
270
+ <h5 class="grey">Top Referral Page</h5>
271
+ <h4 class="stats"><b><%= @metrics[:top_referral_page][0] %></b> : <%= pluralize @metrics[:top_referral_page][1], "Referral", "Referrals" %></h4>
272
+ </div>
273
+ </div>
274
+ <% end %>
184
275
  </div>
185
276
 
186
277
  <div class="graph-border">
@@ -189,6 +280,15 @@
189
280
  </h4>
190
281
  <hr class="graph-seperator">
191
282
  <%= column_chart @metrics[:revenue_per_referral_site] %>
283
+ <% if @metrics[:top_referral_site_revenue] %>
284
+ <hr class="graph-seperator">
285
+ <div class="graph-metrics">
286
+ <div class="graph-metric">
287
+ <h5 class="grey">Highest Revenue per Referral Site</h5>
288
+ <h4 class="stats"><b><%= @metrics[:top_referral_site_revenue][0] %></b> : <%= display_as_currency @metrics[:top_referral_site_revenue][1] %></h4>
289
+ </div>
290
+ </div>
291
+ <% end %>
192
292
  </div>
193
293
 
194
294
  <div class="graph-border">
@@ -197,6 +297,15 @@
197
297
  </h4>
198
298
  <hr class="graph-seperator">
199
299
  <%= column_chart @metrics[:revenue_per_referral_page] %>
300
+ <% if @metrics[:top_referral_page_revenue] %>
301
+ <hr class="graph-seperator">
302
+ <div class="graph-metrics">
303
+ <div class="graph-metric">
304
+ <h5 class="grey">Highest Revenue per Referral Page</h5>
305
+ <h4 class="stats"><b><%= @metrics[:top_referral_page_revenue][0] %></b> : <%= display_as_currency @metrics[:top_referral_page_revenue][1] %></h4>
306
+ </div>
307
+ </div>
308
+ <% end %>
200
309
  </div>
201
310
  </div>
202
311
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify_dashboard_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Willems
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-02 00:00:00.000000000 Z
11
+ date: 2015-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra