Files
raven-client/ayanova/src/api/gzdialog.js
2021-12-23 21:49:54 +00:00

187 lines
5.1 KiB
JavaScript

let VM_LOCAL = null;
//Calculate a reasonable time to show the alert based on the size of the message and some sane bounds
//https://ux.stackexchange.com/a/85898
function CalculateDelay(msg) {
//Min 2 seconds max 8 seconds
return Math.min(Math.max(msg.length * 50, 3000), 8000);
}
/////////////////////////////////
// Dialog, toast, notification
// utils and handlers
//
export default {
///////////////////////////////////
// WIRE UP DIALOG EVENTS
//
// called once from app.vue only
//
wireUpEventHandlers(vm) {
//###########################################
//Notifications: pops up and slowly disappears
//ACTUAL UI IN gznotify.vue
//###########################################
///////////
//ERROR
window.$gz.eventBus.$on("notify-error", function handleNotifyWarn(
msg,
helpUrl
) {
//log full message
window.$gz.store.commit("logItem", "notify-error: " + msg);
//trim really long message as it's likely useless beyond the first few lines (stack trace etc)
msg = msg.substring(0, 600);
vm.$root.$gznotify({
message: msg,
type: "error",
timeout: CalculateDelay(msg),
helpUrl: helpUrl
});
});
///////////
//WARNING
window.$gz.eventBus.$on("notify-warning", function handleNotifyWarn(
msg,
helpUrl
) {
window.$gz.store.commit("logItem", "notify-warning: " + msg);
msg = msg.substring(0, 600);
vm.$root.$gznotify({
message: msg,
type: "warning",
timeout: CalculateDelay(msg),
helpUrl: helpUrl
});
});
///////////
//INFO
window.$gz.eventBus.$on("notify-info", function handleNotifyInfo(
msg,
helpUrl
) {
window.$gz.store.commit("logItem", "notify-info: " + msg);
msg = msg.substring(0, 600);
vm.$root.$gznotify({
message: msg,
type: "info",
timeout: CalculateDelay(msg),
helpUrl: helpUrl
});
});
///////////
//SUCCESS
window.$gz.eventBus.$on("notify-success", function handleNotifySuccess(
msg,
helpUrl
) {
vm.$root.$gznotify({
message: msg,
type: "success",
timeout: CalculateDelay(msg),
helpUrl: helpUrl
});
});
VM_LOCAL = vm;
},
//###########################################
//CONFIRMATION DIALOGS
//ACTUAL UI IN gzconfirm.vue
//###########################################
/////////////////////////////////////
// Are you sure you want to delete?
//
confirmDelete() {
return VM_LOCAL.$root.$gzconfirm({
message: window.$gz.translation.get("DeletePrompt"),
yesButtonText: window.$gz.translation.get("Delete"),
noButtonText: window.$gz.translation.get("Cancel")
});
},
/////////////////////////////////////
// Are you sure you want to leave unsaved?
//
confirmLeaveUnsaved() {
return VM_LOCAL.$root.$gzconfirm({
message: window.$gz.translation.get("AreYouSureUnsavedChanges"),
yesButtonText: window.$gz.translation.get("Leave"),
noButtonText: window.$gz.translation.get("Cancel")
});
},
/////////////////////////////////////
// Display LT message with wait for ok
//
displayLTErrorMessage(tKeyText, tKeyTitle = undefined) {
return VM_LOCAL.$root.$gzconfirm({
message: tKeyText ? window.$gz.translation.get(tKeyText) : "",
title: tKeyTitle ? window.$gz.translation.get(tKeyTitle) : "",
yesButtonText: window.$gz.translation.get("OK"),
type: "error"
});
},
/////////////////////////////////////
// Display LT message with wait for ok
//
displayLTModalNotificationMessage(
tKeyText,
tKeyTitle = undefined,
ttype = "info",
tHelpUrl = undefined
) {
return VM_LOCAL.$root.$gzconfirm({
message: tKeyText ? window.$gz.translation.get(tKeyText) : "",
title: tKeyTitle ? window.$gz.translation.get(tKeyTitle) : "",
yesButtonText: window.$gz.translation.get("OK"),
type: ttype,
helpUrl: tHelpUrl
});
},
/////////////////////////////////////
// Custom confirmation
//
confirmGeneric(tKey, ttype = "info") {
return VM_LOCAL.$root.$gzconfirm({
message: window.$gz.translation.get(tKey),
yesButtonText: window.$gz.translation.get("OK"),
noButtonText: window.$gz.translation.get("Cancel"),
type: ttype
});
},
/////////////////////////////////////
// Custom confirmation pre-translated
//
confirmGenericPreTranslated(msg, ttype = "info") {
return VM_LOCAL.$root.$gzconfirm({
message: msg,
yesButtonText: window.$gz.translation.get("OK"),
noButtonText: window.$gz.translation.get("Cancel"),
type: ttype
});
},
/////////////////////////////////////
// Custom confirmation no translation
// with all options available
//
displayNoTranslationModalNotificationMessage(
tKeyText,
tKeyTitle = undefined,
ttype = "info",
tHelpUrl = undefined
) {
return VM_LOCAL.$root.$gzconfirm({
message: tKeyText,
title: tKeyTitle,
yesButtonText: window.$gz.translation.get("OK"),
type: ttype,
helpUrl: tHelpUrl
});
}
//new functions above here
};