// Licensed to Cloudera, Inc. under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. Cloudera, Inc. licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /* * jHue notify plugin * */ ;(function ($, window, document, undefined) { var pluginName = "jHueNotify", TYPES = { INFO: "INFO", ERROR: "ERROR", GENERAL: "GENERAL" }, defaults = { level: TYPES.GENERAL, message: "", sticky: false, css: null }; function Plugin(options) { this.options = $.extend({}, defaults, options) ; this._defaults = defaults; this._name = pluginName; this.show(); } Plugin.prototype.setOptions = function(options) { this.options = $.extend({}, defaults, options) ; }; Plugin.prototype.show = function () { var _this = this; var MARGIN = 10; var el = $("#jHueNotify").clone(); el.removeAttr("id"); // stops all the current animations and resets the style el.stop(true); el.attr("class", "alert jHueNotify"); el.find(".close").hide(); if ($(".jHueNotify").last().position() != null) { el.css("top", $(".jHueNotify").last().position().top + $(".jHueNotify").last().outerHeight() + MARGIN - $(window).scrollTop()); } _this.options.message = $("").html(_this.options.message).text(); if (_this.options.level == TYPES.ERROR){ el.addClass("alert-error"); el.find(".message").html(" " + _this.options.message + ""); } else if (_this.options.level == TYPES.INFO){ el.addClass("alert-info"); el.find(".message").html(" " + _this.options.message + ""); } else { el.find(".message").html(_this.options.message); } if (_this.options.css != null){ el.attr("style", _this.options.css); } if (_this.options.sticky){ el.find(".close").click(function(){ el.fadeOut(); el.nextAll(".jHueNotify").animate({ top:'-=' + (el.outerHeight() + MARGIN) }, 200); el.remove(); }).show(); el.show(); } else { var t = window.setTimeout(function(){ el.fadeOut(); el.nextAll(".jHueNotify").animate({ top:'-=' + (el.outerHeight() + MARGIN) }, 200); el.remove(); }, 3000); el.click(function(){ window.clearTimeout(t); $(this).stop(true); $(this).fadeOut(); $(this).nextAll(".jHueNotify").animate({ top:'-=' + ($(this).outerHeight() + MARGIN) }, 200); }); el.show(); } el.appendTo($("body")); }; $[pluginName] = function () { }; $[pluginName].info = function (message) { new Plugin({ level: TYPES.INFO, message: message}); }; $[pluginName].warn = function (message) { new Plugin({ level: TYPES.GENERAL, message: message, sticky: true}); }; $[pluginName].error = function (message) { new Plugin({ level: TYPES.ERROR, message: message, sticky: true}); }; $[pluginName].notify = function (options) { new Plugin(options); }; })(jQuery, window, document);