@olenbetong/appframe-core 2.13.0 → 2.14.0
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 +77 -20
- package/dist/esm/af.common.legacy.js +73 -16
- 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 +77 -19
- package/dist/iife/af.common.legacy.js +73 -15
- 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/getLocalizedString.d.ts +63 -1
- package/es/getLocalizedString.js +89 -18
- package/es/getLocalizedString.test.d.ts +1 -0
- package/es/getLocalizedString.test.js +66 -0
- package/es/index.d.ts +7 -1
- package/es/index.js +2 -2
- package/package.json +4 -4
- package/src/getLocalizedString.test.ts +85 -0
- package/src/getLocalizedString.ts +123 -19
- package/src/index.ts +7 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
function e(e){return{all:e=e||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)})}}}function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}function r(e){var r=n(e,`string`);return t(r)==`symbol`?r:r+``}function i(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var a=class{constructor(){i(this,`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)}},o=class extends a{constructor(e){super(),i(this,`amDesignator`,`a.m.`),i(this,`dayNames`,[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`]),i(this,`dayNamesShort`,[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`]),i(this,`decimalSeparator`,`.`),i(this,`domain`,`OB`),i(this,`email`,void 0),i(this,`formats`,void 0),i(this,`groupSeparator`,null),i(this,`integratedSecurity`,!1),i(this,`isDeveloper`,!1),i(this,`login`,``),i(this,`loginType`,void 0),i(this,`monthNames`,[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``]),i(this,`monthNamesShort`,[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``]),i(this,`name`,void 0),i(this,`pmDesignator`,`p.m.`),i(this,`shortDateFormat`,`dd.MM.yyyy`),i(this,`culture`,`en-GB`),i(this,`uiculture`,`en-GB`),this.formats={},Object.assign(this,e)}};const s=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function c(e,t={},n=0){try{let r=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:s,timeElapsed:n,action:e,parameters:{...t,_session:_()}}),headers:{"Content-Type":`application/json`,Accept:`application/json`}});if(!r.ok){if(r.headers.get(`Content-Type`)?.includes(`application/json`)){let e=await r.json();console.error(e.error)}else console.error(`${r.status} ${r.statusText}`)}}catch{}}function l(e,t={}){let n=performance.now();return(r={})=>c(e,{...t,...r},performance.now()-n)}async function u(e){let t=performance.now();return[await e(),performance.now()-t]}async function d(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 f(){return crypto.randomUUID?.()}let p=Date.now(),m=f(),h=``,g=``;if(`document`in window){let e=()=>c(`AfSessionInit`,{"appframe-core":window.af?.common?.version,"appframe-data":window.af?.data?.version,"app-version":window.af?.article?.version});document.addEventListener(`DOMContentLoaded`,()=>{h=localStorage.getItem(`_afDeviceId`),g=sessionStorage.getItem(`_afSessionId`),h||(h=f(),localStorage.setItem(`_afDeviceId`,h)),g||(g=m,sessionStorage.setItem(`_afSessionId`,g)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:s,action:`AfSessionEnd`,parameters:{_session:_()}})):e()})}function _(){return{browserSessionId:g,sessionStart:p,sessionLength:Date.now()-p,sessionId:m,deviceId:h}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?d(e.error):typeof e==`object`&&`message`in e&&d(e)});function ee(e){return[af?.article?.id||``,`common`,e].join(`.`)}var te=new class{constructor(){i(this,`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 v(e,t=2){return String(e).padStart(t,`0`)}function re(e){return e?`${e.getFullYear()}-${v(e.getMonth()+1)}-${v(e.getDate())}T${v(e.getHours())}:${v(e.getMinutes())}:${v(e.getSeconds())}.${v(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 y(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();y(!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]+)$/,b=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function ue(e){let t=e.toString(),n=t.match(ce);if(n){let t=b(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(le);if(r){let t=b(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(se);return y(i,`Unable to parse function!`),{name:e.name??i[1],args:b(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);y(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:y(!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){try{let t=await fetch(`/api/user/localize/new/${af.article.id}`,{body:JSON.stringify({text:e}),headers:{Accept:`application/json; */*`,"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`});if(t.ok)return await t.json()}catch{}return e}function x(e,t){if(typeof e==`string`&&e.trim().length===0)return e;if(e!==void 0&&e!==``&&e!==null){if(window.af?.article?.i18n!==void 0){if(!Object.hasOwn(af.article.i18n,e)){af.article.i18n[e]=e;let n=me(e).then(t=>(af.article.i18n[e]=t,t));if(t)return n}return af.article.i18n[e]}return e}}const he=[`isnull`,`isnotnull`,`istrue`,`isfalse`,`isblank`,`isnotblank`],ge=[`between`,`notbetween`,`datebetween`,`datenotbetween`],_e=[`inlist`,`notinlist`];function S(e){return he.includes(e)?`none`:ge.includes(e)?`pair`:_e.includes(e)?`list`:`single`}const ve={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`},ye={greaterthan:`After`,greaterthanorequal:`On or after`,lessthan:`Before`,lessthanorequal:`Up to`};function be(e,t){return x((t===`date`||t===`datetime`?ye[e]:void 0)??ve[e]??e)}const C=[`equals`,`notequals`],w=[`inlist`,`notinlist`],T=[`between`,`notbetween`],E=[`greaterthan`,`greaterthanorequal`,`lessthan`,`lessthanorequal`],xe=[`contains`,`notcontains`,`beginswith`,`notbeginswith`,`endswith`,`notendswith`,`isblank`,`isnotblank`],Se={date:[...C,...w,...T,...E],datetime:[...C,...w,...T,...E],number:[...C,...w,...T,...E],boolean:[`istrue`,`isfalse`],string:[...C,...xe,...w,...T,...E],uniqueidentifier:[...C,...xe,...w,...T,...E]},Ce={date:`equals`,datetime:`equals`,number:`equals`,boolean:`istrue`,string:`contains`,uniqueidentifier:`beginswith`};function we(e){let t=[...Se[e.type]??Se.string];return e.nullable&&e.type!==`boolean`&&t.push(`isnull`,`isnotnull`),t}function Te(e){return Ce[e.type]??`equals`}function D(e,t){if(S(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 Ee=[`Yesterday`,`Today`,`Tomorrow`,`ThisWeek`,`ThisMonth`,`ThisYear`,`LastWeek`,`LastMonth`,`LastYear`,`NextWeek`,`NextMonth`,`NextYear`],De={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 Oe(e){return x(De[e]??e)}function ke(e){return e.type===`date`||e.type===`datetime`?[...Ee]:e.type===`string`?[`CurrentUser`]:[]}const Ae={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function O(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return Ae[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 je(e){return e?M(e)?{type:`group`,mode:`and`,items:[e]}:e:k()}function Me(e){return N(e)===0}function N(e){return e?M(e)?1:e.items.reduce((e,t)=>e+N(t),0):0}function Ne(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)?Ne(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=S(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 Pe(e,t){let n=t??Te(e);return{type:`expression`,column:e.name,operator:n,value:Fe(n),valueType:D(e,n)}}function Fe(e){switch(S(e)){case`none`:return null;case`pair`:return[``,``];case`list`:return[];default:return``}}function Ie(e,t,n){let r=S(O(e.operator)),i=S(t),a=e.value;i!==r&&(a=Fe(t));let o=e.valueType===`special`&&i===r?`special`:D(n,t);return{...e,operator:t,value:a,valueType:o}}function Le(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 Re(e,t,n){return F(e,t,e=>j(e)?{...e,items:[...e.items,n]}:e)}function ze(e,t){return t.length===0?k():F(e,t,()=>null)}function Be(e,t,n){return F(e,t,e=>j(e)?{...e,mode:n}:e)}function Ve(e,t=[]){let n=Le(e,t);return Re(e,t,A(n&&j(n)&&n.mode===`and`?`or`:`and`))}async function He(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?je(r.filterObject):null}}function Ue(e,t={}){return e?We(e,new Map((t.fields??[]).map(e=>[e.name.toLowerCase(),e])),0):``}function We(e,t,n){if(M(e))return Ge(e,t);let r=e.items.map(e=>We(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 Ge(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=be(i,n?.type),o=S(i);return o===`none`?`[${r}] ${a}`:`[${r}] ${a} ${Ke(e,o)}`}function Ke(e,t){let{value:n,valueType:r}=e;if(r===`special`&&typeof n==`string`)return Oe(n);if(Array.isArray(n)){let e=n.map(e=>qe(e,r));return t===`pair`?e.join(` - `):`(${e.join(`, `)})`}return qe(n,r)}function qe(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 Je=[`string`,`number`,`boolean`,`date`,`datetime`,`uniqueidentifier`];function Ye(e){let t=e?.trim().toLowerCase();return Je.find(e=>e===t)??`string`}function Xe(e){return e===!0||e===1}function Ze(e){return{name:e.FieldName??``,type:Ye(e.DataType),nullable:Xe(e.Nullable),excludeFromFilter:Xe(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function Qe(e){return e.map(Ze).filter(e=>e.name!==``&&!e.excludeFromFilter).sort((e,t)=>e.name.localeCompare(t.name))}function $e(e){return!e||M(e)||e.mode!==`or`?!1:e.items.every(e=>j(e)&&e.mode===`and`&&e.items.every(M))}function et(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 I(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 I(e,t),{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:t}]}}function I(e,t){if(M(e)){t.push(e);return}for(let n of e.items)I(n,t)}const tt=-1;function nt(e){return{filterId:e.FilterID??-1,primKey:e.PrimKey??``,name:e.FilterName??``,criteria:e.FilterCriteria??``,dbObjectId:e.DBObjectID??``,accessLevel:rt(e.AccessLevel),createdByUser:L(e.CreatedByUser),createdBy:e.CreatedBy??``,domain:e.Domain??null,crossDomain:L(e.CrossDomain),isPersonallyShared:L(e.IsPersonallyShared),hideCriteria:L(e.HideFilterCriteria),headerText:e.OptionalHeaderText||null,comment:e.OptionalComment||null,parameters:e.Parameters||null,reportTitle:e.ReportTitle||null,created:it(e.Created),updated:it(e.Updated)}}function rt(e){return e===`Manager`||e===`Editor`?e:`Reader`}function L(e){return typeof e==`string`?e.toLowerCase()===`true`:!!e}function it(e){if(!e)return null;if(e instanceof Date)return e;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function at(e){return e.filter(e=>(e.FilterID??-1)!==-1).map(nt).sort((e,t)=>e.name.localeCompare(t.name))}function ot(e){let t=[],n=[];for(let r of e)r.createdByUser?t.push(r):n.push(r);return{mine:t,shared:n}}function st(e,t){if(t!=null)return e.find(e=>e.filterId===t)}function ct(e){return e.accessLevel===`Editor`||e.accessLevel===`Manager`}function lt(e){return e.accessLevel===`Manager`}function R(e){return e.createdByUser}const ut=R,dt=R,ft={xs:64,sm:128,md:256,lg:512,xl:void 0};function pt(e,t,n,r=`xs`){if(e&&typeof e==`object`)return pt(e.primKey,e.login,e.hash,e.size);if(!e||!n)return``;let i=ft[r];return`/api/data/blob/EmployeesLookup/${e}/Image/${encodeURIComponent(t??``)}${t?`.`:``}${encodeURIComponent(n)}.jpg${i?`?width=${i}`:``}`}function mt(e,...t){y(Array.isArray(e)&&e.length===t.length+1,`Method 'localize' must be used as a tag function`);let n=x(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return t.forEach((e,t)=>{n=n.replace(`$${t}`,e)}),n}const ht={amp:`&`,lt:`<`,gt:`>`,quot:`"`,apos:`'`};function z(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)):ht[t.toLowerCase()]??e)}function B(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function V(e,t){let n=RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`).exec(e);if(!n)return null;let r=z(n[1]).trim();return r===``?null:r}function gt(e,t){return[...e.matchAll(RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,`g`))].map(e=>z(e[1]).trim())}const _t={Byte:`number`,Decimal:`number`,Double:`number`,Int16:`number`,Int32:`number`,Int64:`number`,Single:`number`,Boolean:`boolean`,DateTime:`date`};function vt(e){let t=/<SelectColumns>([\s\S]*?)<\/SelectColumns>/.exec(e)?.[1]??``,n=[];for(let e of t.matchAll(/<afSelectColumn>([\s\S]*?)<\/afSelectColumn>/g)){let t=V(e[1],`Name`);t&&n.push({name:t,type:_t[V(e[1],`DataType`)??``]??`string`})}return n}function H(e){if(!e||!e.includes(`<afRecordSource`))return null;let t=V(e,`ViewName`);if(!t)return null;let n=V(e,`MaxRecords`);return{viewName:t,columns:vt(e),whereClause:V(e,`WhereClause`),filterString:V(e,`FilterString`),maxRecords:n===null||n===`0`?null:Number(n)}}const yt=[`String`,`Integer`,`Double`,`Date`,`Boolean`],bt=/^[a-z]stp_/i;function U(e){return typeof e==`string`&&bt.test(e.trim())}function xt(e){return e?e.split(/\r\n|\r|\n/).map(e=>e.trim()).filter(e=>e!==``):[]}function St(e){return yt.find(t=>t.toLowerCase()===e?.trim().toLowerCase())??`String`}function Ct(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 wt(e){let t=e.Name??``,n=St(e.DataType),r=xt(e.Items),i=H(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:Ct(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 Tt(e){return e.filter(e=>e.Name).map(wt).sort((e,t)=>e.sortOrder-t.sortOrder||e.label.localeCompare(t.label))}function W(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 Et(e){let t={};for(let n of e)t[n.name]=U(n.defaultValue)?W(n,null):W(n,n.defaultValue);return t}function Dt(e,t){return t==null?``:typeof t==`boolean`?t?`True`:`False`:String(t)}function Ot(e,t){return`<Parameters Version="1">\n${e.map(e=>{let n=Dt(e,t[e.name]??null);return` <Parameter Name="${B(e.name)}" Type="${e.type}">${B(n)}</Parameter>`}).join(`
|
|
2
|
-
`)}\n</Parameters>`}function
|
|
1
|
+
function e(e){return{all:e=e||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)})}}}function t(e){"@babel/helpers - typeof";return t=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},t(e)}function n(e,n){if(t(e)!=`object`||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(t(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}function r(e){var r=n(e,`string`);return t(r)==`symbol`?r:r+``}function i(e,t,n){return(t=r(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var a=class{constructor(){i(this,`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)}},o=class extends a{constructor(e){super(),i(this,`amDesignator`,`a.m.`),i(this,`dayNames`,[`sunday`,`monday`,`tuesday`,`wednesday`,`thursday`,`friday`,`saturday`]),i(this,`dayNamesShort`,[`sun`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`]),i(this,`decimalSeparator`,`.`),i(this,`domain`,`OB`),i(this,`email`,void 0),i(this,`formats`,void 0),i(this,`groupSeparator`,null),i(this,`integratedSecurity`,!1),i(this,`isDeveloper`,!1),i(this,`login`,``),i(this,`loginType`,void 0),i(this,`monthNames`,[`january`,`february`,`march`,`april`,`may`,`june`,`july`,`august`,`september`,`october`,`november`,`december`,``]),i(this,`monthNamesShort`,[`jan`,`feb`,`mar`,`apr`,`may`,`jun`,`jul`,`augt`,`sep`,`oct`,`nov`,`dec`,``]),i(this,`name`,void 0),i(this,`pmDesignator`,`p.m.`),i(this,`shortDateFormat`,`dd.MM.yyyy`),i(this,`culture`,`en-GB`),i(this,`uiculture`,`en-GB`),this.formats={},Object.assign(this,e)}};const s=window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0];async function c(e,t={},n=0){try{let r=await fetch(`/api/logging/log-activity`,{method:`POST`,body:JSON.stringify({article:s,timeElapsed:n,action:e,parameters:{...t,_session:_()}}),headers:{"Content-Type":`application/json`,Accept:`application/json`}});if(!r.ok){if(r.headers.get(`Content-Type`)?.includes(`application/json`)){let e=await r.json();console.error(e.error)}else console.error(`${r.status} ${r.statusText}`)}}catch{}}function l(e,t={}){let n=performance.now();return(r={})=>c(e,{...t,...r},performance.now()-n)}async function u(e){let t=performance.now();return[await e(),performance.now()-t]}async function d(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 f(){return crypto.randomUUID?.()}let p=Date.now(),m=f(),h=``,g=``;if(`document`in window){let e=()=>c(`AfSessionInit`,{"appframe-core":window.af?.common?.version,"appframe-data":window.af?.data?.version,"app-version":window.af?.article?.version});document.addEventListener(`DOMContentLoaded`,()=>{h=localStorage.getItem(`_afDeviceId`),g=sessionStorage.getItem(`_afSessionId`),h||(h=f(),localStorage.setItem(`_afDeviceId`,h)),g||(g=m,sessionStorage.setItem(`_afSessionId`,g)),e()}),document.addEventListener(`visibilitychange`,function(){document.visibilityState===`hidden`?navigator.sendBeacon(`/api/logging/log-activity`,JSON.stringify({article:s,action:`AfSessionEnd`,parameters:{_session:_()}})):e()})}function _(){return{browserSessionId:g,sessionStart:p,sessionLength:Date.now()-p,sessionId:m,deviceId:h}}window.window?.addEventListener(`error`,e=>{typeof e==`object`&&`error`in e?d(e.error):typeof e==`object`&&`message`in e&&d(e)});function ee(e){return[af?.article?.id||``,`common`,e].join(`.`)}var te=new class{constructor(){i(this,`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 v(e,t=2){return String(e).padStart(t,`0`)}function re(e){return e?`${e.getFullYear()}-${v(e.getMonth()+1)}-${v(e.getDate())}T${v(e.getHours())}:${v(e.getMinutes())}:${v(e.getSeconds())}.${v(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 y(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();y(!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]+)$/,b=e=>e.split(`,`).map(e=>e.trim()).filter(Boolean);function ue(e){let t=e.toString(),n=t.match(ce);if(n){let t=b(n[1]??n[2]??``);return{name:e.name,args:t,body:n[3]}}let r=t.match(le);if(r){let t=b(r[1]??r[2]??``);return{name:e.name,args:t,body:r[3]}}let i=t.match(se);return y(i,`Unable to parse function!`),{name:e.name??i[1],args:b(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);y(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:y(!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 x(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 x(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 S(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 x((t===`date`||t===`datetime`?xe[e]:void 0)??be[e]??e)}const C=[`equals`,`notequals`],w=[`inlist`,`notinlist`],T=[`between`,`notbetween`],E=[`greaterthan`,`greaterthanorequal`,`lessthan`,`lessthanorequal`],Ce=[`contains`,`notcontains`,`beginswith`,`notbeginswith`,`endswith`,`notendswith`,`isblank`,`isnotblank`],we={date:[...C,...w,...T,...E],datetime:[...C,...w,...T,...E],number:[...C,...w,...T,...E],boolean:[`istrue`,`isfalse`],string:[...C,...Ce,...w,...T,...E],uniqueidentifier:[...C,...Ce,...w,...T,...E]},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 D(e,t){if(S(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 O=[`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 x(Oe[e]??e)}function Ae(e){return e.type===`date`||e.type===`datetime`?[...O]:e.type===`string`?[`CurrentUser`]:[]}const je={not:`notequals`,tweens:`notbetween`,notdate:`notdatequals`,notdateequals:`notdatequals`};function k(e){let t=e.toLowerCase().replace(/[\s,]/g,``);return je[t]??t}function A(){return j(`and`)}function j(e=`and`){return{type:`group`,mode:e,items:[]}}function M(e){return e.type===`group`}function N(e){return e.type===`expression`}function Me(e){return e?N(e)?{type:`group`,mode:`and`,items:[e]}:e:A()}function Ne(e){return P(e)===0}function P(e){return e?N(e)?1:e.items.reduce((e,t)=>e+P(t),0):0}function Pe(e){if(!e)return null;if(N(e))return F(e)?{type:`group`,mode:`and`,items:[e]}:null;let t=e.items.map(e=>M(e)?Pe(e):F(e)?e:null).filter(e=>e!==null);return t.length===0?null:{...e,items:t}}function F(e){if(M(e))return e.items.some(F);if(!e.column||!e.operator)return!1;let t=S(k(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 Fe(e,t){let n=t??De(e);return{type:`expression`,column:e.name,operator:n,value:Ie(n),valueType:D(e,n)}}function Ie(e){switch(S(e)){case`none`:return null;case`pair`:return[``,``];case`list`:return[];default:return``}}function Le(e,t,n){let r=S(k(e.operator)),i=S(t),a=e.value;i!==r&&(a=Ie(t));let o=e.valueType===`special`&&i===r?`special`:D(n,t);return{...e,operator:t,value:a,valueType:o}}function Re(e,t){let n=e;for(let e of t){if(!n||!M(n))return null;n=n.items[e]}return n??null}function I(e,t,n){if(t.length===0)return n(e)??e;if(!M(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]=I(a,i,n);return{...e,items:o}}function ze(e,t,n){return I(e,t,e=>M(e)?{...e,items:[...e.items,n]}:e)}function Be(e,t){return t.length===0?A():I(e,t,()=>null)}function Ve(e,t,n){return I(e,t,e=>M(e)?{...e,mode:n}:e)}function He(e,t=[]){let n=Re(e,t);return ze(e,t,j(n&&M(n)&&n.mode===`and`?`or`:`and`))}async function Ue(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 We(e,t={}){return e?Ge(e,new Map((t.fields??[]).map(e=>[e.name.toLowerCase(),e])),0):``}function Ge(e,t,n){if(N(e))return Ke(e,t);let r=e.items.map(e=>Ge(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 Ke(e,t){if(!e.column||!e.operator)return``;let n=t.get(e.column.toLowerCase()),r=n?.caption??e.column,i=k(e.operator),a=Se(i,n?.type),o=S(i);return o===`none`?`[${r}] ${a}`:`[${r}] ${a} ${qe(e,o)}`}function qe(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=>Je(e,r));return t===`pair`?e.join(` - `):`(${e.join(`, `)})`}return Je(n,r)}function Je(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 Ye=[`string`,`number`,`boolean`,`date`,`datetime`,`uniqueidentifier`];function Xe(e){let t=e?.trim().toLowerCase();return Ye.find(e=>e===t)??`string`}function Ze(e){return e===!0||e===1}function Qe(e){return{name:e.FieldName??``,type:Xe(e.DataType),nullable:Ze(e.Nullable),excludeFromFilter:Ze(e.ExcludeFromFilter),valueListRecordSource:e.ValueListRecordSource||void 0}}function $e(e){return e.map(Qe).filter(e=>e.name!==``&&!e.excludeFromFilter).sort((e,t)=>e.name.localeCompare(t.name))}function et(e){return!e||N(e)||e.mode!==`or`?!1:e.items.every(e=>M(e)&&e.mode===`and`&&e.items.every(N))}function tt(e){if(!e)return{type:`group`,mode:`or`,items:[{type:`group`,mode:`and`,items:[]}]};if(N(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(N(e)){t.push(e);return}for(let n of e.items)L(n,t)}const nt=-1;function rt(e){return{filterId:e.FilterID??-1,primKey:e.PrimKey??``,name:e.FilterName??``,criteria:e.FilterCriteria??``,dbObjectId:e.DBObjectID??``,accessLevel:it(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:at(e.Created),updated:at(e.Updated)}}function it(e){return e===`Manager`||e===`Editor`?e:`Reader`}function R(e){return typeof e==`string`?e.toLowerCase()===`true`:!!e}function at(e){if(!e)return null;if(e instanceof Date)return e;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function ot(e){return e.filter(e=>(e.FilterID??-1)!==-1).map(rt).sort((e,t)=>e.name.localeCompare(t.name))}function st(e){let t=[],n=[];for(let r of e)r.createdByUser?t.push(r):n.push(r);return{mine:t,shared:n}}function ct(e,t){if(t!=null)return e.find(e=>e.filterId===t)}function lt(e){return e.accessLevel===`Editor`||e.accessLevel===`Manager`}function ut(e){return e.accessLevel===`Manager`}function z(e){return e.createdByUser}const dt=z,ft=z,pt={xs:64,sm:128,md:256,lg:512,xl:void 0};function mt(e,t,n,r=`xs`){if(e&&typeof e==`object`)return mt(e.primKey,e.login,e.hash,e.size);if(!e||!n)return``;let i=pt[r];return`/api/data/blob/EmployeesLookup/${e}/Image/${encodeURIComponent(t??``)}${t?`.`:``}${encodeURIComponent(n)}.jpg${i?`?width=${i}`:``}`}function ht(e,...t){y(Array.isArray(e)&&e.length===t.length+1,`Method 'localize' must be used as a tag function`);let n=x(e.map((t,n)=>n===e.length-1?t:`${t}$${n}`).join(``));return t.forEach((e,t)=>{n=n.replace(`$${t}`,e)}),n}const gt={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)):gt[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 _t(e,t){return[...e.matchAll(RegExp(`<${t}(?:\\s[^>]*)?>([\\s\\S]*?)</${t}>`,`g`))].map(e=>B(e[1]).trim())}const vt={Byte:`number`,Decimal:`number`,Double:`number`,Int16:`number`,Int32:`number`,Int64:`number`,Single:`number`,Boolean:`boolean`,DateTime:`date`};function yt(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:vt[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:yt(e),whereClause:H(e,`WhereClause`),filterString:H(e,`FilterString`),maxRecords:n===null||n===`0`?null:Number(n)}}const bt=[`String`,`Integer`,`Double`,`Date`,`Boolean`],xt=/^[a-z]stp_/i;function W(e){return typeof e==`string`&&xt.test(e.trim())}function St(e){return e?e.split(/\r\n|\r|\n/).map(e=>e.trim()).filter(e=>e!==``):[]}function Ct(e){return bt.find(t=>t.toLowerCase()===e?.trim().toLowerCase())??`String`}function wt(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 Tt(e){let t=e.Name??``,n=Ct(e.DataType),r=St(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:wt(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 Et(e){return e.filter(e=>e.Name).map(Tt).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 Dt(e){let t={};for(let n of e)t[n.name]=W(n.defaultValue)?G(n,null):G(n,n.defaultValue);return t}function Ot(e,t){return t==null?``:typeof t==`boolean`?t?`True`:`False`:String(t)}function kt(e,t){return`<Parameters Version="1">\n${e.map(e=>{let n=Ot(e,t[e.name]??null);return` <Parameter Name="${V(e.name)}" Type="${e.type}">${V(n)}</Parameter>`}).join(`
|
|
2
|
+
`)}\n</Parameters>`}function At(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]=H(n[0],`Parameter`)??``)}return t}function jt(e,t){let n=At(t),r=Dt(e);for(let t of e)t.name in n&&(r[t.name]=G(t,n[t.name]));return r}async function Mt(e,t,n){if(!t.defaultValue||!W(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 Pt(await r.json())}async function Nt(e,t,n,r){let i=t.filter(e=>W(e.defaultValue??``));if(i.length===0)return n;let a=await Promise.all(i.map(async t=>{try{return[t.name,await Mt(e,t,r)]}catch{return[t.name,null]}})),o={...n};for(let[e,t]of a)t!==null&&(o[e]=t);return o}function Pt(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 Ft={CSV:`csv`,HTML:`html`,IMAGE:`xbm`,MHT:`mht`,PDF:`pdf`,RTF:`rtf`,TEXT:`txt`,XLS:`xls`,XLSX:`xlsx`},It={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 Lt(e){return Ft[e]}function K(e){return It[e]}const Rt=/[\\/:*?"<>|.#&+%\u0000-\u001f]/g;function q(e){let t=(e.fileName??e.reportId).trim().replace(Rt,`-`).replace(/-{2,}/g,`-`).replace(/^-|-$/g,``).trim();return`${t===``?e.reportId:t}.${Lt(e.format)}`}function zt(e){let t=window.location?.href;return t?new URL(e,t).toString():e}function J(e){let{domain:t,filter:n,headerText:r,hideFilterString:i,parameters:a,reportId:o,signal:s,timezone:c}=e,l=q(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??-new Date().getTimezoneOffset()/60)),!p)return n&&d.set(`Filter`,n),new Request(zt(`${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(zt(`${u}?${d}`),{body:JSON.stringify(m),credentials:`same-origin`,headers:{"Content-Type":`application/json`,"X-Requested-With":`XMLHttpRequest`},method:`POST`,signal:s})}async function Y(e){let t=await fetch(J(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(J(e),{fileName:q(e),onProgress:e.onProgress,signal:e.signal})}async function X(e){let t=await Y(e),n=URL.createObjectURL(t.type?t:new Blob([t],{type:K(e.format)}));if(!window.open(n,`_blank`,`noopener`))throw URL.revokeObjectURL(n),Error(`The report could not be opened. Allow pop-ups for this site and try again.`);window.setTimeout(()=>URL.revokeObjectURL(n),6e4)}async function Vt(e){let t=window.document;if(!t?.body)return X(e);let n=await Y(e),r=URL.createObjectURL(n.type?n:new Blob([n],{type:K(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(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(),X(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 Z(e){return e===!0||e===1}function Ut(e){let t=[];return Z(e.FormatPDF)&&t.push(`PDF`),Z(e.FormatCSV)&&t.push(`XLSX`,`XLS`,`CSV`),Z(e.FormatHTML)&&t.push(`HTML`),Z(e.FormatRTF)&&t.push(`RTF`),Z(e.FormatMHT)&&t.push(`MHT`),Z(e.FormatTEXT)&&t.push(`TEXT`),Z(e.FormatIMAGE)&&t.push(`IMAGE`),t}function Wt(e){let t=U(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:Z(e.HasTitle),hasHeader:Z(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=e||new Map,on:function(t,n){var r=e.get(t);r?r.push(n
|
|
|
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 Q=new Map;async function $({buttons:e,content:t,className:n,id:r,title:i}){if(r&&Q.has(r))return await Q.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&&Q.has(r)&&Q.delete(r),o&&document.body.removeChild(o),e));return r&&Q.set(r,l),await l}let qt=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 $({content:e,buttons:n===1?[{label:x(`OK`),value:`yes`,primary:!0},{label:x(`Cancel`),value:`no`}]:[{label:x(`Yes`),value:`yes`,primary:!0},{label:x(`No`),value:`no`}],className:`alert-dialog-confirm`,title:r})===`yes`}async function Yt(e,t={}){await $({content:e,className:`alert-dialog-alert`,buttons:[{label:x(`OK`),value:`ok`,primary:!0}],...t})}function Xt(e){return`${e??window.af?.article?.id??window.window?.location.pathname.substring(1).split(`/`)[0]}.${window.af?.userSession.login??`anonymous`}`}function Zt(e,t){if(!window.af?.userSession)return null;let n=Xt(t),r=JSON.parse(localStorage.getItem(n)||`{}`);return e?r[e]||null:r}function Qt(e,t,n){if(!window.af?.userSession)return;let r=Xt(n),i=JSON.parse(localStorage.getItem(r)||`{}`);t===void 0?i=e:i[e]=t,localStorage.setItem(r,JSON.stringify(i))}const $t=`2.14.0`;export{qt as ConfirmButtons,nt as NO_FILTER_ID,O as RELATIVE_DATE_VALUES,a as SessionHandler,o as UserSession,He as addGroupAtPath,Yt as alert,dt as canDeleteSavedFilter,lt as canEditSavedFilter,z as canRenameSavedFilter,ft as canSetCrossDomain,ut as canShareSavedFilter,Le as changeOperator,G as coerceParameterValue,tt as coerceToStandardLayout,Jt as confirm,Ue as convertFilter,P as countExpressions,A as createEmptyFilter,j as createEmptyGroup,Fe as createExpression,ge as createLocalizer,B as decodeXml,We as describeFilter,ae as downloadBlob,Bt as downloadReport,oe as downloadRequest,V as encodeXml,pe as expose,Mt as fetchParameterDefault,ct as findSavedFilter,De as getDefaultOperator,Dt as getDefaultParameterValues,ke as getDynamicValueLabel,Ae as getDynamicValuesForField,x as getLocalizedString,Re as getNodeAtPath,S as getOperatorArity,Se as getOperatorLabel,Ee as getOperatorsForField,Lt as getReportExtension,q as getReportFileName,Ut as getReportFormats,K as getReportMediaType,J as getReportRequest,_ as getSessionData,Zt as getSettings,mt as getUserImage,D as getValueType,ze as insertNodeAtPath,y as invariant,F as isCompleteExpression,Ne as isEmptyFilter,N as isExpression,M as isGroup,W as isProcedureDefault,et as isStandardLayout,te as localStorage,ht as localize,c as logActivity,d as logError,e as mitt,k as normalizeOperator,$ as openAlertDialog,X as openReport,St as parseParameterItems,At as parseParameters,U as parseRecordSource,st as partitionSavedFilters,Vt as printReport,Pe as pruneFilter,H as readElement,_t as readElements,Be as removeNodeAtPath,Y as renderReport,Nt as resolveParameterDefaults,jt as restoreParameterValues,Qt as saveSettings,kt as serializeParameters,Ve as setGroupMode,l as startActivity,u as time,Qe as toFieldMetadata,$e as toFieldMetadataList,Xe as toFilterFieldType,Me as toFilterTree,ie as toLocalDateTime,ne as toLocalISODate,re as toLocalISODateTime,Wt as toReport,Tt as toReportParameter,Et as toReportParameters,rt as toSavedFilter,ot as toSavedFilters,I as updateNodeAtPath,$t as version,Kt as waitForDialog};
|
|
12
12
|
//# sourceMappingURL=af.common.min.js.map
|