Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;(function($, undefined){
- var tracker = null;
- OATHSurveyTracker = {
- init: function(slideLabel) {
- tracker = this;
- tracker.obj = {};
- tracker.optionLabel = '';
- tracker.savedData = '';
- tracker.slide = slideLabel;
- tracker.slideLabel = 'OATH Slide',
- tracker.userLabel = 'OATH User',
- tracker.$options = $('.slide-object.shown.cursor-hover');
- tracker.$options.click(tracker.track);
- console.log('Tracker is initialized');
- },
- cleanResults: function(allUsers) {
- var acceptableVals = [
- 'Upset', 'Fine', 'Frustrated', 'Good', 'Confused', 'Skip this question',
- 'Yes', 'No, I already knew most of it', 'A little, but I still have questions',
- ];
- for (var user in allUsers) {
- for (var slide in allUsers[user]) {
- if (acceptableVals.indexOf(allUsers[user][slide]) < 0) {
- delete allUsers[user][slide];
- }
- }
- }
- return allUsers;
- },
- clearStorage: function() {
- if (localStorage) {
- var i = 0;
- while (i < localStorage.length) {
- key = localStorage.key(i);
- if (key.indexOf(tracker.userLabel) > -1) {
- localStorage.removeItem(key);
- } else {
- i++;
- }
- }
- }
- console.log('OATH survey results have been reset.');
- },
- getResults: function() {
- var allUsers = {},
- results;
- allUsers = tracker.fetchUsers(allUsers);
- results = tracker.cleanResults(allUsers);
- return results;
- },
- displayResults: function() {
- console.log(tracker.getResults());
- },
- downloadResults: function() {
- results = tracker.getResults();
- var headerRow = ["User", "First Question", "Second to Last Question", "Last Question"],
- csvContent = "data:text/csv;charset=utf-8,";
- csvContent += headerRow + "\r\n"; // add carriage return
- for (var user in results) {
- var row = [user];
- for (var slide in results[user]) {
- row.push('"' + results[user][slide] + '"');
- }
- row = row.join(',');
- csvContent += row + "\r\n";
- }
- var encodedUri = encodeURI(csvContent);
- window.open(encodedUri);
- },
- fetchUsers: function(allUsers) {
- var key;
- if (localStorage) {
- for (var i = 0; i < localStorage.length; i++) {
- key = localStorage.key(i);
- if (key.indexOf(tracker.userLabel) > -1) {
- var slideResults = localStorage.getItem(key);
- allUsers[key] = JSON.parse(slideResults);
- }
- }
- }
- return allUsers;
- },
- resetResults: function() {
- var yesReset = confirm("Are you sure you want to reset all the survey results for this computer? This can't be undone.");
- if (yesReset) tracker.clearStorage();
- },
- setUser: function() {
- var key,
- user,
- users = [];
- if (localStorage) {
- for (var i = 0; i < localStorage.length; i++) {
- key = localStorage.key(i);
- if (key.indexOf(tracker.userLabel) > -1) {
- users.push(key);
- }
- }
- }
- tracker.user = tracker.userLabel + ' ' + (users.length + 1);
- },
- track: function(e) {
- tracker.optionLabel = $(this).attr('aria-label');
- console.log('User clicked: ' + tracker.optionLabel);
- if (localStorage) {
- tracker.savedData = localStorage.getItem(tracker.user);
- if (tracker.savedData) {
- tracker.obj = JSON.parse(tracker.savedData);
- }
- tracker.obj[tracker.slide] = tracker.optionLabel;
- localStorage.setItem(tracker.user, JSON.stringify(tracker.obj));
- }
- },
- }
- // One file load, init once and then set this session's user
- OATHSurveyTracker.init();
- OATHSurveyTracker.setUser();
- })(jQuery);
Add Comment
Please, Sign In to add comment