Notifications Dropdown now infinite scrolls
This commit is contained in:
parent
b448f92c61
commit
2b6ac9261b
1 changed files with 28 additions and 5 deletions
|
|
@ -1,6 +1,9 @@
|
||||||
(function() {
|
(function() {
|
||||||
var NotificationDropdown = function() {
|
var NotificationDropdown = function() {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
var currentPage = 2;
|
||||||
|
var notificationsLoaded = 10;
|
||||||
|
var isLoading = false;
|
||||||
|
|
||||||
this.subscribe("widget/ready",function(evt, badge, dropdown) {
|
this.subscribe("widget/ready",function(evt, badge, dropdown) {
|
||||||
$.extend(self, {
|
$.extend(self, {
|
||||||
|
|
@ -43,8 +46,8 @@
|
||||||
self.ajaxLoader.show();
|
self.ajaxLoader.show();
|
||||||
self.badge.addClass("active");
|
self.badge.addClass("active");
|
||||||
self.dropdown.css("display", "block");
|
self.dropdown.css("display", "block");
|
||||||
|
|
||||||
self.getNotifications();
|
self.getNotifications();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
this.hideDropdown = function() {
|
this.hideDropdown = function() {
|
||||||
|
|
@ -53,8 +56,17 @@
|
||||||
$('.notifications').perfectScrollbar('destroy');
|
$('.notifications').perfectScrollbar('destroy');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.getMoreNotifications = function() {
|
||||||
|
$.getJSON("/notifications?per_page=5&page="+currentPage, function(notifications) {
|
||||||
|
for(var i = 0; i < notifications.length; ++i)
|
||||||
|
self.notifications.push(notifications[i]);
|
||||||
|
notificationsLoaded += 5;
|
||||||
|
self.renderNotifications();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
this.getNotifications = function() {
|
this.getNotifications = function() {
|
||||||
$.getJSON("/notifications?per_page=15", function(notifications) {
|
$.getJSON("/notifications?per_page="+notificationsLoaded, function(notifications) {
|
||||||
self.notifications = notifications;
|
self.notifications = notifications;
|
||||||
self.renderNotifications();
|
self.renderNotifications();
|
||||||
});
|
});
|
||||||
|
|
@ -62,9 +74,9 @@
|
||||||
|
|
||||||
this.renderNotifications = function() {
|
this.renderNotifications = function() {
|
||||||
self.dropdownNotifications.empty();
|
self.dropdownNotifications.empty();
|
||||||
|
|
||||||
$.each(self.notifications, function(index, notifications) {
|
$.each(self.notifications, function(index, notifications) {
|
||||||
$.each(notifications, function(index, notification) {
|
$.each(notifications, function(index, notification) {
|
||||||
|
if($.inArray(notification, notifications) === -1)
|
||||||
self.dropdownNotifications.append(notification.note_html);
|
self.dropdownNotifications.append(notification.note_html);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -76,9 +88,20 @@
|
||||||
self.dropdownNotifications.find('.read').each(function(index) {
|
self.dropdownNotifications.find('.read').each(function(index) {
|
||||||
Diaspora.page.header.notifications.setUpRead( $(this) );
|
Diaspora.page.header.notifications.setUpRead( $(this) );
|
||||||
});
|
});
|
||||||
|
$('.notifications').perfectScrollbar('destroy');
|
||||||
$('.notifications').perfectScrollbar();
|
$('.notifications').perfectScrollbar();
|
||||||
$(".notifications").scrollTop(0);
|
|
||||||
self.ajaxLoader.hide();
|
self.ajaxLoader.hide();
|
||||||
|
isLoading = false;
|
||||||
|
//Infinite Scrolling
|
||||||
|
$('.notifications').scroll(function(e) {
|
||||||
|
var bottom = $('.notifications').prop('scrollHeight') - $('.notifications').height();
|
||||||
|
var currentPosition = $('.notifications').scrollTop();
|
||||||
|
if (currentPosition + 50 >= bottom && notificationsLoaded <= self.notifications.length && !isLoading) {
|
||||||
|
isLoading = true;
|
||||||
|
++currentPage;
|
||||||
|
self.getMoreNotifications();
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue