@olenbetong/appframe-core 2.15.1 → 2.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/af.common.js +31 -6
- package/dist/esm/af.common.legacy.js +27 -2
- package/dist/esm/af.common.legacy.min.js +3 -3
- package/dist/esm/af.common.legacy.min.js.map +1 -1
- package/dist/esm/af.common.min.js +3 -3
- package/dist/esm/af.common.min.js.map +1 -1
- package/dist/iife/af.common.js +31 -6
- package/dist/iife/af.common.legacy.js +27 -2
- package/dist/iife/af.common.legacy.min.js +3 -3
- package/dist/iife/af.common.legacy.min.js.map +1 -1
- package/dist/iife/af.common.min.js +3 -3
- package/dist/iife/af.common.min.js.map +1 -1
- package/es/index.js +1 -1
- package/es/log.js +32 -0
- package/package.json +2 -2
- package/src/log.ts +34 -0
package/dist/esm/af.common.js
CHANGED
|
@@ -22,7 +22,7 @@ function mitt_default(n) {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
//#endregion
|
|
25
|
-
//#region \0@oxc-project+runtime@0.
|
|
25
|
+
//#region \0@oxc-project+runtime@0.151.0/helpers/esm/typeof.js
|
|
26
26
|
function _typeof(o) {
|
|
27
27
|
"@babel/helpers - typeof";
|
|
28
28
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -33,7 +33,7 @@ function _typeof(o) {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
//#endregion
|
|
36
|
-
//#region \0@oxc-project+runtime@0.
|
|
36
|
+
//#region \0@oxc-project+runtime@0.151.0/helpers/esm/toPrimitive.js
|
|
37
37
|
function toPrimitive(t, r) {
|
|
38
38
|
if ("object" != _typeof(t) || !t) return t;
|
|
39
39
|
var e = t[Symbol.toPrimitive];
|
|
@@ -46,14 +46,14 @@ function toPrimitive(t, r) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
//#endregion
|
|
49
|
-
//#region \0@oxc-project+runtime@0.
|
|
49
|
+
//#region \0@oxc-project+runtime@0.151.0/helpers/esm/toPropertyKey.js
|
|
50
50
|
function toPropertyKey(t) {
|
|
51
51
|
var i = toPrimitive(t, "string");
|
|
52
52
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
//#endregion
|
|
56
|
-
//#region \0@oxc-project+runtime@0.
|
|
56
|
+
//#region \0@oxc-project+runtime@0.151.0/helpers/esm/defineProperty.js
|
|
57
57
|
function _defineProperty(e, r, t) {
|
|
58
58
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
59
59
|
value: t,
|
|
@@ -263,6 +263,30 @@ async function logError(error) {
|
|
|
263
263
|
function getSessionId() {
|
|
264
264
|
return crypto.randomUUID?.();
|
|
265
265
|
}
|
|
266
|
+
/** The version in the first URL served under `/lib/@olenbetong/<name>/<version>/`. */
|
|
267
|
+
function libVersion(name, urls) {
|
|
268
|
+
let pattern = new RegExp(`/lib/@olenbetong/${name}/([^/]+)/`);
|
|
269
|
+
for (let url of urls) {
|
|
270
|
+
let match = typeof url === "string" ? pattern.exec(url) : null;
|
|
271
|
+
if (match) return match[1];
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* The synergi-chrome and synergi-platform versions the page loads on the 2026 site templates,
|
|
276
|
+
* read from the chrome's script tag and the platform import map rather than from the chrome
|
|
277
|
+
* itself, so they are known even when the chrome failed to start. Empty on other pages.
|
|
278
|
+
*/
|
|
279
|
+
function getPlatformVersions() {
|
|
280
|
+
let versions = {};
|
|
281
|
+
try {
|
|
282
|
+
let importMap = document.querySelector("script[type=\"importmap\"]");
|
|
283
|
+
let platform = importMap ? libVersion("synergi-platform", Object.values(JSON.parse(importMap.textContent ?? "{}").imports ?? {})) : void 0;
|
|
284
|
+
if (platform) versions["synergi-platform"] = platform;
|
|
285
|
+
} catch {}
|
|
286
|
+
let chrome = libVersion("synergi-chrome", Array.from(document.scripts, (script) => script.src)) ?? window.ob?.chrome?.version;
|
|
287
|
+
if (chrome) versions["synergi-chrome"] = chrome;
|
|
288
|
+
return versions;
|
|
289
|
+
}
|
|
266
290
|
let sessionStart = Date.now();
|
|
267
291
|
let sessionId = getSessionId();
|
|
268
292
|
let deviceId = "";
|
|
@@ -271,7 +295,8 @@ if ("document" in window) {
|
|
|
271
295
|
let startSession = () => logActivity("AfSessionInit", {
|
|
272
296
|
"appframe-core": window.af?.common?.version,
|
|
273
297
|
"appframe-data": window.af?.data?.version,
|
|
274
|
-
"app-version": window.af?.article?.version
|
|
298
|
+
"app-version": window.af?.article?.version,
|
|
299
|
+
...getPlatformVersions()
|
|
275
300
|
});
|
|
276
301
|
document.addEventListener("DOMContentLoaded", () => {
|
|
277
302
|
deviceId = localStorage.getItem("_afDeviceId");
|
|
@@ -2120,7 +2145,7 @@ function saveSettings(setting, value, article) {
|
|
|
2120
2145
|
|
|
2121
2146
|
//#endregion
|
|
2122
2147
|
//#region src/index.ts
|
|
2123
|
-
const version = "2.15.
|
|
2148
|
+
const version = "2.15.2";
|
|
2124
2149
|
|
|
2125
2150
|
//#endregion
|
|
2126
2151
|
export { ConfirmButtons, NO_FILTER_ID, RELATIVE_DATE_VALUES, SessionHandler, UserSession, addGroupAtPath, alert, canDeleteSavedFilter, canEditSavedFilter, canRenameSavedFilter, canSetCrossDomain, canShareSavedFilter, changeOperator, coerceParameterValue, coerceToStandardLayout, confirm, convertFilter, countExpressions, createEmptyFilter, createEmptyGroup, createExpression, createLocalizer, decodeXml, describeFilter, downloadBlob, downloadReport, downloadRequest, encodeXml, expose, fetchParameterDefault, findSavedFilter, getDefaultOperator, getDefaultParameterValues, getDynamicValueLabel, getDynamicValuesForField, getLocalizedString, getNodeAtPath, getOperatorArity, getOperatorLabel, getOperatorsForField, getReportExtension, getReportFileName, getReportFormats, getReportMediaType, getReportRequest, getSessionData, getSettings, getUserImage, getValueType, insertNodeAtPath, invariant, isCompleteExpression, isEmptyFilter, isExpression, isGroup, isProcedureDefault, isStandardLayout, localStorage_default as localStorage, localize, logActivity, logError, mitt_default as mitt, normalizeOperator, openAlertDialog, openReport, parseParameterItems, parseParameters, parseRecordSource, partitionSavedFilters, printReport, pruneFilter, readElement, readElements, removeNodeAtPath, renderReport, resolveParameterDefaults, restoreParameterValues, saveSettings, serializeParameters, setGroupMode, startActivity, time, toFieldMetadata, toFieldMetadataList, toFilterFieldType, toFilterTree, toLocalDateTime, toLocalISODate, toLocalISODateTime, toReport, toReportParameter, toReportParameters, toSavedFilter, toSavedFilters, unwrapSingleAndGroup, updateNodeAtPath, version, waitForDialog };
|
|
@@ -219,6 +219,30 @@ async function logError(error) {
|
|
|
219
219
|
function getSessionId() {
|
|
220
220
|
return crypto.randomUUID?.();
|
|
221
221
|
}
|
|
222
|
+
/** The version in the first URL served under `/lib/@olenbetong/<name>/<version>/`. */
|
|
223
|
+
function libVersion(name, urls) {
|
|
224
|
+
let pattern = new RegExp(`/lib/@olenbetong/${name}/([^/]+)/`);
|
|
225
|
+
for (let url of urls) {
|
|
226
|
+
let match = typeof url === "string" ? pattern.exec(url) : null;
|
|
227
|
+
if (match) return match[1];
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The synergi-chrome and synergi-platform versions the page loads on the 2026 site templates,
|
|
232
|
+
* read from the chrome's script tag and the platform import map rather than from the chrome
|
|
233
|
+
* itself, so they are known even when the chrome failed to start. Empty on other pages.
|
|
234
|
+
*/
|
|
235
|
+
function getPlatformVersions() {
|
|
236
|
+
let versions = {};
|
|
237
|
+
try {
|
|
238
|
+
let importMap = document.querySelector("script[type=\"importmap\"]");
|
|
239
|
+
let platform = importMap ? libVersion("synergi-platform", Object.values(JSON.parse(importMap.textContent ?? "{}").imports ?? {})) : void 0;
|
|
240
|
+
if (platform) versions["synergi-platform"] = platform;
|
|
241
|
+
} catch {}
|
|
242
|
+
let chrome = libVersion("synergi-chrome", Array.from(document.scripts, (script) => script.src)) ?? window.ob?.chrome?.version;
|
|
243
|
+
if (chrome) versions["synergi-chrome"] = chrome;
|
|
244
|
+
return versions;
|
|
245
|
+
}
|
|
222
246
|
let sessionStart = Date.now();
|
|
223
247
|
let sessionId = getSessionId();
|
|
224
248
|
let deviceId = "";
|
|
@@ -227,7 +251,8 @@ if ("document" in window) {
|
|
|
227
251
|
let startSession = () => logActivity("AfSessionInit", {
|
|
228
252
|
"appframe-core": window.af?.common?.version,
|
|
229
253
|
"appframe-data": window.af?.data?.version,
|
|
230
|
-
"app-version": window.af?.article?.version
|
|
254
|
+
"app-version": window.af?.article?.version,
|
|
255
|
+
...getPlatformVersions()
|
|
231
256
|
});
|
|
232
257
|
document.addEventListener("DOMContentLoaded", () => {
|
|
233
258
|
deviceId = localStorage.getItem("_afDeviceId");
|
|
@@ -2074,7 +2099,7 @@ function saveSettings(setting, value, article) {
|
|
|
2074
2099
|
|
|
2075
2100
|
//#endregion
|
|
2076
2101
|
//#region src/index.ts
|
|
2077
|
-
const version = "2.15.
|
|
2102
|
+
const version = "2.15.2";
|
|
2078
2103
|
|
|
2079
2104
|
//#endregion
|
|
2080
2105
|
export { ConfirmButtons, NO_FILTER_ID, RELATIVE_DATE_VALUES, SessionHandler, UserSession, addGroupAtPath, alert, canDeleteSavedFilter, canEditSavedFilter, canRenameSavedFilter, canSetCrossDomain, canShareSavedFilter, changeOperator, coerceParameterValue, coerceToStandardLayout, confirm, convertFilter, countExpressions, createEmptyFilter, createEmptyGroup, createExpression, createLocalizer, decodeXml, describeFilter, downloadBlob, downloadReport, downloadRequest, encodeXml, expose, fetchParameterDefault, findSavedFilter, getDefaultOperator, getDefaultParameterValues, getDynamicValueLabel, getDynamicValuesForField, getLocalizedString, getNodeAtPath, getOperatorArity, getOperatorLabel, getOperatorsForField, getReportExtension, getReportFileName, getReportFormats, getReportMediaType, getReportRequest, getSessionData, getSettings, getUserImage, getValueType, insertNodeAtPath, invariant, isCompleteExpression, isEmptyFilter, isExpression, isGroup, isProcedureDefault, isStandardLayout, localStorage_default as localStorage, localize, logActivity, logError, mitt_default as mitt, normalizeOperator, openAlertDialog, openReport, parseParameterItems, parseParameters, parseRecordSource, partitionSavedFilters, printReport, pruneFilter, readElement, readElements, removeNodeAtPath, renderReport, resolveParameterDefaults, restoreParameterValues, saveSettings, serializeParameters, setGroupMode, startActivity, time, toFieldMetadata, toFieldMetadataList, toFilterFieldType, toFilterTree, toLocalDateTime, toLocalISODate, toLocalISODateTime, toReport, toReportParameter, toReportParameters, toSavedFilter, toSavedFilters, unwrapSingleAndGroup, updateNodeAtPath, version, waitForDialog };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
function e(e){return{all:e||=/* @__PURE__ */ new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(e){e(n)}),(r=e.get(`*`))&&r.slice().map(function(e){e(t,n)})}}}var t=class{eventHandler=e();authenticated(){this.eventHandler.emit(`onAuthenticated`)}async expired(e,t){try{let n=new Promise(t=>{let n=()=>{this.eventHandler.off(`onAuthenticated`,n),e?.(),t()};this.eventHandler.on(`onAuthenticated`,n)}),r=document.querySelector(`dialog.session-expired-dialog`);if(r)await n;else{r=document.createElement(`dialog`),r.className=`session-expired-dialog`,r.style.display=`flex`,r.style.padding=`0`,r.style.left=`50%`,r.style.transform=`translateX(-50%)`;let e=`/login?ReturnUrl=%2fapi/sessionexpired/remove`;t===`RequireTwoFactor`?e=`/login?RequireTwoFactor=1&ReturnUrl=%2fapi/sessionexpired/remove`:await fetch(`/logout`,{method:`POST`}),r.innerHTML=`<iframe sandbox="allow-same-origin allow-scripts allow-modals allow-top-navigation-by-user-activation allow-forms" src="${e}" style="border:0;width:min(500px,100vw);height:min(700px, 100vh);"></iframe>`,document.body.append(r),r.showModal(),await n,r.remove()}}catch{window.location.href=`/login?ReturnUrl=${encodeURIComponent(window.location.pathname)}${encodeURIComponent(window.location.search)}`}}attachEvent(e,t){return this.eventHandler.on(e,t)}detachEvent(e,t){return this.eventHandler.off(e,t)}},n=class extends t{amDesignator=`a.m.`;dayNames=[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`];dayNamesShort=[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`];decimalSeparator=`.`;domain=`OB`;email;formats;groupSeparator=null;integratedSecurity=!1;isDeveloper=!1;login=``;loginType;monthNames=[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``];monthNamesShort=[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``];name;pmDesignator=`p.m.`;shortDateFormat=`dd.MM.yyyy`;culture=`en-GB`;uiculture=`en-GB`;constructor(e){super(),this.formats={},Object.assign(this,e)}};const r=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function i(e,t={},n=0){try{let i=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:r,timeElapsed:n,action:e,parameters:{...t,_session:p()}}),headers:{"Content-Type":`application/json`,Accept:`application/json`}});if(!i.ok){if(i.headers.get(`Content-Type`)?.includes(`application/json`)){let e=await i.json();console.error(e.error)}else console.error(`${i.status} ${i.statusText}`)}}catch{}}function a(e,t={}){let n=performance.now();return(r={})=>i(e,{...t,...r},performance.now()-n)}async function o(e){let t=performance.now();return[await e(),performance.now()-t]}async function s(e){try{if(!e)return;let t=typeof e==`string`?{error:e}:typeof e==`object`?`message`in e?{error:e.message,stack:e.stack??null}:{error:e.toString()}:{error:`Unspecified error`};console.error(e);let n=await fetch(`/data/Logger/LogError`,{method:`POST`,body:JSON.stringify(t),headers:{"Content-Type":`application/json; charset=utf-8`}});if(n.ok)return await n.json();console.error(Error(`Failed to log error`))}catch{}}function c(){return crypto.randomUUID?.()}let l=Date.now(),u=c(),d=``,f=``;if(`document`in window){let e=()=>i(`AfSessionInit`,{"appframe-core":window.af?.common?.version,"appframe-data":window.af?.data?.version,"app-version":window.af?.article?.version});document.addEventListener(`DOMContentLoaded`,()=>{d=localStorage.getItem(`_afDeviceId`),f=sessionStorage.getItem(`_afSessionId`),d||(d=c(),localStorage.setItem(`_afDeviceId`,d)),f||(f=u,sessionStorage.setItem(`_afSessionId`,f)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:r,action:`AfSessionEnd`,parameters:{_session:p()}})):e()})}function p(){return{browserSessionId:f,sessionStart:l,sessionLength:Date.now()-l,sessionId:u,deviceId:d}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?s(e.error):typeof e==`object`&&`message`in e&&s(e)});function m(e){return[af?.article?.id||``,`common`,e].join(`.`)}var ee=new class{isPersisted=()=>!0;getLocalStorageKey(e,t){return t?[`common`,e].join(`.`):m(e)}get(e,t,n){let r=this.getLocalStorageKey(e,n),i=localStorage.getItem(r);return i===null?t:JSON.parse(i)}set(e,t,n){localStorage.setItem(this.getLocalStorageKey(e,n),JSON.stringify(t))}remove(e,t){let n=this.getLocalStorageKey(e,t);return localStorage.getItem(n)!==null&&(localStorage.removeItem(n),!0)}clear(){let e=m(``);for(let t in localStorage)t.slice(0,e.length)===e&&localStorage.removeItem(t)}};function te(e){return e?ne(e).substring(0,10):null}function h(e,t=2){return String(e).padStart(t,`0`)}function ne(e){return e?`${e.getFullYear()}-${h(e.getMonth()+1)}-${h(e.getDate())}T${h(e.getHours())}:${h(e.getMinutes())}:${h(e.getSeconds())}.${h(e.getMilliseconds(),3)}`:null}function re(e){return e?e.toISOString().substring(0,16):``}function ie(e,t){return new Promise((n,r)=>{try{let r=URL.createObjectURL(e),i=document.body,a=document.createElement(`a`);a.setAttribute(`download`,t),a.href=r,i.append(a),a.click(),i.removeChild(a),setTimeout(()=>{URL.revokeObjectURL(r),n()},250)}catch(e){r(e)}})}function g(e,t){if(e)return;let n=typeof t==`function`?t():t;throw Error(n??`Invariant failed`)}async function ae(e,{fileName:t,signal:n,onProgress:r}){let i=0;r?.({status:`requested`});try{let n=await fetch(e);if(!n.ok||!n.body){if(n.headers.get(`content-type`)?.includes(`application/json`)){let e=await n.json();g(!e.error,e.error)}throw Error(`${n.status} ${n.statusText}`)}try{let e=n.body.getReader(),t=new ReadableStream({start:t=>{function n(){return e.read().then(e=>{if(e.done){t.close();return}return i+=e.value.length,r?.({bytesReceived:i,status:`downloading`}),t.enqueue(e.value),n()})}return n()}});n=new Response(t)}catch{}let a=await n.blob();r?.({bytesReceived:i,status:`downloaded`}),await ie(a,t),r?.({bytesReceived:i,status:`completed`})}catch(e){n?.aborted?r?.({status:`cancelled`}):r?.({error:e.message,status:`error`})}}const oe=/^function(?:\s+([a-zA-Z$_][a-zA-Z0-9$_]*))?\s*\(((?:(?:\s*[a-zA-Z$_][a-zA-Z0-9$_]*)(?:\s*,\s*[a-zA-Z$_][a-zA-Z0-9$_]*)*)?)\s*\)\s*\{((?:.|\n|\r)*)\}$/,se=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*\{([\s\S]*)\}$/,ce=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*([\s\S]+)$/,_=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function v(e){let t=e.toString(),n=t.match(se);if(n){let t=_(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(ce);if(r){let t=_(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(oe);return g(i,`Unable to parse function!`),{name:e.name??i[1],args:_(i[2]),body:i[3]}}function y(){}y.prototype=Object.create(null);function le(e,t){if(typeof e==`object`){if(typeof t==`string`)return le(e,t.split(`.`));if(Array.isArray(t)){let n=e;for(let e=0;e<t.length;e++)n=n[t[e]]=n[t[e]]||new y;return n}}}function ue(e,t,n={}){if(Array.isArray(t))for(let n of t){let{name:t}=v(n);g(t,`Unable to detect name of function! Name it, or only supply one function and include name in first parameter.`),ue(e,n)}else{let r,i;if(typeof t==`function`&&(r=v(t).name),typeof e==`string`){let t=e.split(`.`);r||(r=t[t.length-1],t=t.slice(0,t.length-1)),i=le(window,t)}else r&&(typeof e==`object`||typeof e==`function`)?i=e:g(!1,`Invalid typeof parameter 'name', or unable to parse pValue!`);Object.hasOwn(i,r)&&n?.overwrite!==!0?console.warn(`${[e,r].join(`.`)} is already defined!`):i[r]=t}}async function de(e,t){try{let n=await fetch(`/api/user/localize/new/${encodeURIComponent(t)}`,{body:JSON.stringify({text:e}),headers:{Accept:`application/json; */*`,"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`});if(n.ok)return await n.json()}catch{}return e}function fe(e){let t=window.af;if(!t)return;if(e){let n=t.i18n?.[e];if(n)return{dictionary:n,harvestAs:e}}let n=t.article;if(n?.i18n)return{dictionary:n.i18n,harvestAs:n.id}}function b(e,t){if(typeof e==`string`&&e.trim().length===0)return e;if(e===void 0||e===``||e===null)return;let{project:n,wait:r}=typeof t==`object`?t:{wait:t},i=fe(n);if(i===void 0)return e;let{dictionary:a,harvestAs:o}=i;if(!Object.hasOwn(a,e)){a[e]=e;let t=de(e,o).then(t=>(a[e]=t,t));if(r)return t}return a[e]}function pe(e){function t(t,n){return b(t,{project:e,wait:n})}function n(e,...n){let r=t(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return n.forEach((e,t)=>{r=r.replace(`$${t}`,String(e))}),r}return{project:e,getLocalizedString:t,localize:n}}const me=[`isnull`,`isnotnull`,`istrue`,`isfalse`,`isblank`,`isnotblank`],he=[`between`,`notbetween`,`datebetween`,`datenotbetween`],ge=[`inlist`,`notinlist`];function x(e){return me.includes(e)?`none`:he.includes(e)?`pair`:ge.includes(e)?`list`:`single`}const _e={equals:`Equal to`,notequals:`Not equal to`,greaterthan:`Greater than`,greaterthanorequal:`Greater than or equal to`,lessthan:`Less than`,lessthanorequal:`Less than or equal to`,beginswith:`Begins with`,notbeginswith:`Does not begin with`,endswith:`Ends with`,notendswith:`Does not end with`,contains:`Contains`,notcontains:`Does not contain`,like:`Like`,notlike:`Not like`,isnull:`Is null`,isnotnull:`Is not null`,isblank:`Is empty`,isnotblank:`Is not empty`,istrue:`Is true`,isfalse:`Is false`,inlist:`In list`,notinlist:`Not in list`,between:`Between`,notbetween:`Not between`,dateequals:`Equal to`,notdatequals:`Not equal to`,dategreaterthan:`After`,dategreaterthanorequal:`On or after`,datelessthan:`Before`,datelessthanorequal:`Up to`,datebetween:`Between`,datenotbetween:`Not between`},ve={greaterthan:`After`,greaterthanorequal:`On or after`,lessthan:`Before`,lessthanorequal:`Up to`};function ye(e,t){return b((t===`date`||t===`datetime`?ve[e]:void 0)??_e[e]??e)}const S=[`equals`,`notequals`],C=[`inlist`,`notinlist`],w=[`between`,`notbetween`],T=[`greaterthan`,`greaterthanorequal`,`lessthan`,`lessthanorequal`],be=[`contains`,`notcontains`,`beginswith`,`notbeginswith`,`endswith`,`notendswith`,`isblank`,`isnotblank`],xe={date:[...S,...C,...w,...T],datetime:[...S,...C,...w,...T],number:[...S,...C,...w,...T],boolean:[`istrue`,`isfalse`],string:[...S,...be,...C,...w,...T],uniqueidentifier:[...S,...be,...C,...w,...T]},Se={date:`equals`,datetime:`equals`,number:`equals`,boolean:`istrue`,string:`contains`,uniqueidentifier:`beginswith`};function Ce(e){let t=[...xe[e.type]??xe.string];return e.nullable&&e.type!==`boolean`&&t.push(`isnull`,`isnotnull`),t}function we(e){return Se[e.type]??`equals`}function E(e,t){if(x(t)===`none`)return`null`;switch(e.type){case`number`:return`number`;case`boolean`:return`boolean`;case`date`:case`datetime`:return`datetime`;case`uniqueidentifier`:return`uniqueidentifier`;default:return`string`}}const Te=[`Yesterday`,`Today`,`Tomorrow`,`ThisWeek`,`ThisMonth`,`ThisYear`,`LastWeek`,`LastMonth`,`LastYear`,`NextWeek`,`NextMonth`,`NextYear`],Ee={CurrentUser:`Current user`,Yesterday:`Yesterday`,Today:`Today`,Tomorrow:`Tomorrow`,ThisWeek:`This week`,ThisMonth:`This month`,ThisYear:`This year`,LastWeek:`Last week`,LastMonth:`Last month`,LastYear:`Last year`,NextWeek:`Next week`,NextMonth:`Next month`,NextYear:`Next year`,UserYesterday:`Yesterday`,UserToday:`Today`,UserTomorrow:`Tomorrow`,UserThisWeek:`This week`,UserThisMonth:`This month`,UserThisYear:`This year`,UserLastWeek:`Last week`,UserLastMonth:`Last month`,UserLastYear:`Last year`,UserNextWeek:`Next week`,UserNextMonth:`Next month`,UserNextYear:`Next year`};function D(e){return b(Ee[e]??e)}function De(e){return e.type===`date`||e.type===`datetime`?[...Te]:e.type===`string`?[`CurrentUser`]:[]}const Oe={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function O(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return Oe[t]??t}function k(){return A(`and`)}function A(e=`and`){return{type:`group`,mode:e,items:[]}}function j(e){return e.type===`group`}function M(e){return e.type===`expression`}function ke(e){return e?M(e)?{type:`group`,mode:`and`,items:[e]}:e:k()}function Ae(e){if(e.mode!==`or`||e.items.length!==1)return e;let[t]=e.items;return j(t)&&t.mode===`and`?t:e}function je(e){return N(e)===0}function N(e){return e?M(e)?1:e.items.reduce((e,t)=>e+N(t),0):0}function Me(e){if(!e)return null;if(M(e))return P(e)?{type:`group`,mode:`and`,items:[e]}:null;let t=e.items.map(e=>j(e)?Me(e):P(e)?e:null).filter(e=>e!==null);return t.length===0?null:{...e,items:t}}function P(e){if(j(e))return e.items.some(P);if(!e.column||!e.operator)return!1;let t=x(O(e.operator));return t===`none`?!0:e.value===null||e.value===void 0||e.value===``?!1:t===`pair`?Array.isArray(e.value)&&e.value.length===2&&e.value.every(e=>e!==``&&e!=null):t!==`list`||Array.isArray(e.value)&&e.value.length>0}function Ne(e,t){let n=t??we(e);return{type:`expression`,column:e.name,operator:n,value:Pe(n),valueType:E(e,n)}}function Pe(e){switch(x(e)){case`none`:return null;case`pair`:return[``,``];case`list`:return[];default:return``}}function Fe(e,t,n){let r=x(O(e.operator)),i=x(t),a=e.value;i!==r&&(a=Pe(t));let o=e.valueType===`special`&&i===r?`special`:E(n,t);return{...e,operator:t,value:a,valueType:o}}function Ie(e,t){let n=e;for(let e of t){if(!n||!j(n))return null;n=n.items[e]}return n??null}function F(e,t,n){if(t.length===0)return n(e)??e;if(!j(e))return e;let[r,...i]=t,a=e.items[r];if(!a)return e;let o=[...e.items];if(i.length===0){let e=n(a);e===null?o.splice(r,1):o[r]=e}else o[r]=F(a,i,n);return{...e,items:o}}function Le(e,t,n){return F(e,t,e=>j(e)?{...e,items:[...e.items,n]}:e)}function Re(e,t){return t.length===0?k():F(e,t,()=>null)}function ze(e,t,n){return F(e,t,e=>j(e)?{...e,mode:n}:e)}function Be(e,t=[]){let n=Ie(e,t);return Le(e,t,A(n&&j(n)&&n.mode===`and`?`or`:`and`))}async function Ve(e,t){let n=await fetch(`/api/filter/convert`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t});if(!n.ok)throw Error(`Failed to convert filter: ${n.status} ${n.statusText}`);let r=await n.json();return{...r,filterObject:r.filterObject?ke(r.filterObject):null}}function He(e,t={}){return e?Ue(e,new Map((t.fields??[]).map(e=>[e.name.toLowerCase(),e])),0):``}function Ue(e,t,n){if(M(e))return We(e,t);let r=e.items.map(e=>Ue(e,t,n+1)).filter(e=>e!==``);if(r.length===0)return``;if(r.length===1)return r[0];let i=e.mode===`or`?` OR `:` AND `,a=r.join(i);return n===0?a:`(${a})`}function We(e,t){if(!e.column||!e.operator)return``;let n=t.get(e.column.toLowerCase()),r=n?.caption??e.column,i=O(e.operator),a=ye(i,n?.type),o=x(i);return o===`none`?`[${r}] ${a}`:`[${r}] ${a} ${Ge(e,o)}`}function Ge(e,t){let{value:n,valueType:r}=e;if(r===`special`&&typeof n==`string`)return D(n);if(Array.isArray(n)){let e=n.map(e=>Ke(e,r));return t===`pair`?e.join(` - `):`(${e.join(`, `)})`}return Ke(n,r)}function Ke(e,t){return e==null?``:e instanceof Date?e.toISOString().slice(0,10):typeof e==`number`||typeof e==`boolean`||t===`number`||t===`boolean`?String(e):`'${String(e)}'`}const qe=[`string`,`number`,`boolean`,`date`,`datetime`,`uniqueidentifier`];function I(e){let t=e?.trim().toLowerCase();return qe.find(e=>e===t)??`string`}function Je(e){return e===!0||e===1}function Ye(e){return{name:e.FieldName??``,type:I(e.DataType),nullable:Je(e.Nullable),excludeFromFilter:Je(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function Xe(e){return e.map(Ye).filter(e=>e.name!==``&&!e.excludeFromFilter).sort((e,t)=>e.name.localeCompare(t.name))}function Ze(e){return!e||M(e)||e.mode!==`or`?!1:e.items.every(e=>j(e)&&e.mode===`and`&&e.items.every(M))}function Qe(e){if(!e)return{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:[]}]};if(M(e))return{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:[e]}]};if(e.mode===`or`){let t=e.items.map(e=>{let t=[];return L(e,t),{type:`group`,mode:`and`,items:t}});return{type:`group`,mode:`or`,items:t.length>0?t:[{type:`group`,mode:`and`,items:[]}]}}let t=[];return L(e,t),{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:t}]}}function L(e,t){if(M(e)){t.push(e);return}for(let n of e.items)L(n,t)}const $e=-1;function et(e){return{filterId:e.FilterID??-1,primKey:e.PrimKey??``,name:e.FilterName??``,criteria:e.FilterCriteria??``,dbObjectId:e.DBObjectID??``,accessLevel:tt(e.AccessLevel),createdByUser:R(e.CreatedByUser),createdBy:e.CreatedBy??``,domain:e.Domain??null,crossDomain:R(e.CrossDomain),isPersonallyShared:R(e.IsPersonallyShared),hideCriteria:R(e.HideFilterCriteria),headerText:e.OptionalHeaderText||null,comment:e.OptionalComment||null,parameters:e.Parameters||null,reportTitle:e.ReportTitle||null,created:nt(e.Created),updated:nt(e.Updated)}}function tt(e){return e===`Manager`||e===`Editor`?e:`Reader`}function R(e){return typeof e==`string`?e.toLowerCase()===`true`:!!e}function nt(e){if(!e)return null;if(e instanceof Date)return e;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function rt(e){return e.filter(e=>(e.FilterID??-1)!==-1).map(et).sort((e,t)=>e.name.localeCompare(t.name))}function it(e){let t=[],n=[];for(let r of e)r.createdByUser?t.push(r):n.push(r);return{mine:t,shared:n}}function at(e,t){if(t!=null)return e.find(e=>e.filterId===t)}function ot(e){return e.accessLevel===`Editor`||e.accessLevel===`Manager`}function st(e){return e.accessLevel===`Manager`}function z(e){return e.createdByUser}const ct=z,lt=z,ut={xs:64,sm:128,md:256,lg:512,xl:void 0};function dt(e,t,n,r=`xs`){if(e&&typeof e==`object`)return dt(e.primKey,e.login,e.hash,e.size);if(!e||!n)return``;let i=ut[r];return`/api/data/blob/EmployeesLookup/${e}/Image/${encodeURIComponent(t??``)}${t?`.`:``}${encodeURIComponent(n)}.jpg${i?`?width=${i}`:``}`}function ft(e,...t){g(Array.isArray(e)&&e.length===t.length+1,`Method 'localize' must be used as a tag function`);let n=b(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return t.forEach((e,t)=>{n=n.replace(`$${t}`,e)}),n}const pt={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};function B(e){return e.replace(/&(#x?[0-9a-f]+|[a-z]+);/gi,(e,t)=>t.startsWith(`#x`)||t.startsWith(`#X`)?String.fromCodePoint(Number.parseInt(t.slice(2),16)):t.startsWith(`#`)?String.fromCodePoint(Number.parseInt(t.slice(1),10)):pt[t.toLowerCase()]??e)}function V(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function H(e,t){let n=RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`).exec(e);if(!n)return null;let r=B(n[1]).trim();return r===``?null:r}function mt(e,t){return[...e.matchAll(RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,`g`))].map(e=>B(e[1]).trim())}const ht={Byte:`number`,Decimal:`number`,Double:`number`,Int16:`number`,Int32:`number`,Int64:`number`,Single:`number`,Boolean:`boolean`,DateTime:`date`};function gt(e){let t=/<SelectColumns>([\s\S]*?)<\/SelectColumns>/.exec(e)?.[1]??``,n=[];for(let e of t.matchAll(/<afSelectColumn>([\s\S]*?)<\/afSelectColumn>/g)){let t=H(e[1],`Name`);t&&n.push({name:t,type:ht[H(e[1],`DataType`)??``]??`string`})}return n}function U(e){if(!e||!e.includes(`<afRecordSource`))return null;let t=H(e,`ViewName`);if(!t)return null;let n=H(e,`MaxRecords`);return{viewName:t,columns:gt(e),whereClause:H(e,`WhereClause`),filterString:H(e,`FilterString`),maxRecords:n===null||n===`0`?null:Number(n)}}const _t=[`String`,`Integer`,`Double`,`Date`,`Boolean`],vt=/^[a-z]stp_/i;function W(e){return typeof e==`string`&&vt.test(e.trim())}function yt(e){return e?e.split(/\r\n|\r|\n/).map(e=>e.trim()).filter(e=>e!==``):[]}function bt(e){return _t.find(t=>t.toLowerCase()===e?.trim().toLowerCase())??`String`}function xt(e,t,n){if(t)return`lookup`;if(n)return`select`;switch(e){case`Integer`:case`Double`:return`number`;case`Date`:return`date`;case`Boolean`:return`boolean`;default:return`text`}}function St(e){let t=e.Name??``,n=bt(e.DataType),r=yt(e.Items),i=U(e.RecordSource),a=e.ValueMember??null;i&&!a&&(a=i.columns[0]?.name??null);let o=i?.columns.find(e=>e.name!==a)?.name??null,s=!!(i&&a);return{name:t,label:e.Label?.trim()||t,description:e.Description?.trim()||null,type:n,editor:xt(n,s,r.length>0),defaultValue:e.DefaultValue??null,items:r,recordSource:s?i:null,valueMember:s?a:null,displayMember:s?o:null,sortOrder:e.SortOrder??0,lookupWidth:e.LookupWidth??null,lookupHeight:e.LookupHeight??null}}function Ct(e){return e.filter(e=>e.Name).map(St).sort((e,t)=>e.sortOrder-t.sortOrder||e.label.localeCompare(t.label))}function G(e,t){if(t==null||t===``)return e.type!==`Boolean`&&null;switch(e.type){case`Boolean`:return typeof t==`boolean`?t:/^(true|1|ja|yes)$/i.test(String(t));case`Integer`:{let e=Number.parseInt(String(t),10);return Number.isNaN(e)?null:e}case`Double`:{let e=Number(String(t).replace(`,`,`.`));return Number.isNaN(e)?null:e}default:return String(t)}}function wt(e){let t={};for(let n of e)t[n.name]=W(n.defaultValue)?G(n,null):G(n,n.defaultValue);return t}function Tt(e,t){return t==null?``:typeof t==`boolean`?t?`True`:`False`:String(t)}function Et(e,t){return`<Parameters Version="1">\n${e.map(e=>{let n=Tt(e,t[e.name]??null);return` <Parameter Name="${V(e.name)}" Type="${e.type}">${V(n)}</Parameter>`}).join(`
|
|
2
|
-
`)}\n</Parameters>`}function
|
|
1
|
+
function e(e){return{all:e||=/* @__PURE__ */ new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(e){e(n)}),(r=e.get(`*`))&&r.slice().map(function(e){e(t,n)})}}}var t=class{eventHandler=e();authenticated(){this.eventHandler.emit(`onAuthenticated`)}async expired(e,t){try{let n=new Promise(t=>{let n=()=>{this.eventHandler.off(`onAuthenticated`,n),e?.(),t()};this.eventHandler.on(`onAuthenticated`,n)}),r=document.querySelector(`dialog.session-expired-dialog`);if(r)await n;else{r=document.createElement(`dialog`),r.className=`session-expired-dialog`,r.style.display=`flex`,r.style.padding=`0`,r.style.left=`50%`,r.style.transform=`translateX(-50%)`;let e=`/login?ReturnUrl=%2fapi/sessionexpired/remove`;t===`RequireTwoFactor`?e=`/login?RequireTwoFactor=1&ReturnUrl=%2fapi/sessionexpired/remove`:await fetch(`/logout`,{method:`POST`}),r.innerHTML=`<iframe sandbox="allow-same-origin allow-scripts allow-modals allow-top-navigation-by-user-activation allow-forms" src="${e}" style="border:0;width:min(500px,100vw);height:min(700px, 100vh);"></iframe>`,document.body.append(r),r.showModal(),await n,r.remove()}}catch{window.location.href=`/login?ReturnUrl=${encodeURIComponent(window.location.pathname)}${encodeURIComponent(window.location.search)}`}}attachEvent(e,t){return this.eventHandler.on(e,t)}detachEvent(e,t){return this.eventHandler.off(e,t)}},n=class extends t{amDesignator=`a.m.`;dayNames=[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`];dayNamesShort=[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`];decimalSeparator=`.`;domain=`OB`;email;formats;groupSeparator=null;integratedSecurity=!1;isDeveloper=!1;login=``;loginType;monthNames=[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``];monthNamesShort=[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``];name;pmDesignator=`p.m.`;shortDateFormat=`dd.MM.yyyy`;culture=`en-GB`;uiculture=`en-GB`;constructor(e){super(),this.formats={},Object.assign(this,e)}};const r=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function i(e,t={},n=0){try{let i=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:r,timeElapsed:n,action:e,parameters:{...t,_session:h()}}),headers:{"Content-Type":`application/json`,Accept:`application/json`}});if(!i.ok){if(i.headers.get(`Content-Type`)?.includes(`application/json`)){let e=await i.json();console.error(e.error)}else console.error(`${i.status} ${i.statusText}`)}}catch{}}function a(e,t={}){let n=performance.now();return(r={})=>i(e,{...t,...r},performance.now()-n)}async function o(e){let t=performance.now();return[await e(),performance.now()-t]}async function s(e){try{if(!e)return;let t=typeof e==`string`?{error:e}:typeof e==`object`?`message`in e?{error:e.message,stack:e.stack??null}:{error:e.toString()}:{error:`Unspecified error`};console.error(e);let n=await fetch(`/data/Logger/LogError`,{method:`POST`,body:JSON.stringify(t),headers:{"Content-Type":`application/json; charset=utf-8`}});if(n.ok)return await n.json();console.error(Error(`Failed to log error`))}catch{}}function c(){return crypto.randomUUID?.()}function l(e,t){let n=RegExp(`/lib/@olenbetong/${e}/([^/]+)/`);for(let e of t){let t=typeof e==`string`?n.exec(e):null;if(t)return t[1]}}function u(){let e={};try{let t=document.querySelector(`script[type="importmap"]`),n=t?l(`synergi-platform`,Object.values(JSON.parse(t.textContent??`{}`).imports??{})):void 0;n&&(e[`synergi-platform`]=n)}catch{}let t=l(`synergi-chrome`,Array.from(document.scripts,e=>e.src))??window.ob?.chrome?.version;return t&&(e[`synergi-chrome`]=t),e}let d=Date.now(),f=c(),p=``,m=``;if(`document`in window){let e=()=>i(`AfSessionInit`,{"appframe-core":window.af?.common?.version,"appframe-data":window.af?.data?.version,"app-version":window.af?.article?.version,...u()});document.addEventListener(`DOMContentLoaded`,()=>{p=localStorage.getItem(`_afDeviceId`),m=sessionStorage.getItem(`_afSessionId`),p||(p=c(),localStorage.setItem(`_afDeviceId`,p)),m||(m=f,sessionStorage.setItem(`_afSessionId`,m)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:r,action:`AfSessionEnd`,parameters:{_session:h()}})):e()})}function h(){return{browserSessionId:m,sessionStart:d,sessionLength:Date.now()-d,sessionId:f,deviceId:p}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?s(e.error):typeof e==`object`&&`message`in e&&s(e)});function ee(e){return[af?.article?.id||``,`common`,e].join(`.`)}var te=new class{isPersisted=()=>!0;getLocalStorageKey(e,t){return t?[`common`,e].join(`.`):ee(e)}get(e,t,n){let r=this.getLocalStorageKey(e,n),i=localStorage.getItem(r);return i===null?t:JSON.parse(i)}set(e,t,n){localStorage.setItem(this.getLocalStorageKey(e,n),JSON.stringify(t))}remove(e,t){let n=this.getLocalStorageKey(e,t);return localStorage.getItem(n)!==null&&(localStorage.removeItem(n),!0)}clear(){let e=ee(``);for(let t in localStorage)t.slice(0,e.length)===e&&localStorage.removeItem(t)}};function ne(e){return e?re(e).substring(0,10):null}function g(e,t=2){return String(e).padStart(t,`0`)}function re(e){return e?`${e.getFullYear()}-${g(e.getMonth()+1)}-${g(e.getDate())}T${g(e.getHours())}:${g(e.getMinutes())}:${g(e.getSeconds())}.${g(e.getMilliseconds(),3)}`:null}function ie(e){return e?e.toISOString().substring(0,16):``}function ae(e,t){return new Promise((n,r)=>{try{let r=URL.createObjectURL(e),i=document.body,a=document.createElement(`a`);a.setAttribute(`download`,t),a.href=r,i.append(a),a.click(),i.removeChild(a),setTimeout(()=>{URL.revokeObjectURL(r),n()},250)}catch(e){r(e)}})}function _(e,t){if(e)return;let n=typeof t==`function`?t():t;throw Error(n??`Invariant failed`)}async function oe(e,{fileName:t,signal:n,onProgress:r}){let i=0;r?.({status:`requested`});try{let n=await fetch(e);if(!n.ok||!n.body){if(n.headers.get(`content-type`)?.includes(`application/json`)){let e=await n.json();_(!e.error,e.error)}throw Error(`${n.status} ${n.statusText}`)}try{let e=n.body.getReader(),t=new ReadableStream({start:t=>{function n(){return e.read().then(e=>{if(e.done){t.close();return}return i+=e.value.length,r?.({bytesReceived:i,status:`downloading`}),t.enqueue(e.value),n()})}return n()}});n=new Response(t)}catch{}let a=await n.blob();r?.({bytesReceived:i,status:`downloaded`}),await ae(a,t),r?.({bytesReceived:i,status:`completed`})}catch(e){n?.aborted?r?.({status:`cancelled`}):r?.({error:e.message,status:`error`})}}const se=/^function(?:\s+([a-zA-Z$_][a-zA-Z0-9$_]*))?\s*\(((?:(?:\s*[a-zA-Z$_][a-zA-Z0-9$_]*)(?:\s*,\s*[a-zA-Z$_][a-zA-Z0-9$_]*)*)?)\s*\)\s*\{((?:.|\n|\r)*)\}$/,ce=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*\{([\s\S]*)\}$/,le=/^(?:\(([^)]*)\)|([a-zA-Z$_][a-zA-Z0-9$_]*))\s*=>\s*([\s\S]+)$/,v=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function ue(e){let t=e.toString(),n=t.match(ce);if(n){let t=v(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(le);if(r){let t=v(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(se);return _(i,`Unable to parse function!`),{name:e.name??i[1],args:v(i[2]),body:i[3]}}function de(){}de.prototype=Object.create(null);function fe(e,t){if(typeof e==`object`){if(typeof t==`string`)return fe(e,t.split(`.`));if(Array.isArray(t)){let n=e;for(let e=0;e<t.length;e++)n=n[t[e]]=n[t[e]]||new de;return n}}}function pe(e,t,n={}){if(Array.isArray(t))for(let n of t){let{name:t}=ue(n);_(t,`Unable to detect name of function! Name it, or only supply one function and include name in first parameter.`),pe(e,n)}else{let r,i;if(typeof t==`function`&&(r=ue(t).name),typeof e==`string`){let t=e.split(`.`);r||(r=t[t.length-1],t=t.slice(0,t.length-1)),i=fe(window,t)}else r&&(typeof e==`object`||typeof e==`function`)?i=e:_(!1,`Invalid typeof parameter 'name', or unable to parse pValue!`);Object.hasOwn(i,r)&&n?.overwrite!==!0?console.warn(`${[e,r].join(`.`)} is already defined!`):i[r]=t}}async function me(e,t){try{let n=await fetch(`/api/user/localize/new/${encodeURIComponent(t)}`,{body:JSON.stringify({text:e}),headers:{Accept:`application/json; */*`,"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`});if(n.ok)return await n.json()}catch{}return e}function he(e){let t=window.af;if(!t)return;if(e){let n=t.i18n?.[e];if(n)return{dictionary:n,harvestAs:e}}let n=t.article;if(n?.i18n)return{dictionary:n.i18n,harvestAs:n.id}}function y(e,t){if(typeof e==`string`&&e.trim().length===0)return e;if(e===void 0||e===``||e===null)return;let{project:n,wait:r}=typeof t==`object`?t:{wait:t},i=he(n);if(i===void 0)return e;let{dictionary:a,harvestAs:o}=i;if(!Object.hasOwn(a,e)){a[e]=e;let t=me(e,o).then(t=>(a[e]=t,t));if(r)return t}return a[e]}function ge(e){function t(t,n){return y(t,{project:e,wait:n})}function n(e,...n){let r=t(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return n.forEach((e,t)=>{r=r.replace(`$${t}`,String(e))}),r}return{project:e,getLocalizedString:t,localize:n}}const _e=[`isnull`,`isnotnull`,`istrue`,`isfalse`,`isblank`,`isnotblank`],ve=[`between`,`notbetween`,`datebetween`,`datenotbetween`],ye=[`inlist`,`notinlist`];function b(e){return _e.includes(e)?`none`:ve.includes(e)?`pair`:ye.includes(e)?`list`:`single`}const be={equals:`Equal to`,notequals:`Not equal to`,greaterthan:`Greater than`,greaterthanorequal:`Greater than or equal to`,lessthan:`Less than`,lessthanorequal:`Less than or equal to`,beginswith:`Begins with`,notbeginswith:`Does not begin with`,endswith:`Ends with`,notendswith:`Does not end with`,contains:`Contains`,notcontains:`Does not contain`,like:`Like`,notlike:`Not like`,isnull:`Is null`,isnotnull:`Is not null`,isblank:`Is empty`,isnotblank:`Is not empty`,istrue:`Is true`,isfalse:`Is false`,inlist:`In list`,notinlist:`Not in list`,between:`Between`,notbetween:`Not between`,dateequals:`Equal to`,notdatequals:`Not equal to`,dategreaterthan:`After`,dategreaterthanorequal:`On or after`,datelessthan:`Before`,datelessthanorequal:`Up to`,datebetween:`Between`,datenotbetween:`Not between`},xe={greaterthan:`After`,greaterthanorequal:`On or after`,lessthan:`Before`,lessthanorequal:`Up to`};function Se(e,t){return y((t===`date`||t===`datetime`?xe[e]:void 0)??be[e]??e)}const x=[`equals`,`notequals`],S=[`inlist`,`notinlist`],C=[`between`,`notbetween`],w=[`greaterthan`,`greaterthanorequal`,`lessthan`,`lessthanorequal`],Ce=[`contains`,`notcontains`,`beginswith`,`notbeginswith`,`endswith`,`notendswith`,`isblank`,`isnotblank`],we={date:[...x,...S,...C,...w],datetime:[...x,...S,...C,...w],number:[...x,...S,...C,...w],boolean:[`istrue`,`isfalse`],string:[...x,...Ce,...S,...C,...w],uniqueidentifier:[...x,...Ce,...S,...C,...w]},Te={date:`equals`,datetime:`equals`,number:`equals`,boolean:`istrue`,string:`contains`,uniqueidentifier:`beginswith`};function Ee(e){let t=[...we[e.type]??we.string];return e.nullable&&e.type!==`boolean`&&t.push(`isnull`,`isnotnull`),t}function De(e){return Te[e.type]??`equals`}function T(e,t){if(b(t)===`none`)return`null`;switch(e.type){case`number`:return`number`;case`boolean`:return`boolean`;case`date`:case`datetime`:return`datetime`;case`uniqueidentifier`:return`uniqueidentifier`;default:return`string`}}const E=[`Yesterday`,`Today`,`Tomorrow`,`ThisWeek`,`ThisMonth`,`ThisYear`,`LastWeek`,`LastMonth`,`LastYear`,`NextWeek`,`NextMonth`,`NextYear`],Oe={CurrentUser:`Current user`,Yesterday:`Yesterday`,Today:`Today`,Tomorrow:`Tomorrow`,ThisWeek:`This week`,ThisMonth:`This month`,ThisYear:`This year`,LastWeek:`Last week`,LastMonth:`Last month`,LastYear:`Last year`,NextWeek:`Next week`,NextMonth:`Next month`,NextYear:`Next year`,UserYesterday:`Yesterday`,UserToday:`Today`,UserTomorrow:`Tomorrow`,UserThisWeek:`This week`,UserThisMonth:`This month`,UserThisYear:`This year`,UserLastWeek:`Last week`,UserLastMonth:`Last month`,UserLastYear:`Last year`,UserNextWeek:`Next week`,UserNextMonth:`Next month`,UserNextYear:`Next year`};function ke(e){return y(Oe[e]??e)}function Ae(e){return e.type===`date`||e.type===`datetime`?[...E]:e.type===`string`?[`CurrentUser`]:[]}const je={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function D(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return je[t]??t}function O(){return k(`and`)}function k(e=`and`){return{type:`group`,mode:e,items:[]}}function A(e){return e.type===`group`}function j(e){return e.type===`expression`}function Me(e){return e?j(e)?{type:`group`,mode:`and`,items:[e]}:e:O()}function Ne(e){if(e.mode!==`or`||e.items.length!==1)return e;let[t]=e.items;return A(t)&&t.mode===`and`?t:e}function Pe(e){return M(e)===0}function M(e){return e?j(e)?1:e.items.reduce((e,t)=>e+M(t),0):0}function Fe(e){if(!e)return null;if(j(e))return N(e)?{type:`group`,mode:`and`,items:[e]}:null;let t=e.items.map(e=>A(e)?Fe(e):N(e)?e:null).filter(e=>e!==null);return t.length===0?null:{...e,items:t}}function N(e){if(A(e))return e.items.some(N);if(!e.column||!e.operator)return!1;let t=b(D(e.operator));return t===`none`?!0:e.value===null||e.value===void 0||e.value===``?!1:t===`pair`?Array.isArray(e.value)&&e.value.length===2&&e.value.every(e=>e!==``&&e!=null):t!==`list`||Array.isArray(e.value)&&e.value.length>0}function Ie(e,t){let n=t??De(e);return{type:`expression`,column:e.name,operator:n,value:Le(n),valueType:T(e,n)}}function Le(e){switch(b(e)){case`none`:return null;case`pair`:return[``,``];case`list`:return[];default:return``}}function Re(e,t,n){let r=b(D(e.operator)),i=b(t),a=e.value;i!==r&&(a=Le(t));let o=e.valueType===`special`&&i===r?`special`:T(n,t);return{...e,operator:t,value:a,valueType:o}}function ze(e,t){let n=e;for(let e of t){if(!n||!A(n))return null;n=n.items[e]}return n??null}function P(e,t,n){if(t.length===0)return n(e)??e;if(!A(e))return e;let[r,...i]=t,a=e.items[r];if(!a)return e;let o=[...e.items];if(i.length===0){let e=n(a);e===null?o.splice(r,1):o[r]=e}else o[r]=P(a,i,n);return{...e,items:o}}function Be(e,t,n){return P(e,t,e=>A(e)?{...e,items:[...e.items,n]}:e)}function Ve(e,t){return t.length===0?O():P(e,t,()=>null)}function He(e,t,n){return P(e,t,e=>A(e)?{...e,mode:n}:e)}function Ue(e,t=[]){let n=ze(e,t);return Be(e,t,k(n&&A(n)&&n.mode===`and`?`or`:`and`))}async function We(e,t){let n=await fetch(`/api/filter/convert`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e),signal:t});if(!n.ok)throw Error(`Failed to convert filter: ${n.status} ${n.statusText}`);let r=await n.json();return{...r,filterObject:r.filterObject?Me(r.filterObject):null}}function Ge(e,t={}){return e?Ke(e,new Map((t.fields??[]).map(e=>[e.name.toLowerCase(),e])),0):``}function Ke(e,t,n){if(j(e))return qe(e,t);let r=e.items.map(e=>Ke(e,t,n+1)).filter(e=>e!==``);if(r.length===0)return``;if(r.length===1)return r[0];let i=e.mode===`or`?` OR `:` AND `,a=r.join(i);return n===0?a:`(${a})`}function qe(e,t){if(!e.column||!e.operator)return``;let n=t.get(e.column.toLowerCase()),r=n?.caption??e.column,i=D(e.operator),a=Se(i,n?.type),o=b(i);return o===`none`?`[${r}] ${a}`:`[${r}] ${a} ${Je(e,o)}`}function Je(e,t){let{value:n,valueType:r}=e;if(r===`special`&&typeof n==`string`)return ke(n);if(Array.isArray(n)){let e=n.map(e=>Ye(e,r));return t===`pair`?e.join(` - `):`(${e.join(`, `)})`}return Ye(n,r)}function Ye(e,t){return e==null?``:e instanceof Date?e.toISOString().slice(0,10):typeof e==`number`||typeof e==`boolean`||t===`number`||t===`boolean`?String(e):`'${String(e)}'`}const Xe=[`string`,`number`,`boolean`,`date`,`datetime`,`uniqueidentifier`];function Ze(e){let t=e?.trim().toLowerCase();return Xe.find(e=>e===t)??`string`}function Qe(e){return e===!0||e===1}function $e(e){return{name:e.FieldName??``,type:Ze(e.DataType),nullable:Qe(e.Nullable),excludeFromFilter:Qe(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function et(e){return e.map($e).filter(e=>e.name!==``&&!e.excludeFromFilter).sort((e,t)=>e.name.localeCompare(t.name))}function tt(e){return!e||j(e)||e.mode!==`or`?!1:e.items.every(e=>A(e)&&e.mode===`and`&&e.items.every(j))}function nt(e){if(!e)return{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:[]}]};if(j(e))return{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:[e]}]};if(e.mode===`or`){let t=e.items.map(e=>{let t=[];return F(e,t),{type:`group`,mode:`and`,items:t}});return{type:`group`,mode:`or`,items:t.length>0?t:[{type:`group`,mode:`and`,items:[]}]}}let t=[];return F(e,t),{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:t}]}}function F(e,t){if(j(e)){t.push(e);return}for(let n of e.items)F(n,t)}const rt=-1;function it(e){return{filterId:e.FilterID??-1,primKey:e.PrimKey??``,name:e.FilterName??``,criteria:e.FilterCriteria??``,dbObjectId:e.DBObjectID??``,accessLevel:at(e.AccessLevel),createdByUser:I(e.CreatedByUser),createdBy:e.CreatedBy??``,domain:e.Domain??null,crossDomain:I(e.CrossDomain),isPersonallyShared:I(e.IsPersonallyShared),hideCriteria:I(e.HideFilterCriteria),headerText:e.OptionalHeaderText||null,comment:e.OptionalComment||null,parameters:e.Parameters||null,reportTitle:e.ReportTitle||null,created:ot(e.Created),updated:ot(e.Updated)}}function at(e){return e===`Manager`||e===`Editor`?e:`Reader`}function I(e){return typeof e==`string`?e.toLowerCase()===`true`:!!e}function ot(e){if(!e)return null;if(e instanceof Date)return e;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function st(e){return e.filter(e=>(e.FilterID??-1)!==-1).map(it).sort((e,t)=>e.name.localeCompare(t.name))}function ct(e){let t=[],n=[];for(let r of e)r.createdByUser?t.push(r):n.push(r);return{mine:t,shared:n}}function lt(e,t){if(t!=null)return e.find(e=>e.filterId===t)}function ut(e){return e.accessLevel===`Editor`||e.accessLevel===`Manager`}function dt(e){return e.accessLevel===`Manager`}function L(e){return e.createdByUser}const ft=L,pt=L,mt={xs:64,sm:128,md:256,lg:512,xl:void 0};function ht(e,t,n,r=`xs`){if(e&&typeof e==`object`)return ht(e.primKey,e.login,e.hash,e.size);if(!e||!n)return``;let i=mt[r];return`/api/data/blob/EmployeesLookup/${e}/Image/${encodeURIComponent(t??``)}${t?`.`:``}${encodeURIComponent(n)}.jpg${i?`?width=${i}`:``}`}function gt(e,...t){_(Array.isArray(e)&&e.length===t.length+1,`Method 'localize' must be used as a tag function`);let n=y(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return t.forEach((e,t)=>{n=n.replace(`$${t}`,e)}),n}const _t={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};function R(e){return e.replace(/&(#x?[0-9a-f]+|[a-z]+);/gi,(e,t)=>t.startsWith(`#x`)||t.startsWith(`#X`)?String.fromCodePoint(Number.parseInt(t.slice(2),16)):t.startsWith(`#`)?String.fromCodePoint(Number.parseInt(t.slice(1),10)):_t[t.toLowerCase()]??e)}function z(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function B(e,t){let n=RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`).exec(e);if(!n)return null;let r=R(n[1]).trim();return r===``?null:r}function vt(e,t){return[...e.matchAll(RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,`g`))].map(e=>R(e[1]).trim())}const yt={Byte:`number`,Decimal:`number`,Double:`number`,Int16:`number`,Int32:`number`,Int64:`number`,Single:`number`,Boolean:`boolean`,DateTime:`date`};function bt(e){let t=/<SelectColumns>([\s\S]*?)<\/SelectColumns>/.exec(e)?.[1]??``,n=[];for(let e of t.matchAll(/<afSelectColumn>([\s\S]*?)<\/afSelectColumn>/g)){let t=B(e[1],`Name`);t&&n.push({name:t,type:yt[B(e[1],`DataType`)??``]??`string`})}return n}function V(e){if(!e||!e.includes(`<afRecordSource`))return null;let t=B(e,`ViewName`);if(!t)return null;let n=B(e,`MaxRecords`);return{viewName:t,columns:bt(e),whereClause:B(e,`WhereClause`),filterString:B(e,`FilterString`),maxRecords:n===null||n===`0`?null:Number(n)}}const xt=[`String`,`Integer`,`Double`,`Date`,`Boolean`],St=/^[a-z]stp_/i;function H(e){return typeof e==`string`&&St.test(e.trim())}function Ct(e){return e?e.split(/\r\n|\r|\n/).map(e=>e.trim()).filter(e=>e!==``):[]}function wt(e){return xt.find(t=>t.toLowerCase()===e?.trim().toLowerCase())??`String`}function Tt(e,t,n){if(t)return`lookup`;if(n)return`select`;switch(e){case`Integer`:case`Double`:return`number`;case`Date`:return`date`;case`Boolean`:return`boolean`;default:return`text`}}function Et(e){let t=e.Name??``,n=wt(e.DataType),r=Ct(e.Items),i=V(e.RecordSource),a=e.ValueMember??null;i&&!a&&(a=i.columns[0]?.name??null);let o=i?.columns.find(e=>e.name!==a)?.name??null,s=!!(i&&a);return{name:t,label:e.Label?.trim()||t,description:e.Description?.trim()||null,type:n,editor:Tt(n,s,r.length>0),defaultValue:e.DefaultValue??null,items:r,recordSource:s?i:null,valueMember:s?a:null,displayMember:s?o:null,sortOrder:e.SortOrder??0,lookupWidth:e.LookupWidth??null,lookupHeight:e.LookupHeight??null}}function Dt(e){return e.filter(e=>e.Name).map(Et).sort((e,t)=>e.sortOrder-t.sortOrder||e.label.localeCompare(t.label))}function U(e,t){if(t==null||t===``)return e.type!==`Boolean`&&null;switch(e.type){case`Boolean`:return typeof t==`boolean`?t:/^(true|1|ja|yes)$/i.test(String(t));case`Integer`:{let e=Number.parseInt(String(t),10);return Number.isNaN(e)?null:e}case`Double`:{let e=Number(String(t).replace(`,`,`.`));return Number.isNaN(e)?null:e}default:return String(t)}}function Ot(e){let t={};for(let n of e)t[n.name]=H(n.defaultValue)?U(n,null):U(n,n.defaultValue);return t}function kt(e,t){return t==null?``:typeof t==`boolean`?t?`True`:`False`:String(t)}function At(e,t){return`<Parameters Version="1">\n${e.map(e=>{let n=kt(e,t[e.name]??null);return` <Parameter Name="${z(e.name)}" Type="${e.type}">${z(n)}</Parameter>`}).join(`
|
|
2
|
+
`)}\n</Parameters>`}function jt(e){if(!e)return{};let t={};for(let n of e.matchAll(/<Parameter\s+([^>]*?)\/?>(?:([\s\S]*?)<\/Parameter>)?/g)){let e=/Name\s*=\s*"([^"]*)"/.exec(n[1])?.[1];e&&(t[e]=B(n[0],`Parameter`)??``)}return t}function Mt(e,t){let n=jt(t),r=Ot(e);for(let t of e)t.name in n&&(r[t.name]=U(t,n[t.name]));return r}async function Nt(e,t,n){if(!t.defaultValue||!H(t.defaultValue))return null;let r=await fetch(`/api/reporting/filters/${encodeURIComponent(e)}/GetParameterDefaultValue`,{body:JSON.stringify({parameterName:t.name}),credentials:`same-origin`,headers:{"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`,signal:n});if(!r.ok)throw Error(`${r.status} ${r.statusText}`);return Ft(await r.json())}async function Pt(e,t,n,r){let i=t.filter(e=>H(e.defaultValue??``));if(i.length===0)return n;let a=await Promise.all(i.map(async t=>{try{return[t.name,await Nt(e,t,r)]}catch{return[t.name,null]}})),o={...n};for(let[e,t]of a)t!==null&&(o[e]=t);return o}function Ft(e){let t=(Array.isArray(e)?e:Object.values(e).find(e=>Array.isArray(e)))?.[0];return t==null?null:Array.isArray(t)?t[0]??null:typeof t==`object`?Object.values(t)[0]??null:t}const It={CSV:`csv`,HTML:`html`,IMAGE:`xbm`,MHT:`mht`,PDF:`pdf`,RTF:`rtf`,TEXT:`txt`,XLS:`xls`,XLSX:`xlsx`},Lt={CSV:`text/csv`,HTML:`text/html`,IMAGE:`image/x-xbitmap`,MHT:`message/rfc822`,PDF:`application/pdf`,RTF:`text/enriched`,TEXT:`text/plain`,XLS:`application/vnd.ms-excel`,XLSX:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`};function Rt(e){return It[e]}function W(e){return Lt[e]}const zt=/[\\/:*?"<>|.#&+%\u0000-\u001f]/g;function G(e){let t=(e.fileName??e.reportId).trim().replace(zt,`-`).replace(/-{2,}/g,`-`).replace(/^-|-$/g,``).trim();return`${t===``?e.reportId:t}.${Rt(e.format)}`}function K(e){let t=window.location?.href;return t?new URL(e,t).toString():e}function q(e){let{domain:t,filter:n,headerText:r,hideFilterString:i,parameters:a,reportId:o,signal:s,timezone:c}=e,l=G(e),u=`/api/report/${encodeURIComponent(o)}/${encodeURIComponent(l)}`,d=new URLSearchParams,f=Ht(a),p=f.length>0||!!r||i===!0;if(t&&d.set(`Domain`,t),d.set(`timezone`,String(c??-(/* @__PURE__ */ new Date()).getTimezoneOffset()/60)),!p)return n&&d.set(`Filter`,n),new Request(K(`${u}?${d}`),{credentials:`same-origin`,signal:s});let m={filter:n??``,parameters:f};return r&&(m.optionalheader=r),i===!0&&(m.showfiltercriteria=`true`),new Request(K(`${u}?${d}`),{body:JSON.stringify(m),credentials:`same-origin`,headers:{"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`,signal:s})}async function J(e){let t=await fetch(q(e));if((t.headers.get(`content-type`)??``).includes(`application/json`)){let e=await t.json();throw Error(e.error??`Failed to render report`)}if(!t.ok)throw Error(`${t.status} ${t.statusText}`);return t.blob()}function Bt(e){return oe(q(e),{fileName:G(e),onProgress:e.onProgress,signal:e.signal})}async function Y(e){let t=await J(e),n=URL.createObjectURL(t.type?t:new Blob([t],{type:W(e.format)})),r=window.open(n,`_blank`);if(!r)throw URL.revokeObjectURL(n),Error(`The report could not be opened. Allow pop-ups for this site and try again.`);r.opener=null,window.setTimeout(()=>URL.revokeObjectURL(n),6e4)}async function Vt(e){let t=window.document;if(!t?.body)return Y(e);let n=await J(e),r=URL.createObjectURL(n.type?n:new Blob([n],{type:W(e.format)})),i=t.createElement(`iframe`);i.setAttribute(`aria-hidden`,`true`),i.style.cssText=`position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:1px;block-size:1px;border:0;visibility:hidden`;let a=()=>{i.remove(),URL.revokeObjectURL(r)};try{await new Promise((e,n)=>{i.addEventListener(`load`,()=>e(),{once:!0}),i.addEventListener(`error`,()=>n(/* @__PURE__ */ Error(`The report could not be loaded for printing`)),{once:!0}),i.src=r,t.body.append(i)}),i.contentWindow?.focus(),i.contentWindow?.print()}catch{return a(),Y(e)}window.setTimeout(a,6e4)}function Ht(e){return e?Object.entries(e).filter(([,e])=>e!=null&&e!==``).map(([e,t])=>({name:e,value:typeof t==`boolean`?String(t):t})):[]}function X(e){return e===!0||e===1}function Ut(e){let t=[];return X(e.FormatPDF)&&t.push(`PDF`),X(e.FormatCSV)&&t.push(`XLSX`,`XLS`,`CSV`),X(e.FormatHTML)&&t.push(`HTML`),X(e.FormatRTF)&&t.push(`RTF`),X(e.FormatMHT)&&t.push(`MHT`),X(e.FormatTEXT)&&t.push(`TEXT`),X(e.FormatIMAGE)&&t.push(`IMAGE`),t}function Wt(e){let t=V(e.RecordSource);return{reportId:e.ReportID??``,shortId:e.ShortID??null,title:e.Title?.trim()||null,description:e.Description?.trim()||null,viewName:t?.viewName??null,initialFilter:t?.filterString??null,hasTitle:X(e.HasTitle),hasHeader:X(e.HasHeader),formats:Ut(e),timeout:e.Timeout??null}}function Gt(){if(document.querySelector(`#AlertDialogTemplate`))return;let e=document.createElement(`template`);e.id=`AlertDialogTemplate`,e.innerHTML=`
|
|
3
3
|
<dialog class="alert-dialog">
|
|
4
4
|
<form method="dialog">
|
|
5
5
|
<article></article>
|
|
@@ -8,5 +8,5 @@ function e(e){return{all:e||=/* @__PURE__ */ new Map,on:function(t,n){var r=e.ge
|
|
|
8
8
|
</footer>
|
|
9
9
|
</form>
|
|
10
10
|
</dialog>
|
|
11
|
-
`,document.body.append(e)}window.document&&(document.body?
|
|
11
|
+
`,document.body.append(e)}window.document&&(document.body?Gt():document.addEventListener(`DOMContentLoaded`,Gt,{once:!0}));function Kt(e,t=`No`){return new Promise(n=>{let r=new AbortController;e.addEventListener(`close`,()=>{n(e.returnValue),r.abort()},{signal:r.signal}),e.addEventListener(`cancel`,()=>{n(t),r.abort()},{signal:r.signal})})}const Z=/* @__PURE__ */ new Map;async function Q({buttons:e,content:t,className:n,id:r,title:i}){if(r&&Z.has(r))return await Z.get(r);let a=document.querySelector(`#AlertDialogTemplate`);if(!a)throw Error(`No alert dialog template found`);let o=a.content.firstElementChild?.cloneNode(!0),s=o?.querySelector(`article`),c=o?.querySelector(`footer menu`);if(!o||!s||!c)throw Error(`Invalid alert dialog template`);if(n)for(let e of n.split(/\s+/))o?.classList.add(e);if(i){let e=document.createElement(`header`);e.append(i),s.parentNode?.insertBefore(e,s)}s.appendChild(typeof t==`string`?document.createTextNode(t):t);for(let{label:t,value:n,primary:r}of e){let e=document.createElement(`li`),i=document.createElement(`button`);i.value=n,r&&i.classList.add(`primary`),i.textContent=t,e.appendChild(i),c.appendChild(i)}document.body.appendChild(o),o.showModal();let l=Kt(o).then(e=>(r&&Z.has(r)&&Z.delete(r),o&&document.body.removeChild(o),e));return r&&Z.set(r,l),await l}let qt=/* @__PURE__ */ function(e){return e[e.YesNo=0]=`YesNo`,e[e.OkCancel=1]=`OkCancel`,e}({});async function Jt(e,t={}){let{buttons:n=0,title:r}=t;return await Q({content:e,buttons:n===1?[{label:y(`OK`),value:`yes`,primary:!0},{label:y(`Cancel`),value:`no`}]:[{label:y(`Yes`),value:`yes`,primary:!0},{label:y(`No`),value:`no`}],className:`alert-dialog-confirm`,title:r})===`yes`}async function Yt(e,t={}){await Q({content:e,className:`alert-dialog-alert`,buttons:[{label:y(`OK`),value:`ok`,primary:!0}],...t})}function $(e){return`${e??window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0]}.${window.af?.userSession.login??`anonymous`}`}function Xt(e,t){if(!window.af?.userSession)return null;let n=$(t),r=JSON.parse(localStorage.getItem(n)||`{}`);return e?r[e]||null:r}function Zt(e,t,n){if(!window.af?.userSession)return;let r=$(n),i=JSON.parse(localStorage.getItem(r)||`{}`);t===void 0?i=e:i[e]=t,localStorage.setItem(r,JSON.stringify(i))}const Qt=`2.15.2`;export{qt as ConfirmButtons,rt as NO_FILTER_ID,E as RELATIVE_DATE_VALUES,t as SessionHandler,n as UserSession,Ue as addGroupAtPath,Yt as alert,ft as canDeleteSavedFilter,ut as canEditSavedFilter,L as canRenameSavedFilter,pt as canSetCrossDomain,dt as canShareSavedFilter,Re as changeOperator,U as coerceParameterValue,nt as coerceToStandardLayout,Jt as confirm,We as convertFilter,M as countExpressions,O as createEmptyFilter,k as createEmptyGroup,Ie as createExpression,ge as createLocalizer,R as decodeXml,Ge as describeFilter,ae as downloadBlob,Bt as downloadReport,oe as downloadRequest,z as encodeXml,pe as expose,Nt as fetchParameterDefault,lt as findSavedFilter,De as getDefaultOperator,Ot as getDefaultParameterValues,ke as getDynamicValueLabel,Ae as getDynamicValuesForField,y as getLocalizedString,ze as getNodeAtPath,b as getOperatorArity,Se as getOperatorLabel,Ee as getOperatorsForField,Rt as getReportExtension,G as getReportFileName,Ut as getReportFormats,W as getReportMediaType,q as getReportRequest,h as getSessionData,Xt as getSettings,ht as getUserImage,T as getValueType,Be as insertNodeAtPath,_ as invariant,N as isCompleteExpression,Pe as isEmptyFilter,j as isExpression,A as isGroup,H as isProcedureDefault,tt as isStandardLayout,te as localStorage,gt as localize,i as logActivity,s as logError,e as mitt,D as normalizeOperator,Q as openAlertDialog,Y as openReport,Ct as parseParameterItems,jt as parseParameters,V as parseRecordSource,ct as partitionSavedFilters,Vt as printReport,Fe as pruneFilter,B as readElement,vt as readElements,Ve as removeNodeAtPath,J as renderReport,Pt as resolveParameterDefaults,Mt as restoreParameterValues,Zt as saveSettings,At as serializeParameters,He as setGroupMode,a as startActivity,o as time,$e as toFieldMetadata,et as toFieldMetadataList,Ze as toFilterFieldType,Me as toFilterTree,ie as toLocalDateTime,ne as toLocalISODate,re as toLocalISODateTime,Wt as toReport,Et as toReportParameter,Dt as toReportParameters,it as toSavedFilter,st as toSavedFilters,Ne as unwrapSingleAndGroup,P as updateNodeAtPath,Qt as version,Kt as waitForDialog};
|
|
12
12
|
//# sourceMappingURL=af.common.legacy.min.js.map
|