Guest User

Untitled

a guest
Dec 17th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.81 KB | None | 0 0
  1. ;(function($, undefined){
  2.  
  3. var tracker = null;
  4.  
  5. OATHSurveyTracker = {
  6.  
  7. init: function(slideLabel) {
  8. tracker = this;
  9. tracker.obj = {};
  10. tracker.optionLabel = '';
  11. tracker.savedData = '';
  12.  
  13. tracker.slide = slideLabel;
  14. tracker.slideLabel = 'OATH Slide',
  15. tracker.userLabel = 'OATH User',
  16. tracker.$options = $('.slide-object.shown.cursor-hover');
  17. tracker.$options.click(tracker.track);
  18. console.log('Tracker is initialized');
  19. },
  20.  
  21. cleanResults: function(allUsers) {
  22. var acceptableVals = [
  23. 'Upset', 'Fine', 'Frustrated', 'Good', 'Confused', 'Skip this question',
  24. 'Yes', 'No, I already knew most of it', 'A little, but I still have questions',
  25. ];
  26.  
  27. for (var user in allUsers) {
  28. for (var slide in allUsers[user]) {
  29. if (acceptableVals.indexOf(allUsers[user][slide]) < 0) {
  30. delete allUsers[user][slide];
  31. }
  32. }
  33. }
  34.  
  35. return allUsers;
  36. },
  37.  
  38. clearStorage: function() {
  39. if (localStorage) {
  40. var i = 0;
  41.  
  42. while (i < localStorage.length) {
  43. key = localStorage.key(i);
  44.  
  45. if (key.indexOf(tracker.userLabel) > -1) {
  46. localStorage.removeItem(key);
  47. } else {
  48. i++;
  49. }
  50. }
  51. }
  52. console.log('OATH survey results have been reset.');
  53. },
  54.  
  55. getResults: function() {
  56. var allUsers = {},
  57. results;
  58.  
  59. allUsers = tracker.fetchUsers(allUsers);
  60. results = tracker.cleanResults(allUsers);
  61. return results;
  62. },
  63.  
  64. displayResults: function() {
  65. console.log(tracker.getResults());
  66. },
  67.  
  68. downloadResults: function() {
  69. results = tracker.getResults();
  70. var headerRow = ["User", "First Question", "Second to Last Question", "Last Question"],
  71. csvContent = "data:text/csv;charset=utf-8,";
  72.  
  73. csvContent += headerRow + "\r\n"; // add carriage return
  74.  
  75. for (var user in results) {
  76. var row = [user];
  77. for (var slide in results[user]) {
  78. row.push('"' + results[user][slide] + '"');
  79. }
  80. row = row.join(',');
  81. csvContent += row + "\r\n";
  82. }
  83.  
  84. var encodedUri = encodeURI(csvContent);
  85. window.open(encodedUri);
  86. },
  87.  
  88. fetchUsers: function(allUsers) {
  89. var key;
  90.  
  91. if (localStorage) {
  92. for (var i = 0; i < localStorage.length; i++) {
  93. key = localStorage.key(i);
  94.  
  95. if (key.indexOf(tracker.userLabel) > -1) {
  96. var slideResults = localStorage.getItem(key);
  97. allUsers[key] = JSON.parse(slideResults);
  98. }
  99.  
  100. }
  101. }
  102.  
  103. return allUsers;
  104. },
  105.  
  106. resetResults: function() {
  107. var yesReset = confirm("Are you sure you want to reset all the survey results for this computer? This can't be undone.");
  108. if (yesReset) tracker.clearStorage();
  109. },
  110.  
  111. setUser: function() {
  112. var key,
  113. user,
  114. users = [];
  115.  
  116. if (localStorage) {
  117. for (var i = 0; i < localStorage.length; i++) {
  118. key = localStorage.key(i);
  119.  
  120. if (key.indexOf(tracker.userLabel) > -1) {
  121. users.push(key);
  122. }
  123. }
  124. }
  125.  
  126. tracker.user = tracker.userLabel + ' ' + (users.length + 1);
  127. },
  128.  
  129. track: function(e) {
  130. tracker.optionLabel = $(this).attr('aria-label');
  131. console.log('User clicked: ' + tracker.optionLabel);
  132.  
  133. if (localStorage) {
  134. tracker.savedData = localStorage.getItem(tracker.user);
  135.  
  136. if (tracker.savedData) {
  137. tracker.obj = JSON.parse(tracker.savedData);
  138. }
  139.  
  140. tracker.obj[tracker.slide] = tracker.optionLabel;
  141. localStorage.setItem(tracker.user, JSON.stringify(tracker.obj));
  142. }
  143.  
  144. },
  145.  
  146. }
  147.  
  148. // One file load, init once and then set this session's user
  149. OATHSurveyTracker.init();
  150. OATHSurveyTracker.setUser();
  151.  
  152. })(jQuery);
Add Comment
Please, Sign In to add comment