@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) • 6.78 kB
JavaScript
var C=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var L=(s,a)=>{for(var e in a)C(s,e,{get:a[e],enumerable:!0})},B=(s,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let o of S(a))!E.call(s,o)&&o!==e&&C(s,o,{get:()=>a[o],enumerable:!(t=M(a,o))||t.enumerable});return s};var k=s=>B(C({},"__esModule",{value:!0}),s);var ts={};L(ts,{default:()=>F});module.exports=k(ts);var v=(s,a)=>{let{keys:e,measures:t,filters:o,expectNulls:r}=s.columns,l=t.map(c=>c.id),i=e?.map(c=>c.id)||[],n=o?.map(c=>c.id)||[],u=e?.some(c=>c.optional);a.length&&a[0].ts&&i.unshift("ts");let d=a.filter(c=>{let h=[];return Object.keys(c).forEach(p=>{let D=c[p].raw,b=!0;n.includes(p)?b=o.filter(f=>f.id===p).map(f=>f.equals).includes(D):i.includes(p)&&u?b=!0:i.includes(p)&&!u||l.includes(p)?b=D!==""&&D!==void 0&&D!==null:r&&(b=D===""||D===void 0||D===null),h.push(b)}),h.every(p=>p)});return u?x(d,e):d},w=(s,a)=>{let e=[],t=a.map(l=>l.id),o=a.every(l=>l.optional),r=[...t];return t.reverse().forEach(l=>{let i=a.find(n=>n.id===l);e.push([...r]),i&&i.optional&&r.pop()}),o&&e.push([]),e},V=(s,a)=>{let e=[];return a.every(t=>{let o=[];return s.forEach(r=>{let l=[];Object.keys(r).forEach(i=>{let n=r[i].raw,u=!0;t.includes(i)&&(u=n!==""&&n!==void 0&&n!==null),l.push(u)}),l.every(i=>i)&&o.push(r)}),o.length>0?(e=t,!1):(e=t,!0)}),e},x=(s,a)=>{let e=w(s,a),t=V(s,e);return s.filter(o=>{let r=[];return Object.keys(o).forEach(l=>{let i=o[l].raw,n=!0;t.includes(l)&&(n=i!==""&&i!==void 0&&i!==null),r.push(n)}),r.every(l=>l)})},K=s=>{let a=s[s.length-1]?.ts?.raw;return a?s.filter(e=>e.ts.raw===a):s},J=s=>{let a=s[0]?.ts?.raw;return a?s.filter(e=>e.ts.raw===a):s},A=s=>[...new Set(s.map(e=>e.ts.raw))].map(e=>s.filter(t=>t.ts.raw===e)),O=(s,a)=>[...new Set(s.map(t=>t[a].raw))].map(t=>s.filter(o=>o[a].raw===t)),$=(s,a)=>{if(!s||!s.length)return;let e=a[0],t=s.length-1,o=!1;for(;!o;){let r=`${s[t]?.id}`;r&&t!==-1&&(!e[r]||!e[r].raw||e[r].raw===""||e[r].raw===null)?t-=1:o=!0}return t!==-1?s[t]:void 0},U=(s,a,e=!1)=>{let{keys:t,measures:o}=s.columns,r=t||[],l=[...o];e&&(l=[...r,...o]);let i=l.map(n=>n.id);return a.map(n=>Object.keys(n).filter(u=>i.includes(u)).reduce((u,d)=>(u[d]=n[d],u),{}))},m={getDatasetRows:v,getLastestDataset:K,getEarliestDataset:J,filterRowsByDisplayColumns:U,groupRowsByTimestamp:A,groupRowsByKey:O,getGroupKey:$,getKeyVariations:w,getKeyIds:V,filterKeys:x};var G=(s,a)=>{let{columns:e,showLatest:t=!0,columnsAsList:o}=s,{measures:r,keys:l}=e,i=!r&&!l||!r.length&&!l,n=[...a];t&&(n=m.getLastestDataset(n));let u,d,c;return i?{head:u,rows:d,ts:c}=N(n):o?{head:u,rows:d,ts:c}=j(s,n):{head:u,rows:d,ts:c}=q(s,n),d.length&&r&&(d=_(d,r)),{table:{head:u,rows:d},ts:c}},j=(s,a)=>{let{columns:e}=s,{keys:t,measures:o}=e,r=m.getGroupKey(t,a),l=a[0]?.ts?.raw,i=l?`${l}`:"",n=[];n.push({text:""}),a.forEach(d=>{n.push({text:r?d[r.id].raw:""})});let u=[];return o.forEach(d=>{u.push([{text:d.display}])}),o.forEach((d,c)=>{a.forEach(h=>{u[c].push({text:`${h[d.id].raw}`})})}),{rows:u,head:n,ts:i}},y=(s,a)=>s.map(e=>{let t=a?.length?Array(a.length):Array(Object.keys(s[0]).length);return Object.keys(e).forEach((o,r)=>{let l=a?.length?a.findIndex(n=>n.id===o):r,i=e[o].raw;t.splice(l,1,{text:i})}),t}),q=(s,a)=>{let{measures:e}=s.columns,t=e.map(u=>({text:u.display})),o=m.getDatasetRows(s,a),r=m.filterRowsByDisplayColumns(s,o),l=y(r,e),i=o[0]?.ts?.raw,n=i?`${i}`:"";return{head:t,rows:l,ts:n}},N=s=>{let a=Object.keys(s[0]).map(l=>({text:l})),e=y(s),o=m.getLastestDataset(s)[0]?.ts?.raw,r=o?`${o}`:"";return{head:a,rows:e,ts:r}},_=(s,a)=>{let e=a.map((t,o)=>t.aggregate?o:void 0).filter(t=>t);if(e.length){let t=[{html:"<strong>Total<strong>"}];for(let o=1;o<a.length;o+=1)t[o]={text:""};s.push(t),e.forEach(o=>{let r=s.reduce((l,i)=>(l+=+i[o].text,l),0);s[s.length-1][o]={html:`<strong>${r}<strong>`}})}return s},R={createList:G,createTableRows:y};var H=(s,a)=>{let e=["bar-timeseries","line-timeseries"],{type:t}=s,o,r,l;if(e.includes(t)){let{latestData:i,dataSetRows:n,timeseriesData:u}=z(s,a);n.length&&(r=ss(s,u),o=as(s,u),l=T(s,i,!0))}else{let{dataSetRows:i,snapshotData:n}=P(s,a);i.length&&(r=W(s,n),o=Z(s,i),l=T(s,i))}return{details:l,table:o,chart:r}},F={createChart:H},P=(s,a)=>{let e=m.getLastestDataset(a),t=m.getDatasetRows(s,e),o=m.filterRowsByDisplayColumns(s,t,!0);return{dataSetRows:t,snapshotData:o}},z=(s,a)=>{let e=m.getLastestDataset(a),t=m.getDatasetRows(s,a),o=m.filterRowsByDisplayColumns(s,t,!0);return{latestData:e,dataSetRows:t,timeseriesData:o}},T=(s,a,e=!1)=>{let t=[],o=Q(s,a,e);return a[0]?.ts&&t.push({label:"Values for:",value:a[0]?.ts.raw}),{meta:t,headlines:o}},Q=(s,a,e=!1)=>{let t=[],{columns:o}=s,{measures:r}=o,l=!!r.find(c=>c.axis),i,n,u,d;return e?(n=r.find(c=>c.id!=="ts"),n&&(d=`${a[0].ts.raw}`,u=+a[0][n.id].raw,i={label:d,value:u})):(n=l?r.find(c=>c.axis&&c.axis==="y"):r[0],n&&(d=`Total ${n.display.toLowerCase()}`,u=a.reduce((c,h)=>c+ +h[n.id].raw,0),i={label:d,value:u})),t.push(i),t},W=(s,a)=>{let{type:e,columns:t}=s,{measures:o}=t,r=!!o.find(u=>u.axis),l,i,n;return r?{labels:l,unit:i,datasets:n}=Y(t,a):{labels:l,unit:i,datasets:n}=X(t,a),{type:e,unit:i,data:{labels:l,datasets:n}}},X=(s,a)=>{let{keys:e,measures:t}=s,o=t.map(n=>n.display),r=e[e.length-1]?.id,l=t[0].unit?t[0].unit:void 0,i=a.map(n=>{let u=n[r]?`${n[r].raw}`:"All",d=t.map(h=>{let p=h.id;return n[p]?+n[p].raw:0}),c=d.reduce((h,p)=>h+p,0);return{label:u,data:d,total:c}});return{labels:o,unit:l,datasets:i}},Y=(s,a)=>{let{measures:e,keys:t}=s,o=e.find(c=>c.axis==="x"),r=e.find(c=>c.axis==="y"),l=r?.unit||void 0,i=m.getGroupKey(t,a),n=i?m.groupRowsByKey(a,i.id):[a],u=n[0]?.map(c=>`${c[o.id].raw}`),d=n.map(c=>{let h=c.map(p=>+p[r.id].raw);return{label:i?`${c[0][i.id].raw}`:r.display,data:h,total:h.reduce((p,D)=>p+D,0)}});return{labels:u,unit:l,datasets:d}},Z=(s,a)=>{let{columns:e}=s,{keys:t,measures:o}=e,l=[...t,...o].map(u=>({text:u.display})),i=m.filterRowsByDisplayColumns(s,a,!0),n=R.createTableRows(i);return{head:l,rows:n}},ss=(s,a)=>{let{columns:e}=s,{keys:t,measures:o}=e,r=o[0].unit?o[0].unit:void 0,l=s.type==="bar-timeseries"?"bar":"line",n=m.getGroupKey(t,a).id,u=m.groupRowsByTimestamp(a),d=u.map(p=>p[0].ts.raw),c=u[0].length,h=[];for(let p=0;p<c;p+=1){let D=u.map(f=>+f[p][o[1].id].raw),b=D.reduce((f,I)=>f+I,0),g=u[0][p][n].raw;h.push({data:D,label:g,total:b})}return{type:l,unit:r,timeseries:!0,data:{labels:d,datasets:h}}},as=(s,a)=>{let{columns:e}=s,{keys:t,measures:o}=e,r=a.flat(),l=a.length>1,i=[...o];if(l){let d=i.findIndex(h=>h.id==="ts"),c=i[d];i.splice(d,1),i=[...t,...i],i.unshift(c)}else r=m.filterRowsByDisplayColumns(s,r);let n=i.map(d=>({text:d.display})),u=R.createTableRows(r);return{head:n,rows:u}};
//# sourceMappingURL=utils.js.map