Module: Workarea::Storefront::AnalyticsHelper

Included in:
ContentHelper
Defined in:
app/helpers/workarea/storefront/analytics_helper.rb

Instance Method Summary collapse

Instance Method Details

#add_to_cart_analytics_data(product) ⇒ Object



56
57
58
59
60
61
62
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 56

def add_to_cart_analytics_data(product)
  {
    event: 'addToCart',
    domEvent: 'submit',
    payload: product_analytics_data(product)
  }
end

#add_to_cart_confirmation_analytics_data(item) ⇒ Object



80
81
82
83
84
85
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 80

def add_to_cart_confirmation_analytics_data(item)
  {
    event: 'addToCartConfirmation',
    payload: order_item_analytics_data(item)
  }
end

#cart_view_analytics_data(order) ⇒ Object



87
88
89
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 87

def cart_view_analytics_data(order)
  { event: 'cartView', payload: order_analytics_data(order) }
end

#category_view_analytics_data(category) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 4

def category_view_analytics_data(category)
  {
    event: 'categoryView',
    payload: {
      id: category.id.to_s,
      name: category.name,
      sort: category.sort,
      page: category.page,
      filters: category.filters
    }
  }
end

#checkout_addresses_view_analytics_data(order) ⇒ Object



91
92
93
94
95
96
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 91

def checkout_addresses_view_analytics_data(order)
  {
    event: 'checkoutAddressesView',
    payload: order_analytics_data(order)
  }
end

#checkout_edit_analytics_data(type) ⇒ Object



147
148
149
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 147

def checkout_edit_analytics_data(type)
  { event: 'checkoutEdit', domEvent: 'click', payload: { type: type } }
end

#checkout_login_analytics_dataObject



139
140
141
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 139

def 
  { event: 'checkoutLogin', domEvent: 'click' }
end

#checkout_order_placed_analytics_data(order) ⇒ Object



128
129
130
131
132
133
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 128

def checkout_order_placed_analytics_data(order)
  {
    event: 'checkoutOrderPlaced',
    payload: order_analytics_data(order)
  }
end

#checkout_payment_selected_analytics_data(option) ⇒ Object



120
121
122
123
124
125
126
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 120

def checkout_payment_selected_analytics_data(option)
  {
    event: 'checkoutPaymentSelected',
    domEvent: 'click',
    payload: { type: option }
  }
end

#checkout_payment_view_analytics_data(order) ⇒ Object



113
114
115
116
117
118
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 113

def checkout_payment_view_analytics_data(order)
  {
    event: 'checkoutPaymentView',
    payload: order_analytics_data(order)
  }
end

#checkout_shipping_service_selected_analytics_data(option) ⇒ Object



105
106
107
108
109
110
111
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 105

def checkout_shipping_service_selected_analytics_data(option)
  {
    event: 'checkoutShippingServiceSelected',
    domEvent: 'change',
    payload: { name: option.name, price: option.price.to_f }
  }
end

#checkout_shipping_view_analytics_data(order) ⇒ Object



98
99
100
101
102
103
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 98

def checkout_shipping_view_analytics_data(order)
  {
    event: 'checkoutShippingView',
    payload: order_analytics_data(order)
  }
end

#checkout_signup_analytics_dataObject



143
144
145
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 143

def 
  { event: 'checkoutSignup', domEvent: 'submit' }
end

#content_block_analytics_data(block) ⇒ Object



217
218
219
220
221
222
223
224
225
226
227
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 217

def content_block_analytics_data(block)
  {
    event: 'contentBlockDisplay',
    payload: {
      id: block.id.to_s,
      type: block.type_id,
      position: block.position,
      data: block.data
    }
  }
end

#email_signup_analytics_dataObject



135
136
137
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 135

def 
  { event: 'emailSignup', domEvent: 'submit' }
end

#forgot_password_analytics_dataObject



159
160
161
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 159

def forgot_password_analytics_data
  { event: 'forgotPassword', domEvent: 'submit' }
end

#login_analytics_dataObject



155
156
157
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 155

def 
  { event: 'login', domEvent: 'submit' }
end

#order_analytics_data(order) ⇒ Object



167
168
169
170
171
172
173
174
175
176
177
178
179
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 167

def order_analytics_data(order)
  {
    site_name: Workarea.config.site_name,
    id: order.id,
    promo_codes: order.promo_codes.sort,
    shipping_service: order.shipping_service,
    shipping_total: order.shipping_total.to_f,
    tax_total: order.tax_total.to_f,
    total_price: order.total_price.to_f,
    tenders: order.respond_to?(:tenders) ? order.tenders.map(&:slug) : [],
    items: order.items.map { |i| order_item_analytics_data(i) }
  }
end

#order_item_analytics_data(item) ⇒ Object



181
182
183
184
185
186
187
188
189
190
191
192
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 181

def order_item_analytics_data(item)
  {
    id: item.id.to_s,
    product_id: item.product_id,
    product_name: item.product_name,
    sku: item.sku,
    options: item.details,
    price: item.current_unit_price.to_f,
    quantity: item.quantity,
    category: item.default_category_name
  }
end

#primary_navigation_analytics_data(taxon) ⇒ Object



206
207
208
209
210
211
212
213
214
215
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 206

def primary_navigation_analytics_data(taxon)
  {
    event: 'primaryNavigationClick',
    domEvent: 'click',
    payload: {
      name: taxon.name,
      url: storefront_path_for(taxon)
    }
  }
end

#product_analytics_data(product) ⇒ Object Also known as: product_impression_data



194
195
196
197
198
199
200
201
202
203
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 194

def product_analytics_data(product)
  {
    id: product.id,
    name: product.name,
    sku: product.current_sku,
    sale: product.on_sale?,
    price: product.sell_min_price.to_f,
    category: product.default_category.try(:name)
  }
end

#product_click_analytics_data(product) ⇒ Object



48
49
50
51
52
53
54
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 48

def product_click_analytics_data(product)
  {
    event: 'productClick',
    domEvent: 'click',
    payload: product_analytics_data(product)
  }
end

#product_list_analytics_data(name = nil) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 37

def product_list_analytics_data(name = nil)
  page = params[:page].presence || 1

  {
    event: 'productList',
    name: name,
    page: page.to_i,
    per_page: Workarea.config.per_page
  }
end

#product_view_analytics_data(product) ⇒ Object



30
31
32
33
34
35
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 30

def product_view_analytics_data(product)
  {
    event: 'productView',
    payload: product_analytics_data(product)
  }
end

#remove_from_cart_analytics_data(item) ⇒ Object



72
73
74
75
76
77
78
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 72

def remove_from_cart_analytics_data(item)
  {
    event: 'removeFromCart',
    domEvent: 'submit',
    payload: order_item_analytics_data(item)
  }
end

#search_results_view_analytics_data(search) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 17

def search_results_view_analytics_data(search)
  {
    event: 'searchResultsView',
    payload: {
      terms: search.query_string,
      sort: search.sort.slug,
      page: search.page,
      filters: search.respond_to?(:filters) ? search.filters : {},
      totalResults: search.total
    }
  }
end

#signup_analytics_dataObject



163
164
165
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 163

def 
  { event: 'signup', domEvent: 'submit' }
end

#update_cart_item_analytics_data(item) ⇒ Object



64
65
66
67
68
69
70
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 64

def update_cart_item_analytics_data(item)
  {
    event: 'updateCartItem',
    domEvent: 'submit',
    payload: order_item_analytics_data(item)
  }
end

#validation_error_analytics_data(model) ⇒ Object



151
152
153
# File 'app/helpers/workarea/storefront/analytics_helper.rb', line 151

def validation_error_analytics_data(model)
  { event: 'validationError', payload: { model: model } }
end