UNPKG

@ministryofjustice/hmpps-digital-prison-reporting-frontend

Version:

The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.

3 lines (2 loc) 3.97 kB
var w=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var x=(s,e)=>{for(var t in e)w(s,t,{get:e[t],enumerable:!0})},I=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of v(e))!T.call(s,o)&&o!==t&&w(s,o,{get:()=>e[o],enumerable:!(n=C(e,o))||n.enumerable});return s};var K=s=>I(w({},"__esModule",{value:!0}),s);var G={};x(G,{default:()=>S});module.exports=K(G);var L=(s,e)=>{let{keys:t,measures:n,filters:o,expectNulls:a}=s.columns,r=n.map(p=>p.id),i=t?.map(p=>p.id)||[],l=o?.map(p=>p.id)||[],u=t?.some(p=>p.optional);e.length&&e[0].ts&&i.unshift("ts");let c=e.filter(p=>{let D=[];return Object.keys(p).forEach(h=>{let m=p[h].raw,f=!0;l.includes(h)?f=o.filter(b=>b.id===h).map(b=>b.equals).includes(m):i.includes(h)&&u?f=!0:i.includes(h)&&!u||r.includes(h)?f=m!==""&&m!==void 0&&m!==null:a&&(f=m===""||m===void 0||m===null),D.push(f)}),D.every(h=>h)});return u?V(c,t):c},y=(s,e)=>{let t=[],n=e.map(r=>r.id),o=e.every(r=>r.optional),a=[...n];return n.reverse().forEach(r=>{let i=e.find(l=>l.id===r);t.push([...a]),i&&i.optional&&a.pop()}),o&&t.push([]),t},g=(s,e)=>{let t=[];return e.every(n=>{let o=[];return s.forEach(a=>{let r=[];Object.keys(a).forEach(i=>{let l=a[i].raw,u=!0;n.includes(i)&&(u=l!==""&&l!==void 0&&l!==null),r.push(u)}),r.every(i=>i)&&o.push(a)}),o.length>0?(t=n,!1):(t=n,!0)}),t},V=(s,e)=>{let t=y(s,e),n=g(s,t);return s.filter(o=>{let a=[];return Object.keys(o).forEach(r=>{let i=o[r].raw,l=!0;n.includes(r)&&(l=i!==""&&i!==void 0&&i!==null),a.push(l)}),a.every(r=>r)})},E=s=>{let e=s[s.length-1]?.ts?.raw;return e?s.filter(t=>t.ts.raw===e):s},M=s=>{let e=s[0]?.ts?.raw;return e?s.filter(t=>t.ts.raw===e):s},k=s=>[...new Set(s.map(t=>t.ts.raw))].map(t=>s.filter(n=>n.ts.raw===t)),J=(s,e)=>[...new Set(s.map(n=>n[e].raw))].map(n=>s.filter(o=>o[e].raw===n)),O=(s,e)=>{if(!s||!s.length)return;let t=e[0],n=s.length-1,o=!1;for(;!o;){let a=`${s[n]?.id}`;a&&n!==-1&&(!t[a]||!t[a].raw||t[a].raw===""||t[a].raw===null)?n-=1:o=!0}return n!==-1?s[n]:void 0},j=(s,e,t=!1)=>{let{keys:n,measures:o}=s.columns,a=n||[],r=[...o];t&&(r=[...a,...o]);let i=r.map(l=>l.id);return e.map(l=>Object.keys(l).filter(u=>i.includes(u)).reduce((u,c)=>(u[c]=l[c],u),{}))},d={getDatasetRows:L,getLastestDataset:E,getEarliestDataset:M,filterRowsByDisplayColumns:j,groupRowsByTimestamp:k,groupRowsByKey:J,getGroupKey:O,getKeyVariations:y,getKeyIds:g,filterKeys:V};var $=(s,e)=>{let{columns:t,showLatest:n=!0,columnsAsList:o}=s,{measures:a,keys:r}=t,i=!a&&!r||!a.length&&!r,l=[...e];n&&(l=d.getLastestDataset(l));let u,c,p;return i?{head:u,rows:c,ts:p}=B(l):o?{head:u,rows:c,ts:p}=q(s,l):{head:u,rows:c,ts:p}=A(s,l),c.length&&a&&(c=H(c,a)),{table:{head:u,rows:c},ts:p}},q=(s,e)=>{let{columns:t}=s,{keys:n,measures:o}=t,a=d.getGroupKey(n,e),r=e[0]?.ts?.raw,i=r?`${r}`:"",l=[];l.push({text:""}),e.forEach(c=>{l.push({text:a?c[a.id].raw:""})});let u=[];return o.forEach(c=>{u.push([{text:c.display}])}),o.forEach((c,p)=>{e.forEach(D=>{u[p].push({text:`${D[c.id].raw}`})})}),{rows:u,head:l,ts:i}},R=(s,e)=>s.map(t=>{let n=e?.length?Array(e.length):Array(Object.keys(s[0]).length);return Object.keys(t).forEach((o,a)=>{let r=e?.length?e.findIndex(l=>l.id===o):a,i=t[o].raw;n.splice(r,1,{text:i})}),n}),A=(s,e)=>{let{measures:t}=s.columns,n=t.map(u=>({text:u.display})),o=d.getDatasetRows(s,e),a=d.filterRowsByDisplayColumns(s,o),r=R(a,t),i=o[0]?.ts?.raw,l=i?`${i}`:"";return{head:n,rows:r,ts:l}},B=s=>{let e=Object.keys(s[0]).map(r=>({text:r})),t=R(s),o=d.getLastestDataset(s)[0]?.ts?.raw,a=o?`${o}`:"";return{head:e,rows:t,ts:a}},H=(s,e)=>{let t=e.map((n,o)=>n.aggregate?o:void 0).filter(n=>n);if(t.length){let n=[{html:"<strong>Total<strong>"}];for(let o=1;o<e.length;o+=1)n[o]={text:""};s.push(n),t.forEach(o=>{let a=s.reduce((r,i)=>(r+=+i[o].text,r),0);s[s.length-1][o]={html:`<strong>${a}<strong>`}})}return s},S={createList:$,createTableRows:R}; //# sourceMappingURL=utils.js.map