Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  1. window.loadedActivities = [];
  2.  
  3. var addActivity = function(item) {
  4. var found = false;
  5. for (var i = 0; i < window.loadedActivities.length; i++) {
  6. if (window.loadedActivities[i].id == item.id) {
  7. var found = true;
  8. }
  9. }
  10.  
  11. if (!found) {
  12. window.loadedActivities.push(item);
  13. window.loadedActivities.sort(function(a, b) {
  14. var returnValue;
  15. if (a.created_at > b.created_at)
  16. returnValue = -1;
  17. if (b.created_at > a.created_at)
  18. returnValue = 1;
  19. if (a.created_at == b.created_at)
  20. returnValue = 0;
  21. return returnValue;
  22. });
  23. }
  24.  
  25. return item;
  26. }
  27.  
  28. var renderActivities = function() {
  29. var source = $('#activities-template').html();
  30. var template = Handlebars.compile(source);
  31. var html = template({
  32. activities: window.loadedActivities,
  33. count: window.loadedActivities.length
  34. });
  35. var $activityFeedLink = $('li#activity-feed');
  36.  
  37. $activityFeedLink.addClass('dropdown');
  38. $activityFeedLink.html(html);
  39. $activityFeedLink.find('a.dropdown-toggle').dropdown();
  40. }
  41.  
  42. var pollActivity = function() {
  43. $.ajax({
  44. url: Routes.activities_path({format: 'json', since: window.lastFetch}),
  45. type: "GET",
  46. dataType: "json",
  47. success: function(data) {
  48. window.lastFetch = Math.floor((new Date).getTime() / 1000);
  49. if (data.length > 0) {
  50. for (var i = 0; i < data.length; i++) {
  51. addActivity(data[i]);
  52. }
  53. //Crashes here
  54. renderActivities();
  55. }
  56. }
  57. });
  58. }
  59.  
  60. Handlebars.registerHelper('activityFeedLink', function() {
  61. return new Handlebars.SafeString(Routes.activities_path());
  62. });
  63.  
  64. Handlebars.registerHelper('activityLink', function() {
  65. var link, path, html;
  66. var activity = this;
  67. var linkText = activity.targetable_type.toLowerCase();
  68.  
  69. switch (linkText) {
  70. case "status":
  71. path = Routes.status_path(activity.targetable_id);
  72. break;
  73.  
  74. case "userfriendship":
  75. path = Routes.profile_path(activity.profile_name);
  76. linkText = "friend";
  77. break;
  78. }
  79.  
  80. if (activity.action === 'deleted') {
  81. path = '#';
  82. }
  83.  
  84. html = "<li><a href='" + path + "'>" + this.user_name + " " + this.action + " a " + linkText + ".</a></li>";
  85. return new Handlebars.SafeString( html );
  86. });
  87.  
  88. window.pollInterval = window.setInterval( pollActivity, 5000 );
  89. pollActivity();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement