@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.16.1 → 4.17.1

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.
Files changed (211) hide show
  1. package/dpr/components/_catalogue/catalogue/utils.js +1 -1
  2. package/dpr/components/_catalogue/catalogue/utils.js.map +3 -3
  3. package/dpr/components/_catalogue/catalogue/utils.test.ts +15 -1
  4. package/dpr/components/_catalogue/catalogue/utils.ts +22 -4
  5. package/dpr/components/_catalogue/catalogue/view.njk +2 -1
  6. package/dpr/components/_catalogue/catalogue-filters/view.njk +2 -2
  7. package/dpr/components/_catalogue/catalogue-list/utils.js +1 -1
  8. package/dpr/components/_catalogue/catalogue-list/utils.js.map +3 -3
  9. package/dpr/components/_catalogue/catalogue-list/utils.ts +4 -5
  10. package/dpr/components/_catalogue/catalogue-search/clientClass.mjs +14 -0
  11. package/dpr/components/_catalogue/catalogue-search/view.njk +24 -1
  12. package/dpr/components/_charts/chart/Buckets.js +1 -1
  13. package/dpr/components/_charts/chart/Buckets.js.map +3 -3
  14. package/dpr/components/_charts/chart/Buckets.ts +44 -36
  15. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
  16. package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +2 -2
  17. package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +22 -14
  18. package/dpr/components/_charts/chart/heatmap/types.js +2 -0
  19. package/dpr/components/_charts/chart/heatmap/types.js.map +7 -0
  20. package/dpr/components/_charts/chart/heatmap/types.ts +6 -0
  21. package/dpr/components/_charts/utils.js +1 -1
  22. package/dpr/components/_charts/utils.js.map +3 -3
  23. package/dpr/components/_charts/utils.test.ts +10 -7
  24. package/dpr/components/_charts/utils.ts +57 -50
  25. package/dpr/components/_dashboards/dashboard/view.njk +1 -1
  26. package/dpr/components/_dashboards/dashboard-list/utils.js +1 -1
  27. package/dpr/components/_dashboards/dashboard-list/utils.js.map +2 -2
  28. package/dpr/components/_dashboards/dashboard-list/utils.test.ts +3 -3
  29. package/dpr/components/_dashboards/dashboard-list/utils.ts +16 -12
  30. package/dpr/components/_dashboards/dashboard-section/view.njk +1 -1
  31. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +2 -0
  32. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +7 -0
  33. package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +40 -0
  34. package/dpr/components/_dashboards/dashboard-visualisation/types.js +2 -0
  35. package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +7 -0
  36. package/dpr/components/_dashboards/dashboard-visualisation/types.ts +102 -0
  37. package/dpr/components/_dashboards/dashboard-visualisation/view.njk +1 -1
  38. package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
  39. package/dpr/components/_dashboards/scorecard/Scorecard.js.map +2 -2
  40. package/dpr/components/_dashboards/scorecard/Scorecard.ts +37 -29
  41. package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
  42. package/dpr/components/_dashboards/scorecard/types.ts +1 -0
  43. package/dpr/components/_dashboards/scorecard/utils.js +1 -1
  44. package/dpr/components/_dashboards/scorecard/utils.js.map +2 -2
  45. package/dpr/components/_dashboards/scorecard/utils.test.ts +13 -4
  46. package/dpr/components/_dashboards/scorecard/utils.ts +6 -5
  47. package/dpr/components/_dashboards/scorecard/view.njk +6 -5
  48. package/dpr/components/_dashboards/scorecard-group/view.njk +4 -4
  49. package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
  50. package/dpr/components/_reports/report-actions/types.d.ts +1 -1
  51. package/dpr/components/_reports/report-heading/view.njk +1 -1
  52. package/dpr/data/dashboardClient.js +1 -1
  53. package/dpr/data/dashboardClient.js.map +2 -2
  54. package/dpr/data/dashboardClient.ts +8 -7
  55. package/dpr/data/dprReportingClient.js +1 -1
  56. package/dpr/data/dprReportingClient.js.map +3 -3
  57. package/dpr/data/dprReportingClient.ts +2 -0
  58. package/dpr/data/reportingClient.js +1 -1
  59. package/dpr/data/reportingClient.js.map +1 -1
  60. package/dpr/data/reportingClient.ts +1 -1
  61. package/dpr/middleware/reportAuthoriser.js +1 -1
  62. package/dpr/middleware/reportAuthoriser.js.map +3 -3
  63. package/dpr/middleware/reportAuthoriser.ts +9 -20
  64. package/dpr/middleware/setUpDprResources.js +1 -1
  65. package/dpr/middleware/setUpDprResources.js.map +3 -3
  66. package/dpr/middleware/setUpDprResources.test.ts +7 -0
  67. package/dpr/middleware/setUpDprResources.ts +17 -2
  68. package/dpr/routes/journeys/download-report/controller.js +1 -1
  69. package/dpr/routes/journeys/download-report/controller.js.map +3 -3
  70. package/dpr/routes/journeys/download-report/controller.ts +4 -1
  71. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js +1 -1
  72. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.js.map +2 -2
  73. package/dpr/routes/journeys/download-report/request-download/form/submitted/tests.cy.ts +1 -0
  74. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js +1 -1
  75. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.js.map +2 -2
  76. package/dpr/routes/journeys/download-report/request-download/form/tests.cy.ts +1 -0
  77. package/dpr/routes/journeys/download-report/tests.cy.js +1 -1
  78. package/dpr/routes/journeys/download-report/tests.cy.js.map +2 -2
  79. package/dpr/routes/journeys/download-report/tests.cy.ts +2 -7
  80. package/dpr/routes/journeys/download-report/utils.js +1 -1
  81. package/dpr/routes/journeys/download-report/utils.js.map +3 -3
  82. package/dpr/routes/journeys/download-report/utils.ts +10 -7
  83. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js +1 -1
  84. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.js.map +2 -2
  85. package/dpr/routes/journeys/my-reports/bookmarks/list/tests.cy.ts +1 -0
  86. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js +1 -1
  87. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.js.map +3 -3
  88. package/dpr/routes/journeys/my-reports/bookmarks/tests.cy.ts +5 -12
  89. package/dpr/routes/journeys/my-reports/bookmarks/utils.js +1 -1
  90. package/dpr/routes/journeys/my-reports/bookmarks/utils.js.map +3 -3
  91. package/dpr/routes/journeys/my-reports/bookmarks/utils.ts +11 -5
  92. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js +1 -1
  93. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.js.map +3 -3
  94. package/dpr/routes/journeys/my-reports/recently-viewed/list/tests.cy.ts +4 -6
  95. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js +1 -1
  96. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.js.map +2 -2
  97. package/dpr/routes/journeys/my-reports/requested-reports/list/tests.cy.ts +1 -0
  98. package/dpr/routes/journeys/product-collection/routes.js +2 -0
  99. package/dpr/routes/journeys/product-collection/routes.js.map +7 -0
  100. package/dpr/routes/journeys/product-collection/routes.ts +28 -0
  101. package/dpr/routes/journeys/product-collection/selected/controller.js +2 -0
  102. package/dpr/routes/journeys/product-collection/selected/controller.js.map +7 -0
  103. package/dpr/routes/journeys/product-collection/selected/controller.ts +29 -0
  104. package/dpr/routes/journeys/product-collection/selected/routes.js +2 -0
  105. package/dpr/routes/journeys/product-collection/selected/routes.js.map +7 -0
  106. package/dpr/routes/journeys/product-collection/selected/routes.ts +15 -0
  107. package/dpr/routes/journeys/product-collection/selected/tests.cy.js +2 -0
  108. package/dpr/routes/journeys/product-collection/selected/tests.cy.js.map +7 -0
  109. package/dpr/routes/journeys/product-collection/selected/tests.cy.ts +54 -0
  110. package/dpr/routes/journeys/product-collection/selected/validation.js +2 -0
  111. package/dpr/routes/journeys/product-collection/selected/validation.js.map +7 -0
  112. package/dpr/routes/journeys/product-collection/selected/validation.ts +5 -0
  113. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js +1 -1
  114. package/dpr/routes/journeys/request-missing-report/form/tests.cy.js.map +2 -2
  115. package/dpr/routes/journeys/request-missing-report/form/tests.cy.ts +1 -0
  116. package/dpr/routes/journeys/request-missing-report/tests.cy.js +1 -1
  117. package/dpr/routes/journeys/request-missing-report/tests.cy.js.map +2 -2
  118. package/dpr/routes/journeys/request-missing-report/tests.cy.ts +3 -4
  119. package/dpr/routes/journeys/request-report/filters/tests.cy.js +1 -1
  120. package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +3 -3
  121. package/dpr/routes/journeys/request-report/filters/tests.cy.ts +3 -6
  122. package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
  123. package/dpr/routes/journeys/request-report/filters/utils.js.map +2 -2
  124. package/dpr/routes/journeys/request-report/filters/utils.ts +2 -3
  125. package/dpr/routes/journeys/request-report/status/tests.cy.js +1 -1
  126. package/dpr/routes/journeys/request-report/status/tests.cy.js.map +2 -2
  127. package/dpr/routes/journeys/request-report/status/tests.cy.ts +2 -6
  128. package/dpr/routes/journeys/request-report/tests.cy.js +1 -1
  129. package/dpr/routes/journeys/request-report/tests.cy.js.map +3 -3
  130. package/dpr/routes/journeys/request-report/tests.cy.ts +5 -32
  131. package/dpr/routes/journeys/routes.js +1 -1
  132. package/dpr/routes/journeys/routes.js.map +2 -2
  133. package/dpr/routes/journeys/routes.ts +2 -0
  134. package/dpr/routes/journeys/view-report/async/controller.js.map +2 -2
  135. package/dpr/routes/journeys/view-report/async/controller.ts +2 -2
  136. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js +1 -1
  137. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.js.map +2 -2
  138. package/dpr/routes/journeys/view-report/async/dashboard/tests.cy.ts +2 -9
  139. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  140. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
  141. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +100 -95
  142. package/dpr/routes/journeys/view-report/async/report/controller.js +1 -1
  143. package/dpr/routes/journeys/view-report/async/report/controller.js.map +3 -3
  144. package/dpr/routes/journeys/view-report/async/report/controller.ts +4 -6
  145. package/dpr/routes/journeys/view-report/async/report/tests.cy.js +1 -1
  146. package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +2 -2
  147. package/dpr/routes/journeys/view-report/async/report/tests.cy.ts +8 -17
  148. package/dpr/routes/journeys/view-report/async/report/types.js +2 -0
  149. package/dpr/routes/journeys/view-report/async/report/types.js.map +7 -0
  150. package/dpr/routes/journeys/view-report/async/report/types.ts +31 -0
  151. package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
  152. package/dpr/routes/journeys/view-report/async/report/utils.js.map +3 -3
  153. package/dpr/routes/journeys/view-report/async/report/utils.ts +173 -136
  154. package/dpr/routes/journeys/view-report/sync/tests.cy.js +1 -1
  155. package/dpr/routes/journeys/view-report/sync/tests.cy.js.map +3 -3
  156. package/dpr/routes/journeys/view-report/sync/tests.cy.ts +3 -4
  157. package/dpr/services/dashboardService.js +1 -1
  158. package/dpr/services/dashboardService.js.map +2 -2
  159. package/dpr/services/dashboardService.ts +7 -5
  160. package/dpr/services/productCollection/productCollectionService.js +2 -0
  161. package/dpr/services/productCollection/productCollectionService.js.map +7 -0
  162. package/dpr/services/productCollection/productCollectionService.ts +25 -0
  163. package/dpr/services/productCollection/productCollectionStoreService.js +2 -0
  164. package/dpr/services/productCollection/productCollectionStoreService.js.map +7 -0
  165. package/dpr/services/productCollection/productCollectionStoreService.ts +26 -0
  166. package/dpr/services/reportingService.js +1 -1
  167. package/dpr/services/reportingService.js.map +1 -1
  168. package/dpr/services/reportingService.ts +1 -1
  169. package/dpr/types/AsyncReportUtils.js.map +1 -1
  170. package/dpr/types/AsyncReportUtils.ts +3 -4
  171. package/dpr/types/Charts.js +1 -1
  172. package/dpr/types/Charts.js.map +3 -3
  173. package/dpr/types/Charts.ts +0 -82
  174. package/dpr/types/Metrics.js +1 -1
  175. package/dpr/types/Metrics.js.map +1 -1
  176. package/dpr/types/Metrics.ts +7 -0
  177. package/dpr/types/ReportQuery.js +1 -1
  178. package/dpr/types/ReportQuery.js.map +3 -3
  179. package/dpr/types/ReportQuery.ts +24 -15
  180. package/dpr/types/ReportStore.js +1 -1
  181. package/dpr/types/ReportStore.js.map +1 -1
  182. package/dpr/types/ReportStore.ts +1 -0
  183. package/dpr/types/Services.d.js +1 -1
  184. package/dpr/types/Services.d.js.map +1 -1
  185. package/dpr/types/Services.d.ts +15 -0
  186. package/dpr/types/api.d.js +1 -1
  187. package/dpr/types/api.d.js.map +1 -1
  188. package/dpr/types/api.d.ts +197 -6
  189. package/dpr/utils/Personalisation/personalisationUtils.js +1 -1
  190. package/dpr/utils/Personalisation/personalisationUtils.js.map +3 -3
  191. package/dpr/utils/Personalisation/personalisationUtils.ts +15 -6
  192. package/dpr/utils/ReportStoreServiceUtils.js +1 -1
  193. package/dpr/utils/ReportStoreServiceUtils.js.map +3 -3
  194. package/dpr/utils/ReportStoreServiceUtils.ts +7 -0
  195. package/dpr/utils/UserStoreItemBuilder.js +1 -1
  196. package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
  197. package/dpr/utils/UserStoreItemBuilder.ts +2 -2
  198. package/dpr/utils/datasetHelper.js +1 -1
  199. package/dpr/utils/datasetHelper.js.map +3 -3
  200. package/dpr/utils/datasetHelper.test.ts +11 -11
  201. package/dpr/utils/datasetHelper.ts +23 -8
  202. package/dpr/utils/logger.js +1 -1
  203. package/dpr/utils/logger.js.map +3 -3
  204. package/dpr/utils/logger.ts +6 -1
  205. package/package.json +2 -1
  206. package/dpr/components/_charts/chart/DashboardVisualisation.js +0 -2
  207. package/dpr/components/_charts/chart/DashboardVisualisation.js.map +0 -7
  208. package/dpr/components/_charts/chart/DashboardVisualisation.ts +0 -43
  209. package/dpr/components/_dashboards/dashboard/types.js +0 -2
  210. package/dpr/components/_dashboards/dashboard/types.js.map +0 -7
  211. package/dpr/components/_dashboards/dashboard/types.ts +0 -120
@@ -1,2 +1,2 @@
1
- var D=Object.create;var w=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var M=(t,s)=>{for(var e in s)w(t,e,{get:s[e],enumerable:!0})},g=(t,s,e,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of x(s))!y.call(t,o)&&o!==e&&w(t,o,{get:()=>s[o],enumerable:!(a=f(s,o))||a.enumerable});return t};var T=(t,s,e)=>(e=t!=null?D(L(t)):{},g(s||!t||!t.__esModule?w(e,"default",{value:t,enumerable:!0}):e,t)),J=t=>g(w({},"__esModule",{value:!0}),t);var $={};M($,{createList:()=>R,createTableRows:()=>d,default:()=>A});module.exports=J($);var p=T(require("../../../utils/datasetHelper"));const R=(t,s)=>{const{columns:e,options:a}=t,o=a,c=o?.showLatest!==void 0?o.showLatest:!0,r=o?.columnsAsList,{measures:l,keys:n}=e,h=!l&&!n||!l.length&&!n;let i=[...s];c&&(i=p.default.getLastestDataset(i));let m,u,b;return h?{head:m,rows:u,ts:b}=E(i):r?{head:m,rows:u,ts:b}=V(t,i):{head:m,rows:u,ts:b}=C(t,i),u.length&&l&&(u=O(u,l)),{table:{head:m,rows:u},ts:b}},V=(t,s)=>{const{columns:e}=t,{keys:a,measures:o}=e,c=p.default.getGroupKey(a||[],s),r=s[0]?.ts?.raw,l=r?`${r}`:"",n=[];n.push({text:""}),s.forEach(i=>{n.push({text:c?i[c.id].raw:""})});const h=[];return o.forEach(i=>{h.push([{text:i.display}])}),o.forEach((i,m)=>{s.forEach(u=>{h[m].push({text:`${u[i.id].raw}`})})}),{rows:h,head:n,ts:l}},d=(t,s)=>t.map(e=>{const a=s?.length?Array(s.length):Array(Object.keys(t[0]).length);return Object.keys(e).forEach((o,c)=>{const r=s?.length?s.findIndex(n=>n.id===o):c,l=e[o].raw;a.splice(r,1,{text:l})}),a}),C=(t,s)=>{const{measures:e}=t.columns,a=e.map(h=>({text:h.display})),o=p.default.getDatasetRows(t,s),c=p.default.filterRowsByDisplayColumns(t,o),r=d(c,e),l=o[0]?.ts?.raw,n=l?`${l}`:"";return{head:a,rows:r,ts:n}},E=t=>{const s=Object.keys(t[0]).map(r=>({text:r})),e=d(t),o=p.default.getLastestDataset(t)[0]?.ts?.raw,c=o?`${o}`:"";return{head:s,rows:e,ts:c}},O=(t,s)=>{const e=s.flatMap((a,o)=>a.aggregate?[o]:[]);if(e.length){const a=[{html:"<strong>Total<strong>"}];for(let o=1;o<s.length;o+=1)a[o]={text:""};t.push(a),e.forEach(o=>{const c=t.reduce((r,l)=>{const n=l[o];return n&&n.text&&(r+=Number(n.text)),r},0);t[t.length-1][o]={html:`<strong>${c}<strong>`}})}return t};var A={createList:R,createTableRows:d};0&&(module.exports={createList,createTableRows});
1
+ var g=Object.create;var w=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var T=(t,s)=>{for(var e in s)w(t,e,{get:s[e],enumerable:!0})},d=(t,s,e,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of x(s))!L.call(t,o)&&o!==e&&w(t,o,{get:()=>s[o],enumerable:!(a=R(s,o))||a.enumerable});return t};var M=(t,s,e)=>(e=t!=null?g(y(t)):{},d(s||!t||!t.__esModule?w(e,"default",{value:t,enumerable:!0}):e,t)),J=t=>d(w({},"__esModule",{value:!0}),t);var $={};T($,{createList:()=>f,createTableRows:()=>D,default:()=>A});module.exports=J($);var u=M(require("../../../utils/datasetHelper"));const f=(t,s)=>{const{columns:e,options:a}=t,o=a,l=o?.showLatest!==void 0?o.showLatest:!0,r=o?.columnsAsList,{measures:c,keys:n}=e,h=!c&&!n||!c.length&&!n;let i=[...s];l&&(i=u.default.getLastestDataset(i));let p,m,b;return h?{head:p,rows:m,ts:b}=E(i):r?{head:p,rows:m,ts:b}=V(t,i):{head:p,rows:m,ts:b}=C(t,i),m.length&&c&&(m=O(m,c)),{table:{head:p,rows:m},ts:b}},V=(t,s)=>{const{columns:e}=t,{keys:a,measures:o}=e,l=u.default.getGroupKey(a||[],s),r=s[0]?.ts?.raw,c=r?`${r}`:"",n=[];n.push({text:""}),s.forEach(i=>{n.push({text:l?i[l.id].raw:""})});const h=[];return o.forEach(i=>{h.push([{text:i.display}])}),o.forEach((i,p)=>{s.forEach(m=>{h[p].push({text:`${m[i.id].raw}`})})}),{rows:h,head:n,ts:c}},D=(t,s)=>t.map(e=>{const a=s?.length?Array(s.length):Array(Object.keys(t[0]).length);return Object.keys(e).forEach((o,l)=>{const r=s?.length?s.findIndex(n=>n.id===o):l,c=e[o].raw;a.splice(r,1,{text:c})}),a}),C=(t,s)=>{const{measures:e}=t.columns,a=e.map(h=>({text:h.display})),o=u.default.getDatasetRows(t,s),l=u.default.filterRowsByDisplayColumns(t,o),r=D(l,e),c=o[0]?.ts?.raw,n=c?`${c}`:"";return{head:a,rows:r,ts:n}},E=t=>{const s=Object.keys(t[0]).map(r=>({text:r})),e=D(t),o=u.default.getLastestDataset(t)[0]?.ts?.raw,l=o?`${o}`:"";return{head:s,rows:e,ts:l}},O=(t,s)=>{const e=s.flatMap((a,o)=>a.aggregate?[o]:[]);if(e.length){const a=[{html:"<strong>Total<strong>"}];for(let o=1;o<s.length;o+=1)a[o]={text:""};t.push(a),e.forEach(o=>{const l=t.reduce((r,c)=>{const n=c[o];return n&&n.text&&(r+=Number(n.text)),r},0);t[t.length-1][o]={html:`<strong>${l}<strong>`}})}return t};var A={createList:f,createTableRows:D};0&&(module.exports={createList,createTableRows});
2
2
  //# sourceMappingURL=utils.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_dashboards/dashboard-list/utils.ts"],
4
- "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { MoJTable, MoJTableRow } from '../../../types/Charts'\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport {\n DashboardVisualisationColumn,\n DashboardVisualisationColumnMeasure,\n ListDashboardVisualisationOptions,\n ListVisualisation,\n} from '../dashboard/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\n\nexport const createList = (\n listDefinition: ListVisualisation,\n dashboardData: DashboardDataResponse[],\n): { table: MoJTable; ts: string } => {\n const { columns, options } = listDefinition\n const listOptions = <ListDashboardVisualisationOptions>options\n const showLatest = listOptions?.showLatest !== undefined ? listOptions.showLatest : true\n const columnsAsList = listOptions?.columnsAsList\n const { measures, keys } = columns\n const showAllData = (!measures && !keys) || (!measures.length && !keys)\n\n let datasetData: DashboardDataResponse[] = [...dashboardData]\n if (showLatest) {\n datasetData = DatasetHelper.getLastestDataset(datasetData)\n }\n\n let head\n let rows\n let ts\n\n if (showAllData) {\n ;({ head, rows, ts } = createFullList(datasetData))\n } else if (columnsAsList) {\n ;({ head, rows, ts } = createListFromColumns(listDefinition, datasetData))\n } else {\n ;({ head, rows, ts } = creatListFromRows(listDefinition, datasetData))\n }\n\n if (rows.length && measures) rows = sumColumns(rows, measures)\n\n return {\n table: {\n head,\n rows,\n },\n ts,\n }\n}\n\nconst createListFromColumns = (listDefinition: ListVisualisation, dashboardData: DashboardDataResponse[]) => {\n const { columns } = listDefinition\n const { keys, measures } = columns\n const groupKey = DatasetHelper.getGroupKey(keys || [], dashboardData)\n\n const timestampData = dashboardData[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n const head = []\n head.push({ text: '' })\n dashboardData.forEach((row) => {\n head.push({\n text: groupKey ? row[groupKey.id].raw : '',\n })\n })\n\n const rows: MoJTableRow[][] = []\n measures.forEach((measure) => {\n rows.push([{ text: measure.display }] as MoJTableRow[])\n })\n\n measures.forEach((measure, index) => {\n dashboardData.forEach((row) => {\n rows[index].push({ text: `${row[measure.id].raw}` })\n })\n })\n\n return {\n rows,\n head,\n ts,\n }\n}\n\nexport const createTableRows = (\n data: DashboardDataResponse[],\n measures?: DashboardVisualisationColumn[],\n): MoJTableRow[][] => {\n return data.map((dataRow) => {\n const row: MoJTableRow[] = measures?.length ? Array(measures.length) : Array(Object.keys(data[0]).length)\n Object.keys(dataRow).forEach((key, index) => {\n const headIndex = measures?.length ? measures.findIndex((m) => m.id === key) : index\n const text = dataRow[key].raw\n row.splice(headIndex, 1, { text } as MoJTableRow)\n })\n\n return row\n })\n}\n\nconst creatListFromRows = (listDefinition: ListVisualisation, dashboardData: DashboardDataResponse[]) => {\n const { measures } = listDefinition.columns\n\n const head = measures.map((column) => {\n return { text: column.display }\n })\n\n const dataSetRows = DatasetHelper.getDatasetRows(listDefinition, dashboardData)\n const displayRows = DatasetHelper.filterRowsByDisplayColumns(listDefinition, dataSetRows)\n const rows = createTableRows(displayRows, measures)\n\n const timestampData = dataSetRows[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n return {\n head,\n rows,\n ts,\n }\n}\n\nconst createFullList = (dashboardData: DashboardDataResponse[]) => {\n const head = Object.keys(dashboardData[0]).map((key) => {\n return { text: key }\n })\n const rows = createTableRows(dashboardData)\n\n const latestData = DatasetHelper.getLastestDataset(dashboardData)\n const timestampData = latestData[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n return {\n head,\n rows,\n ts,\n }\n}\n\nconst sumColumns = (rowsData: MoJTableRow[][], measures: DashboardVisualisationColumnMeasure[]) => {\n const sumColumnIndexes: number[] = measures.flatMap((col, idx) => (col.aggregate ? [idx] : []))\n\n if (sumColumnIndexes.length) {\n const sumRow: MoJTableRow[] = [{ html: `<strong>Total<strong>` }]\n for (let index = 1; index < measures.length; index += 1) {\n sumRow[index] = { text: '' }\n }\n\n rowsData.push(sumRow)\n sumColumnIndexes.forEach((index) => {\n const total = rowsData.reduce((acc, row) => {\n const rowIndex = row[index]\n if (rowIndex && rowIndex.text) {\n acc += Number(rowIndex.text)\n }\n return acc\n }, 0)\n rowsData[rowsData.length - 1][index] = {\n html: `<strong>${total}<strong>`,\n }\n })\n }\n\n return rowsData\n}\n\nexport default {\n createList,\n createTableRows,\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport { ListDashboardVisualisationOptions, MoJTable, MoJTableRow } from '../dashboard-visualisation/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\nimport { components } from '../../../types/api'\n\nexport const createList = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n): { table: MoJTable; ts: string } => {\n const { columns, options } = listDefinition\n const listOptions = <ListDashboardVisualisationOptions>options\n const showLatest = listOptions?.showLatest !== undefined ? listOptions.showLatest : true\n const columnsAsList = listOptions?.columnsAsList\n const { measures, keys } = columns\n const showAllData = (!measures && !keys) || (!measures.length && !keys)\n\n let datasetData: DashboardDataResponse[] = [...dashboardData]\n if (showLatest) {\n datasetData = DatasetHelper.getLastestDataset(datasetData)\n }\n\n let head\n let rows\n let ts\n\n if (showAllData) {\n ;({ head, rows, ts } = createFullList(datasetData))\n } else if (columnsAsList) {\n ;({ head, rows, ts } = createListFromColumns(listDefinition, datasetData))\n } else {\n ;({ head, rows, ts } = creatListFromRows(listDefinition, datasetData))\n }\n\n if (rows.length && measures) rows = sumColumns(rows, measures)\n\n return {\n table: {\n head,\n rows,\n },\n ts,\n }\n}\n\nconst createListFromColumns = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n) => {\n const { columns } = listDefinition\n const { keys, measures } = columns\n const groupKey = DatasetHelper.getGroupKey(keys || [], dashboardData)\n\n const timestampData = dashboardData[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n const head = []\n head.push({ text: '' })\n dashboardData.forEach((row) => {\n head.push({\n text: groupKey ? row[groupKey.id].raw : '',\n })\n })\n\n const rows: MoJTableRow[][] = []\n measures.forEach((measure) => {\n rows.push([{ text: measure.display }] as MoJTableRow[])\n })\n\n measures.forEach((measure, index) => {\n dashboardData.forEach((row) => {\n rows[index].push({ text: `${row[measure.id].raw}` })\n })\n })\n\n return {\n rows,\n head,\n ts,\n }\n}\n\nexport const createTableRows = (\n data: DashboardDataResponse[],\n measures?: components['schemas']['DashboardVisualisationColumnDefinition'][],\n): MoJTableRow[][] => {\n return data.map((dataRow) => {\n const row: MoJTableRow[] = measures?.length ? Array(measures.length) : Array(Object.keys(data[0]).length)\n Object.keys(dataRow).forEach((key, index) => {\n const headIndex = measures?.length ? measures.findIndex((m) => m.id === key) : index\n const text = dataRow[key].raw\n row.splice(headIndex, 1, { text } as MoJTableRow)\n })\n\n return row\n })\n}\n\nconst creatListFromRows = (\n listDefinition: components['schemas']['DashboardVisualisationDefinition'],\n dashboardData: DashboardDataResponse[],\n) => {\n const { measures } = listDefinition.columns\n\n const head = measures.map((column) => {\n return { text: column.display }\n })\n\n const dataSetRows = DatasetHelper.getDatasetRows(listDefinition, dashboardData)\n const displayRows = DatasetHelper.filterRowsByDisplayColumns(listDefinition, dataSetRows)\n const rows = createTableRows(displayRows, measures)\n\n const timestampData = dataSetRows[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n return {\n head,\n rows,\n ts,\n }\n}\n\nconst createFullList = (dashboardData: DashboardDataResponse[]) => {\n const head = Object.keys(dashboardData[0]).map((key) => {\n return { text: key }\n })\n const rows = createTableRows(dashboardData)\n\n const latestData = DatasetHelper.getLastestDataset(dashboardData)\n const timestampData = latestData[0]?.ts?.raw\n const ts = timestampData ? `${timestampData}` : ''\n\n return {\n head,\n rows,\n ts,\n }\n}\n\nconst sumColumns = (\n rowsData: MoJTableRow[][],\n measures: components['schemas']['DashboardVisualisationColumnDefinition'][],\n) => {\n const sumColumnIndexes: number[] = measures.flatMap((col, idx) => (col.aggregate ? [idx] : []))\n\n if (sumColumnIndexes.length) {\n const sumRow: MoJTableRow[] = [{ html: `<strong>Total<strong>` }]\n for (let index = 1; index < measures.length; index += 1) {\n sumRow[index] = { text: '' }\n }\n\n rowsData.push(sumRow)\n sumColumnIndexes.forEach((index) => {\n const total = rowsData.reduce((acc, row) => {\n const rowIndex = row[index]\n if (rowIndex && rowIndex.text) {\n acc += Number(rowIndex.text)\n }\n return acc\n }, 0)\n rowsData[rowsData.length - 1][index] = {\n html: `<strong>${total}<strong>`,\n }\n })\n }\n\n return rowsData\n}\n\nexport default {\n createList,\n createTableRows,\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["utils_exports", "__export", "createList", "createTableRows", "utils_default", "__toCommonJS", "import_datasetHelper", "listDefinition", "dashboardData", "columns", "options", "listOptions", "showLatest", "columnsAsList", "measures", "keys", "showAllData", "datasetData", "DatasetHelper", "head", "rows", "ts", "createFullList", "createListFromColumns", "creatListFromRows", "sumColumns", "groupKey", "timestampData", "row", "measure", "index", "data", "dataRow", "key", "headIndex", "m", "text", "column", "dataSetRows", "displayRows", "rowsData", "sumColumnIndexes", "col", "idx", "sumRow", "total", "acc", "rowIndex"]
7
7
  }
@@ -3,12 +3,12 @@ import { mockListDefinitionAgeRange1 } from '../../../../../test-app/mocks/mockC
3
3
  import { dataQualityColsToList } from '../../../../../test-app/mocks/mockClients/dashboards/definitions/examples/visualisations/lists'
4
4
  import { mockAgeBreakdownData } from '../../../../../test-app/mocks/mockClients/dashboards/data/age-breakdown/data'
5
5
  import { mockTimeSeriesDataLastSixMonths } from '../../../../../test-app/mocks/mockClients/dashboards/data/data-quality-metrics/data'
6
- import { ListVisualisation } from '../dashboard/types'
6
+ import { components } from '../../../types/api'
7
7
 
8
8
  describe('DashboardListUtils', () => {
9
9
  describe('createList', () => {
10
10
  it('should create the list data', () => {
11
- const visDefinition = mockListDefinitionAgeRange1 as unknown as ListVisualisation
11
+ const visDefinition = mockListDefinitionAgeRange1 as components['schemas']['DashboardVisualisationDefinition']
12
12
  const result = DashboardListUtils.createList(visDefinition, mockAgeBreakdownData.flat())
13
13
  const expectedResult = {
14
14
  table: {
@@ -29,7 +29,7 @@ describe('DashboardListUtils', () => {
29
29
  })
30
30
 
31
31
  it('should create the list data from data columns', () => {
32
- const visDefinition = dataQualityColsToList as unknown as ListVisualisation
32
+ const visDefinition = dataQualityColsToList as components['schemas']['DashboardVisualisationDefinition']
33
33
  const result = DashboardListUtils.createList(visDefinition, mockTimeSeriesDataLastSixMonths.flat())
34
34
 
35
35
  const expectedResult = {
@@ -1,16 +1,11 @@
1
1
  /* eslint-disable no-param-reassign */
2
- import { MoJTable, MoJTableRow } from '../../../types/Charts'
3
2
  import { DashboardDataResponse } from '../../../types/Metrics'
4
- import {
5
- DashboardVisualisationColumn,
6
- DashboardVisualisationColumnMeasure,
7
- ListDashboardVisualisationOptions,
8
- ListVisualisation,
9
- } from '../dashboard/types'
3
+ import { ListDashboardVisualisationOptions, MoJTable, MoJTableRow } from '../dashboard-visualisation/types'
10
4
  import DatasetHelper from '../../../utils/datasetHelper'
5
+ import { components } from '../../../types/api'
11
6
 
12
7
  export const createList = (
13
- listDefinition: ListVisualisation,
8
+ listDefinition: components['schemas']['DashboardVisualisationDefinition'],
14
9
  dashboardData: DashboardDataResponse[],
15
10
  ): { table: MoJTable; ts: string } => {
16
11
  const { columns, options } = listDefinition
@@ -48,7 +43,10 @@ export const createList = (
48
43
  }
49
44
  }
50
45
 
51
- const createListFromColumns = (listDefinition: ListVisualisation, dashboardData: DashboardDataResponse[]) => {
46
+ const createListFromColumns = (
47
+ listDefinition: components['schemas']['DashboardVisualisationDefinition'],
48
+ dashboardData: DashboardDataResponse[],
49
+ ) => {
52
50
  const { columns } = listDefinition
53
51
  const { keys, measures } = columns
54
52
  const groupKey = DatasetHelper.getGroupKey(keys || [], dashboardData)
@@ -84,7 +82,7 @@ const createListFromColumns = (listDefinition: ListVisualisation, dashboardData:
84
82
 
85
83
  export const createTableRows = (
86
84
  data: DashboardDataResponse[],
87
- measures?: DashboardVisualisationColumn[],
85
+ measures?: components['schemas']['DashboardVisualisationColumnDefinition'][],
88
86
  ): MoJTableRow[][] => {
89
87
  return data.map((dataRow) => {
90
88
  const row: MoJTableRow[] = measures?.length ? Array(measures.length) : Array(Object.keys(data[0]).length)
@@ -98,7 +96,10 @@ export const createTableRows = (
98
96
  })
99
97
  }
100
98
 
101
- const creatListFromRows = (listDefinition: ListVisualisation, dashboardData: DashboardDataResponse[]) => {
99
+ const creatListFromRows = (
100
+ listDefinition: components['schemas']['DashboardVisualisationDefinition'],
101
+ dashboardData: DashboardDataResponse[],
102
+ ) => {
102
103
  const { measures } = listDefinition.columns
103
104
 
104
105
  const head = measures.map((column) => {
@@ -136,7 +137,10 @@ const createFullList = (dashboardData: DashboardDataResponse[]) => {
136
137
  }
137
138
  }
138
139
 
139
- const sumColumns = (rowsData: MoJTableRow[][], measures: DashboardVisualisationColumnMeasure[]) => {
140
+ const sumColumns = (
141
+ rowsData: MoJTableRow[][],
142
+ measures: components['schemas']['DashboardVisualisationColumnDefinition'][],
143
+ ) => {
140
144
  const sumColumnIndexes: number[] = measures.flatMap((col, idx) => (col.aggregate ? [idx] : []))
141
145
 
142
146
  if (sumColumnIndexes.length) {
@@ -13,7 +13,7 @@
13
13
  <div class="dpr-dashboard-section" id="{{ id }}-dashboard-section">
14
14
 
15
15
  {% if title %}
16
- <h2 class="govuk-heading-m">{{ title }}</h2>
16
+ <h2 class="govuk-heading-l">{{ title }}</h2>
17
17
  {% endif %}
18
18
 
19
19
  {% if description %}
@@ -0,0 +1,2 @@
1
+ var a=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var c=(i,s)=>{for(var n in s)a(i,n,{get:s[n],enumerable:!0})},r=(i,s,n,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let o of h(s))!u.call(i,o)&&o!==n&&a(i,o,{get:()=>s[o],enumerable:!(e=m(s,o))||e.enumerable});return i};var D=i=>r(a({},"__esModule",{value:!0}),i);var p={};c(p,{DashboardVisualisationClass:()=>t,default:()=>l});module.exports=D(p);class t{constructor(s,n){this.initUnit=()=>{this.unit=this.columns.measures[0].unit?this.columns.measures[0].unit:void 0};this.definition=n,this.columns=n.columns,this.measures=this.columns.measures,this.keys=this.columns.keys,this.type=this.definition.type.split("-")[0],this.initUnit(),this.responseData=s}}var l=t;0&&(module.exports={DashboardVisualisationClass});
2
+ //# sourceMappingURL=DashboardVisualisation.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts"],
4
+ "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { components } from '../../../types/api'\nimport { DashboardDataResponse } from '../../../types/Metrics'\n\nclass DashboardVisualisationClass {\n responseData: DashboardDataResponse[]\n\n definition: components['schemas']['DashboardVisualisationDefinition']\n\n columns: components['schemas']['DashboardVisualisationColumnsDefinition']\n\n measures: components['schemas']['DashboardVisualisationColumnDefinition'][]\n\n keys: components['schemas']['DashboardVisualisationColumnDefinition'][]\n\n unit: components['schemas']['DashboardVisualisationColumnDefinition']['unit']\n\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n\n constructor(\n responseData: DashboardDataResponse[],\n definition: components['schemas']['DashboardVisualisationDefinition'],\n ) {\n this.definition = definition\n this.columns = definition.columns\n this.measures = this.columns.measures\n this.keys = this.columns.keys\n this.type = this.definition.type.split('-')[0] as components['schemas']['DashboardVisualisationDefinition']['type']\n this.initUnit()\n this.responseData = responseData\n }\n\n initUnit = () => {\n // todo\n this.unit = this.columns.measures[0].unit ? this.columns.measures[0].unit : undefined\n }\n}\n\nexport { DashboardVisualisationClass }\nexport default DashboardVisualisationClass\n"],
5
+ "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAIA,MAAME,CAA4B,CAehC,YACEG,EACAC,EACA,CAUF,cAAW,IAAM,CAEf,KAAK,KAAO,KAAK,QAAQ,SAAS,CAAC,EAAE,KAAO,KAAK,QAAQ,SAAS,CAAC,EAAE,KAAO,MAC9E,EAZE,KAAK,WAAaA,EAClB,KAAK,QAAUA,EAAW,QAC1B,KAAK,SAAW,KAAK,QAAQ,SAC7B,KAAK,KAAO,KAAK,QAAQ,KACzB,KAAK,KAAO,KAAK,WAAW,KAAK,MAAM,GAAG,EAAE,CAAC,EAC7C,KAAK,SAAS,EACd,KAAK,aAAeD,CACtB,CAMF,CAGA,IAAOF,EAAQD",
6
+ "names": ["DashboardVisualisation_exports", "__export", "DashboardVisualisationClass", "DashboardVisualisation_default", "__toCommonJS", "responseData", "definition"]
7
+ }
@@ -0,0 +1,40 @@
1
+ /* eslint-disable prefer-destructuring */
2
+ import { components } from '../../../types/api'
3
+ import { DashboardDataResponse } from '../../../types/Metrics'
4
+
5
+ class DashboardVisualisationClass {
6
+ responseData: DashboardDataResponse[]
7
+
8
+ definition: components['schemas']['DashboardVisualisationDefinition']
9
+
10
+ columns: components['schemas']['DashboardVisualisationColumnsDefinition']
11
+
12
+ measures: components['schemas']['DashboardVisualisationColumnDefinition'][]
13
+
14
+ keys: components['schemas']['DashboardVisualisationColumnDefinition'][]
15
+
16
+ unit: components['schemas']['DashboardVisualisationColumnDefinition']['unit']
17
+
18
+ type: components['schemas']['DashboardVisualisationDefinition']['type']
19
+
20
+ constructor(
21
+ responseData: DashboardDataResponse[],
22
+ definition: components['schemas']['DashboardVisualisationDefinition'],
23
+ ) {
24
+ this.definition = definition
25
+ this.columns = definition.columns
26
+ this.measures = this.columns.measures
27
+ this.keys = this.columns.keys
28
+ this.type = this.definition.type.split('-')[0] as components['schemas']['DashboardVisualisationDefinition']['type']
29
+ this.initUnit()
30
+ this.responseData = responseData
31
+ }
32
+
33
+ initUnit = () => {
34
+ // todo
35
+ this.unit = this.columns.measures[0].unit ? this.columns.measures[0].unit : undefined
36
+ }
37
+ }
38
+
39
+ export { DashboardVisualisationClass }
40
+ export default DashboardVisualisationClass
@@ -0,0 +1,2 @@
1
+ var o=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var b=(e,t)=>{for(var r in t)o(e,r,{get:t[r],enumerable:!0})},d=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of c(t))!u.call(e,i)&&i!==r&&o(e,i,{get:()=>t[i],enumerable:!(s=l(t,i))||s.enumerable});return e};var m=e=>d(o({},"__esModule",{value:!0}),e);var D={};b(D,{DashboardVisualisationType:()=>n});module.exports=m(D);var n=(a=>(a.LIST="list",a.DONUT="doughnut",a.BAR="bar",a.LINE="line",a.MATRIX="matrix",a.MATRIX_TIMESERIES="matrix-timeseries",a.BAR_TIMESERIES="bar-timeseries",a.LINE_TIMESERIES="line-timeseries",a.SCORECARD="scorecard",a.SCORECARD_GROUP="scorecard-group",a))(n||{});0&&(module.exports={DashboardVisualisationType});
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/dpr/components/_dashboards/dashboard-visualisation/types.ts"],
4
+ "sourcesContent": ["import { components } from '../../../types/api'\nimport { Scorecard, ScorecardGroup } from '../scorecard/types'\nimport { MatrixChartData } from '../../_charts/chart/heatmap/types'\nimport { ChartDetails } from '../../../types/Charts'\n\nexport interface DashboardSection {\n id: string\n title?: string\n description?: string\n visualisations?: DashboardVisualisation[]\n}\n\nexport interface DashboardVisualisation {\n id: string\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n title?: string\n description?: string\n data:\n | Scorecard\n | Scorecard[]\n | ScorecardGroup[]\n | DashboardVisualisatonCardData\n | DashboardVisualisationTable\n | undefined\n}\n\nexport interface DashboardVisualisatonCardData {\n chart: DashboardVisualisationData\n table?: MoJTable\n details?: ChartDetails\n}\n\nexport interface DashboardVisualisationData {\n type: components['schemas']['DashboardVisualisationDefinition']['type']\n unit?: components['schemas']['DashboardVisualisationColumnDefinition']['unit']\n data: DashboardVisualisationDataValues\n timeseries?: boolean\n}\n\nexport interface DashboardVisualisationDataValues {\n labels?: string[]\n datasets: DashboardVisualisationDataSet[]\n axis?: 'x' | 'y'\n}\n\nexport interface DashboardVisualisationDataSet {\n label: string\n data: number[] | MatrixChartData[]\n total?: number\n}\n\nexport interface DashboardVisualisationTable {\n table: MoJTable\n ts?: string\n}\n\nexport interface MoJTable {\n head: MoJTableHead[]\n rows: MoJTableRow[][]\n}\n\nexport interface MoJTableRow {\n text?: string\n html?: string\n}\n\nexport interface MoJTableHead {\n text?: string\n html?: string\n}\n\nexport enum DashboardVisualisationType {\n LIST = 'list',\n DONUT = 'doughnut',\n BAR = 'bar',\n LINE = 'line',\n MATRIX = 'matrix',\n MATRIX_TIMESERIES = 'matrix-timeseries',\n BAR_TIMESERIES = 'bar-timeseries',\n LINE_TIMESERIES = 'line-timeseries',\n SCORECARD = 'scorecard',\n SCORECARD_GROUP = 'scorecard-group',\n}\n\nexport type DashboardVisualisationOptions = ListDashboardVisualisationOptions | BucketDashboardVisualisationOptions\n\nexport interface ListDashboardVisualisationOptions {\n showLatest?: boolean\n columnsAsList?: boolean\n}\n\nexport interface BucketDashboardVisualisationOptions {\n useRagColour?: boolean\n buckets?: DashboardVisualisationBucket[]\n baseColour?: string\n}\n\nexport interface DashboardVisualisationBucket {\n min?: number\n max?: number\n hexColour?: string\n}\n"],
5
+ "mappings": "4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAuEO,IAAKE,OACVA,EAAA,KAAO,OACPA,EAAA,MAAQ,WACRA,EAAA,IAAM,MACNA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,kBAAoB,oBACpBA,EAAA,eAAiB,iBACjBA,EAAA,gBAAkB,kBAClBA,EAAA,UAAY,YACZA,EAAA,gBAAkB,kBAVRA,OAAA",
6
+ "names": ["types_exports", "__export", "DashboardVisualisationType", "__toCommonJS"]
7
+ }
@@ -0,0 +1,102 @@
1
+ import { components } from '../../../types/api'
2
+ import { Scorecard, ScorecardGroup } from '../scorecard/types'
3
+ import { MatrixChartData } from '../../_charts/chart/heatmap/types'
4
+ import { ChartDetails } from '../../../types/Charts'
5
+
6
+ export interface DashboardSection {
7
+ id: string
8
+ title?: string
9
+ description?: string
10
+ visualisations?: DashboardVisualisation[]
11
+ }
12
+
13
+ export interface DashboardVisualisation {
14
+ id: string
15
+ type: components['schemas']['DashboardVisualisationDefinition']['type']
16
+ title?: string
17
+ description?: string
18
+ data:
19
+ | Scorecard
20
+ | Scorecard[]
21
+ | ScorecardGroup[]
22
+ | DashboardVisualisatonCardData
23
+ | DashboardVisualisationTable
24
+ | undefined
25
+ }
26
+
27
+ export interface DashboardVisualisatonCardData {
28
+ chart: DashboardVisualisationData
29
+ table?: MoJTable
30
+ details?: ChartDetails
31
+ }
32
+
33
+ export interface DashboardVisualisationData {
34
+ type: components['schemas']['DashboardVisualisationDefinition']['type']
35
+ unit?: components['schemas']['DashboardVisualisationColumnDefinition']['unit']
36
+ data: DashboardVisualisationDataValues
37
+ timeseries?: boolean
38
+ }
39
+
40
+ export interface DashboardVisualisationDataValues {
41
+ labels?: string[]
42
+ datasets: DashboardVisualisationDataSet[]
43
+ axis?: 'x' | 'y'
44
+ }
45
+
46
+ export interface DashboardVisualisationDataSet {
47
+ label: string
48
+ data: number[] | MatrixChartData[]
49
+ total?: number
50
+ }
51
+
52
+ export interface DashboardVisualisationTable {
53
+ table: MoJTable
54
+ ts?: string
55
+ }
56
+
57
+ export interface MoJTable {
58
+ head: MoJTableHead[]
59
+ rows: MoJTableRow[][]
60
+ }
61
+
62
+ export interface MoJTableRow {
63
+ text?: string
64
+ html?: string
65
+ }
66
+
67
+ export interface MoJTableHead {
68
+ text?: string
69
+ html?: string
70
+ }
71
+
72
+ export enum DashboardVisualisationType {
73
+ LIST = 'list',
74
+ DONUT = 'doughnut',
75
+ BAR = 'bar',
76
+ LINE = 'line',
77
+ MATRIX = 'matrix',
78
+ MATRIX_TIMESERIES = 'matrix-timeseries',
79
+ BAR_TIMESERIES = 'bar-timeseries',
80
+ LINE_TIMESERIES = 'line-timeseries',
81
+ SCORECARD = 'scorecard',
82
+ SCORECARD_GROUP = 'scorecard-group',
83
+ }
84
+
85
+ export type DashboardVisualisationOptions = ListDashboardVisualisationOptions | BucketDashboardVisualisationOptions
86
+
87
+ export interface ListDashboardVisualisationOptions {
88
+ showLatest?: boolean
89
+ columnsAsList?: boolean
90
+ }
91
+
92
+ export interface BucketDashboardVisualisationOptions {
93
+ useRagColour?: boolean
94
+ buckets?: DashboardVisualisationBucket[]
95
+ baseColour?: string
96
+ }
97
+
98
+ export interface DashboardVisualisationBucket {
99
+ min?: number
100
+ max?: number
101
+ hexColour?: string
102
+ }
@@ -11,7 +11,7 @@
11
11
 
12
12
  <div class="dashboard-visualisation-container" id="{{ id }}-dash-section-visualisation" tabindex="0">
13
13
  {% if title %}
14
- <h3 class="govuk-heading-s">{{ title }}</h3>
14
+ <h3 class="govuk-heading-m">{{ title }}</h3>
15
15
  {% endif %}
16
16
 
17
17
  {% if description %}
@@ -1,2 +1,2 @@
1
- var R=Object.create;var g=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var F=(u,l)=>{for(var e in l)g(u,e,{get:l[e],enumerable:!0})},b=(u,l,e,t)=>{if(l&&typeof l=="object"||typeof l=="function")for(let s of B(l))!T.call(u,s)&&s!==e&&g(u,s,{get:()=>l[s],enumerable:!(t=k(l,s))||t.enumerable});return u};var v=(u,l,e)=>(e=u!=null?R($(u)):{},b(l||!u||!u.__esModule?g(e,"default",{value:u,enumerable:!0}):e,u)),N=u=>b(g({},"__esModule",{value:!0}),u);var I={};F(I,{ScorecardVisualisation:()=>f,default:()=>M});module.exports=N(I);var K=v(require("../../_charts/chart/DashboardVisualisation")),n=v(require("../../../utils/datasetHelper")),D=v(require("../../_charts/chart/Buckets"));class f extends K.default{constructor(e,t,s=!1){super(e,t);this.buckets=[];this.ragColours=["#cce2d8","#fff7bf","#f4cdc6"];this.initBuckets=(e,t)=>{this.bucketsHelper=new D.default(e,this.definition,t,!1,this.ragColours),this.buckets=new D.default(e,this.definition,t,!1,this.ragColours).getBuckets()};this.initGroupVars=()=>{this.groupKey=n.default.getGroupKey(this.keys,this.dataset.latest),this.groupKeyId=this.groupKey?.id,this.groupKeyDisplay=this.groupKey?.display,this.valueColumn=this.measures.find(e=>e.displayValue),this.valueColumn&&(this.valueKey=this.valueColumn?.id,this.titleColumn=this.measures.find(e=>e.display||e.display===""),this.titleKey=this.titleColumn?.id)};this.getDataset=(e,t)=>{const s=n.default.getLastestDataset(t),r=n.default.getDatasetRows(e,s),i=r[0]?.ts?.raw,o=n.default.filterRowsByDisplayColumns(e,r,!0),a=n.default.getEarliestDataset(t),c=n.default.getDatasetRows(e,a),d=c[0]?.ts?.raw;return{earliest:n.default.filterRowsByDisplayColumns(e,c,!0),earliestTs:d,latest:o,latestTs:i}};this.setRagScore=(e,t)=>this.bucketsHelper.getBucketForValue(e,t);this.createScorecardData=({title:e,value:t,rag:s,valueFor:r,valueFrom:i,prevVal:o,groupTitle:a})=>({title:e,value:t,...!Number.isNaN(t)&&this.buckets.length&&{rag:this.setRagScore(t,s)},valueFor:r,trend:this.createTrend(r,i,t,o),...a&&{group:a}});this.createTrend=(e,t,s,r)=>{let i;if(t!==e){const o=+s-+r;i={direction:Math.sign(o),value:Math.abs(o),from:t}}return i};this.validateDefinition=()=>{const{id:e,type:t}=this.definition,s=[];if(this.group||(this.measures.length!==1?s.push(`Measures should only have 1 column defined. Found ${this.measures.length}`):this.titleColumn?this.valueKey||s.push('Missing ID in title measure. Expected measure to include "id: string" field'):s.push('No title column defined. Expected measure to include "display: string" field')),s.length){const r=`Validation: Visualisaton definition: ID: ${e}, type: ${t}, errors: ${s.join(",")}`;throw new Error(r)}};this.createScorecardGroupFromColumns=()=>{const{latest:e,earliest:t,latestTs:s,earliestTs:r}=this.dataset;return e.map((i,o)=>({title:this.createGroupTitle(i),scorecards:Object.keys(i).filter(a=>a!==this.groupKeyId).map(a=>{const d=this.measures.find(w=>w.id===a)?.display||a,p=i[a],{raw:h,rag:m}=p,y=Number(h),S=m!==void 0?Number(m):void 0;this.initBuckets([i],a);const C=`${s}`,V=`${r}`,G=t[o][a]?.raw;return this.createScorecardData({title:d,value:y,rag:S,prevVal:G,valueFor:C,valueFrom:V})})}))};this.createScorecardGroupFromList=()=>{const{latest:e,earliest:t}=this.dataset;return[{title:"",scorecards:e.map((s,r)=>{const i=this.getScorecardValues(s),o=t[r][this.valueKey].raw;return this.createScorecardData({...i,prevVal:o})})}]};this.createScorecardGroupFromListWithGroups=()=>{const{latest:e,earliest:t}=this.dataset;let s=n.default.groupRowsByKey(t,this.groupKeyId),r=n.default.groupRowsByKey(e,this.groupKeyId);return this.groupKeyId===this.titleKey&&(r=[r.flat()],s=[s.flat()]),r.map((o,a)=>({title:this.createGroupTitle(o[0]),scorecards:o.map((c,d)=>{const p=this.getScorecardValues(c),m=s[a][d][this.valueKey]?.raw;return this.createScorecardData({...p,prevVal:m})})}))};this.getScorecardValues=e=>{const{latestTs:t,earliestTs:s}=this.dataset,r=`${this.titleColumn.display} ${e[this.titleKey].raw}`,i=e[this.valueKey],{raw:o,rag:a}=i,c=Number(o),d=a!==void 0?Number(a):void 0;this.initBuckets([e],this.valueKey);const p=`${t}`,h=`${s}`;return{title:r,value:c,rag:d,valueFor:p,valueFrom:h}};this.buildScorecard=()=>{const{latest:e,earliest:t,latestTs:s,earliestTs:r}=this.dataset;return e.map((o,a)=>{const{raw:c,rag:d}=o[this.valueKey],p=t[a][this.valueKey].raw,h=`${s}`,m=`${r}`,y=this.titleColumn.display;return this.createScorecardData({title:y,value:c,rag:d,prevVal:p,valueFor:h,valueFrom:m})})[0]};this.createGroupTitle=e=>{const t=this.groupKeyId?`${e[this.groupKeyId]?.raw}`:"";return this.groupKeyDisplay&&this.groupKeyDisplay.length?`${this.groupKeyDisplay}: ${t}`:t};this.buildGroup=()=>{let e;return this.valueColumn?this.groupKey?e=this.createScorecardGroupFromListWithGroups():e=this.createScorecardGroupFromList():e=this.createScorecardGroupFromColumns(),e};this.build=()=>(this.validateDefinition(),this.group?this.buildGroup():this.buildScorecard());this.group=s,this.dataset=this.getDataset(t,e),s?this.initGroupVars():(this.valueKey=this.measures[0].id,this.titleColumn={display:t.display,id:this.valueKey},this.initBuckets(e,this.valueKey))}}var M=f;0&&(module.exports={ScorecardVisualisation});
1
+ var V=Object.create;var g=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var T=(n,u)=>{for(var e in u)g(n,e,{get:u[e],enumerable:!0})},b=(n,u,e,t)=>{if(u&&typeof u=="object"||typeof u=="function")for(let s of B(u))!F.call(n,s)&&s!==e&&g(n,s,{get:()=>u[s],enumerable:!(t=k(u,s))||t.enumerable});return n};var f=(n,u,e)=>(e=n!=null?V($(n)):{},b(u||!n||!n.__esModule?g(e,"default",{value:n,enumerable:!0}):e,n)),N=n=>b(g({},"__esModule",{value:!0}),n);var x={};T(x,{ScorecardVisualisation:()=>D,default:()=>I});module.exports=N(x);var K=f(require("../dashboard-visualisation/DashboardVisualisation")),l=f(require("../../../utils/datasetHelper")),v=f(require("../../_charts/chart/Buckets"));class D extends K.default{constructor(e,t,s=!1){super(e,t);this.buckets=[];this.valueKey="";this.titleKey="";this.ragColours=["#cce2d8","#fff7bf","#f4cdc6"];this.initBuckets=(e,t)=>{(this.definition.options?.buckets||this.definition.options?.useRagColour)&&(this.bucketsHelper=new v.default(e,this.definition,t,!1,this.ragColours),this.buckets=new v.default(e,this.definition,t,!1,this.ragColours).getBuckets())};this.initGroupVars=()=>{this.groupKey=l.default.getGroupKey(this.keys,this.dataset.latest),this.groupKeyId=this.groupKey?.id,this.groupKeyDisplay=this.groupKey?.display,this.valueColumn=this.measures.find(e=>e.displayValue),this.valueColumn&&(this.valueKey=this.valueColumn?.id,this.titleColumn=this.measures.find(e=>e.display||e.display===""),this.titleKey=this.titleColumn?.id||"")};this.getDataset=(e,t)=>{const s=l.default.getLastestDataset(t),r=l.default.getDatasetRows(e,s),i=r[0]?.ts?.raw,o=l.default.filterRowsByDisplayColumns(e,r,!0),a=l.default.getEarliestDataset(t),c=l.default.getDatasetRows(e,a),d=c[0]?.ts?.raw;return{earliest:l.default.filterRowsByDisplayColumns(e,c,!0),earliestTs:d,latest:o,latestTs:i}};this.setRagScore=(e,t)=>this.bucketsHelper?.getBucketForValue(e,t);this.createScorecardData=({title:e,value:t,rag:s,valueFor:r,valueFrom:i,prevVal:o,groupTitle:a})=>({id:this.definition.id,title:e,value:t,...!Number.isNaN(t)&&this.buckets.length&&this.bucketsHelper&&{rag:this.setRagScore(t,s)},valueFor:r,trend:this.createTrend(r,i,t,o),...a&&{group:a}});this.createTrend=(e,t,s,r)=>{let i;if(t!==e){const o=+s-+r;i={direction:Math.sign(o),value:Math.abs(o),from:t}}return i};this.validateDefinition=()=>{const{id:e,type:t}=this.definition,s=[];if(this.group||(this.measures.length!==1?s.push(`Measures should only have 1 column defined. Found ${this.measures.length}`):this.titleColumn?this.valueKey||s.push('Missing ID in title measure. Expected measure to include "id: string" field'):s.push('No title column defined. Expected measure to include "display: string" field')),s.length){const r=`Validation: Visualisaton definition: ID: ${e}, type: ${t}, errors: ${s.join(",")}`;throw new Error(r)}};this.createScorecardGroupFromColumns=()=>{const{latest:e,earliest:t,latestTs:s,earliestTs:r}=this.dataset;return e.map((i,o)=>({title:this.createGroupTitle(i),scorecards:Object.keys(i).filter(a=>a!==this.groupKeyId).map(a=>{const d=this.measures.find(R=>R.id===a)?.display||a,p=i[a],{raw:h,rag:m}=p,y=Number(h),S=m!==void 0?Number(m):void 0;this.initBuckets([i],a);const C=`${s}`,w=`${r}`,G=t[o][a]?.raw;return this.createScorecardData({title:d,value:y,rag:S,prevVal:G,valueFor:C,valueFrom:w})})}))};this.createScorecardGroupFromList=()=>{const{latest:e,earliest:t}=this.dataset;return[{title:"",scorecards:e.map((s,r)=>{const i=this.getScorecardValues(s),o=t[r][this.valueKey].raw;return this.createScorecardData({...i,prevVal:o})})}]};this.createScorecardGroupFromListWithGroups=()=>{const{latest:e,earliest:t}=this.dataset;let s=l.default.groupRowsByKey(t,this.groupKeyId),r=l.default.groupRowsByKey(e,this.groupKeyId);return this.groupKeyId===this.titleKey&&(r=[r.flat()],s=[s.flat()]),r.map((o,a)=>({title:this.groupKeyDisplay?`By ${this.groupKeyDisplay}`:"",scorecards:o.map((c,d)=>{const p=this.getScorecardValues(c),m=s[a][d][this.valueKey]?.raw;return this.createScorecardData({...p,prevVal:m})})}))};this.getScorecardValues=e=>{const{latestTs:t,earliestTs:s}=this.dataset,r=`${this.titleColumn?.display} ${e[this.titleKey].raw}`,i=e[this.valueKey],{raw:o,rag:a}=i,c=Number(o),d=a!==void 0?Number(a):void 0;this.initBuckets([e],this.valueKey);const p=`${t}`,h=`${s}`;return{title:r,value:c,rag:d,valueFor:p,valueFrom:h}};this.buildScorecard=()=>{const{latest:e,earliest:t,latestTs:s,earliestTs:r}=this.dataset;return e.map((o,a)=>{const{raw:c,rag:d}=o[this.valueKey],p=t[a][this.valueKey].raw,h=`${s}`,m=`${r}`,y=this.titleColumn?.display;return this.createScorecardData({title:y||"",value:c,rag:d,prevVal:p,valueFor:h,valueFrom:m})})[0]};this.createGroupTitle=e=>{const t=this.groupKeyId?`${e[this.groupKeyId]?.raw}`:"";return this.groupKeyDisplay&&this.groupKeyDisplay.length?`${this.groupKeyDisplay}: ${t}`:t};this.buildGroup=()=>{let e;return this.valueColumn?this.groupKey?e=this.createScorecardGroupFromListWithGroups():e=this.createScorecardGroupFromList():e=this.createScorecardGroupFromColumns(),e};this.build=()=>(this.validateDefinition(),this.group?this.buildGroup():this.buildScorecard());this.group=s,this.dataset=this.getDataset(t,e),s?this.initGroupVars():(this.valueKey=this.measures[0].id,this.titleColumn={display:t.display,id:this.valueKey},this.initBuckets(e,this.valueKey))}}var I=D;0&&(module.exports={ScorecardVisualisation});
2
2
  //# sourceMappingURL=Scorecard.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/components/_dashboards/scorecard/Scorecard.ts"],
4
- "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport DashboardVisualisationClass from '../../_charts/chart/DashboardVisualisation'\nimport {\n DashboardVisualisation,\n DashboardVisualisationBucket,\n DashboardVisualisationColumnKey,\n DashboardVisualisationColumnMeasure,\n} from '../dashboard/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\nimport { CreateScorecardDataArgs, Scorecard, ScorecardDataset, ScorecardGroup, ScorecardTrend } from './types'\nimport Buckets from '../../_charts/chart/Buckets'\n\nclass ScorecardVisualisation extends DashboardVisualisationClass {\n private dataset: ScorecardDataset\n\n private groupKey: DashboardVisualisationColumnKey\n\n private groupKeyId: string\n\n private groupKeyDisplay: string\n\n private bucketsHelper: Buckets\n\n private buckets: DashboardVisualisationBucket[] = []\n\n private valueColumn: DashboardVisualisationColumnMeasure\n\n private valueKey: string\n\n private titleColumn: DashboardVisualisationColumnMeasure\n\n private titleKey: string\n\n private group: boolean\n\n private ragColours: string[] = ['#cce2d8', '#fff7bf', '#f4cdc6']\n\n constructor(responseData: DashboardDataResponse[], definition: DashboardVisualisation, group = false) {\n super(responseData, definition)\n this.group = group\n this.dataset = this.getDataset(definition, responseData)\n\n if (group) {\n this.initGroupVars()\n } else {\n this.valueKey = this.measures[0].id\n this.titleColumn = { display: definition.display, id: this.valueKey }\n this.initBuckets(responseData, this.valueKey)\n }\n }\n\n private initBuckets = (responseData: DashboardDataResponse[], valueKey: string) => {\n this.bucketsHelper = new Buckets(responseData, this.definition, valueKey, false, this.ragColours)\n this.buckets = new Buckets(responseData, this.definition, valueKey, false, this.ragColours).getBuckets()\n }\n\n private initGroupVars = () => {\n this.groupKey = DatasetHelper.getGroupKey(this.keys, this.dataset.latest)\n this.groupKeyId = this.groupKey?.id\n this.groupKeyDisplay = this.groupKey?.display\n\n this.valueColumn = this.measures.find((col) => col.displayValue)\n if (this.valueColumn) {\n this.valueKey = this.valueColumn?.id\n this.titleColumn = this.measures.find((col) => {\n return col.display || col.display === ''\n })\n this.titleKey = this.titleColumn?.id\n }\n }\n\n private getDataset = (scorecardDefinition: DashboardVisualisation, rawData: DashboardDataResponse[]) => {\n const latestData = DatasetHelper.getLastestDataset(rawData)\n const latestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, latestData)\n const latestTs = latestDataSetRows[0]?.ts?.raw\n const latestFiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, latestDataSetRows, true)\n\n const earliestData = DatasetHelper.getEarliestDataset(rawData)\n const earliestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, earliestData)\n const earliestTs = earliestDataSetRows[0]?.ts?.raw\n const earliestfiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, earliestDataSetRows, true)\n\n return {\n earliest: earliestfiltered,\n earliestTs,\n latest: latestFiltered,\n latestTs,\n }\n }\n\n private setRagScore = (value: number, rag?: number) => {\n return this.bucketsHelper.getBucketForValue(value, rag)\n }\n\n private createScorecardData = ({\n title,\n value,\n rag,\n valueFor,\n valueFrom,\n prevVal,\n groupTitle,\n }: CreateScorecardDataArgs) => {\n return {\n title,\n value,\n ...(!Number.isNaN(value) && this.buckets.length && { rag: this.setRagScore(<number>value, rag) }),\n valueFor,\n trend: this.createTrend(valueFor, valueFrom, value, prevVal),\n ...(groupTitle && {\n group: groupTitle,\n }),\n }\n }\n\n private createTrend = (\n valueFor: string,\n valueFrom: string,\n latestValue: string | number,\n earliestValue: string | number,\n ): ScorecardTrend | undefined => {\n let trendData\n\n if (valueFrom !== valueFor) {\n const value = +latestValue - +earliestValue\n const direction = Math.sign(value)\n trendData = {\n direction,\n value: Math.abs(value),\n from: valueFrom,\n }\n }\n\n return trendData\n }\n\n private validateDefinition = () => {\n const { id, type } = this.definition\n const errors = []\n if (!this.group) {\n if (this.measures.length !== 1) {\n errors.push(`Measures should only have 1 column defined. Found ${this.measures.length}`)\n } else if (!this.titleColumn) {\n errors.push(`No title column defined. Expected measure to include \"display: string\" field`)\n } else if (!this.valueKey) {\n errors.push(`Missing ID in title measure. Expected measure to include \"id: string\" field`)\n }\n }\n\n if (errors.length) {\n // Throw the error\n const message = `Validation: Visualisaton definition: ID: ${id}, type: ${type}, errors: ${errors.join(',')}`\n throw new Error(message)\n }\n }\n\n private createScorecardGroupFromColumns = () => {\n const { latest, earliest, latestTs, earliestTs } = this.dataset\n\n return latest.map((row, rowIndex) => {\n return {\n title: this.createGroupTitle(row),\n scorecards: Object.keys(row)\n .filter((colId) => colId !== this.groupKeyId)\n .map((colId) => {\n const measure = this.measures.find((m) => m.id === colId)\n const title = measure?.display || colId\n const rowCol = row[colId]\n const { raw, rag: ragScore } = rowCol\n const value = Number(raw)\n\n const rag = ragScore !== undefined ? Number(ragScore) : undefined\n this.initBuckets([row], colId)\n\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n\n const comparisonRow = earliest[rowIndex]\n const prevVal = comparisonRow[colId]?.raw\n\n return this.createScorecardData({\n title,\n value,\n rag,\n prevVal,\n valueFor,\n valueFrom,\n })\n }),\n }\n })\n }\n\n private createScorecardGroupFromList = (): ScorecardGroup[] => {\n const { latest, earliest } = this.dataset\n return [\n {\n title: '',\n scorecards: latest.map((row: DashboardDataResponse, index: number) => {\n const values = this.getScorecardValues(row)\n const prevVal = earliest[index][this.valueKey].raw\n return this.createScorecardData({\n ...values,\n prevVal,\n })\n }),\n },\n ]\n }\n\n private createScorecardGroupFromListWithGroups = () => {\n const { latest, earliest } = this.dataset\n\n let earliestGroupedByKey = DatasetHelper.groupRowsByKey(earliest, this.groupKeyId)\n let latestGroupedByKey = DatasetHelper.groupRowsByKey(latest, this.groupKeyId)\n if (this.groupKeyId === this.titleKey) {\n latestGroupedByKey = [latestGroupedByKey.flat()]\n earliestGroupedByKey = [earliestGroupedByKey.flat()]\n }\n\n const scorecardGroup = latestGroupedByKey.map((group, groupIndex) => {\n return {\n title: this.createGroupTitle(group[0]),\n scorecards: group.map((row, rowIndex) => {\n const values = this.getScorecardValues(row)\n const comparisonRow = earliestGroupedByKey[groupIndex][rowIndex]\n const prevVal = comparisonRow[this.valueKey]?.raw\n\n return this.createScorecardData({\n ...values,\n prevVal,\n })\n }),\n }\n })\n\n return scorecardGroup\n }\n\n private getScorecardValues = (row: DashboardDataResponse) => {\n const { latestTs, earliestTs } = this.dataset\n const title = `${this.titleColumn.display} ${row[this.titleKey].raw}`\n const rowCol = row[this.valueKey]\n const { raw, rag: ragScore } = rowCol\n const value = Number(raw)\n const rag = ragScore !== undefined ? Number(ragScore) : undefined\n this.initBuckets([row], this.valueKey)\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n\n return {\n title,\n value,\n rag,\n valueFor,\n valueFrom,\n }\n }\n\n /**\n * Builds a single scorecard\n *\n * @return {Scorecard}\n */\n private buildScorecard = () => {\n const { latest, earliest, latestTs, earliestTs } = this.dataset\n const scorecordArr: Scorecard[] = latest.map((datasetRow: DashboardDataResponse, index: number) => {\n const { raw: value, rag } = datasetRow[this.valueKey]\n const prevVal = earliest[index][this.valueKey].raw\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n const title = this.titleColumn.display\n\n return this.createScorecardData({\n title,\n value,\n rag,\n prevVal,\n valueFor,\n valueFrom,\n })\n })\n\n return scorecordArr[0]\n }\n\n private createGroupTitle = (row: DashboardDataResponse) => {\n const title = this.groupKeyId ? `${row[this.groupKeyId]?.raw}` : ''\n return this.groupKeyDisplay && this.groupKeyDisplay.length ? `${this.groupKeyDisplay}: ${title}` : title\n }\n\n private buildGroup = () => {\n let scorecardGroup: ScorecardGroup[]\n if (!this.valueColumn) {\n scorecardGroup = this.createScorecardGroupFromColumns()\n } else if (this.groupKey) {\n scorecardGroup = this.createScorecardGroupFromListWithGroups()\n } else {\n scorecardGroup = this.createScorecardGroupFromList()\n }\n return scorecardGroup\n }\n\n build = () => {\n this.validateDefinition()\n if (this.group) {\n return this.buildGroup()\n }\n return this.buildScorecard()\n }\n}\n\nexport { ScorecardVisualisation }\nexport default ScorecardVisualisation\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable prefer-destructuring */\nimport { DashboardDataResponse } from '../../../types/Metrics'\nimport DashboardVisualisationClass from '../dashboard-visualisation/DashboardVisualisation'\nimport { DashboardVisualisationBucket } from '../dashboard-visualisation/types'\nimport DatasetHelper from '../../../utils/datasetHelper'\nimport { CreateScorecardDataArgs, Scorecard, ScorecardDataset, ScorecardGroup, ScorecardTrend } from './types'\nimport Buckets from '../../_charts/chart/Buckets'\nimport { components } from '../../../types/api'\n\nclass ScorecardVisualisation extends DashboardVisualisationClass {\n private dataset: ScorecardDataset\n\n private groupKey: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n\n private groupKeyId: string | undefined\n\n private groupKeyDisplay: string | undefined\n\n private bucketsHelper: Buckets | undefined\n\n private buckets: DashboardVisualisationBucket[] = []\n\n private valueColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n\n private valueKey = ''\n\n private titleColumn: components['schemas']['DashboardVisualisationColumnDefinition'] | undefined\n\n private titleKey = ''\n\n private group: boolean\n\n private ragColours: string[] = ['#cce2d8', '#fff7bf', '#f4cdc6']\n\n constructor(\n responseData: DashboardDataResponse[],\n definition: components['schemas']['DashboardVisualisationDefinition'],\n group = false,\n ) {\n super(responseData, definition)\n this.group = group\n this.dataset = this.getDataset(definition, responseData)\n\n if (group) {\n this.initGroupVars()\n } else {\n this.valueKey = this.measures[0].id\n this.titleColumn = { display: definition.display, id: this.valueKey }\n this.initBuckets(responseData, this.valueKey)\n }\n }\n\n private initBuckets = (responseData: DashboardDataResponse[], valueKey: string) => {\n if (this.definition.options?.buckets || this.definition.options?.useRagColour) {\n this.bucketsHelper = new Buckets(responseData, this.definition, valueKey, false, this.ragColours)\n this.buckets = new Buckets(responseData, this.definition, valueKey, false, this.ragColours).getBuckets()\n }\n }\n\n private initGroupVars = () => {\n this.groupKey = DatasetHelper.getGroupKey(this.keys, this.dataset.latest)\n this.groupKeyId = this.groupKey?.id\n this.groupKeyDisplay = this.groupKey?.display\n\n this.valueColumn = this.measures.find((col) => col.displayValue)\n if (this.valueColumn) {\n this.valueKey = this.valueColumn?.id\n this.titleColumn = this.measures.find((col) => {\n return col.display || col.display === ''\n })\n this.titleKey = this.titleColumn?.id || ''\n }\n }\n\n private getDataset = (\n scorecardDefinition: components['schemas']['DashboardVisualisationDefinition'],\n rawData: DashboardDataResponse[],\n ) => {\n const latestData = DatasetHelper.getLastestDataset(rawData)\n const latestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, latestData)\n const latestTs = latestDataSetRows[0]?.ts?.raw\n const latestFiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, latestDataSetRows, true)\n\n const earliestData = DatasetHelper.getEarliestDataset(rawData)\n const earliestDataSetRows = DatasetHelper.getDatasetRows(scorecardDefinition, earliestData)\n const earliestTs = earliestDataSetRows[0]?.ts?.raw\n const earliestfiltered = DatasetHelper.filterRowsByDisplayColumns(scorecardDefinition, earliestDataSetRows, true)\n\n return {\n earliest: earliestfiltered,\n earliestTs,\n latest: latestFiltered,\n latestTs,\n }\n }\n\n private setRagScore = (value: number, rag?: number) => {\n return this.bucketsHelper?.getBucketForValue(value, rag)\n }\n\n private createScorecardData = ({\n title,\n value,\n rag,\n valueFor,\n valueFrom,\n prevVal,\n groupTitle,\n }: CreateScorecardDataArgs): Scorecard => {\n return {\n id: this.definition.id,\n title,\n value,\n ...(!Number.isNaN(value) &&\n this.buckets.length &&\n this.bucketsHelper && { rag: this.setRagScore(<number>value, rag) }),\n valueFor,\n trend: this.createTrend(valueFor, valueFrom, value, prevVal),\n ...(groupTitle && {\n group: groupTitle,\n }),\n }\n }\n\n private createTrend = (\n valueFor: string,\n valueFrom: string,\n latestValue: string | number,\n earliestValue: string | number,\n ): ScorecardTrend | undefined => {\n let trendData\n\n if (valueFrom !== valueFor) {\n const value = +latestValue - +earliestValue\n const direction = Math.sign(value)\n trendData = {\n direction,\n value: Math.abs(value),\n from: valueFrom,\n }\n }\n\n return trendData\n }\n\n private validateDefinition = () => {\n const { id, type } = this.definition\n const errors = []\n if (!this.group) {\n if (this.measures.length !== 1) {\n errors.push(`Measures should only have 1 column defined. Found ${this.measures.length}`)\n } else if (!this.titleColumn) {\n errors.push(`No title column defined. Expected measure to include \"display: string\" field`)\n } else if (!this.valueKey) {\n errors.push(`Missing ID in title measure. Expected measure to include \"id: string\" field`)\n }\n }\n\n if (errors.length) {\n // Throw the error\n const message = `Validation: Visualisaton definition: ID: ${id}, type: ${type}, errors: ${errors.join(',')}`\n throw new Error(message)\n }\n }\n\n private createScorecardGroupFromColumns = () => {\n const { latest, earliest, latestTs, earliestTs } = this.dataset\n\n return latest.map((row, rowIndex) => {\n return {\n title: this.createGroupTitle(row),\n scorecards: Object.keys(row)\n .filter((colId) => colId !== this.groupKeyId)\n .map((colId) => {\n const measure = this.measures.find((m) => m.id === colId)\n const title = measure?.display || colId\n const rowCol = row[colId]\n const { raw, rag: ragScore } = rowCol\n const value = Number(raw)\n\n const rag = ragScore !== undefined ? Number(ragScore) : undefined\n this.initBuckets([row], colId)\n\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n\n const comparisonRow = earliest[rowIndex]\n const prevVal = comparisonRow[colId]?.raw\n\n return this.createScorecardData({\n title,\n value,\n rag,\n prevVal,\n valueFor,\n valueFrom,\n })\n }),\n }\n })\n }\n\n private createScorecardGroupFromList = (): ScorecardGroup[] => {\n const { latest, earliest } = this.dataset\n return [\n {\n title: '',\n scorecards: latest.map((row: DashboardDataResponse, index: number) => {\n const values = this.getScorecardValues(row)\n const prevVal = earliest[index][this.valueKey].raw\n return this.createScorecardData({\n ...values,\n prevVal,\n })\n }),\n },\n ]\n }\n\n private createScorecardGroupFromListWithGroups = () => {\n const { latest, earliest } = this.dataset\n\n let earliestGroupedByKey = DatasetHelper.groupRowsByKey(earliest, <string>this.groupKeyId)\n let latestGroupedByKey = DatasetHelper.groupRowsByKey(latest, <string>this.groupKeyId)\n if (this.groupKeyId === this.titleKey) {\n latestGroupedByKey = [latestGroupedByKey.flat()]\n earliestGroupedByKey = [earliestGroupedByKey.flat()]\n }\n\n const scorecardGroup = latestGroupedByKey.map((group, groupIndex) => {\n return {\n title: this.groupKeyDisplay ? `By ${this.groupKeyDisplay}` : '',\n scorecards: group.map((row, rowIndex) => {\n const values = this.getScorecardValues(row)\n const comparisonRow = earliestGroupedByKey[groupIndex][rowIndex]\n const prevVal = comparisonRow[this.valueKey]?.raw\n\n return this.createScorecardData({\n ...values,\n prevVal,\n })\n }),\n }\n })\n\n return scorecardGroup\n }\n\n private getScorecardValues = (row: DashboardDataResponse) => {\n const { latestTs, earliestTs } = this.dataset\n const title = `${this.titleColumn?.display} ${row[this.titleKey].raw}`\n const rowCol = row[this.valueKey]\n const { raw, rag: ragScore } = rowCol\n const value = Number(raw)\n const rag = ragScore !== undefined ? Number(ragScore) : undefined\n this.initBuckets([row], this.valueKey)\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n\n return {\n title,\n value,\n rag,\n valueFor,\n valueFrom,\n }\n }\n\n /**\n * Builds a single scorecard\n *\n * @return {Scorecard}\n */\n private buildScorecard = () => {\n const { latest, earliest, latestTs, earliestTs } = this.dataset\n const scorecordArr: Scorecard[] = latest.map((datasetRow: DashboardDataResponse, index: number) => {\n const { raw: value, rag } = datasetRow[this.valueKey]\n const prevVal = earliest[index][this.valueKey].raw\n const valueFor = `${latestTs}`\n const valueFrom = `${earliestTs}`\n const title = this.titleColumn?.display\n\n return this.createScorecardData({\n title: title || '',\n value,\n rag,\n prevVal,\n valueFor,\n valueFrom,\n })\n })\n\n return scorecordArr[0]\n }\n\n private createGroupTitle = (row: DashboardDataResponse) => {\n const title = this.groupKeyId ? `${row[this.groupKeyId]?.raw}` : ''\n return this.groupKeyDisplay && this.groupKeyDisplay.length ? `${this.groupKeyDisplay}: ${title}` : title\n }\n\n private buildGroup = () => {\n let scorecardGroup: ScorecardGroup[]\n if (!this.valueColumn) {\n scorecardGroup = this.createScorecardGroupFromColumns()\n } else if (this.groupKey) {\n scorecardGroup = this.createScorecardGroupFromListWithGroups()\n } else {\n scorecardGroup = this.createScorecardGroupFromList()\n }\n return scorecardGroup\n }\n\n build = () => {\n this.validateDefinition()\n if (this.group) {\n return this.buildGroup()\n }\n return this.buildScorecard()\n }\n}\n\nexport { ScorecardVisualisation }\nexport default ScorecardVisualisation\n"],
5
+ "mappings": "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",
6
6
  "names": ["Scorecard_exports", "__export", "ScorecardVisualisation", "Scorecard_default", "__toCommonJS", "import_DashboardVisualisation", "import_datasetHelper", "import_Buckets", "DashboardVisualisationClass", "responseData", "definition", "group", "valueKey", "Buckets", "DatasetHelper", "col", "scorecardDefinition", "rawData", "latestData", "latestDataSetRows", "latestTs", "latestFiltered", "earliestData", "earliestDataSetRows", "earliestTs", "value", "rag", "title", "valueFor", "valueFrom", "prevVal", "groupTitle", "latestValue", "earliestValue", "trendData", "id", "type", "errors", "message", "latest", "earliest", "row", "rowIndex", "colId", "m", "rowCol", "raw", "ragScore", "index", "values", "earliestGroupedByKey", "latestGroupedByKey", "groupIndex", "datasetRow", "scorecardGroup"]
7
7
  }