Add notification count inside a badge on the notification link.
Signed-off-by: Eric Riggs <ericriggs42@gmail.com>
This commit is contained in:
committed by
Roberto Rosario
parent
ee75f0e92d
commit
6aca0cd874
@@ -28,6 +28,7 @@ Next (2018-XX-XX)
|
|||||||
- Remove unused animate.css package.
|
- Remove unused animate.css package.
|
||||||
- Add page loading indicator.
|
- Add page loading indicator.
|
||||||
- Add periodic AJAX workers to update the value of the notifications link.
|
- Add periodic AJAX workers to update the value of the notifications link.
|
||||||
|
- Add notification count inside a badge on the notification link.
|
||||||
|
|
||||||
2.8 (2018-02-27)
|
2.8 (2018-02-27)
|
||||||
================
|
================
|
||||||
|
|||||||
@@ -10,6 +10,29 @@ var App = function (parameters) {
|
|||||||
|
|
||||||
// Class methods and variables
|
// Class methods and variables
|
||||||
|
|
||||||
|
App.mayanNotificationBadge = function (options, data) {
|
||||||
|
// Callback to add the notifications count inside a badge markup
|
||||||
|
var notifications = data[options.attributeName];
|
||||||
|
|
||||||
|
if (notifications > 0) {
|
||||||
|
// Save the original link text before adding the initial badge markup
|
||||||
|
if (!options.element.data('mn-saved-text')) {
|
||||||
|
options.element.data('mn-saved-text', options.element.html());
|
||||||
|
}
|
||||||
|
|
||||||
|
options.element.html(
|
||||||
|
options.element.data('mn-saved-text') + ' <span class="badge">' + notifications + '</span>'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
if (options.element.data('mn-saved-text')) {
|
||||||
|
// If there is a saved original link text, restore it
|
||||||
|
options.element.html(
|
||||||
|
options.element.data('mn-saved-text')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
App.MultiObjectFormProcess = function ($form, options) {
|
App.MultiObjectFormProcess = function ($form, options) {
|
||||||
/*
|
/*
|
||||||
* ajaxForm callback to add the external item checkboxes to the
|
* ajaxForm callback to add the external item checkboxes to the
|
||||||
@@ -57,10 +80,25 @@ App.prototype.AJAXperiodicWorker = function (options) {
|
|||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
complete: function() {
|
complete: function() {
|
||||||
setTimeout(app.AJAXperiodicWorker, options.interval, options);
|
if (!options.app) {
|
||||||
|
// Preserve the app reference between consecutive calls
|
||||||
|
options.app = app;
|
||||||
|
}
|
||||||
|
setTimeout(options.app.AJAXperiodicWorker, options.interval, options);
|
||||||
},
|
},
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
options.element.text(data[options.attributeName]);
|
if (options.callback) {
|
||||||
|
// Conver the callback string to an actual function
|
||||||
|
var callbackFunction = window;
|
||||||
|
|
||||||
|
$.each(options.callback.split('.'), function (index, value) {
|
||||||
|
callbackFunction = callbackFunction[value]
|
||||||
|
});
|
||||||
|
|
||||||
|
callbackFunction(options, data);
|
||||||
|
} else {
|
||||||
|
options.element.text(data[options.attributeName]);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
url: options.APIURL
|
url: options.APIURL
|
||||||
});
|
});
|
||||||
@@ -75,6 +113,7 @@ App.prototype.setupAJAXperiodicWorkers = function () {
|
|||||||
app.AJAXperiodicWorker({
|
app.AJAXperiodicWorker({
|
||||||
attributeName: $this.data('apw-attribute'),
|
attributeName: $this.data('apw-attribute'),
|
||||||
APIURL: $this.data('apw-url'),
|
APIURL: $this.data('apw-url'),
|
||||||
|
callback: $this.data('apw-callback'),
|
||||||
element: $this,
|
element: $this,
|
||||||
interval: $this.data('apw-interval'),
|
interval: $this.data('apw-interval'),
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ link_user_events = Link(
|
|||||||
link_user_notifications_list = Link(
|
link_user_notifications_list = Link(
|
||||||
html_data={
|
html_data={
|
||||||
'apw-attribute': 'count', 'apw-interval': '5000',
|
'apw-attribute': 'count', 'apw-interval': '5000',
|
||||||
'apw-url': '/api/notifications/'
|
'apw-url': '/api/notifications/',
|
||||||
}, icon='fa fa-bell', text=get_notification_count,
|
'apw-callback': 'App.mayanNotificationBadge'
|
||||||
view='events:user_notifications_list'
|
}, icon='fa fa-bell', text='', view='events:user_notifications_list'
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user