registerOptimizationTest: function()

in src/apache-unomi-tracker.js [251:300]


        registerOptimizationTest: function (optimizationTestNodeId, goalId, containerId, variants, ajax, variantsTraffic) {

            // check persona panel forced variant
            var selectedVariantId = wem.getUrlParameter('wemSelectedVariantId-' + optimizationTestNodeId);

            // check already resolved variant stored in local
            if (selectedVariantId === null) {
                if (wem.storageAvailable('sessionStorage')) {
                    selectedVariantId = sessionStorage.getItem(optimizationTestNodeId);
                } else {
                    selectedVariantId = wem.getCookie('selectedVariantId');
                    if (selectedVariantId != null && selectedVariantId === '') {
                        selectedVariantId = null;
                    }
                }
            }

            // select random variant and call unomi
            if (!(selectedVariantId && variants[selectedVariantId])) {
                var keys = Object.keys(variants);
                if (variantsTraffic) {
                    var rand = 100 * Math.random() << 0;
                    for (var nodeIdentifier in variantsTraffic) {
                        if ((rand -= variantsTraffic[nodeIdentifier]) < 0 && selectedVariantId == null) {
                            selectedVariantId = nodeIdentifier;
                        }
                    }
                } else {
                    selectedVariantId = keys[keys.length * Math.random() << 0];
                }
                if (wem.storageAvailable('sessionStorage')) {
                    sessionStorage.setItem(optimizationTestNodeId, selectedVariantId);
                } else {
                    wem.setCookie('selectedVariantId', selectedVariantId, 1);
                }

                // spread event to unomi
                wem._registerEvent(wem._completeEvent(variants[selectedVariantId].event));
            }

            if (selectedVariantId) {
                // update persona panel selected variant
                if (window.optimizedContentAreas && window.optimizedContentAreas[optimizationTestNodeId]) {
                    window.optimizedContentAreas[optimizationTestNodeId].selectedVariant = selectedVariantId;
                }

                // display the good variant
                document.getElementById(variants[selectedVariantId].content).style.display = '';
            }
        },