blob: 59be1f800c6ce2d6f6485c2a313c96877b5f2b77 [file] [log] [blame] [raw]
// Copyright (c) 2012-2017, Matt Godbolt
//
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
define(function (require) {
var $ = require('jquery');
function Alert() {
this.yesHandler = null;
this.noHandler = null;
$('#yes-no button.yes').click(_.bind(function () {
if (this.yesHandler) this.yesHandler();
}, this));
$('#yes-no button.no').click(_.bind(function () {
if (this.noHandler) this.noHandler();
}, this));
}
Alert.prototype.alert = function (title, body, onClose) {
var modal = $('#alert');
modal.find('.modal-title').html(title);
modal.find('.modal-body').html(body);
modal.modal();
if (onClose) {
modal.on('hidden.bs.modal', onClose);
}
};
Alert.prototype.ask = function (title, question, handlers) {
var modal = $('#yes-no');
this.yesHandler = handlers.yes;
this.noHandler = handlers.no;
modal.find('.modal-title').html(title);
modal.find('.modal-body').html(question);
modal.modal();
};
// We append elements so in a near future we can stack sucesive notifications
Alert.prototype.notify = function (body, hideTime, alertClass) {
var modal = $('#notifications');
if (!modal) return;
var newElement = $('<div class="alert notification" tabindex="-1" role="dialog"><button type="button" class="close" data-dismiss="alert">&times;</button><span id="msg">' + body + '</span></div>');
newElement.addClass(alertClass);
modal.append(newElement);
setTimeout(function () {
newElement.fadeOut('slow', function() {
newElement.remove();
});
}, hideTime || 5000);
};
Alert.prototype.onYesNoHide = function (evt) {
console.log(evt);
};
return Alert;
});