const currentToasts = []; /** * Generic function to create a new toast * @param {String} message The message to be displayed * @param {String} colorSelector The bootstrap color selector class, can be one of the following: text-bg-primary, text-bg-success, text-bg-danger, text-bg-warning, text-bg-info * @param {Number} autoHideTime The time in milliseconds to auto hide the toast, default is 3000 * @param {Boolean} autoReload Should the page reload after the toast is hidden, default is true (for compatibility with old code) * @returns {String} The id of the created toast, format: toast- */ function createNewToast(message, colorSelector, autoHideTime = 3000, autoReload = true){ const targetContainer = document.getElementById('toastMainController'); const masterToast = document.getElementById('masterToast'); const newToast = masterToast.cloneNode(true); newToast.classList.add(colorSelector) newToast.id = `toast-${currentToasts.length}`; console.log(newToast.childNodes[1]); newToast.childNodes[1].childNodes[1].innerHTML = message; targetContainer.appendChild(newToast); currentToasts.push(newToast); $(newToast).toast('show'); setTimeout(() => { destroyToast(newToast.id); if(autoReload){ location.reload(); } }, autoHideTime); return newToast.id; } /** * Generic function to destroy a toast * @param {String} id The id of the toast to destroy */ function destroyToast(id){ const targetContainer = document.getElementById('toastMainController'); const targetToast = document.getElementById(id); targetContainer.removeChild(targetToast); currentToasts.splice(currentToasts.indexOf(targetToast), 1); } // Moved here function normalizeToast(){ console.warn("Something is using the deprecated function normalizeToast(). Please use createNewToast() instead.") $('#generalToast').removeClass('text-bg-primary'); $('#generalToast').removeClass('text-bg-success'); $('#generalToast').removeClass('text-bg-danger'); $('#generalToast').removeClass('text-bg-warning'); $('#generalToast').removeClass('text-bg-info'); }