function initCampaign()

in ArticleTemplates/assets/js/bootstraps/campaign.js [40:88]


function initCampaign(campaign) {
    if (!navigator.onLine) {
        displayOfflineMessage(campaign);
    }

    campaign.addEventListener('toggle', function() {
        resetAndCheckForVideos();
        initPositionPoller();
        initMpuPoller(0);
    });

    window.addEventListener('online', hideOfflineMessage.bind(null, campaign));
    window.addEventListener('offline', displayOfflineMessage.bind(null, campaign));

    let form = campaign.querySelector('form');
    let promises = [];
    let keys = [];
    form.addEventListener('submit', function (e) {
        displayWaiting(form);
        e.preventDefault();
        var data = Array.from(form.elements).reduce(function (o, e) {
            if (e.type === 'checkbox') {
                if (e.checked) {
                    o[e.name] = o[e.name] ? o[e.name] + '\n' + e.value : e.value;
                }
            } else if (e.type === 'file' && e.files.length) {
                const filePromise = readFile(e.files[0], campaign, form);
                promises.push(filePromise);
                keys.push(e.name);
                o[e.name] = filePromise;
            } else if (e.type === 'hidden' && e.name !== "formId") {
                o[e.name] = pageId;
            } else if (e.value) {
                o[e.name] = e.value;
            }

            return o;
        }, {});

        Promise.all(promises).then(results => {
            results.map((result, index) => {
                data[keys[index]] = result;
            })
            submit(data, campaign, form);
        }).catch(() => {
            displayFileError(campaign, form);
        })
    });
}