class GtmOnRails::DataLayer::Ecommerce
Constants
- ACTIVITY_TYPES
Public Class Methods
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
GtmOnRails::DataLayer::Object#method_missing
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 18 def method_missing(method, *args, &block) if method.in?(ACTIVITY_TYPES) self.new(method, *args) else super end end
new(activity_type, *args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 6 def initialize(activity_type, *args) raise ArgumentError.new("'#{activity_type}' is undefined activity type.") unless activity_type.in?(ACTIVITY_TYPES) sanitize = true if args.first.keys.count == 1 && args.first.keys.first.to_sym == :sanitize sanitize = args.shift[:sanitize] end @data = send(:"generate_#{activity_type}_hash", *[sanitize, args.first]).with_indifferent_access end
Public Instance Methods
to_event(event_name = 'ga_event')
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 27 def to_event(event_name = 'ga_event') GtmOnRails::DataLayer::Event.new(event_name || @data[:event], @data.except(:event).deep_symbolize_keys) end
Private Instance Methods
generate_add_to_cart_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 77 def generate_add_to_cart_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) || 'addToCart' result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce' result[:event_action] = args.delete(:event_action) || 'Add to Cart' result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Add to Cart' result[:ecommerce][:add] = {} result[:ecommerce][:add][:products] = get_products(args) if args[:products].present? result.merge!(args) unless sanitize return result end
generate_checkout_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 141 def generate_checkout_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) || 'checkout' result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce' result[:event_action] = args.delete(:event_action) || 'Checkout' result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Checkout' result[:ecommerce][:checkout] = {} result[:ecommerce][:checkout][:actionField] = get_action(args) if args[:action].present? result[:ecommerce][:checkout][:products] = get_products(args) if args[:products].present? result.merge!(args) unless sanitize return result end
generate_product_click_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 45 def generate_product_click_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) || 'productClick' result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce' result[:event_action] = args.delete(:event_action) || 'Product Click' result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Product Click' result[:ecommerce][:click] = {} result[:ecommerce][:click][:actionField] = get_action(args) if args[:action].present? result[:ecommerce][:click][:products] = get_products(args) if args[:products].present? result.merge!(args) unless sanitize return result end
generate_product_detail_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 63 def generate_product_detail_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) if args[:event].present? result[:ecommerce][:detail] = {} result[:ecommerce][:detail][:actionField] = get_action(args) if args[:action].present? result[:ecommerce][:detail][:products] = get_products(args) if args[:products].present? result.merge!(args) unless sanitize return result end
generate_product_impression_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 33 def generate_product_impression_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) if args[:event].present? result[:ecommerce][:impressions] = get_impression(args) if args[:impressions].present? result.merge!(args) unless sanitize return result end
generate_promotion_click_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 124 def generate_promotion_click_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) || 'promotionClick' result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce' result[:event_action] = args.delete(:event_action) || 'Promotion Click' result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Promotion Click' result[:ecommerce][:promoClick] = {} result[:ecommerce][:promoClick][:promotions] = get_promotion(args) if args[:promotions].present? result.merge!(args) unless sanitize return result end
generate_promotion_impression_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 111 def generate_promotion_impression_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) if args[:event].present? result[:ecommerce][:promoView] = {} result[:ecommerce][:promoView][:promotions] = get_promotion(args) if args[:promotions].present? result.merge!(args) unless sanitize return result end
generate_purchase_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 159 def generate_purchase_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) if args[:event].present? result[:ecommerce][:purchase] = {} result[:ecommerce][:purchase][:actionField] = get_action(args) if args[:action].present? result[:ecommerce][:purchase][:products] = get_products(args) if args[:products].present? result.merge!(args) unless sanitize return result end
generate_refund_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 173 def generate_refund_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) if args[:event].present? result[:ecommerce][:refund] = {} result[:ecommerce][:refund][:actionField] = get_action(args) if args[:action].present? result[:ecommerce][:refund][:products] = get_products(args) if args[:products].present? result.merge!(args) unless sanitize return result end
generate_remove_from_cart_hash(sanitize, args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 94 def generate_remove_from_cart_hash(sanitize, args) result = get_default_data(args) result[:event] = args.delete(:event) || 'removeFromCart' result[:event_category] = args.delete(:event_category) || 'Enhanced Ecommerce' result[:event_action] = args.delete(:event_action) || 'Remove from Cart' result[:event_label] = args.delete(:event_label) || 'Enhanced Ecommerce Remove from Cart' result[:ecommerce][:remove] = {} result[:ecommerce][:remove][:products] = get_products(args) if args[:products].present? result.merge!(args) unless sanitize return result end
get_action(args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 211 def get_action(args) args[:action].is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Action.new(args.delete(:action)) : args.delete(:action) end
get_currency(args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 195 def get_currency(args) args.delete(:currency) || GtmOnRails.config.ecommerce_default_currency end
get_default_data(args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 188 def get_default_data(args) hash = {} hash[:ecommerce] = {} hash[:ecommerce][:currencyCode] = get_currency(args) hash end
get_impression(args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 199 def get_impression(args) args.delete(:impressions).map{|impression| impression.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Impression.new(impression) : impression} end
get_products(args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 207 def get_products(args) args.delete(:products).map{|product| product.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Product.new(product) : product} end
get_promotion(args)
click to toggle source
# File lib/gtm_on_rails/models/data_layer/ecommerce.rb, line 203 def get_promotion(args) args.delete(:promotions).map{|promotion| promotion.is_a?(Hash) ? GtmOnRails::DataLayer::Ecommerce::Promotion.new(promotion) : promotion} end