diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js index b5a954c43..757583999 100644 --- a/src/mixins/base-mixin.js +++ b/src/mixins/base-mixin.js @@ -11,10 +11,10 @@ export default { }; }, methods: { - setCmsContent(cmsContent){ + setCmsContent(cmsContent) { this.$root.cmsContentByWidget = cmsContent; }, - getCmsContent(widgetName, fieldName){ + getCmsContent(widgetName, fieldName) { return this.$root.cmsContentByWidget?.[widgetName]?.[fieldName] ? this.$root.cmsContentByWidget[widgetName][fieldName] : ''; }, dispatchNonBlockingStoreAction(type, payload, encodePayload = true) { @@ -25,10 +25,10 @@ export default { return store.dispatch(type, payload); }, - savePageDataToStore(page, data){ + savePageDataToStore(page, data) { store.commit(storeMutations.UPDATE_PAGE_DATA, { page: page, data: data }); }, - onSubmit() {}, // DO NOT REMOVE; needed to prevent default form submit behavior + onSubmit() { }, // DO NOT REMOVE; needed to prevent default form submit behavior onInvalidSubmit({ values, errors, results }) { // identify the first error field and put focus on it // get error names array @@ -40,6 +40,28 @@ export default { el && el.focus(); } }, + + pushEventToGA(category, action, label, value) { + const eventToBePushed = { + 'event': 'ga_event', + 'category': category, + 'action': action, + 'label': label, + 'value': value, + 'path': '/fmg/' + getQueryStringValue('fmgPage') + } + pushToDataLayerIfDefined(eventToBePushed); + }, + + pushPageViewToGA() { + const pageViewEvent = { + 'event': 'logPageview', + 'pagePath': '/fmg/' + getQueryStringValue('fmgPage'), + 'pageTitle': getQueryStringValue('fmgPage') + }; + pushToDataLayerIfDefined(pageViewEvent); + } + }, computed: { storeActions() { @@ -65,3 +87,14 @@ function encodeUriData(payload) { }); } } + +function getQueryStringValue(key) { + var queryStrings = new URLSearchParams(location.search); + return queryStrings.get(key); +} + +function pushToDataLayerIfDefined(data) { + if (window.dataLayer !== undefined) { + window.dataLayer.push(data); + } +}