--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/myams-notify.js Thu Feb 13 11:43:31 2020 +0100
@@ -0,0 +1,527 @@
+/*
+ * MyAMS extensions for notification messages
+ * Version 0.1.2
+ * ©2014 Thierry Florac <tflorac@ulthar.net>
+ */
+
+
+(function ($, globals) {
+
+ 'use strict';
+
+ $(document).ready(function () {
+ $("body").append("<div id='divSmallBoxes'></div>")
+ .append("<div id='divMiniIcons'></div>")
+ .append("<div id='divBigBoxes'></div>");
+ });
+
+
+ function SmartUnLoading() {
+ $(".divMessageBox").fadeOut(300, function () {
+ $(this).remove();
+ });
+ $(".LoadingBoxContainer").fadeOut(300, function () {
+ $(this).remove();
+ });
+ }
+
+ var ExistMsg = 0,
+ SmartMSGboxCount = 0,
+ heightPrev,
+ BigBoxes = 0,
+ SmallBoxes = 0,
+ SmallBoxesAnchos = 0;
+
+
+ var ams = globals.MyAMS;
+
+ ams.notify = {
+
+ messageBox: function (options, callback) {
+
+ var SmartMSG,
+ Content,
+ isIE8 = ams.browser && ams.browser.isIE8orlower();
+ var defaults = {
+ title: "",
+ content: "",
+ status: "",
+ NormalButton: undefined,
+ ActiveButton: undefined,
+ buttons: undefined,
+ input: undefined,
+ placeholder: "",
+ options: undefined,
+ sound: undefined
+ };
+ var settings = $.extend({}, defaults, options);
+
+ if (settings.sound && (isIE8 === 0)) {
+ var audioElement = document.createElement("audio");
+ if (navigator.userAgent.match("Firefox/")) {
+ audioElement.setAttribute("src", ams.baseURL + '../sound/message.ogg');
+ } else {
+ audioElement.setAttribute("src", ams.baseURL + '../sound/message.mp3');
+ }
+ $.get();
+ audioElement.addEventListener("load", function () {
+ audioElement.play();
+ }, true);
+ audioElement.pause();
+ audioElement.play();
+ }
+ SmartMSGboxCount = SmartMSGboxCount + 1;
+ if (ExistMsg === 0) {
+ ExistMsg = 1;
+ SmartMSG = "<div class='MessageBox animated fadeIn fast' id='MsgBoxBack'></div>";
+ $("body").append(SmartMSG);
+ if (isIE8) {
+ $("#MsgBoxBack").addClass("MessageIE");
+ }
+ }
+ var i;
+ var InputType = "";
+ var HasInput = 0;
+ var Name = "";
+ var NumButtons = 0;
+ var btnClass;
+ if (settings.input !== undefined) {
+ HasInput = 1;
+ settings.input = settings.input.toLowerCase();
+ switch (settings.input) {
+ case "text":
+ InputType = "<input class='form-control' type='" + settings.input + "' id='txt" + SmartMSGboxCount + "' placeholder='" + settings.placeholder + "'/><br/><br/>";
+ break;
+ case "password":
+ InputType = "<input class='form-control' type='" + settings.input + "' id='txt" + SmartMSGboxCount + "' placeholder='" + settings.placeholder + "'/><br/><br/>";
+ break;
+ case "select":
+ if (settings.options === undefined) {
+ if (globals.alert) {
+ globals.alert("For this type of input, the options parameter is required.");
+ }
+ } else {
+ InputType = "<select class='form-control' id='txt" + SmartMSGboxCount + "'>";
+ for (i=0; i <= settings.options.length - 1; i++) {
+ if (settings.options[i] === "[") {
+ Name = "";
+ } else {
+ if (settings.options[i] === "]") {
+ NumButtons = NumButtons + 1;
+ Name = "<option>" + Name + "</option>";
+ InputType += Name;
+ } else {
+ Name += settings.options[i];
+ }
+ }
+ }
+ InputType += "</select>";
+ }
+ break;
+ default:
+ if (globals.alert) {
+ globals.alert("That type of input is not handled yet");
+ }
+ }
+ }
+ Content = "<div class='MessageBoxContainer " + settings.status + " animated fadeIn fast' id='Msg" + SmartMSGboxCount + "'>";
+ Content += "<div class='MessageBoxMiddle'>";
+ Content += "<span class='MsgTitle'>" + settings.title + "</span class='MsgTitle'>";
+ Content += "<p class='pText'>" + settings.content + "</p>";
+ Content += InputType;
+ Content += "<div class='MessageBoxButtonSection'>";
+ if (settings.buttons === undefined) {
+ settings.buttons = "[Accept]";
+ }
+ settings.buttons = $.trim(settings.buttons);
+ settings.buttons = settings.buttons.split("");
+ if (settings.NormalButton === undefined) {
+ settings.NormalButton = "#232323";
+ }
+ if (settings.ActiveButton === undefined) {
+ settings.ActiveButton = "#ed145b";
+ }
+ for (i=0; i <= settings.buttons.length - 1; i++) {
+ if (settings.buttons[i] === "[") {
+ Name = "";
+ } else {
+ if (settings.buttons[i] === "]") {
+ NumButtons = NumButtons + 1;
+ if (NumButtons === 1) {
+ btnClass = 'btn-primary';
+ } else {
+ btnClass = 'btn-default';
+ }
+ Name = "<button id='bot" + NumButtons + "-Msg" + SmartMSGboxCount + "' class='btn " + btnClass + " btn-sm botTempo'> " + Name + "</button>";
+ Content += Name;
+ } else {
+ Name += settings.buttons[i];
+ }
+ }
+ }
+ Content += "</div>";
+ Content += "</div>";
+ Content += "</div>";
+ if (SmartMSGboxCount > 1) {
+ $(".MessageBoxContainer").hide();
+ $(".MessageBoxContainer").css("z-index", 99999);
+ }
+ $(".MessageBox").append(Content);
+ if (HasInput === 1) {
+ $("#txt" + SmartMSGboxCount).focus();
+ }
+ $(".botTempo").hover(function () {
+ var ThisID = $(this).attr("id");
+ }, function () {
+ var ThisID = $(this).attr("id");
+ });
+ $(".botTempo").click(function () {
+ var ThisID = $(this).attr("id");
+ var MsgBoxID = ThisID.substr(ThisID.indexOf("-") + 1);
+ var Press = $.trim($(this).text());
+ if (HasInput === 1) {
+ if (typeof callback === "function") {
+ var IDNumber = MsgBoxID.replace("Msg", "");
+ var Value = $("#txt" + IDNumber).val();
+ if (callback) {
+ callback(Press, Value);
+ }
+ }
+ } else {
+ if (typeof callback === "function") {
+ if (callback) {
+ callback(Press);
+ }
+ }
+ }
+ $("#" + MsgBoxID).addClass("animated fadeOut fast");
+ SmartMSGboxCount = SmartMSGboxCount - 1;
+ if (SmartMSGboxCount === 0) {
+ $("#MsgBoxBack").removeClass("fadeIn").addClass("fadeOut").delay(300).queue(function () {
+ ExistMsg = 0;
+ $(this).remove();
+ });
+ }
+ });
+ },
+
+ bigBox: function (settings, callback) {
+ var boxBig, content;
+ settings = $.extend({
+ title: "",
+ content: "",
+ icon: undefined,
+ number: undefined,
+ color: undefined,
+ sound: true,
+ timeout: undefined,
+ colortime: 1500,
+ colors: undefined
+ }, settings);
+ if (settings.sound === true) {
+ if (ams.browser && (ams.browser.isIE8orlower() === 0)) {
+ var audioElement = document.createElement("audio");
+ if (navigator.userAgent.match("Firefox/")) {
+ audioElement.setAttribute("src", ams.baseURL + '../snd/bigbox.ogg');
+ } else {
+ audioElement.setAttribute("src", ams.baseURL + '../snd/bigbox.mp3');
+ }
+ $.get();
+ audioElement.addEventListener("load", function () {
+ audioElement.play();
+ }, true);
+ audioElement.pause();
+ audioElement.play();
+ }
+ }
+ BigBoxes = BigBoxes + 1;
+ boxBig = "<div id='bigBox" + BigBoxes + "' class='BigBox animated fadeIn fast'><div id='bigBoxColor" + BigBoxes + "'><i class='btnClose fa fa-times' id='btnClose" + BigBoxes + "'></i>";
+ if (settings.icon === undefined) {
+ settings.icon = "fa fa-cloud";
+ }
+ boxBig += "<span><i class='" + settings.icon + "'></i> " + settings.title + "</span>";
+ boxBig += "<p>" + settings.content + "</p>";
+ boxBig += "<div class='bigboxnumber'>";
+ if (settings.number !== undefined) {
+ boxBig += settings.number;
+ }
+ boxBig += "</div></div>";
+ boxBig += "</div>";
+ $("#divBigBoxes").append(boxBig);
+ if (settings.color === undefined) {
+ settings.color = "#004d60";
+ }
+ $("#bigBox" + BigBoxes).css("background-color", settings.color);
+ $("#divMiniIcons").append("<div id='miniIcon" + BigBoxes + "' class='cajita animated fadeIn' style='background-color: " + settings.color + ";'><i class='" + settings.icon + "'/></i></div>");
+ $("#miniIcon" + BigBoxes).bind("click", function () {
+ var FrontBox = $(this).attr("id");
+ var FrontBigBox = FrontBox.replace("miniIcon", "bigBox");
+ var FronBigBoxColor = FrontBox.replace("miniIcon", "bigBoxColor");
+ $(".cajita").each(function (index) {
+ var BackBox = $(this).attr("id");
+ var BigBoxID = BackBox.replace("miniIcon", "bigBox");
+ $("#" + BigBoxID).css("z-index", 9998);
+ });
+ $("#" + FrontBigBox).css("z-index", 9999);
+ $("#" + FronBigBoxColor).removeClass("animated fadeIn").delay(1).queue(function () {
+ $(this).show();
+ $(this).addClass("animated fadeIn");
+ $(this).clearQueue();
+ });
+ });
+ var ThisBigBoxCloseCross = $("#btnClose" + BigBoxes);
+ var ThisBigBox = $("#bigBox" + BigBoxes);
+ var ThisMiniIcon = $("#miniIcon" + BigBoxes);
+ var ColorTimeInterval;
+ if (settings.colors !== undefined && settings.colors.length > 0) {
+ ThisBigBoxCloseCross.attr("colorcount", "0");
+ ColorTimeInterval = setInterval(function () {
+ var ColorIndex = ThisBigBoxCloseCross.attr("colorcount");
+ ThisBigBoxCloseCross.animate({
+ backgroundColor: settings.colors[ColorIndex].color
+ });
+ ThisBigBox.animate({
+ backgroundColor: settings.colors[ColorIndex].color
+ });
+ ThisMiniIcon.animate({
+ backgroundColor: settings.colors[ColorIndex].color
+ });
+ if (ColorIndex < settings.colors.length - 1) {
+ ThisBigBoxCloseCross.attr("colorcount", ((ColorIndex * 1) + 1));
+ } else {
+ ThisBigBoxCloseCross.attr("colorcount", 0);
+ }
+ }, settings.colortime);
+ }
+ ThisBigBoxCloseCross.bind("click", function () {
+ clearInterval(ColorTimeInterval);
+ if (typeof callback === "function") {
+ if (callback) {
+ callback();
+ }
+ }
+ var FrontBox = $(this).attr("id");
+ var FrontBigBox = FrontBox.replace("btnClose", "bigBox");
+ var miniIcon = FrontBox.replace("btnClose", "miniIcon");
+ $("#" + FrontBigBox).removeClass("fadeIn fast");
+ $("#" + FrontBigBox).addClass("fadeOut fast").delay(300).queue(function () {
+ $(this).clearQueue();
+ $(this).remove();
+ });
+ $("#" + miniIcon).removeClass("fadeIn fast");
+ $("#" + miniIcon).addClass("fadeOut fast").delay(300).queue(function () {
+ $(this).clearQueue();
+ $(this).remove();
+ });
+ });
+ if (settings.timeout !== undefined) {
+ var TimedID = BigBoxes;
+ setTimeout(function () {
+ clearInterval(ColorTimeInterval);
+ var box = $("#bigBox" + TimedID);
+ box.removeClass("fadeIn fast");
+ box.addClass("fadeOut fast").delay(300).queue(function () {
+ $(this).clearQueue();
+ $(this).remove();
+ });
+ var icon = $("#miniIcon" + TimedID);
+ icon.removeClass("fadeIn fast");
+ icon.addClass("fadeOut fast").delay(300).queue(function () {
+ $(this).clearQueue();
+ $(this).remove();
+ });
+ }, settings.timeout);
+ }
+ },
+
+ smallBox: function (settings, callback) {
+ var BoxSmall, content;
+ settings = $.extend({
+ title: "",
+ content: "",
+ icon: undefined,
+ iconSmall: undefined,
+ sound: true,
+ color: undefined,
+ timeout: undefined,
+ colortime: 1500,
+ colors: undefined
+ }, settings);
+ if (settings.sound === true) {
+ if (ams.browser && (ams.browser.isIE8orlower() === 0)) {
+ var audioElement = document.createElement("audio");
+ if (navigator.userAgent.match("Firefox/")) {
+ audioElement.setAttribute("src", ams.baseURL + '../snd/smallbox.ogg');
+ } else {
+ audioElement.setAttribute("src", ams.baseURL + '../snd/smallbox.mp3');
+ }
+ $.get();
+ audioElement.addEventListener("load", function () {
+ audioElement.play();
+ }, true);
+ audioElement.pause();
+ audioElement.play();
+ }
+ }
+ SmallBoxes = SmallBoxes + 1;
+ BoxSmall = "";
+ var IconSection = "",
+ CurrentIDSmallbox = "smallbox" + SmallBoxes;
+ if (settings.iconSmall === undefined) {
+ IconSection = "<div class='miniIcon'></div>";
+ } else {
+ IconSection = "<div class='miniIcon'><i class='miniPic " + settings.iconSmall + "'></i></div>";
+ } if (settings.icon === undefined) {
+ BoxSmall = "<div id='smallbox" + SmallBoxes + "' class='SmallBox animated fadeInRight fast'><div class='textoFull'><span>" + settings.title + "</span><p>" + settings.content + "</p></div>" + IconSection + "</div>";
+ } else {
+ BoxSmall = "<div id='smallbox" + SmallBoxes + "' class='SmallBox animated fadeInRight fast'><div class='foto'><i class='" + settings.icon + "'></i></div><div class='textoFoto'><span>" + settings.title + "</span><p>" + settings.content + "</p></div>" + IconSection + "</div>";
+ } if (SmallBoxes === 1) {
+ $("#divSmallBoxes").append(BoxSmall);
+ SmallBoxesAnchos = $("#smallbox" + SmallBoxes).height() + 40;
+ } else {
+ var SmartExist = $(".SmallBox").size();
+ if (SmartExist === 0) {
+ $("#divSmallBoxes").append(BoxSmall);
+ SmallBoxesAnchos = $("#smallbox" + SmallBoxes).height() + 40;
+ } else {
+ $("#divSmallBoxes").append(BoxSmall);
+ $("#smallbox" + SmallBoxes).css("top", SmallBoxesAnchos);
+ SmallBoxesAnchos = SmallBoxesAnchos + $("#smallbox" + SmallBoxes).height() + 20;
+ $(".SmallBox").each(function (index) {
+ if (index === 0) {
+ $(this).css("top", 20);
+ heightPrev = $(this).height() + 40;
+ SmallBoxesAnchos = $(this).height() + 40;
+ } else {
+ $(this).css("top", heightPrev);
+ heightPrev = heightPrev + $(this).height() + 20;
+ SmallBoxesAnchos = SmallBoxesAnchos + $(this).height() + 20;
+ }
+ });
+ }
+ }
+ var ThisSmallBox = $("#smallbox" + SmallBoxes);
+ if (settings.color === undefined) {
+ ThisSmallBox.css("background-color", "#004d60");
+ } else {
+ ThisSmallBox.css("background-color", settings.color);
+ }
+ var ColorTimeInterval;
+ if (settings.colors !== undefined && settings.colors.length > 0) {
+ ThisSmallBox.attr("colorcount", "0");
+ ColorTimeInterval = setInterval(function () {
+ var ColorIndex = ThisSmallBox.attr("colorcount");
+ ThisSmallBox.animate({
+ backgroundColor: settings.colors[ColorIndex].color
+ });
+ if (ColorIndex < settings.colors.length - 1) {
+ ThisSmallBox.attr("colorcount", ((ColorIndex * 1) + 1));
+ } else {
+ ThisSmallBox.attr("colorcount", 0);
+ }
+ }, settings.colortime);
+ }
+ if (settings.timeout !== undefined) {
+ setTimeout(function () {
+ clearInterval(ColorTimeInterval);
+ var ThisHeight = $(this).height() + 20;
+ var ID = CurrentIDSmallbox;
+ var ThisTop = $("#" + CurrentIDSmallbox).css("top");
+ if ($("#" + CurrentIDSmallbox + ":hover").length !== 0) {
+ $("#" + CurrentIDSmallbox).on("mouseleave", function () {
+ SmallBoxesAnchos = SmallBoxesAnchos - ThisHeight;
+ $("#" + CurrentIDSmallbox).remove();
+ if (typeof callback === "function") {
+ if (callback) {
+ callback();
+ }
+ }
+ var Primero = 1;
+ var heightPrev = 0;
+ $(".SmallBox").each(function (index) {
+ if (index === 0) {
+ $(this).animate({
+ top: 20
+ }, 300);
+ heightPrev = $(this).height() + 40;
+ SmallBoxesAnchos = $(this).height() + 40;
+ } else {
+ $(this).animate({
+ top: heightPrev
+ }, 350);
+ heightPrev = heightPrev + $(this).height() + 20;
+ SmallBoxesAnchos = SmallBoxesAnchos + $(this).height() + 20;
+ }
+ });
+ });
+ } else {
+ clearInterval(ColorTimeInterval);
+ SmallBoxesAnchos = SmallBoxesAnchos - ThisHeight;
+ if (typeof callback === "function") {
+ if (callback) {
+ callback();
+ }
+ }
+ $("#" + CurrentIDSmallbox).removeClass().addClass("SmallBox").animate({
+ opacity: 0
+ }, 300, function () {
+ $(this).remove();
+ var Primero = 1;
+ var heightPrev = 0;
+ $(".SmallBox").each(function (index) {
+ if (index === 0) {
+ $(this).animate({
+ top: 20
+ }, 300);
+ heightPrev = $(this).height() + 40;
+ SmallBoxesAnchos = $(this).height() + 40;
+ } else {
+ $(this).animate({
+ top: heightPrev
+ });
+ heightPrev = heightPrev + $(this).height() + 20;
+ SmallBoxesAnchos = SmallBoxesAnchos + $(this).height() + 20;
+ }
+ });
+ });
+ }
+ }, settings.timeout);
+ }
+ $("#smallbox" + SmallBoxes).bind("click", function () {
+ clearInterval(ColorTimeInterval);
+ if (typeof callback === "function") {
+ if (callback) {
+ callback();
+ }
+ }
+ var ThisHeight = $(this).height() + 20;
+ var ID = $(this).attr("id");
+ var ThisTop = $(this).css("top");
+ SmallBoxesAnchos = SmallBoxesAnchos - ThisHeight;
+ $(this).removeClass().addClass("SmallBox").animate({
+ opacity: 0
+ }, 300, function () {
+ $(this).remove();
+ var Primero = 1;
+ var heightPrev = 0;
+ $(".SmallBox").each(function (index) {
+ if (index === 0) {
+ $(this).animate({
+ top: 20
+ }, 300);
+ heightPrev = $(this).height() + 40;
+ SmallBoxesAnchos = $(this).height() + 40;
+ } else {
+ $(this).animate({
+ top: heightPrev
+ }, 350);
+ heightPrev = heightPrev + $(this).height() + 20;
+ SmallBoxesAnchos = SmallBoxesAnchos + $(this).height() + 20;
+ }
+ });
+ });
+ });
+ }
+ };
+
+})(jQuery, this);