This is an automated email from the ASF dual-hosted git repository. jkevan pushed a commit to branch UNOMI-681-fix-control-group-fallback in repository https://gitbox.apache.org/repos/asf/unomi-tracker.git
commit e665a9c8b0776b0d42324c9ec5d31bf6cb5ca0bd Author: Kevan <[email protected]> AuthorDate: Fri Sep 30 14:44:37 2022 +0200 UNOMI-681: fix fallback for perso in case of control group detected --- dist/apache-unomi-tracker.cjs.js | 31 +++++++++++++++++++------------ dist/apache-unomi-tracker.cjs.js.map | 2 +- dist/apache-unomi-tracker.esm.js | 31 +++++++++++++++++++------------ dist/apache-unomi-tracker.esm.js.map | 2 +- dist/apache-unomi-tracker.umd.js | 31 +++++++++++++++++++------------ dist/apache-unomi-tracker.umd.js.map | 2 +- src/apache-unomi-tracker.js | 32 ++++++++++++++++++++------------ 7 files changed, 80 insertions(+), 51 deletions(-) diff --git a/dist/apache-unomi-tracker.cjs.js b/dist/apache-unomi-tracker.cjs.js index 4ec38f1..791540a 100644 --- a/dist/apache-unomi-tracker.cjs.js +++ b/dist/apache-unomi-tracker.cjs.js @@ -190,22 +190,29 @@ var newTracker = function newTracker() { var target = personalization.id; wem._registerPersonalizationCallback(personalization, function (result) { + var selectedFilter = null; var successfulFilters = []; - for (var i = 0; i < result.length; i++) { - successfulFilters.push(variants[result[i]]); - } + var inControlGroup = wem._isInControlGroup(target); // In case of control group Unomi is not resolving any strategy or fallback for us. So we have to do the fallback here. - var selectedFilter = null; - if (successfulFilters.length > 0) { - selectedFilter = successfulFilters[0]; - var minPos = successfulFilters[0].position; + if (inControlGroup && personalization.strategyOptions && personalization.strategyOptions.fallback) { + selectedFilter = variants[personalization.strategyOptions.fallback]; + successfulFilters.push(selectedFilter); + } else { + for (var i = 0; i < result.length; i++) { + successfulFilters.push(variants[result[i]]); + } + + if (successfulFilters.length > 0) { + selectedFilter = successfulFilters[0]; + var minPos = successfulFilters[0].position; - if (minPos >= 0) { - for (var j = 1; j < successfulFilters.length; j++) { - if (successfulFilters[j].position < minPos) { - selectedFilter = successfulFilters[j]; + if (minPos >= 0) { + for (var j = 1; j < successfulFilters.length; j++) { + if (successfulFilters[j].position < minPos) { + selectedFilter = successfulFilters[j]; + } } } } @@ -227,7 +234,7 @@ var newTracker = function newTracker() { } // we now add control group information to event if the user is in the control group. - if (wem._isInControlGroup(target)) { + if (inControlGroup) { console.info('[WEM] Profile is in control group for target: ' + target + ', adding to personalization event...'); selectedFilter.event.target.properties.inControlGroup = true; diff --git a/dist/apache-unomi-tracker.cjs.js.map b/dist/apache-unomi-tracker.cjs.js.map index d1af853..297cb75 100644 --- a/dist/apache-unomi-tracker.cjs.js.map +++ b/dist/apache-unomi-tracker.cjs.js.map @@ -1 +1 @@ -{"version":3,"file":"apache-unomi-tracker.cjs.js","sources":["../src/apache-unomi-tracker.js","../src/index.js"],"sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compl [...] \ No newline at end of file +{"version":3,"file":"apache-unomi-tracker.cjs.js","sources":["../src/apache-unomi-tracker.js","../src/index.js"],"sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compl [...] \ No newline at end of file diff --git a/dist/apache-unomi-tracker.esm.js b/dist/apache-unomi-tracker.esm.js index 2737539..b0da276 100644 --- a/dist/apache-unomi-tracker.esm.js +++ b/dist/apache-unomi-tracker.esm.js @@ -182,22 +182,29 @@ var newTracker = function newTracker() { var target = personalization.id; wem._registerPersonalizationCallback(personalization, function (result) { + var selectedFilter = null; var successfulFilters = []; - for (var i = 0; i < result.length; i++) { - successfulFilters.push(variants[result[i]]); - } + var inControlGroup = wem._isInControlGroup(target); // In case of control group Unomi is not resolving any strategy or fallback for us. So we have to do the fallback here. - var selectedFilter = null; - if (successfulFilters.length > 0) { - selectedFilter = successfulFilters[0]; - var minPos = successfulFilters[0].position; + if (inControlGroup && personalization.strategyOptions && personalization.strategyOptions.fallback) { + selectedFilter = variants[personalization.strategyOptions.fallback]; + successfulFilters.push(selectedFilter); + } else { + for (var i = 0; i < result.length; i++) { + successfulFilters.push(variants[result[i]]); + } + + if (successfulFilters.length > 0) { + selectedFilter = successfulFilters[0]; + var minPos = successfulFilters[0].position; - if (minPos >= 0) { - for (var j = 1; j < successfulFilters.length; j++) { - if (successfulFilters[j].position < minPos) { - selectedFilter = successfulFilters[j]; + if (minPos >= 0) { + for (var j = 1; j < successfulFilters.length; j++) { + if (successfulFilters[j].position < minPos) { + selectedFilter = successfulFilters[j]; + } } } } @@ -219,7 +226,7 @@ var newTracker = function newTracker() { } // we now add control group information to event if the user is in the control group. - if (wem._isInControlGroup(target)) { + if (inControlGroup) { console.info('[WEM] Profile is in control group for target: ' + target + ', adding to personalization event...'); selectedFilter.event.target.properties.inControlGroup = true; diff --git a/dist/apache-unomi-tracker.esm.js.map b/dist/apache-unomi-tracker.esm.js.map index c2fd218..4ddc87b 100644 --- a/dist/apache-unomi-tracker.esm.js.map +++ b/dist/apache-unomi-tracker.esm.js.map @@ -1 +1 @@ -{"version":3,"file":"apache-unomi-tracker.esm.js","sources":["../src/apache-unomi-tracker.js","../src/index.js"],"sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compl [...] \ No newline at end of file +{"version":3,"file":"apache-unomi-tracker.esm.js","sources":["../src/apache-unomi-tracker.js","../src/index.js"],"sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compl [...] \ No newline at end of file diff --git a/dist/apache-unomi-tracker.umd.js b/dist/apache-unomi-tracker.umd.js index 4bfff86..2db6c6c 100644 --- a/dist/apache-unomi-tracker.umd.js +++ b/dist/apache-unomi-tracker.umd.js @@ -1837,22 +1837,29 @@ var target = personalization.id; wem._registerPersonalizationCallback(personalization, function (result) { + var selectedFilter = null; var successfulFilters = []; - for (var i = 0; i < result.length; i++) { - successfulFilters.push(variants[result[i]]); - } + var inControlGroup = wem._isInControlGroup(target); // In case of control group Unomi is not resolving any strategy or fallback for us. So we have to do the fallback here. - var selectedFilter = null; - if (successfulFilters.length > 0) { - selectedFilter = successfulFilters[0]; - var minPos = successfulFilters[0].position; + if (inControlGroup && personalization.strategyOptions && personalization.strategyOptions.fallback) { + selectedFilter = variants[personalization.strategyOptions.fallback]; + successfulFilters.push(selectedFilter); + } else { + for (var i = 0; i < result.length; i++) { + successfulFilters.push(variants[result[i]]); + } + + if (successfulFilters.length > 0) { + selectedFilter = successfulFilters[0]; + var minPos = successfulFilters[0].position; - if (minPos >= 0) { - for (var j = 1; j < successfulFilters.length; j++) { - if (successfulFilters[j].position < minPos) { - selectedFilter = successfulFilters[j]; + if (minPos >= 0) { + for (var j = 1; j < successfulFilters.length; j++) { + if (successfulFilters[j].position < minPos) { + selectedFilter = successfulFilters[j]; + } } } } @@ -1874,7 +1881,7 @@ } // we now add control group information to event if the user is in the control group. - if (wem._isInControlGroup(target)) { + if (inControlGroup) { console.info('[WEM] Profile is in control group for target: ' + target + ', adding to personalization event...'); selectedFilter.event.target.properties.inControlGroup = true; diff --git a/dist/apache-unomi-tracker.umd.js.map b/dist/apache-unomi-tracker.umd.js.map index c7f9638..a5dbe2d 100644 --- a/dist/apache-unomi-tracker.umd.js.map +++ b/dist/apache-unomi-tracker.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"apache-unomi-tracker.umd.js","sources":["../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/es6-crawler-detect/src/lib/crawler/provider.js","../node_modules/es6-crawler-detect/src/lib/crawler/crawlers.js","../node_modules/es6-crawler-detect/src/lib/crawler/exclusions.js","../node_modules/es6-crawler-detect/src/lib/crawler/headers.js","../node_modules/es6-crawler-detect/src/lib/crawler.js","../node_modules/es6-crawler-detect/src/index.js","../src/a [...] \ No newline at end of file +{"version":3,"file":"apache-unomi-tracker.umd.js","sources":["../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/es6-crawler-detect/src/lib/crawler/provider.js","../node_modules/es6-crawler-detect/src/lib/crawler/crawlers.js","../node_modules/es6-crawler-detect/src/lib/crawler/exclusions.js","../node_modules/es6-crawler-detect/src/lib/crawler/headers.js","../node_modules/es6-crawler-detect/src/lib/crawler.js","../node_modules/es6-crawler-detect/src/index.js","../src/a [...] \ No newline at end of file diff --git a/src/apache-unomi-tracker.js b/src/apache-unomi-tracker.js index 7aa1674..ffe8fd8 100644 --- a/src/apache-unomi-tracker.js +++ b/src/apache-unomi-tracker.js @@ -169,19 +169,27 @@ export const newTracker = () => { registerPersonalizationObject: function (personalization, variants, ajax, resultCallback) { var target = personalization.id; wem._registerPersonalizationCallback(personalization, function (result) { + var selectedFilter = null; var successfulFilters = []; - for (var i = 0; i < result.length; i++) { - successfulFilters.push(variants[result[i]]); - } - var selectedFilter = null; - if (successfulFilters.length > 0) { - selectedFilter = successfulFilters[0]; - var minPos = successfulFilters[0].position; - if (minPos >= 0) { - for (var j = 1; j < successfulFilters.length; j++) { - if (successfulFilters[j].position < minPos) { - selectedFilter = successfulFilters[j]; + var inControlGroup = wem._isInControlGroup(target); + // In case of control group Unomi is not resolving any strategy or fallback for us. So we have to do the fallback here. + if (inControlGroup && personalization.strategyOptions && personalization.strategyOptions.fallback) { + selectedFilter = variants[personalization.strategyOptions.fallback]; + successfulFilters.push(selectedFilter); + } else { + for (var i = 0; i < result.length; i++) { + successfulFilters.push(variants[result[i]]); + } + + if (successfulFilters.length > 0) { + selectedFilter = successfulFilters[0]; + var minPos = successfulFilters[0].position; + if (minPos >= 0) { + for (var j = 1; j < successfulFilters.length; j++) { + if (successfulFilters[j].position < minPos) { + selectedFilter = successfulFilters[j]; + } } } } @@ -201,7 +209,7 @@ export const newTracker = () => { } // we now add control group information to event if the user is in the control group. - if (wem._isInControlGroup(target)) { + if (inControlGroup) { console.info('[WEM] Profile is in control group for target: ' + target + ', adding to personalization event...'); selectedFilter.event.target.properties.inControlGroup = true; if (selectedFilter.event.target.properties.variants) {
