diff options
Diffstat (limited to 'plugins/CoreHome/angularjs/notification/notification.service.js')
-rw-r--r-- | plugins/CoreHome/angularjs/notification/notification.service.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/plugins/CoreHome/angularjs/notification/notification.service.js b/plugins/CoreHome/angularjs/notification/notification.service.js new file mode 100644 index 0000000000..80e23d7a80 --- /dev/null +++ b/plugins/CoreHome/angularjs/notification/notification.service.js @@ -0,0 +1,53 @@ +/*! + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ +(function () { + angular.module('piwikApp').factory('notifications', NotificationFactory); + + NotificationFactory.$inject = []; + + function NotificationFactory() { + + return { + parseNotificationDivs: parseNotificationDivs, + clearTransientNotifications: clearTransientNotifications, + }; + + function parseNotificationDivs() { + var UI = require('piwik/UI'); + + var $notificationNodes = $('[data-role="notification"]'); + + $notificationNodes.each(function (index, notificationNode) { + $notificationNode = $(notificationNode); + var attributes = $notificationNode.data(); + var message = $notificationNode.html(); + + if (message) { + var notification = new UI.Notification(); + attributes.animate = false; + notification.show(message, attributes); + } + + $notificationNodes.remove(); + }); + } + + function clearTransientNotifications() { + $('[piwik-notification][type=transient]').each(function () { + var $element = angular.element(this); + $element.scope().$destroy(); + $element.remove(); + }); + } + } + + angular.module('piwikApp').run(['notifications', function (notifications) { + $(function () { + notifications.parseNotificationDivs(); + }); + }]); +})(); |