Guest User

Untitled

a guest
Oct 20th, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. /////////////////////////////////////////////////
  2. // example usage:
  3. //
  4. // import eventTracking from './';
  5. // const tracking = eventTracking();
  6. //
  7. // tracking.sharedReport({
  8. // foo: 'bar'
  9. // }, ['routeName']);
  10. //
  11. // where:
  12. // args[0]: {} of contextual data
  13. // args[1]: [] of global data keys to pull in
  14. //
  15. /////////////////////////////////////////////////
  16.  
  17. import ReactGA from 'react-ga';
  18. import { getRouteName } from 'APP/lib/urlHelpers';
  19.  
  20. const fetchGlobalData = globals => ({
  21. routeName: globals.includes('routeName') ? getRouteName() : null,
  22. // other global values
  23. });
  24.  
  25. const events = {
  26. sharedReport: (data) => {
  27. const { range, recipientCount, globals } = data;
  28. const label = `${ globals.routeName } PDF / Recipients: ${ recipientCount } / ${ range }`;
  29.  
  30. ReactGA.event({
  31. category: 'Reports',
  32. action: 'Share report',
  33. label
  34. });
  35. },
  36.  
  37. selectedReportDateFilter: (data) => {
  38. const { range, startDate, endDate, globals } = data;
  39. const label = `${ globals.routeName } / ${ range } / ${ startDate } to ${ endDate }`;
  40.  
  41. ReactGA.event({
  42. category: 'Reports',
  43. action: 'Select date filter',
  44. label
  45. });
  46. }
  47. };
  48.  
  49. export default function () {
  50. const eventMap = {};
  51. const bindGlobalsToData = event => (data, globals = []) => {
  52. const globalsData = fetchGlobalData(globals);
  53. return events[event]({
  54. ...data,
  55. globals: { ...globalsData }
  56. });
  57. };
  58.  
  59. Object.keys(events).forEach(e => {
  60. eventMap[e] = bindGlobalsToData(e);
  61. });
  62.  
  63. return eventMap;
  64. }
Add Comment
Please, Sign In to add comment