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) 5.16 kB
var S=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var K=(s,a)=>{for(var e in a)S(s,e,{get:a[e],enumerable:!0})},B=(s,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of $(a))!O.call(s,r)&&r!==e&&S(s,r,{get:()=>a[r],enumerable:!(t=T(a,r))||t.enumerable});return s};var L=s=>B(S({},"__esModule",{value:!0}),s);var Y={};K(Y,{default:()=>X});module.exports=L(Y);var U=(s,a)=>{let{keys:e,measures:t,filters:r,expectNulls:o}=s.columns,i=t.map(d=>d.id),n=e?.map(d=>d.id)||[],l=r?.map(d=>d.id)||[],u=e?.some(d=>d.optional);a.length&&a[0].ts&&n.unshift("ts");let c=a.filter(d=>{let p=[];return Object.keys(d).forEach(D=>{let m=d[D].raw,b=!0;l.includes(D)?b=r.filter(f=>f.id===D).map(f=>f.equals).includes(m):n.includes(D)&&u?b=!0:n.includes(D)&&!u||i.includes(D)?b=m!==""&&m!==void 0&&m!==null:o&&(b=m===""||m===void 0||m===null),p.push(b)}),p.every(D=>D)});return u?x(c,e):c},w=(s,a)=>{let e=[],t=a.map(i=>i.id),r=a.every(i=>i.optional),o=[...t];return t.reverse().forEach(i=>{let n=a.find(l=>l.id===i);e.push([...o]),n&&n.optional&&o.pop()}),r&&e.push([]),e},v=(s,a)=>{let e=[];return a.every(t=>{let r=[];return s.forEach(o=>{let i=[];Object.keys(o).forEach(n=>{let l=o[n].raw,u=!0;t.includes(n)&&(u=l!==""&&l!==void 0&&l!==null),i.push(u)}),i.every(n=>n)&&r.push(o)}),r.length>0?(e=t,!1):(e=t,!0)}),e},x=(s,a)=>{let e=w(s,a),t=v(s,e);return s.filter(r=>{let o=[];return Object.keys(r).forEach(i=>{let n=r[i].raw,l=!0;t.includes(i)&&(l=n!==""&&n!==void 0&&n!==null),o.push(l)}),o.every(i=>i)})},A=s=>{let a=s[s.length-1]?.ts?.raw;return a?s.filter(e=>e.ts.raw===a):s},F=s=>{let a=s[0]?.ts?.raw;return a?s.filter(e=>e.ts.raw===a):s},M=s=>[...new Set(s.map(e=>e.ts.raw))].map(e=>s.filter(t=>t.ts.raw===e)),k=(s,a)=>[...new Set(s.map(t=>t[a].raw))].map(t=>s.filter(r=>r[a].raw===t)),q=(s,a)=>{if(!s||!s.length)return;let e=a[0],t=s.length-1,r=!1;for(;!r;){let o=`${s[t]?.id}`;o&&t!==-1&&(!e[o]||!e[o].raw||e[o].raw===""||e[o].raw===null)?t-=1:r=!0}return t!==-1?s[t]:void 0},j=(s,a,e=!1)=>{let{keys:t,measures:r}=s.columns,o=t||[],i=[...r];e&&(i=[...o,...r]);let n=i.map(l=>l.id);return a.map(l=>Object.keys(l).filter(u=>n.includes(u)).reduce((u,c)=>(u[c]=l[c],u),{}))},h={getDatasetRows:U,getLastestDataset:A,getEarliestDataset:F,filterRowsByDisplayColumns:j,groupRowsByTimestamp:M,groupRowsByKey:k,getGroupKey:q,getKeyVariations:w,getKeyIds:v,filterKeys:x};var N=(s,a)=>{let{columns:e}=s,{measures:t,keys:r}=e,o=I(s,a),{earliest:i,latest:n,earliestTs:l,latestTs:u}=o,c=t.find(D=>D.displayValue),d=h.getGroupKey(r,n),p;return c?d?p=P(e,i,l,n,u,d):p=H(e,i,l,n,u):p=J(e,i,l,n,u,d),p},I=(s,a)=>{let e=h.getLastestDataset(a),t=h.getDatasetRows(s,e),r=t[0]?.ts?.raw,o=h.filterRowsByDisplayColumns(s,t,!0),i=h.getEarliestDataset(a),n=h.getDatasetRows(s,i),l=n[0]?.ts?.raw;return{earliest:h.filterRowsByDisplayColumns(s,n,!0),earliestTs:l,latest:o,latestTs:r}},R=({title:s,value:a,rag:e,valueFor:t,valueFrom:r,prevVal:o,groupTitle:i})=>({title:s,value:a,...e&&{rag:W(e)},valueFor:t,trend:z(t,r,a,o),...i&&{group:i}}),_=(s,a)=>{let{columns:e}=s,{measures:t}=e,r=t[0],{id:o,display:i}=r,n=I(s,a),{earliest:l,latest:u,earliestTs:c,latestTs:d}=n;return u.map((D,m)=>{let b=i,{rag:g,raw:f}=D[o],y=l[m][o].raw,C=`${d}`,V=`${c}`;return R({title:b,value:f,rag:g,prevVal:y,valueFor:C,valueFrom:V})})[0]},H=(s,a,e,t,r)=>{let{measures:o}=s,i=o.find(l=>l.displayValue),n=o.find(l=>l.display||l.display==="");return[{title:"",scorecards:t.map((l,u)=>{let c=n?`${n.display} ${l[n.id].raw}`:n.display,{rag:d,raw:p}=l[i.id],D=a[u][i.id].raw,m=`${r}`,b=`${e}`;return R({title:c,value:p,rag:d,prevVal:D,valueFor:m,valueFrom:b})})}]},J=(s,a,e,t,r,o)=>{let{measures:i}=s;return t.map((n,l)=>{let u=`${n[o?.id]?.raw}`||"";return{title:o.display?`${o.display}: ${u}`:u,scorecards:Object.keys(n).filter(c=>c!==o?.id).map(c=>{let d=a[l],D=i.find(C=>C.id===c)?.display||c,m=+n[c].raw,b=+n[c].rag,g=d[c]?.raw,f=`${r}`,y=`${e}`;return R({title:D,value:m,rag:b,prevVal:g,valueFor:f,valueFrom:y})})}})},P=(s,a,e,t,r,o)=>{let{measures:i}=s,n=h.groupRowsByKey(t,o.id),l=h.groupRowsByKey(a,o.id),u=i.find(p=>p.displayValue),c=i.find(p=>p.display||p.display==="");return n.map((p,D)=>{let m=`${p[0][o?.id]?.raw}`||"";return{title:o.display?`${o.display}: ${m}`:m,scorecards:p.map((b,g)=>{let f=c?`${c.display} ${b[c.id].raw}`:c.display,y=+b[u.id].raw,C=+b[u.id].rag,V=`${r}`,G=`${e}`,E=l[D][g][u.id]?.raw;return R({title:f,value:y,rag:C,prevVal:E,valueFor:V,valueFrom:G})})}})},W=s=>({score:s,color:["green","yellow","red"][s]}),z=(s,a,e,t)=>{let r;if(a!==s){let o=+e-+t;r={direction:Math.sign(o),value:Math.abs(o),from:a}}return r},Q=s=>(s.reduce((e,t,r)=>(t.type==="scorecard"&&e.push(r),e),[]).reduce((e,t)=>{let r=e[e.length-1];return(!r||r[r.length-1]!==t-1)&&e.push([]),e[e.length-1].push(t),e},[]).reverse().forEach(e=>{let t=e[0],r=e.map(o=>s[o].data).filter(o=>!!o);for(;e.length;)s.splice(e.pop(),1);r.length&&s.splice(t,0,{id:`${t}`,type:"scorecard-group",data:[{scorecards:r}]})}),s),X={createScorecard:_,createScorecards:N,mergeScorecardsIntoGroup:Q}; //# sourceMappingURL=utils.js.map