Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var PSA_CONFIG = {
- /**
- * Title of the campaign.
- * This value is used for pageName.
- */
- campaignTitle: '',
- /**
- * The Brand
- */
- brand: 'peugeot',
- /**
- * Models
- * Define a Object for each model that is available on current page
- * id = vehicleModelBodystyle
- * label = vehicleModelBodystyleLabel
- */
- models: [
- {
- id: 'MY_MODEL_ID',
- label: 'Super cool PSA car'
- }
- ],
- /**
- * Available conversion types
- * testdrive - offer - brochure
- */
- conversionTypes: [
- 'testdrive',
- 'offer'
- ]
- };
- /**
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- *
- * DANGER ZONE!! -> DO NOT CHANGE!!
- *
- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- */
- var PSA_STATIC_DATA = {};
- var PSA_MAPPINGS = {
- brand: {
- peugeot: 'kpp',
- citroen: 'cpp'
- },
- conversion: {
- testdrive: 'test-drive',
- offer: 'offer-request',
- brochure: 'brochure-request',
- probefahrt: 'test-drive',
- offerte: 'offer-request',
- broschuere: 'brochure-request'
- }
- };
- /**
- * Init
- */
- (function (window) {
- window.dataLayer = window.dataLayer || [];
- PSA_STATIC_DATA = {
- brand: PSA_CONFIG.brand,
- language: getLanguage(),
- pageCategory: 'form page',
- country: 'ch',
- siteTypeLevel1: PSA_MAPPINGS.brand[PSA_CONFIG.brand],
- siteTypeLevel2: 'promotion::ready to go',
- siteOwner: 'local',
- siteTarget: 'B2C',
- siteFamily: 'new cars',
- virtualPageURL: '/forms/test-drive|offer-request',
- formsName: 'test drive',
- mainStepIndicator: 1,
- mainStepName: 'personal information'
- };
- var ids = [];
- var labels = [];
- PSA_CONFIG.models.forEach(function (modelObj) {
- ids.push(modelObj.id);
- labels.push(modelObj.label);
- });
- PSA_STATIC_DATA.vehicleModelBodystyle = ids.join('|');
- PSA_STATIC_DATA.vehicleModelBodystyleLabel = labels.join('|');
- if (!PSA_MAPPINGS.brand.hasOwnProperty(PSA_CONFIG.brand)) {
- throw new Error('Brand is not defined in brand map')
- }
- var data = [
- PSA_MAPPINGS.brand[PSA_CONFIG.brand],
- PSA_STATIC_DATA.siteTypeLevel2,
- PSA_STATIC_DATA.siteOwner,
- PSA_STATIC_DATA.siteTarget,
- PSA_STATIC_DATA.siteFamily
- ];
- if (PSA_CONFIG.models.length === 1) {
- data.push(PSA_CONFIG.models[0].id)
- } else {
- data.push('');
- }
- data.push('desktop');
- data.push('');
- data.push(PSA_CONFIG.campaignTitle.replace(/\s+/g, '-').toLowerCase());
- PSA_STATIC_DATA.pageName = data.join('/');
- window.dataLayer.push(PSA_STATIC_DATA);
- })(window);
- /**
- * On Confirmation
- * @param conversionTypes
- * @param postal
- */
- function onConfirmation(conversionType, postal) {
- var evtData = Object.assign(PSA_STATIC_DATA, {
- event: 'updatevirtualpath',
- pageCategory: 'lead page',
- formsLeadType: 'hot lead',
- formsLeadID: getGITID(),
- formsPostalCode: postal,
- mainStepIndicator: 2,
- mainStepName: 'confirmation'
- });
- var mappedName = mapConversionType(conversionType);
- PSA_STATIC_DATA.formsName = mappedName.replace(/-/g, ' ');
- mapConversionType(conversionType);
- PSA_STATIC_DATA.virtualPageURL = '/forms/'
- + mappedName
- + '/confirmation';
- window.dataLayer.push(evtData);
- }
- /**
- * Get current language from query parameter
- * @returns {string | null | string}
- */
- function getLanguage() {
- var urlParams = new URLSearchParams(window.location.search);
- return urlParams.get('lang') || 'de'
- }
- /**
- * Generate a unique ID
- * @returns {string}
- */
- function getGITID() {
- var r = "", s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- for( var i=0; i < 20; i++ )
- r += s.charAt(Math.floor(Math.random() * s.length));
- return r;
- }
- /**
- * Map conversion types
- *
- * testdrive|offer ...
- *
- * @param conversionTypes
- * @returns {string}
- */
- function mapConversionType(conversionType) {
- if (PSA_MAPPINGS.conversion.hasOwnProperty(conversionType)) {
- return PSA_MAPPINGS.conversion[conversionType];
- } else {
- return conversionType;
- }
- }
Add Comment
Please, Sign In to add comment