import { DataLayerObject, IFormData, NavData, PageData } from "./types" const defaultNavContext = (input_text: string) => { let output_text = input_text if(input_text == "" || input_text == null) { if(window.location.href.endsWith('/cja')){ output_text = 'Watch CJA Overview Video' } } return output_text } export const createDataLayerDefaultPageObject = (url: string, pageTitle: string, pageSection: string, pageSubSection?: string) : DataLayerObject & PageData => { const pageObj = createPageAttributeObj(pageTitle, pageSection, pageSubSection); let defaultPageObject: DataLayerObject & PageData = { event: 'page-view', eventCategory: 'page', path: url, ...pageObj } return defaultPageObject } export const createDataLayerDefaultNavObject = (navElement: string, navContext: string, navIndex: number, navDestination: string | undefined) : DataLayerObject & NavData => { let defaultNavObject: DataLayerObject & NavData = { event: 'navigationEvent', eventCategory: 'link', eventAction: 'click', navigationElement: navElement, navigationContext: defaultNavContext(navContext), navigationIndex: navIndex, navigationDestination: navDestination ? navDestination : '', } return defaultNavObject } export const createDataLayerFormObject = (eventAction: string, formName: string) : DataLayerObject & IFormData => { let defaultFormObject: DataLayerObject & IFormData = { event: 'formEvent', eventCategory: 'form', eventAction: eventAction, formName: formName } return defaultFormObject } export const createPageAttributeObj = (pageTitle: string, pageSection: string, pageSubSection?: string) => { let pageAttrObj = { pageTitle: pageTitle, pageSection: pageSection, pageSubSection: pageSubSection ? pageSubSection : pageSection, pageName: pageSection === pageTitle ? pageTitle : `${pageSection}:${pageTitle}`, pageURL: location.href, referrer: document.referrer, } return pageAttrObj } export const extractText = (element: string) : string => { return $(element).text().replace(/^By\s*/, '').trimEnd() } export const findElement = (selector: string, filterText: string) => { return $(selector).filter(function(){ return $(this).text().trim().includes(filterText) }) } export const findElementByHref = (selector: string, filterText: string) => { return $(selector).filter(function(){ return $(this).attr('href')?.includes(filterText) ?? false; }) } export const findElementByHrefAndText = (selector: string, hrefFilterText: string, filterString: string) => { // return $(selector).filter(function(){ // return $(this).attr('href')?.includes(hrefFilterText) ?? false; // }).filter(function() { // return $(this).text().trim().includes(filterString); // }) return $(selector).filter(function(){ return ($(this).attr('href')?.includes(hrefFilterText) && $(this).text().trim().includes(filterString)) ?? false; }) }