Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /////////////////////////////////////////////////
- // example usage:
- //
- // import eventTracking from './';
- // const tracking = eventTracking();
- //
- // tracking.sharedReport({
- // foo: 'bar'
- // }, ['routeName']);
- //
- // where:
- // args[0]: {} of contextual data
- // args[1]: [] of global data keys to pull in
- //
- /////////////////////////////////////////////////
- import ReactGA from 'react-ga';
- import { getRouteName } from 'APP/lib/urlHelpers';
- const fetchGlobalData = globals => ({
- routeName: globals.includes('routeName') ? getRouteName() : null,
- // other global values
- });
- const events = {
- sharedReport: (data) => {
- const { range, recipientCount, globals } = data;
- const label = `${ globals.routeName } PDF / Recipients: ${ recipientCount } / ${ range }`;
- ReactGA.event({
- category: 'Reports',
- action: 'Share report',
- label
- });
- },
- selectedReportDateFilter: (data) => {
- const { range, startDate, endDate, globals } = data;
- const label = `${ globals.routeName } / ${ range } / ${ startDate } to ${ endDate }`;
- ReactGA.event({
- category: 'Reports',
- action: 'Select date filter',
- label
- });
- }
- };
- export default function () {
- const eventMap = {};
- const bindGlobalsToData = event => (data, globals = []) => {
- const globalsData = fetchGlobalData(globals);
- return events[event]({
- ...data,
- globals: { ...globalsData }
- });
- };
- Object.keys(events).forEach(e => {
- eventMap[e] = bindGlobalsToData(e);
- });
- return eventMap;
- }
Add Comment
Please, Sign In to add comment