Update campaign_results.min.js

Add simple and clean csv output
pull/2990/head
BlkPh0x 2023-10-05 07:51:49 +11:00 committed by GitHub
parent 42efe1b010
commit 14bb02f2d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 91 additions and 0 deletions

View File

@ -198,6 +198,97 @@ function completeCampaign() {
}
})
}
function exportAsCleanCSV(scope) {
var csvScope = null;
var filename = campaign.name + ' - ' + capitalize(scope) + '.csv';
switch (scope) {
case "results":
csvScope = campaign.results;
break;
case "events":
csvScope = campaign.timeline;
break;
case "cleanresults":
csvScope = campaign.cleanResults; // Replace with your clean results data
break;
}
if (!csvScope) {
return;
}
// Create an array to hold the CSV data
var csvData = [];
// Add the CSV header
var header = ['Email', 'Email Opened', 'Clicked Link', 'Submitted Data'];
csvData.push(header);
// Define a helper function to convert boolean to string
function boolToString(value) {
return value ? 'true' : 'false';
}
// Add CSV rows for each entry in csvScope
csvScope.forEach(function (entry) {
var email = entry.email;
var status = entry.status;
// Initialize status flags
var emailOpened = false;
var clickedLink = false;
var submittedData = false;
// Update status flags based on the status value
switch (status) {
case 'Email Opened':
emailOpened = true;
break;
case 'Clicked Link':
emailOpened = true; // If clicked link, email is also opened
clickedLink = true;
break;
case 'Submitted Data':
emailOpened = true; // If submitted data, email is also opened
clickedLink = true; // If submitted data, link is also clicked
submittedData = true;
break;
}
// Add the CSV row
var csvRow = [email, boolToString(emailOpened), boolToString(clickedLink), boolToString(submittedData)];
csvData.push(csvRow);
});
// Convert the CSV data array to a CSV string
var csvString = csvData.map(function (row) {
return row.join(',');
}).join('\n');
// Create a Blob with the CSV string
var csvBlob = new Blob([csvString], {
type: 'text/csv;charset=utf-8;'
});
// Create a download link
var csvURL = window.URL.createObjectURL(csvBlob);
var dlLink = document.createElement('a');
dlLink.href = csvURL;
dlLink.setAttribute('download', filename);
// Trigger the download
dlLink.click();
// Clean up
window.URL.revokeObjectURL(csvURL);
}
// Example usage:
// exportAsCSV('results');
// exportAsCSV('events');
// exportAsCSV('cleanresults'); // Add this line to export clean results
// Exports campaign results as a CSV file
function exportAsCSV(scope) {