// Copyright (c) IPython Development Team. // Distributed under the terms of the Modified BSD License. define([ 'base/js/namespace', 'jquery', ], function(IPython, $) { "use strict"; var NotificationWidget = function (selector) { this.selector = selector; this.timeout = null; this.busy = false; if (this.selector !== undefined) { this.element = $(selector); this.style(); } this.element.hide(); var that = this; this.inner = $(''); this.element.append(this.inner); }; NotificationWidget.prototype.style = function () { this.element.addClass('notification_widget'); }; // msg : message to display // timeout : time in ms before diseapearing // // if timeout <= 0 // click_callback : function called if user click on notification // could return false to prevent the notification to be dismissed NotificationWidget.prototype.set_message = function (msg, timeout, click_callback, options) { var options = options || {}; var callback = click_callback || function() {return true;}; var that = this; // unbind potential previous callback this.element.unbind('click'); this.inner.attr('class', options.icon); this.inner.attr('title', options.title); this.inner.text(msg); this.element.fadeIn(100); // reset previous set style this.element.removeClass(); this.style(); if (options.class){ this.element.addClass(options.class) } if (this.timeout !== null) { clearTimeout(this.timeout); this.timeout = null; } if (timeout !== undefined && timeout >=0) { this.timeout = setTimeout(function () { that.element.fadeOut(100, function () {that.inner.text('');}); that.timeout = null; }, timeout); } else { this.element.click(function() { if( callback() !== false ) { that.element.fadeOut(100, function () {that.inner.text('');}); that.element.unbind('click'); } if (that.timeout !== undefined) { that.timeout = undefined; clearTimeout(that.timeout); } }); } }; NotificationWidget.prototype.info = function (msg, timeout, click_callback, options) { var options = options || {}; options.class = options.class +' info'; var timeout = timeout || 3500; this.set_message(msg, timeout, click_callback, options); } NotificationWidget.prototype.warning = function (msg, timeout, click_callback, options) { var options = options || {}; options.class = options.class +' warning'; this.set_message(msg, timeout, click_callback, options); } NotificationWidget.prototype.danger = function (msg, timeout, click_callback, options) { var options = options || {}; options.class = options.class +' danger'; this.set_message(msg, timeout, click_callback, options); } NotificationWidget.prototype.get_message = function () { return this.inner.html(); }; // For backwards compatibility. IPython.NotificationWidget = NotificationWidget; return {'NotificationWidget': NotificationWidget}; });