cables_dev/cables_ui/src/ui/elements/notification.js
let lastNotify = "";
let lastText = "";
let lastNotifyErr = "";
let lastTextErr = "";
let lastNotifyWarn = "";
let lastTextWarn = "";
/**
* configuration object for loading a patch
* @typedef {Object} NotificationDisplayOptions
* @hideconstructor
* @property {Number|Boolean} [timeout=2000] fade out notification after x ms, `false` to disable
* @property {Boolean} [closeable=false] show closing button on notification
* @property {Boolean} [force=false] force showing of notification even if last one was the same
*/
/**
* notifyError displays an error as a toast-notification
*
*
* @param title
* @param text
* @param {NotificationDisplayOptions} options The option object.
* @class
* @example
* notifyError("error", "something broke",
* {
* "timeout": false,
* "closeable": true,
* });
*/
export function notifyError(title, text, options = {})
{
const timeout = options.hasOwnProperty("timeout") ? options.timeout : 2000;
const closeable = options.closeable || false;
const force = options.force;
if (!force)
{
if (title === lastNotifyErr && text === lastTextErr)
{
setTimeout(function ()
{
lastNotifyErr = "";
lastTextErr = "";
}, 1000);
return;
}
}
lastNotifyErr = title;
lastTextErr = text;
const toastId = CABLES.uuid();
iziToast.error(
{
"id": toastId,
"position": "bottomRight", // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center
"theme": "dark",
"title": title,
"message": text || "",
"progressBar": false,
"animateInside": false,
"close": closeable,
"timeout": timeout
});
return toastId;
}
export function notifyWarn(title, text, options = {})
{
const timeout = options.hasOwnProperty("timeout") ? options.timeout : 2000;
const closeable = options.closeable || false;
const force = options.hasOwnProperty("force") ? options.force : true;
if (!force)
{
if (title === lastNotifyWarn && text === lastTextWarn)
{
setTimeout(function ()
{
lastNotifyWarn = "";
lastTextWarn = "";
}, 1000);
return;
}
}
lastNotifyWarn = title;
lastTextWarn = text;
const toastId = CABLES.uuid();
iziToast.warning(
{
"id": toastId,
"position": "bottomRight", // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center
"theme": "dark",
"title": title,
"message": text || "",
"progressBar": false,
"animateInside": false,
"close": closeable,
"timeout": timeout
});
return toastId;
}
/**
* notify displays a toast-notification
*
*
* @param title
* @param text
* @param {NotificationDisplayOptions} options The option object.
* @class
* @example
* notify("update", "cables has been updated",
* {
* "timeout": 1000,
* "closeable": false
* });
*/
export function notify(title, text = "", options = {})
{
if (gui.isRemoteClient) return;
const timeout = options.timeout || 2000;
const closeable = options.closeable || false;
const force = options.force || true;
if (!force)
{
if (title == lastNotify && text == lastText)
{
setTimeout(function ()
{
lastNotify = "";
lastText = "";
}, 1000);
return;
}
}
lastNotify = title;
lastText = text;
const toastId = CABLES.uuid();
iziToast.show(
{
"id": toastId,
"position": "bottomRight", // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center
"theme": "dark",
"title": title,
"message": text || "",
"progressBar": false,
"animateInside": false,
"close": closeable,
"timeout": timeout,
"buttons": options.buttons || []
});
return toastId;
}
export function hideNotificaton(toastId)
{
let toast = document.getElementById(toastId);
if (toast) iziToast.hide({}, toast);
}