|
|
@@ -0,0 +1,41 @@
|
|
|
+# For sending event data to metabase and google analytics
|
|
|
+# ---
|
|
|
+# by default,
|
|
|
+# event not sent to MB.
|
|
|
+# for MB, add event-tracking-mb='true'
|
|
|
+# by default, event sent to MB via sendMB
|
|
|
+# this can be changed to use sendMBOnce via event-tracking-send-once='true' attribute
|
|
|
+# event not sent to GA.
|
|
|
+# for GA, add event-tracking-ga attribute, where the value is the GA category
|
|
|
+# event-tracking-trigger attribute is required to send event
|
|
|
+
|
|
|
+define [
|
|
|
+ 'base'
|
|
|
+], (App) ->
|
|
|
+ App.directive 'eventTracking', ['event_tracking', (event_tracking) ->
|
|
|
+ return {
|
|
|
+ scope: {
|
|
|
+ eventTracking: '@',
|
|
|
+ eventSegmentation: '=?'
|
|
|
+ }
|
|
|
+ link: (scope, element, attrs) ->
|
|
|
+ sendGA = attrs.eventTrackingGa || false
|
|
|
+ sendMB = attrs.eventTrackingMb || false
|
|
|
+ sendMBFunction = if attrs.eventTrackingSendOnce then 'sendMBOnce' else 'sendMB'
|
|
|
+ segmentation = scope.eventSegmentation || {}
|
|
|
+
|
|
|
+ segmentation.page = window.location.pathname
|
|
|
+
|
|
|
+ sendEvent = () ->
|
|
|
+ if sendMB
|
|
|
+ event_tracking[sendMBFunction] scope.eventTracking, segmentation
|
|
|
+ if sendGA
|
|
|
+ event_tracking.send attrs.eventTrackingGa, attrs.eventTrackingAction || scope.eventTracking, attrs.eventTrackingLabel || ''
|
|
|
+
|
|
|
+ if attrs.eventTrackingTrigger == 'load'
|
|
|
+ sendEvent()
|
|
|
+ else if attrs.eventTrackingTrigger == 'click'
|
|
|
+ element.on 'click', (e) ->
|
|
|
+ sendEvent()
|
|
|
+ }
|
|
|
+ ]
|