|
|
@@ -8,10 +8,21 @@ __webpack_public_path__ = `${window.config?.assetUrlPrefix ?? '/assets'}/`; |
|
|
|
export function showGlobalErrorMessage(msg) { |
|
|
|
const pageContent = document.querySelector('.page-content'); |
|
|
|
if (!pageContent) return; |
|
|
|
const el = document.createElement('div'); |
|
|
|
el.innerHTML = `<div class="ui container negative message center aligned js-global-error" style="white-space: pre-line;"></div>`; |
|
|
|
el.childNodes[0].textContent = msg; |
|
|
|
pageContent.prepend(el.childNodes[0]); |
|
|
|
|
|
|
|
// compact the message to a data attribute to avoid too many duplicated messages |
|
|
|
const msgCompact = msg.replace(/\W/g, '').trim(); |
|
|
|
let msgDiv = pageContent.querySelector(`.js-global-error[data-global-error-msg-compact="${msgCompact}"]`); |
|
|
|
if (!msgDiv) { |
|
|
|
const el = document.createElement('div'); |
|
|
|
el.innerHTML = `<div class="ui container negative message center aligned js-global-error" style="white-space: pre-line;"></div>`; |
|
|
|
msgDiv = el.childNodes[0]; |
|
|
|
} |
|
|
|
// merge duplicated messages into "the message (count)" format |
|
|
|
const msgCount = Number(msgDiv.getAttribute(`data-global-error-msg-count`)) + 1; |
|
|
|
msgDiv.setAttribute(`data-global-error-msg-compact`, msgCompact); |
|
|
|
msgDiv.setAttribute(`data-global-error-msg-count`, msgCount.toString()); |
|
|
|
msgDiv.textContent = msg + (msgCount > 1 ? ` (${msgCount})` : ''); |
|
|
|
pageContent.prepend(msgDiv); |
|
|
|
} |
|
|
|
|
|
|
|
/** |