39 lines
1 KiB
JavaScript
39 lines
1 KiB
JavaScript
import { Tracker } from 'jh_else_ce/tracking/tracker';
|
|
import { addExperimentContext } from './utils';
|
|
|
|
const Tracking = Object.assign(Tracker, {
|
|
/**
|
|
* Returns an implementation of this class in the form of
|
|
* a Vue mixin.
|
|
*
|
|
* @param {Object} opts - default options for all events
|
|
* @returns {Object}
|
|
*/
|
|
mixin(opts = {}) {
|
|
return {
|
|
computed: {
|
|
trackingCategory() {
|
|
const localCategory = this.tracking ? this.tracking.category : null;
|
|
return localCategory || opts.category;
|
|
},
|
|
trackingOptions() {
|
|
const options = addExperimentContext(opts);
|
|
return { ...options, ...this.tracking };
|
|
},
|
|
},
|
|
methods: {
|
|
track(action, data = {}) {
|
|
const category = data.category || this.trackingCategory;
|
|
const options = {
|
|
...this.trackingOptions,
|
|
...data,
|
|
};
|
|
|
|
Tracking.event(category, action, options);
|
|
},
|
|
},
|
|
};
|
|
},
|
|
});
|
|
|
|
export default Tracking;
|