@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.14.2 → 4.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dpr/all.mjs +2 -0
  2. package/dpr/all.scss +4 -0
  3. package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -1
  4. package/dpr/components/_charts/chart/clientClass.mjs +4 -3
  5. package/dpr/components/_charts/chart/heatmap/clientClass.mjs +175 -0
  6. package/dpr/components/_charts/chart/heatmap/utils.js +2 -0
  7. package/dpr/components/_charts/chart/heatmap/utils.js.map +7 -0
  8. package/dpr/components/_charts/chart/heatmap/utils.ts +182 -0
  9. package/dpr/components/_charts/chart/styles.scss +4 -0
  10. package/dpr/components/_charts/utils.js +1 -1
  11. package/dpr/components/_charts/utils.js.map +3 -3
  12. package/dpr/components/_charts/utils.test.ts +4 -1
  13. package/dpr/components/_charts/utils.ts +73 -27
  14. package/dpr/components/_dashboards/dashboard/types.js +1 -1
  15. package/dpr/components/_dashboards/dashboard/types.js.map +2 -2
  16. package/dpr/components/_dashboards/dashboard/types.ts +13 -1
  17. package/dpr/components/_dashboards/dashboard-list/utils.js +1 -1
  18. package/dpr/components/_dashboards/dashboard-list/utils.js.map +3 -3
  19. package/dpr/components/_dashboards/dashboard-list/utils.test.ts +1 -0
  20. package/dpr/components/_dashboards/dashboard-list/utils.ts +4 -1
  21. package/dpr/components/_filters/types.d.js.map +1 -1
  22. package/dpr/components/_filters/types.d.ts +12 -8
  23. package/dpr/components/_filters/utils.js +1 -1
  24. package/dpr/components/_filters/utils.js.map +3 -3
  25. package/dpr/components/_filters/utils.ts +24 -2
  26. package/dpr/data/dashboardClient.js +1 -1
  27. package/dpr/data/dashboardClient.js.map +2 -2
  28. package/dpr/data/dashboardClient.ts +1 -1
  29. package/dpr/routes/journeys/request-report/filters/controller.js +1 -1
  30. package/dpr/routes/journeys/request-report/filters/controller.js.map +3 -3
  31. package/dpr/routes/journeys/request-report/filters/controller.ts +6 -2
  32. package/dpr/routes/journeys/request-report/filters/utils.js +1 -1
  33. package/dpr/routes/journeys/request-report/filters/utils.js.map +2 -2
  34. package/dpr/routes/journeys/request-report/filters/utils.ts +9 -3
  35. package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
  36. package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
  37. package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +12 -3
  38. package/dpr/services/dashboardService.js +1 -1
  39. package/dpr/services/dashboardService.js.map +2 -2
  40. package/dpr/services/dashboardService.ts +1 -1
  41. package/dpr/types/Charts.js +1 -1
  42. package/dpr/types/Charts.js.map +1 -1
  43. package/dpr/types/Charts.ts +10 -3
  44. package/dpr/types/ExecutionData.d.js +1 -1
  45. package/dpr/types/ExecutionData.d.js.map +1 -1
  46. package/dpr/types/ExecutionData.d.ts +1 -0
  47. package/dpr/utils/DateMapper/DateMapper.js +1 -1
  48. package/dpr/utils/DateMapper/DateMapper.js.map +2 -2
  49. package/dpr/utils/DateMapper/DateMapper.ts +4 -0
  50. package/dpr/utils/UserStoreItemBuilder.js +1 -1
  51. package/dpr/utils/UserStoreItemBuilder.js.map +3 -3
  52. package/dpr/utils/UserStoreItemBuilder.ts +5 -3
  53. package/dpr/utils/requestStatusHelper.js +1 -1
  54. package/dpr/utils/requestStatusHelper.js.map +2 -2
  55. package/dpr/utils/requestStatusHelper.ts +1 -1
  56. package/package.json +5 -2
@@ -1,2 +1,2 @@
1
- var p=Object.create;var l=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var Y=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(a,t)=>{for(var e in t)l(a,e,{get:t[e],enumerable:!0})},D=(a,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of u(t))!d.call(a,i)&&i!==e&&l(a,i,{get:()=>t[i],enumerable:!(r=h(t,i))||r.enumerable});return a};var m=(a,t,e)=>(e=a!=null?p(Y(a)):{},D(t||!a||!a.__esModule?l(e,"default",{value:a,enumerable:!0}):e,a)),f=a=>D(l({},"__esModule",{value:!0}),a);var T={};g(T,{DateMapper:()=>s,default:()=>F});module.exports=f(T);var o=m(require("dayjs")),n=m(require("dayjs/plugin/customParseFormat")),c=m(require("../logger"));class s{constructor(){this.isoDateRegEx=/^(\d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01]))/;this.localDateRegEx=/^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\d{4}$/;this.localDateShortYearRegEx=/^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\d{2}$/;this.localDateTimeRegEx=/^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\d{4} [0-2]\d:[0-5]\d$/;this.localDateTimeShortYearRegEx=/^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\d{2} [0-2]\d:[0-5]\d$/;this.isoFormat="YYYY-MM-DD";this.localDateFormatInput="D/M/YYYY";this.localDateFormatOutput="DD/MM/YYYY";this.localDateShortYearFormatInput="D/M/YY";this.localDateShortYearFormatOutput="DD/MM/YY";this.localDateTimeFormatInput="D/M/YYYY HH:mm";this.localDateTimeFormatOutput="DD/MM/YYYY HH:mm";this.localDateTimeShortYearFormatInput="D/M/YY HH:mm";this.localDateTimeShortYearFormatOutput="DD/MM/YY HH:mm"}getDateType(t){if(t&&t.match){if(t.match(this.isoDateRegEx))return"iso";if(t.match(this.localDateRegEx))return"local-date";if(t.match(this.localDateShortYearRegEx))return"local-date-short-year";if(t.match(this.localDateTimeRegEx))return"local-datetime";if(t.match(this.localDateTimeShortYearRegEx))return"local-datetime-short-year"}return"none"}getDateWrapper(t){switch(o.default.extend(n.default),this.getDateType(t)){case"iso":return(0,o.default)(t);case"local-date":return(0,o.default)(t,this.localDateFormatInput);case"local-date-short-year":return(0,o.default)(t,this.localDateShortYearFormatInput);case"local-datetime":return(0,o.default)(t,this.localDateTimeFormatInput);case"local-datetime-short-year":return(0,o.default)(t,this.localDateTimeShortYearFormatInput);default:return null}}isDate(t){return this.getDateType(t)!=="none"}toDateString(t,e){const r=this.getDateWrapper(t);if(r)switch(e){case"iso":return r.format(this.isoFormat);case"local-date":return r.format(this.localDateFormatOutput);case"local-date-short-year":return r.format(this.localDateShortYearFormatOutput);case"local-datetime":return r.format(this.localDateTimeFormatOutput);case"local-datetime-short-year":return r.format(this.localDateTimeShortYearFormatOutput);default:return c.default.warn(`Invalid date type: ${e}`),null}return t&&c.default.warn(`Could not map non-date value : ${t}`),null}}var F=s;0&&(module.exports={DateMapper});
1
+ var p=Object.create;var i=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var g=(a,t)=>{for(var e in t)i(a,e,{get:t[e],enumerable:!0})},D=(a,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let l of h(t))!d.call(a,l)&&l!==e&&i(a,l,{get:()=>t[l],enumerable:!(r=Y(t,l))||r.enumerable});return a};var m=(a,t,e)=>(e=a!=null?p(u(a)):{},D(t||!a||!a.__esModule?i(e,"default",{value:a,enumerable:!0}):e,a)),F=a=>D(i({},"__esModule",{value:!0}),a);var M={};g(M,{DateMapper:()=>s,default:()=>f});module.exports=F(M);var o=m(require("dayjs")),n=m(require("dayjs/plugin/customParseFormat")),c=m(require("../logger"));class s{constructor(){this.isoDateRegEx=/^(\d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01]))/;this.localDateRegEx=/^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\d{4}$/;this.localDateShortYearRegEx=/^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\d{2}$/;this.localDateTimeRegEx=/^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\d{4} [0-2]\d:[0-5]\d$/;this.localDateTimeShortYearRegEx=/^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\d{2} [0-2]\d:[0-5]\d$/;this.isoFormat="YYYY-MM-DD";this.localDateFormatInput="D/M/YYYY";this.localDateFormatOutput="DD/MM/YYYY";this.localDateShortYearFormatInput="D/M/YY";this.localDateShortYearFormatOutput="DD/MM/YY";this.localDateTimeFormatInput="D/M/YYYY HH:mm";this.localDateTimeFormatOutput="DD/MM/YYYY HH:mm";this.localDateTimeShortYearFormatInput="D/M/YY HH:mm";this.localDateTimeShortYearFormatOutput="DD/MM/YY HH:mm";this.localDateFormatMonthYear="MMM YY";this.localDateFormatYear="YYYY"}getDateType(t){if(t&&t.match){if(t.match(this.isoDateRegEx))return"iso";if(t.match(this.localDateRegEx))return"local-date";if(t.match(this.localDateShortYearRegEx))return"local-date-short-year";if(t.match(this.localDateTimeRegEx))return"local-datetime";if(t.match(this.localDateTimeShortYearRegEx))return"local-datetime-short-year"}return"none"}getDateWrapper(t){switch(o.default.extend(n.default),this.getDateType(t)){case"iso":return(0,o.default)(t);case"local-date":return(0,o.default)(t,this.localDateFormatInput);case"local-date-short-year":return(0,o.default)(t,this.localDateShortYearFormatInput);case"local-datetime":return(0,o.default)(t,this.localDateTimeFormatInput);case"local-datetime-short-year":return(0,o.default)(t,this.localDateTimeShortYearFormatInput);default:return null}}isDate(t){return this.getDateType(t)!=="none"}toDateString(t,e){const r=this.getDateWrapper(t);if(r)switch(e){case"iso":return r.format(this.isoFormat);case"local-date":return r.format(this.localDateFormatOutput);case"local-date-short-year":return r.format(this.localDateShortYearFormatOutput);case"local-datetime":return r.format(this.localDateTimeFormatOutput);case"local-datetime-short-year":return r.format(this.localDateTimeShortYearFormatOutput);default:return c.default.warn(`Invalid date type: ${e}`),null}return t&&c.default.warn(`Could not map non-date value : ${t}`),null}}var f=s;0&&(module.exports={DateMapper});
2
2
  //# sourceMappingURL=DateMapper.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/dpr/utils/DateMapper/DateMapper.ts"],
4
- "sourcesContent": ["import dayjs, { Dayjs } from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { DateType } from './types'\nimport logger from '../logger'\n\nclass DateMapper {\n private isoDateRegEx = /^(\\d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01]))/\n\n private localDateRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{4}$/\n\n private localDateShortYearRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{2}$/\n\n private localDateTimeRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{4} [0-2]\\d:[0-5]\\d$/\n\n private localDateTimeShortYearRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{2} [0-2]\\d:[0-5]\\d$/\n\n private isoFormat = 'YYYY-MM-DD'\n\n private localDateFormatInput = 'D/M/YYYY'\n\n private localDateFormatOutput = 'DD/MM/YYYY'\n\n private localDateShortYearFormatInput = 'D/M/YY'\n\n private localDateShortYearFormatOutput = 'DD/MM/YY'\n\n private localDateTimeFormatInput = 'D/M/YYYY HH:mm'\n\n private localDateTimeFormatOutput = 'DD/MM/YYYY HH:mm'\n\n private localDateTimeShortYearFormatInput = 'D/M/YY HH:mm'\n\n private localDateTimeShortYearFormatOutput = 'DD/MM/YY HH:mm'\n\n getDateType(value: string): DateType {\n if (value && value.match) {\n if (value.match(this.isoDateRegEx)) {\n return 'iso'\n }\n\n if (value.match(this.localDateRegEx)) {\n return 'local-date'\n }\n\n if (value.match(this.localDateShortYearRegEx)) {\n return 'local-date-short-year'\n }\n\n if (value.match(this.localDateTimeRegEx)) {\n return 'local-datetime'\n }\n\n if (value.match(this.localDateTimeShortYearRegEx)) {\n return 'local-datetime-short-year'\n }\n }\n\n return 'none'\n }\n\n getDateWrapper(value: string): Dayjs | null {\n dayjs.extend(customParseFormat)\n\n switch (this.getDateType(value)) {\n case 'iso':\n return dayjs(value)\n case 'local-date':\n return dayjs(value, this.localDateFormatInput)\n case 'local-date-short-year':\n return dayjs(value, this.localDateShortYearFormatInput)\n case 'local-datetime':\n return dayjs(value, this.localDateTimeFormatInput)\n case 'local-datetime-short-year':\n return dayjs(value, this.localDateTimeShortYearFormatInput)\n default:\n return null\n }\n }\n\n isDate(value: string): boolean {\n return this.getDateType(value) !== 'none'\n }\n\n toDateString(value: string, type: DateType): string | null {\n const dateWrapper = this.getDateWrapper(value)\n\n if (dateWrapper) {\n switch (type) {\n case 'iso':\n return dateWrapper.format(this.isoFormat)\n case 'local-date':\n return dateWrapper.format(this.localDateFormatOutput)\n case 'local-date-short-year':\n return dateWrapper.format(this.localDateShortYearFormatOutput)\n case 'local-datetime':\n return dateWrapper.format(this.localDateTimeFormatOutput)\n case 'local-datetime-short-year':\n return dateWrapper.format(this.localDateTimeShortYearFormatOutput)\n default:\n logger.warn(`Invalid date type: ${type}`)\n return null\n }\n }\n\n if (value) {\n logger.warn(`Could not map non-date value : ${value}`)\n }\n return null\n }\n}\n\nexport { DateMapper }\nexport default DateMapper\n"],
5
- "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAA6B,oBAC7BC,EAA8B,6CAE9BC,EAAmB,wBAEnB,MAAML,CAAW,CAAjB,cACE,KAAQ,aAAe,4DAEvB,KAAQ,eAAiB,2DAEzB,KAAQ,wBAA0B,2DAElC,KAAQ,mBAAqB,2EAE7B,KAAQ,4BAA8B,2EAEtC,KAAQ,UAAY,aAEpB,KAAQ,qBAAuB,WAE/B,KAAQ,sBAAwB,aAEhC,KAAQ,8BAAgC,SAExC,KAAQ,+BAAiC,WAEzC,KAAQ,yBAA2B,iBAEnC,KAAQ,0BAA4B,mBAEpC,KAAQ,kCAAoC,eAE5C,KAAQ,mCAAqC,iBAE7C,YAAYM,EAAyB,CACnC,GAAIA,GAASA,EAAM,MAAO,CACxB,GAAIA,EAAM,MAAM,KAAK,YAAY,EAC/B,MAAO,MAGT,GAAIA,EAAM,MAAM,KAAK,cAAc,EACjC,MAAO,aAGT,GAAIA,EAAM,MAAM,KAAK,uBAAuB,EAC1C,MAAO,wBAGT,GAAIA,EAAM,MAAM,KAAK,kBAAkB,EACrC,MAAO,iBAGT,GAAIA,EAAM,MAAM,KAAK,2BAA2B,EAC9C,MAAO,2BAEX,CAEA,MAAO,MACT,CAEA,eAAeA,EAA6B,CAG1C,OAFA,EAAAC,QAAM,OAAO,EAAAC,OAAiB,EAEtB,KAAK,YAAYF,CAAK,EAAG,CAC/B,IAAK,MACH,SAAO,EAAAC,SAAMD,CAAK,EACpB,IAAK,aACH,SAAO,EAAAC,SAAMD,EAAO,KAAK,oBAAoB,EAC/C,IAAK,wBACH,SAAO,EAAAC,SAAMD,EAAO,KAAK,6BAA6B,EACxD,IAAK,iBACH,SAAO,EAAAC,SAAMD,EAAO,KAAK,wBAAwB,EACnD,IAAK,4BACH,SAAO,EAAAC,SAAMD,EAAO,KAAK,iCAAiC,EAC5D,QACE,OAAO,IACX,CACF,CAEA,OAAOA,EAAwB,CAC7B,OAAO,KAAK,YAAYA,CAAK,IAAM,MACrC,CAEA,aAAaA,EAAeG,EAA+B,CACzD,MAAMC,EAAc,KAAK,eAAeJ,CAAK,EAE7C,GAAII,EACF,OAAQD,EAAM,CACZ,IAAK,MACH,OAAOC,EAAY,OAAO,KAAK,SAAS,EAC1C,IAAK,aACH,OAAOA,EAAY,OAAO,KAAK,qBAAqB,EACtD,IAAK,wBACH,OAAOA,EAAY,OAAO,KAAK,8BAA8B,EAC/D,IAAK,iBACH,OAAOA,EAAY,OAAO,KAAK,yBAAyB,EAC1D,IAAK,4BACH,OAAOA,EAAY,OAAO,KAAK,kCAAkC,EACnE,QACE,SAAAC,QAAO,KAAK,sBAAsBF,CAAI,EAAE,EACjC,IACX,CAGF,OAAIH,GACF,EAAAK,QAAO,KAAK,kCAAkCL,CAAK,EAAE,EAEhD,IACT,CACF,CAGA,IAAOL,EAAQD",
4
+ "sourcesContent": ["import dayjs, { Dayjs } from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport { DateType } from './types'\nimport logger from '../logger'\n\nclass DateMapper {\n private isoDateRegEx = /^(\\d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01]))/\n\n private localDateRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{4}$/\n\n private localDateShortYearRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{2}$/\n\n private localDateTimeRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{4} [0-2]\\d:[0-5]\\d$/\n\n private localDateTimeShortYearRegEx = /^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]\\d{2} [0-2]\\d:[0-5]\\d$/\n\n private isoFormat = 'YYYY-MM-DD'\n\n private localDateFormatInput = 'D/M/YYYY'\n\n private localDateFormatOutput = 'DD/MM/YYYY'\n\n private localDateShortYearFormatInput = 'D/M/YY'\n\n private localDateShortYearFormatOutput = 'DD/MM/YY'\n\n private localDateTimeFormatInput = 'D/M/YYYY HH:mm'\n\n private localDateTimeFormatOutput = 'DD/MM/YYYY HH:mm'\n\n private localDateTimeShortYearFormatInput = 'D/M/YY HH:mm'\n\n private localDateTimeShortYearFormatOutput = 'DD/MM/YY HH:mm'\n\n private localDateFormatMonthYear = 'MMM YY'\n\n private localDateFormatYear = 'YYYY'\n\n getDateType(value: string): DateType {\n if (value && value.match) {\n if (value.match(this.isoDateRegEx)) {\n return 'iso'\n }\n\n if (value.match(this.localDateRegEx)) {\n return 'local-date'\n }\n\n if (value.match(this.localDateShortYearRegEx)) {\n return 'local-date-short-year'\n }\n\n if (value.match(this.localDateTimeRegEx)) {\n return 'local-datetime'\n }\n\n if (value.match(this.localDateTimeShortYearRegEx)) {\n return 'local-datetime-short-year'\n }\n }\n\n return 'none'\n }\n\n getDateWrapper(value: string): Dayjs | null {\n dayjs.extend(customParseFormat)\n\n switch (this.getDateType(value)) {\n case 'iso':\n return dayjs(value)\n case 'local-date':\n return dayjs(value, this.localDateFormatInput)\n case 'local-date-short-year':\n return dayjs(value, this.localDateShortYearFormatInput)\n case 'local-datetime':\n return dayjs(value, this.localDateTimeFormatInput)\n case 'local-datetime-short-year':\n return dayjs(value, this.localDateTimeShortYearFormatInput)\n default:\n return null\n }\n }\n\n isDate(value: string): boolean {\n return this.getDateType(value) !== 'none'\n }\n\n toDateString(value: string, type: DateType): string | null {\n const dateWrapper = this.getDateWrapper(value)\n\n if (dateWrapper) {\n switch (type) {\n case 'iso':\n return dateWrapper.format(this.isoFormat)\n case 'local-date':\n return dateWrapper.format(this.localDateFormatOutput)\n case 'local-date-short-year':\n return dateWrapper.format(this.localDateShortYearFormatOutput)\n case 'local-datetime':\n return dateWrapper.format(this.localDateTimeFormatOutput)\n case 'local-datetime-short-year':\n return dateWrapper.format(this.localDateTimeShortYearFormatOutput)\n default:\n logger.warn(`Invalid date type: ${type}`)\n return null\n }\n }\n\n if (value) {\n logger.warn(`Could not map non-date value : ${value}`)\n }\n return null\n }\n}\n\nexport { DateMapper }\nexport default DateMapper\n"],
5
+ "mappings": "6iBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAA6B,oBAC7BC,EAA8B,6CAE9BC,EAAmB,wBAEnB,MAAML,CAAW,CAAjB,cACE,KAAQ,aAAe,4DAEvB,KAAQ,eAAiB,2DAEzB,KAAQ,wBAA0B,2DAElC,KAAQ,mBAAqB,2EAE7B,KAAQ,4BAA8B,2EAEtC,KAAQ,UAAY,aAEpB,KAAQ,qBAAuB,WAE/B,KAAQ,sBAAwB,aAEhC,KAAQ,8BAAgC,SAExC,KAAQ,+BAAiC,WAEzC,KAAQ,yBAA2B,iBAEnC,KAAQ,0BAA4B,mBAEpC,KAAQ,kCAAoC,eAE5C,KAAQ,mCAAqC,iBAE7C,KAAQ,yBAA2B,SAEnC,KAAQ,oBAAsB,OAE9B,YAAYM,EAAyB,CACnC,GAAIA,GAASA,EAAM,MAAO,CACxB,GAAIA,EAAM,MAAM,KAAK,YAAY,EAC/B,MAAO,MAGT,GAAIA,EAAM,MAAM,KAAK,cAAc,EACjC,MAAO,aAGT,GAAIA,EAAM,MAAM,KAAK,uBAAuB,EAC1C,MAAO,wBAGT,GAAIA,EAAM,MAAM,KAAK,kBAAkB,EACrC,MAAO,iBAGT,GAAIA,EAAM,MAAM,KAAK,2BAA2B,EAC9C,MAAO,2BAEX,CAEA,MAAO,MACT,CAEA,eAAeA,EAA6B,CAG1C,OAFA,EAAAC,QAAM,OAAO,EAAAC,OAAiB,EAEtB,KAAK,YAAYF,CAAK,EAAG,CAC/B,IAAK,MACH,SAAO,EAAAC,SAAMD,CAAK,EACpB,IAAK,aACH,SAAO,EAAAC,SAAMD,EAAO,KAAK,oBAAoB,EAC/C,IAAK,wBACH,SAAO,EAAAC,SAAMD,EAAO,KAAK,6BAA6B,EACxD,IAAK,iBACH,SAAO,EAAAC,SAAMD,EAAO,KAAK,wBAAwB,EACnD,IAAK,4BACH,SAAO,EAAAC,SAAMD,EAAO,KAAK,iCAAiC,EAC5D,QACE,OAAO,IACX,CACF,CAEA,OAAOA,EAAwB,CAC7B,OAAO,KAAK,YAAYA,CAAK,IAAM,MACrC,CAEA,aAAaA,EAAeG,EAA+B,CACzD,MAAMC,EAAc,KAAK,eAAeJ,CAAK,EAE7C,GAAII,EACF,OAAQD,EAAM,CACZ,IAAK,MACH,OAAOC,EAAY,OAAO,KAAK,SAAS,EAC1C,IAAK,aACH,OAAOA,EAAY,OAAO,KAAK,qBAAqB,EACtD,IAAK,wBACH,OAAOA,EAAY,OAAO,KAAK,8BAA8B,EAC/D,IAAK,iBACH,OAAOA,EAAY,OAAO,KAAK,yBAAyB,EAC1D,IAAK,4BACH,OAAOA,EAAY,OAAO,KAAK,kCAAkC,EACnE,QACE,SAAAC,QAAO,KAAK,sBAAsBF,CAAI,EAAE,EACjC,IACX,CAGF,OAAIH,GACF,EAAAK,QAAO,KAAK,kCAAkCL,CAAK,EAAE,EAEhD,IACT,CACF,CAGA,IAAOL,EAAQD",
6
6
  "names": ["DateMapper_exports", "__export", "DateMapper", "DateMapper_default", "__toCommonJS", "import_dayjs", "import_customParseFormat", "import_logger", "value", "dayjs", "customParseFormat", "type", "dateWrapper", "logger"]
7
7
  }
@@ -32,6 +32,10 @@ class DateMapper {
32
32
 
33
33
  private localDateTimeShortYearFormatOutput = 'DD/MM/YY HH:mm'
34
34
 
35
+ private localDateFormatMonthYear = 'MMM YY'
36
+
37
+ private localDateFormatYear = 'YYYY'
38
+
35
39
  getDateType(value: string): DateType {
36
40
  if (value && value.match) {
37
41
  if (value.match(this.isoDateRegEx)) {
@@ -1,2 +1,2 @@
1
- var l=Object.create;var a=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,y=Object.prototype.hasOwnProperty;var R=(r,t)=>{for(var e in t)a(r,e,{get:t[e],enumerable:!0})},d=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of I(t))!y.call(r,s)&&s!==e&&a(r,s,{get:()=>t[s],enumerable:!(i=c(t,s))||i.enumerable});return r};var D=(r,t,e)=>(e=r!=null?l(g(r)):{},d(t||!r||!r.__esModule?a(e,"default",{value:r,enumerable:!0}):e,r)),q=r=>d(a({},"__esModule",{value:!0}),r);var f={};R(f,{UserStoreItemBuilder:()=>n,default:()=>U});module.exports=q(f);var p=D(require("parseurl")),o=require("../types/UserReports");class n{constructor(t,e){this.build=()=>this.userStoreItem;this.addReportData=({type:t,reportId:e,reportName:i,description:s,id:u,name:m})=>({type:t,reportId:e,reportName:i,description:s,id:u,name:m,timestamp:{}});this.addExecutionData=t=>(this.userStoreItem={...this.userStoreItem,...t},this);this.addChildExecutionData=t=>(this.userStoreItem={...this.userStoreItem,childExecutionData:t},this);this.addFilters=t=>{const e=new URLSearchParams(t).toString();return this.userStoreItem={...this.userStoreItem,filters:{data:t,queryString:e}},this};this.addSortData=t=>{const e=new URLSearchParams(t).toString();return this.userStoreItem={...this.userStoreItem,sortBy:{data:t,queryString:e}},this};this.addRequestUrls=t=>{const{origin:e,pathname:i,search:s,href:u}=this.requestFormData,{executionId:m}=this.userStoreItem,h=t.baseUrl.replace("/filters",`/${m}/status`),S=`${e}${h}`;return this.userStoreItem={...this.userStoreItem,url:{origin:e,request:{fullUrl:u,pathname:i,search:s},polling:{fullUrl:S,pathname:h}}},this};this.addAsyncUrls=t=>(this.userStoreItem={...this.userStoreItem,url:t},this);this.addReportUrls=t=>{const e=t.get("host"),i=`${t.protocol}://${t.get("host")}${t.originalUrl}`,s=(0,p.default)(t);return this.userStoreItem={...this.userStoreItem,url:{origin:e||this.userStoreItem.url?.origin||"",...this.userStoreItem.url?.request&&{request:this.userStoreItem.url.request},...this.userStoreItem.url?.polling&&{polling:this.userStoreItem.url.polling},report:{...this.userStoreItem.url?.report&&this.userStoreItem.url.report,fullUrl:i,...s&&s.search&&{search:s.search}}}},this};this.addLoadType=t=>(this.userStoreItem={...this.userStoreItem,loadType:t},this);this.addQuery=t=>(this.userStoreItem={...this.userStoreItem,...t&&{query:{data:t.query,summary:t.querySummary}}},this);this.addInteractiveQuery=t=>(t&&(this.userStoreItem={...this.userStoreItem,interactiveQuery:{data:t.query,summary:t.querySummary}}),this);this.addStatus=t=>(this.userStoreItem={...this.userStoreItem,status:t},this);this.addMetrics=t=>(this.userStoreItem={...this.userStoreItem,metrics:t.filter(e=>e.display).map(e=>({name:e.display||""}))},this);this.addTimestamp=()=>{const{status:t}=this.userStoreItem,e=new Date;switch(t){case o.RequestStatus.FAILED:this.userStoreItem.timestamp.failed=e;break;case o.RequestStatus.EXPIRED:this.userStoreItem.timestamp.expired=e;break;case o.RequestStatus.ABORTED:this.userStoreItem.timestamp.aborted=e;break;case o.RequestStatus.FINISHED:this.userStoreItem.timestamp.completed=e;break;case o.RequestStatus.SUBMITTED:this.userStoreItem.timestamp.requested=e;break;case o.RequestStatus.STARTED:case o.RequestStatus.PICKED:break;default:this.userStoreItem.timestamp.lastViewed=e;break}return this};this.addDefinitionsPath=(t,e)=>(t&&(this.userStoreItem={...this.userStoreItem,dataProductDefinitionsPath:t,dpdPathFromQuery:e}),this);this.requestFormData=e||{},this.userStoreItem=this.addReportData(t)}}var U=n;0&&(module.exports={UserStoreItemBuilder});
1
+ var I=Object.create;var u=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var q=(r,t)=>{for(var e in t)u(r,e,{get:t[e],enumerable:!0})},d=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of y(t))!R.call(r,s)&&s!==e&&u(r,s,{get:()=>t[s],enumerable:!(i=g(t,s))||i.enumerable});return r};var f=(r,t,e)=>(e=r!=null?I(D(r)):{},d(t||!r||!r.__esModule?u(e,"default",{value:r,enumerable:!0}):e,r)),U=r=>d(u({},"__esModule",{value:!0}),r);var b={};q(b,{UserStoreItemBuilder:()=>h,default:()=>E});module.exports=U(b);var p=f(require("parseurl")),o=require("../types/UserReports");class h{constructor(t,e){this.build=()=>this.userStoreItem;this.addReportData=({type:t,reportId:e,reportName:i,description:s,id:m,name:n})=>({type:t,reportId:e,reportName:i,description:s,id:m,name:n,timestamp:{}});this.addExecutionData=t=>(this.userStoreItem={...this.userStoreItem,...t},this);this.addChildExecutionData=t=>(this.userStoreItem={...this.userStoreItem,childExecutionData:t},this);this.addFilters=t=>{const e=new URLSearchParams(t).toString();return this.userStoreItem={...this.userStoreItem,filters:{data:t,queryString:e}},this};this.addSortData=t=>{const e=new URLSearchParams(t).toString();return this.userStoreItem={...this.userStoreItem,sortBy:{data:t,queryString:e}},this};this.addRequestUrls=t=>{const{origin:e,pathname:i,search:s,href:m}=this.requestFormData,{executionId:n,dataProductDefinitionsPath:S,dpdPathFromQuery:l}=this.userStoreItem;let a=t.baseUrl.replace("/filters",`/${n}/status`);l&&(a=`${a}?dataProductDefinitionsPath=${S}`);const c=`${e}${a}`;return this.userStoreItem={...this.userStoreItem,url:{origin:e,request:{fullUrl:m,pathname:i,search:s},polling:{fullUrl:c,pathname:a}}},this};this.addAsyncUrls=t=>(this.userStoreItem={...this.userStoreItem,url:t},this);this.addReportUrls=t=>{const e=t.get("host"),i=`${t.protocol}://${t.get("host")}${t.originalUrl}`,s=(0,p.default)(t);return this.userStoreItem={...this.userStoreItem,url:{origin:e||this.userStoreItem.url?.origin||"",...this.userStoreItem.url?.request&&{request:this.userStoreItem.url.request},...this.userStoreItem.url?.polling&&{polling:this.userStoreItem.url.polling},report:{...this.userStoreItem.url?.report&&this.userStoreItem.url.report,fullUrl:i,...s&&s.search&&{search:s.search}}}},this};this.addLoadType=t=>(this.userStoreItem={...this.userStoreItem,loadType:t},this);this.addQuery=t=>(this.userStoreItem={...this.userStoreItem,...t&&{query:{data:t.query,summary:t.querySummary}}},this);this.addInteractiveQuery=t=>(t&&(this.userStoreItem={...this.userStoreItem,interactiveQuery:{data:t.query,summary:t.querySummary}}),this);this.addStatus=t=>(this.userStoreItem={...this.userStoreItem,status:t},this);this.addMetrics=t=>(this.userStoreItem={...this.userStoreItem,metrics:t.filter(e=>e.display).map(e=>({name:e.display||""}))},this);this.addTimestamp=()=>{const{status:t}=this.userStoreItem,e=new Date;switch(t){case o.RequestStatus.FAILED:this.userStoreItem.timestamp.failed=e;break;case o.RequestStatus.EXPIRED:this.userStoreItem.timestamp.expired=e;break;case o.RequestStatus.ABORTED:this.userStoreItem.timestamp.aborted=e;break;case o.RequestStatus.FINISHED:this.userStoreItem.timestamp.completed=e;break;case o.RequestStatus.SUBMITTED:this.userStoreItem.timestamp.requested=e;break;case o.RequestStatus.STARTED:case o.RequestStatus.PICKED:break;default:this.userStoreItem.timestamp.lastViewed=e;break}return this};this.addDefinitionsPath=(t,e)=>(t&&(this.userStoreItem={...this.userStoreItem,dataProductDefinitionsPath:t,dpdPathFromQuery:e}),this);this.requestFormData=e||{},this.userStoreItem=this.addReportData(t)}}var E=h;0&&(module.exports={UserStoreItemBuilder});
2
2
  //# sourceMappingURL=UserStoreItemBuilder.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/utils/UserStoreItemBuilder.ts"],
4
- "sourcesContent": ["import type { Request } from 'express'\nimport parseUrl from 'parseurl'\nimport {\n AsyncReportUrlData,\n LoadType,\n ReportType,\n RequestedReport,\n RequestFormData,\n RequestStatus,\n UserReportData,\n} from '../types/UserReports'\nimport Dict = NodeJS.Dict\nimport { ChildReportExecutionData, ExecutionData } from '../types/ExecutionData'\nimport { DashboardSection } from '../components/_dashboards/dashboard/types'\n\nclass UserStoreItemBuilder {\n userStoreItem: UserReportData\n\n requestFormData: RequestFormData | Record<string, never>\n\n constructor(\n reportData: {\n type: ReportType\n reportId: string\n reportName: string\n description: string\n id: string\n name: string\n },\n requestFormData?: RequestFormData,\n ) {\n this.requestFormData = requestFormData || {}\n this.userStoreItem = this.addReportData(reportData)\n }\n\n build = () => {\n return this.userStoreItem as RequestedReport\n }\n\n addReportData = ({\n type,\n reportId,\n reportName,\n description,\n id,\n name,\n }: {\n type: ReportType\n reportId: string\n reportName: string\n description: string\n id: string\n name: string\n }) => {\n return {\n type: type as ReportType,\n reportId,\n reportName,\n description,\n id,\n name,\n timestamp: {},\n }\n }\n\n addExecutionData = (executionData: ExecutionData) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n ...executionData,\n }\n return this\n }\n\n addChildExecutionData = (childExecutionData: Array<ChildReportExecutionData>) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n childExecutionData,\n }\n return this\n }\n\n addFilters = (filterData?: Record<string, string>) => {\n const filtersQueryString = new URLSearchParams(filterData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n filters: {\n data: filterData,\n queryString: filtersQueryString,\n },\n },\n }\n return this\n }\n\n addSortData = (sortData: Record<string, string>) => {\n const sortByQueryString = new URLSearchParams(sortData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n sortBy: {\n data: sortData,\n queryString: sortByQueryString,\n },\n },\n }\n return this\n }\n\n addRequestUrls = (req: Request) => {\n const { origin, pathname, search, href } = this.requestFormData\n const { executionId } = this.userStoreItem\n\n // Polling path\n const pollingPath = req.baseUrl.replace('/filters', `/${executionId}/status`)\n const pollingFullUrl = `${origin}${pollingPath}`\n\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin,\n request: {\n fullUrl: href,\n pathname,\n search,\n },\n polling: {\n fullUrl: pollingFullUrl,\n pathname: pollingPath,\n },\n },\n },\n }\n\n return this\n }\n\n addAsyncUrls = (url: AsyncReportUrlData) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url,\n },\n }\n\n return this\n }\n\n addReportUrls = (req: Request) => {\n const origin = req.get('host')\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n const urlData = parseUrl(req)\n\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin: origin || this.userStoreItem.url?.origin || '',\n ...(this.userStoreItem.url?.request && { request: this.userStoreItem.url.request }),\n ...(this.userStoreItem.url?.polling && { polling: this.userStoreItem.url.polling }),\n report: {\n ...(this.userStoreItem.url?.report && this.userStoreItem.url.report),\n fullUrl,\n ...(urlData && urlData.search && { search: urlData.search }),\n },\n },\n },\n }\n\n return this\n }\n\n addLoadType = (loadType: LoadType) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n loadType,\n }\n\n return this\n }\n\n addQuery = (queryData?: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> }) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...(queryData && {\n query: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n }),\n }\n return this\n }\n\n addInteractiveQuery = (queryData?: { query: Dict<string>; querySummary: Array<Dict<string>> }) => {\n if (queryData) {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n interactiveQuery: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n },\n }\n }\n return this\n }\n\n addStatus = (status: RequestStatus) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n status,\n }\n return this\n }\n\n addMetrics = (metrics: DashboardSection[]) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n metrics: metrics.filter((metric) => metric.display).map((metric) => ({ name: metric.display || '' })),\n }\n return this\n }\n\n addTimestamp = () => {\n const { status } = this.userStoreItem\n const ts = new Date()\n switch (status) {\n case RequestStatus.FAILED:\n this.userStoreItem.timestamp.failed = ts\n break\n case RequestStatus.EXPIRED:\n this.userStoreItem.timestamp.expired = ts\n break\n case RequestStatus.ABORTED:\n this.userStoreItem.timestamp.aborted = ts\n break\n case RequestStatus.FINISHED:\n this.userStoreItem.timestamp.completed = ts\n break\n case RequestStatus.SUBMITTED:\n this.userStoreItem.timestamp.requested = ts\n break\n case RequestStatus.STARTED:\n case RequestStatus.PICKED:\n break\n default:\n this.userStoreItem.timestamp.lastViewed = ts\n break\n }\n return this\n }\n\n addDefinitionsPath = (definitionsPath: string, dpdPathFromQuery: boolean) => {\n if (definitionsPath) {\n this.userStoreItem = {\n ...this.userStoreItem,\n dataProductDefinitionsPath: definitionsPath,\n dpdPathFromQuery,\n }\n }\n return this\n }\n}\n\nexport { UserStoreItemBuilder }\nexport default UserStoreItemBuilder\n"],
5
- "mappings": "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",
6
- "names": ["UserStoreItemBuilder_exports", "__export", "UserStoreItemBuilder", "UserStoreItemBuilder_default", "__toCommonJS", "import_parseurl", "import_UserReports", "reportData", "requestFormData", "type", "reportId", "reportName", "description", "id", "name", "executionData", "childExecutionData", "filterData", "filtersQueryString", "sortData", "sortByQueryString", "req", "origin", "pathname", "search", "href", "executionId", "pollingPath", "pollingFullUrl", "url", "fullUrl", "urlData", "parseUrl", "loadType", "queryData", "status", "metrics", "metric", "ts", "definitionsPath", "dpdPathFromQuery"]
4
+ "sourcesContent": ["import type { Request } from 'express'\nimport parseUrl from 'parseurl'\nimport {\n AsyncReportUrlData,\n LoadType,\n ReportType,\n RequestedReport,\n RequestFormData,\n RequestStatus,\n UserReportData,\n} from '../types/UserReports'\nimport Dict = NodeJS.Dict\nimport { ChildReportExecutionData, ExecutionData } from '../types/ExecutionData'\nimport { DashboardSection } from '../components/_dashboards/dashboard/types'\n\nclass UserStoreItemBuilder {\n userStoreItem: UserReportData\n\n requestFormData: RequestFormData | Record<string, never>\n\n constructor(\n reportData: {\n type: ReportType\n reportId: string\n reportName: string\n description: string\n id: string\n name: string\n },\n requestFormData?: RequestFormData,\n ) {\n this.requestFormData = requestFormData || {}\n this.userStoreItem = this.addReportData(reportData)\n }\n\n build = () => {\n return this.userStoreItem as RequestedReport\n }\n\n addReportData = ({\n type,\n reportId,\n reportName,\n description,\n id,\n name,\n }: {\n type: ReportType\n reportId: string\n reportName: string\n description: string\n id: string\n name: string\n }) => {\n return {\n type: type as ReportType,\n reportId,\n reportName,\n description,\n id,\n name,\n timestamp: {},\n }\n }\n\n addExecutionData = (executionData: ExecutionData) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n ...executionData,\n }\n return this\n }\n\n addChildExecutionData = (childExecutionData: Array<ChildReportExecutionData>) => {\n this.userStoreItem = {\n ...(<UserReportData>this.userStoreItem),\n childExecutionData,\n }\n return this\n }\n\n addFilters = (filterData?: Record<string, string>) => {\n const filtersQueryString = new URLSearchParams(filterData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n filters: {\n data: filterData,\n queryString: filtersQueryString,\n },\n },\n }\n return this\n }\n\n addSortData = (sortData: Record<string, string>) => {\n const sortByQueryString = new URLSearchParams(sortData).toString()\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n sortBy: {\n data: sortData,\n queryString: sortByQueryString,\n },\n },\n }\n return this\n }\n\n addRequestUrls = (req: Request) => {\n const { origin, pathname, search, href } = this.requestFormData\n const { executionId, dataProductDefinitionsPath, dpdPathFromQuery } = this.userStoreItem\n\n // Polling path\n let pollingPath = req.baseUrl.replace('/filters', `/${executionId}/status`)\n if (dpdPathFromQuery) {\n pollingPath = `${pollingPath}?dataProductDefinitionsPath=${dataProductDefinitionsPath}`\n }\n const pollingFullUrl = `${origin}${pollingPath}`\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin,\n request: {\n fullUrl: href,\n pathname,\n search,\n },\n polling: {\n fullUrl: pollingFullUrl,\n pathname: pollingPath,\n },\n },\n },\n }\n\n return this\n }\n\n addAsyncUrls = (url: AsyncReportUrlData) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url,\n },\n }\n\n return this\n }\n\n addReportUrls = (req: Request) => {\n const origin = req.get('host')\n const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`\n const urlData = parseUrl(req)\n\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url: {\n origin: origin || this.userStoreItem.url?.origin || '',\n ...(this.userStoreItem.url?.request && { request: this.userStoreItem.url.request }),\n ...(this.userStoreItem.url?.polling && { polling: this.userStoreItem.url.polling }),\n report: {\n ...(this.userStoreItem.url?.report && this.userStoreItem.url.report),\n fullUrl,\n ...(urlData && urlData.search && { search: urlData.search }),\n },\n },\n },\n }\n\n return this\n }\n\n addLoadType = (loadType: LoadType) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n loadType,\n }\n\n return this\n }\n\n addQuery = (queryData?: { query: Dict<string | string[]>; querySummary: Array<Dict<string>> }) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...(queryData && {\n query: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n }),\n }\n return this\n }\n\n addInteractiveQuery = (queryData?: { query: Dict<string>; querySummary: Array<Dict<string>> }) => {\n if (queryData) {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n interactiveQuery: {\n data: queryData.query,\n summary: queryData.querySummary,\n },\n },\n }\n }\n return this\n }\n\n addStatus = (status: RequestStatus) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n status,\n }\n return this\n }\n\n addMetrics = (metrics: DashboardSection[]) => {\n this.userStoreItem = {\n ...this.userStoreItem,\n metrics: metrics.filter((metric) => metric.display).map((metric) => ({ name: metric.display || '' })),\n }\n return this\n }\n\n addTimestamp = () => {\n const { status } = this.userStoreItem\n const ts = new Date()\n switch (status) {\n case RequestStatus.FAILED:\n this.userStoreItem.timestamp.failed = ts\n break\n case RequestStatus.EXPIRED:\n this.userStoreItem.timestamp.expired = ts\n break\n case RequestStatus.ABORTED:\n this.userStoreItem.timestamp.aborted = ts\n break\n case RequestStatus.FINISHED:\n this.userStoreItem.timestamp.completed = ts\n break\n case RequestStatus.SUBMITTED:\n this.userStoreItem.timestamp.requested = ts\n break\n case RequestStatus.STARTED:\n case RequestStatus.PICKED:\n break\n default:\n this.userStoreItem.timestamp.lastViewed = ts\n break\n }\n return this\n }\n\n addDefinitionsPath = (definitionsPath: string, dpdPathFromQuery: boolean) => {\n if (definitionsPath) {\n this.userStoreItem = {\n ...this.userStoreItem,\n dataProductDefinitionsPath: definitionsPath,\n dpdPathFromQuery,\n }\n }\n return this\n }\n}\n\nexport { UserStoreItemBuilder }\nexport default UserStoreItemBuilder\n"],
5
+ "mappings": "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",
6
+ "names": ["UserStoreItemBuilder_exports", "__export", "UserStoreItemBuilder", "UserStoreItemBuilder_default", "__toCommonJS", "import_parseurl", "import_UserReports", "reportData", "requestFormData", "type", "reportId", "reportName", "description", "id", "name", "executionData", "childExecutionData", "filterData", "filtersQueryString", "sortData", "sortByQueryString", "req", "origin", "pathname", "search", "href", "executionId", "dataProductDefinitionsPath", "dpdPathFromQuery", "pollingPath", "pollingFullUrl", "url", "fullUrl", "urlData", "parseUrl", "loadType", "queryData", "status", "metrics", "metric", "ts", "definitionsPath"]
7
7
  }
@@ -109,12 +109,14 @@ class UserStoreItemBuilder {
109
109
 
110
110
  addRequestUrls = (req: Request) => {
111
111
  const { origin, pathname, search, href } = this.requestFormData
112
- const { executionId } = this.userStoreItem
112
+ const { executionId, dataProductDefinitionsPath, dpdPathFromQuery } = this.userStoreItem
113
113
 
114
114
  // Polling path
115
- const pollingPath = req.baseUrl.replace('/filters', `/${executionId}/status`)
115
+ let pollingPath = req.baseUrl.replace('/filters', `/${executionId}/status`)
116
+ if (dpdPathFromQuery) {
117
+ pollingPath = `${pollingPath}?dataProductDefinitionsPath=${dataProductDefinitionsPath}`
118
+ }
116
119
  const pollingFullUrl = `${origin}${pollingPath}`
117
-
118
120
  this.userStoreItem = {
119
121
  ...this.userStoreItem,
120
122
  ...{
@@ -1,2 +1,2 @@
1
- var h=Object.create;var E=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var w=(e,t)=>{for(var r in t)E(e,r,{get:t[r],enumerable:!0})},A=(e,t,r,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of b(t))!F.call(e,o)&&o!==r&&E(e,o,{get:()=>t[o],enumerable:!(u=v(t,o))||u.enumerable});return e};var l=(e,t,r)=>(r=e!=null?h(U(e)):{},A(t||!e||!e.__esModule?E(r,"default",{value:e,enumerable:!0}):r,e)),B=e=>A(E({},"__esModule",{value:!0}),e);var X={};w(X,{default:()=>N,getExpiredStatus:()=>M,getStatus:()=>x,shouldTimeoutRequest:()=>I});module.exports=B(X);var m=l(require("dayjs")),P=l(require("dayjs/plugin/customParseFormat")),s=require("../types/UserReports"),D=l(require("./logger")),g=l(require("./localsHelper"));m.default.extend(P.default);const L=[s.RequestStatus.ABORTED,s.RequestStatus.FAILED,s.RequestStatus.EXPIRED],O=[s.RequestStatus.SUBMITTED,s.RequestStatus.STARTED,s.RequestStatus.PICKED];function H(e){return Promise.all(e).then(t=>{const r=t.find(o=>typeof o.status=="number"||L.includes(o.status));if(r)return r;const u=t.find(o=>O.includes(o.status));return u||t[0]})}const T=async(e,t,r,u,o)=>{const{definitionsPath:R}=g.default.getValues(r),{type:d,reportId:c,executionId:a,id:i,tableId:n}=t.body,S=(await e.requestedReportService.getReportByExecutionId(a,o)).childExecutionData??[];d===s.ReportType.REPORT&&S.push({executionId:a,tableId:n,variantId:i});const q=S.map(f=>e.reportingService.getAsyncReportStatus(u,c,f.variantId,f.executionId,R,f.tableId));d===s.ReportType.DASHBOARD&&q.push(e.dashboardService.getAsyncStatus(u,c,i,a,R,n));const y=await H(q);return{status:y.status,statusResponse:y}},x=async({req:e,res:t,services:r})=>{const{token:u,dprUser:o}=g.default.getValues(t),{status:R,requestedAt:d}=e.body,c=[s.RequestStatus.READY,s.RequestStatus.EXPIRED,s.RequestStatus.FAILED];let a,i,n;try{if({status:a,statusResponse:n}=await T(r,e,t,u,o.id),I({requestedAt:d,compareTime:new Date,durationMins:15})&&!c.includes(a))throw new Error("Request taking too long. Request Halted");if(a===s.RequestStatus.FAILED){D.default.error(`Error: ${JSON.stringify(n.error)}`);const{userMessage:p,developerMessage:S}=n.error;p||S?i=n.error:i={developerMessage:n.error}}}catch(p){D.default.error(`Error: ${JSON.stringify(p)}`);const{data:S}=p;i=S||{userMessage:p.message},a=R===s.RequestStatus.FINISHED?s.RequestStatus.EXPIRED:s.RequestStatus.FAILED}return typeof a=="number"&&(a=s.RequestStatus.FAILED),{status:a,...i&&{errorMessage:i}}},M=async({req:e,res:t,services:r})=>{const{token:u,dprUser:o}=g.default.getValues(t),{executionId:R,status:d}=e.body;let c,a;try{({status:a}=await T(r,e,t,u,o.id))}catch(n){const{data:p}=n;c=(p??{}).userMessage,a=d===s.RequestStatus.READY||d===s.RequestStatus.FINISHED?s.RequestStatus.EXPIRED:s.RequestStatus.FAILED}return{isExpired:{status:a,...c&&{errorMessage:c}}.status===s.RequestStatus.EXPIRED,executionId:R}},I=({requestedAt:e,compareTime:t,durationMins:r})=>{const u=(0,m.default)(t),o=(0,m.default)(e);return u.diff(o,"minutes")>=r};var N={getStatus:x,getExpiredStatus:M,shouldTimeoutRequest:I};0&&(module.exports={getExpiredStatus,getStatus,shouldTimeoutRequest});
1
+ var h=Object.create;var E=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var w=(e,t)=>{for(var r in t)E(e,r,{get:t[r],enumerable:!0})},A=(e,t,r,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of b(t))!F.call(e,o)&&o!==r&&E(e,o,{get:()=>t[o],enumerable:!(u=v(t,o))||u.enumerable});return e};var l=(e,t,r)=>(r=e!=null?h(U(e)):{},A(t||!e||!e.__esModule?E(r,"default",{value:e,enumerable:!0}):r,e)),B=e=>A(E({},"__esModule",{value:!0}),e);var X={};w(X,{default:()=>N,getExpiredStatus:()=>M,getStatus:()=>x,shouldTimeoutRequest:()=>I});module.exports=B(X);var m=l(require("dayjs")),P=l(require("dayjs/plugin/customParseFormat")),s=require("../types/UserReports"),D=l(require("./logger")),g=l(require("./localsHelper"));m.default.extend(P.default);const L=[s.RequestStatus.ABORTED,s.RequestStatus.FAILED,s.RequestStatus.EXPIRED],O=[s.RequestStatus.SUBMITTED,s.RequestStatus.STARTED,s.RequestStatus.PICKED];function H(e){return Promise.all(e).then(t=>{const r=t.find(o=>typeof o.status=="number"||L.includes(o.status));if(r)return r;const u=t.find(o=>O.includes(o.status));return u||t[0]})}const T=async(e,t,r,u,o)=>{const{definitionsPath:R}=g.default.getValues(r),{type:d,reportId:c,executionId:a,id:i,tableId:n}=t.body,S=(await e.requestedReportService.getReportByExecutionId(a,o)).childExecutionData??[];d===s.ReportType.REPORT&&S.push({executionId:a,tableId:n,variantId:i});const q=S.map(f=>e.reportingService.getAsyncReportStatus(u,c,f.variantId,f.executionId,R,f.tableId));d===s.ReportType.DASHBOARD&&q.push(e.dashboardService.getAsyncStatus(u,c,i,a,n,R));const y=await H(q);return{status:y.status,statusResponse:y}},x=async({req:e,res:t,services:r})=>{const{token:u,dprUser:o}=g.default.getValues(t),{status:R,requestedAt:d}=e.body,c=[s.RequestStatus.READY,s.RequestStatus.EXPIRED,s.RequestStatus.FAILED];let a,i,n;try{if({status:a,statusResponse:n}=await T(r,e,t,u,o.id),I({requestedAt:d,compareTime:new Date,durationMins:15})&&!c.includes(a))throw new Error("Request taking too long. Request Halted");if(a===s.RequestStatus.FAILED){D.default.error(`Error: ${JSON.stringify(n.error)}`);const{userMessage:p,developerMessage:S}=n.error;p||S?i=n.error:i={developerMessage:n.error}}}catch(p){D.default.error(`Error: ${JSON.stringify(p)}`);const{data:S}=p;i=S||{userMessage:p.message},a=R===s.RequestStatus.FINISHED?s.RequestStatus.EXPIRED:s.RequestStatus.FAILED}return typeof a=="number"&&(a=s.RequestStatus.FAILED),{status:a,...i&&{errorMessage:i}}},M=async({req:e,res:t,services:r})=>{const{token:u,dprUser:o}=g.default.getValues(t),{executionId:R,status:d}=e.body;let c,a;try{({status:a}=await T(r,e,t,u,o.id))}catch(n){const{data:p}=n;c=(p??{}).userMessage,a=d===s.RequestStatus.READY||d===s.RequestStatus.FINISHED?s.RequestStatus.EXPIRED:s.RequestStatus.FAILED}return{isExpired:{status:a,...c&&{errorMessage:c}}.status===s.RequestStatus.EXPIRED,executionId:R}},I=({requestedAt:e,compareTime:t,durationMins:r})=>{const u=(0,m.default)(t),o=(0,m.default)(e);return u.diff(o,"minutes")>=r};var N={getStatus:x,getExpiredStatus:M,shouldTimeoutRequest:I};0&&(module.exports={getExpiredStatus,getStatus,shouldTimeoutRequest});
2
2
  //# sourceMappingURL=requestStatusHelper.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/dpr/utils/requestStatusHelper.ts"],
4
- "sourcesContent": ["import dayjs from 'dayjs'\nimport customParse from 'dayjs/plugin/customParseFormat'\nimport { Request, Response } from 'express'\nimport { ReportType, RequestedReport, RequestStatus } from '../types/UserReports'\nimport { ChildReportExecutionData } from '../types/ExecutionData'\nimport logger from './logger'\nimport { Services } from '../types/Services'\nimport localsHelper from './localsHelper'\n\ndayjs.extend(customParse)\ninterface GetStatusUtilsResponse {\n status: RequestStatus\n errorMessage?: string\n reportData?: RequestedReport | undefined\n}\n\ninterface StatusResponseError {\n userMessage: string\n developerMessage: string\n}\n\ninterface StatusResponse {\n status: RequestStatus\n error: StatusResponseError\n}\n\nconst BAD_REQUEST_STATUSES: Array<RequestStatus> = [RequestStatus.ABORTED, RequestStatus.FAILED, RequestStatus.EXPIRED]\n\nconst IN_PROGRESS_REQUEST_STATUSES: Array<RequestStatus> = [\n RequestStatus.SUBMITTED,\n RequestStatus.STARTED,\n RequestStatus.PICKED,\n]\n\nfunction findWorstStatusResponse(statusRequests: Array<Promise<StatusResponse>>): Promise<StatusResponse> {\n return Promise.all(statusRequests).then((statusResponses) => {\n const badStatus = statusResponses.find(\n (response) =>\n typeof response.status === 'number' || BAD_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (badStatus) {\n return badStatus\n }\n\n const inProgressStatus = statusResponses.find((response) =>\n IN_PROGRESS_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (inProgressStatus) {\n return inProgressStatus\n }\n\n return statusResponses[0]\n })\n}\n\nconst getStatusByReportType = async (\n services: Services,\n req: Request,\n res: Response,\n token: string,\n userId: string,\n) => {\n const { definitionsPath } = localsHelper.getValues(res)\n const { type, reportId, executionId, id, tableId } = req.body\n\n const requestedReport = await services.requestedReportService.getReportByExecutionId(executionId, userId)\n\n const reports = requestedReport.childExecutionData ?? []\n\n if (type === ReportType.REPORT) {\n reports.push({ executionId, tableId, variantId: id })\n }\n\n const statusRequests = reports.map((executionData: ChildReportExecutionData) =>\n services.reportingService.getAsyncReportStatus(\n token,\n reportId,\n executionData.variantId,\n executionData.executionId,\n definitionsPath,\n executionData.tableId,\n ),\n )\n\n if (type === ReportType.DASHBOARD) {\n statusRequests.push(\n services.dashboardService.getAsyncStatus(token, reportId, id, executionId, definitionsPath, tableId),\n )\n }\n\n const statusResponse = await findWorstStatusResponse(statusRequests)\n\n return {\n status: statusResponse.status,\n statusResponse,\n }\n}\n\nexport const getStatus = async ({\n req,\n res,\n services,\n}: {\n req: Request\n res: Response\n services: Services\n}): Promise<GetStatusUtilsResponse> => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { status: currentStatus, requestedAt } = req.body\n const timeoutExemptStatuses = [RequestStatus.READY, RequestStatus.EXPIRED, RequestStatus.FAILED]\n\n let status\n let errorMessage\n let statusResponse\n try {\n ;({ status, statusResponse } = await getStatusByReportType(services, req, res, token, dprUser.id))\n if (\n shouldTimeoutRequest({ requestedAt, compareTime: new Date(), durationMins: 15 }) &&\n !timeoutExemptStatuses.includes(status)\n ) {\n throw new Error('Request taking too long. Request Halted')\n }\n\n if (status === RequestStatus.FAILED) {\n logger.error(`Error: ${JSON.stringify(statusResponse.error)}`)\n const { userMessage, developerMessage } = statusResponse.error\n if (userMessage || developerMessage) {\n errorMessage = statusResponse.error\n } else {\n errorMessage = {\n developerMessage: statusResponse.error,\n }\n }\n }\n } catch (error) {\n logger.error(`Error: ${JSON.stringify(error)}`)\n const { data } = error\n errorMessage = data || { userMessage: error.message }\n status = currentStatus === RequestStatus.FINISHED ? RequestStatus.EXPIRED : RequestStatus.FAILED\n }\n\n if (typeof status === 'number') {\n status = RequestStatus.FAILED\n }\n\n return {\n status,\n ...(errorMessage && { errorMessage }),\n }\n}\n\n/**\n * Gets the expired status of a viewed report\n * - if reports status was READY/FINISHED\n * - And the new Status is an error status\n * - it means the report has expired\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const getExpiredStatus = async ({ req, res, services }: { req: Request; res: Response; services: Services }) => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { executionId, status: currentStatus } = req.body\n\n let errorMessage\n let status\n try {\n ;({ status } = await getStatusByReportType(services, req, res, token, dprUser.id))\n } catch (error) {\n const { data } = error\n errorMessage = (data ?? {}).userMessage\n status =\n currentStatus === RequestStatus.READY || currentStatus === RequestStatus.FINISHED\n ? RequestStatus.EXPIRED\n : RequestStatus.FAILED\n }\n\n const result: GetStatusUtilsResponse = {\n status,\n ...(errorMessage && { errorMessage }),\n }\n\n return {\n isExpired: result.status === RequestStatus.EXPIRED,\n executionId,\n }\n}\n\nexport const shouldTimeoutRequest = ({\n requestedAt,\n compareTime,\n durationMins,\n}: {\n requestedAt: Date\n compareTime: Date\n durationMins: number\n}) => {\n const compareDate = dayjs(compareTime)\n const requestDate = dayjs(requestedAt)\n\n const result = compareDate.diff(requestDate, 'minutes')\n\n return result >= durationMins\n}\n\nexport default {\n getStatus,\n getExpiredStatus,\n shouldTimeoutRequest,\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import dayjs from 'dayjs'\nimport customParse from 'dayjs/plugin/customParseFormat'\nimport { Request, Response } from 'express'\nimport { ReportType, RequestedReport, RequestStatus } from '../types/UserReports'\nimport { ChildReportExecutionData } from '../types/ExecutionData'\nimport logger from './logger'\nimport { Services } from '../types/Services'\nimport localsHelper from './localsHelper'\n\ndayjs.extend(customParse)\ninterface GetStatusUtilsResponse {\n status: RequestStatus\n errorMessage?: string\n reportData?: RequestedReport | undefined\n}\n\ninterface StatusResponseError {\n userMessage: string\n developerMessage: string\n}\n\ninterface StatusResponse {\n status: RequestStatus\n error: StatusResponseError\n}\n\nconst BAD_REQUEST_STATUSES: Array<RequestStatus> = [RequestStatus.ABORTED, RequestStatus.FAILED, RequestStatus.EXPIRED]\n\nconst IN_PROGRESS_REQUEST_STATUSES: Array<RequestStatus> = [\n RequestStatus.SUBMITTED,\n RequestStatus.STARTED,\n RequestStatus.PICKED,\n]\n\nfunction findWorstStatusResponse(statusRequests: Array<Promise<StatusResponse>>): Promise<StatusResponse> {\n return Promise.all(statusRequests).then((statusResponses) => {\n const badStatus = statusResponses.find(\n (response) =>\n typeof response.status === 'number' || BAD_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (badStatus) {\n return badStatus\n }\n\n const inProgressStatus = statusResponses.find((response) =>\n IN_PROGRESS_REQUEST_STATUSES.includes(response.status as RequestStatus),\n )\n\n if (inProgressStatus) {\n return inProgressStatus\n }\n\n return statusResponses[0]\n })\n}\n\nconst getStatusByReportType = async (\n services: Services,\n req: Request,\n res: Response,\n token: string,\n userId: string,\n) => {\n const { definitionsPath } = localsHelper.getValues(res)\n const { type, reportId, executionId, id, tableId } = req.body\n\n const requestedReport = await services.requestedReportService.getReportByExecutionId(executionId, userId)\n\n const reports = requestedReport.childExecutionData ?? []\n\n if (type === ReportType.REPORT) {\n reports.push({ executionId, tableId, variantId: id })\n }\n\n const statusRequests = reports.map((executionData: ChildReportExecutionData) =>\n services.reportingService.getAsyncReportStatus(\n token,\n reportId,\n executionData.variantId,\n executionData.executionId,\n definitionsPath,\n executionData.tableId,\n ),\n )\n\n if (type === ReportType.DASHBOARD) {\n statusRequests.push(\n services.dashboardService.getAsyncStatus(token, reportId, id, executionId, tableId, definitionsPath),\n )\n }\n\n const statusResponse = await findWorstStatusResponse(statusRequests)\n\n return {\n status: statusResponse.status,\n statusResponse,\n }\n}\n\nexport const getStatus = async ({\n req,\n res,\n services,\n}: {\n req: Request\n res: Response\n services: Services\n}): Promise<GetStatusUtilsResponse> => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { status: currentStatus, requestedAt } = req.body\n const timeoutExemptStatuses = [RequestStatus.READY, RequestStatus.EXPIRED, RequestStatus.FAILED]\n\n let status\n let errorMessage\n let statusResponse\n try {\n ;({ status, statusResponse } = await getStatusByReportType(services, req, res, token, dprUser.id))\n if (\n shouldTimeoutRequest({ requestedAt, compareTime: new Date(), durationMins: 15 }) &&\n !timeoutExemptStatuses.includes(status)\n ) {\n throw new Error('Request taking too long. Request Halted')\n }\n\n if (status === RequestStatus.FAILED) {\n logger.error(`Error: ${JSON.stringify(statusResponse.error)}`)\n const { userMessage, developerMessage } = statusResponse.error\n if (userMessage || developerMessage) {\n errorMessage = statusResponse.error\n } else {\n errorMessage = {\n developerMessage: statusResponse.error,\n }\n }\n }\n } catch (error) {\n logger.error(`Error: ${JSON.stringify(error)}`)\n const { data } = error\n errorMessage = data || { userMessage: error.message }\n status = currentStatus === RequestStatus.FINISHED ? RequestStatus.EXPIRED : RequestStatus.FAILED\n }\n\n if (typeof status === 'number') {\n status = RequestStatus.FAILED\n }\n\n return {\n status,\n ...(errorMessage && { errorMessage }),\n }\n}\n\n/**\n * Gets the expired status of a viewed report\n * - if reports status was READY/FINISHED\n * - And the new Status is an error status\n * - it means the report has expired\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const getExpiredStatus = async ({ req, res, services }: { req: Request; res: Response; services: Services }) => {\n const { token, dprUser } = localsHelper.getValues(res)\n const { executionId, status: currentStatus } = req.body\n\n let errorMessage\n let status\n try {\n ;({ status } = await getStatusByReportType(services, req, res, token, dprUser.id))\n } catch (error) {\n const { data } = error\n errorMessage = (data ?? {}).userMessage\n status =\n currentStatus === RequestStatus.READY || currentStatus === RequestStatus.FINISHED\n ? RequestStatus.EXPIRED\n : RequestStatus.FAILED\n }\n\n const result: GetStatusUtilsResponse = {\n status,\n ...(errorMessage && { errorMessage }),\n }\n\n return {\n isExpired: result.status === RequestStatus.EXPIRED,\n executionId,\n }\n}\n\nexport const shouldTimeoutRequest = ({\n requestedAt,\n compareTime,\n durationMins,\n}: {\n requestedAt: Date\n compareTime: Date\n durationMins: number\n}) => {\n const compareDate = dayjs(compareTime)\n const requestDate = dayjs(requestedAt)\n\n const result = compareDate.diff(requestDate, 'minutes')\n\n return result >= durationMins\n}\n\nexport default {\n getStatus,\n getExpiredStatus,\n shouldTimeoutRequest,\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["requestStatusHelper_exports", "__export", "requestStatusHelper_default", "getExpiredStatus", "getStatus", "shouldTimeoutRequest", "__toCommonJS", "import_dayjs", "import_customParseFormat", "import_UserReports", "import_logger", "import_localsHelper", "dayjs", "customParse", "BAD_REQUEST_STATUSES", "IN_PROGRESS_REQUEST_STATUSES", "findWorstStatusResponse", "statusRequests", "statusResponses", "badStatus", "response", "inProgressStatus", "getStatusByReportType", "services", "req", "res", "token", "userId", "definitionsPath", "localsHelper", "type", "reportId", "executionId", "id", "tableId", "reports", "executionData", "statusResponse", "dprUser", "currentStatus", "requestedAt", "timeoutExemptStatuses", "status", "errorMessage", "logger", "userMessage", "developerMessage", "error", "data", "compareTime", "durationMins", "compareDate", "requestDate"]
7
7
  }
@@ -86,7 +86,7 @@ const getStatusByReportType = async (
86
86
 
87
87
  if (type === ReportType.DASHBOARD) {
88
88
  statusRequests.push(
89
- services.dashboardService.getAsyncStatus(token, reportId, id, executionId, definitionsPath, tableId),
89
+ services.dashboardService.getAsyncStatus(token, reportId, id, executionId, tableId, definitionsPath),
90
90
  )
91
91
  }
92
92
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ministryofjustice/hmpps-digital-prison-reporting-frontend",
3
3
  "description": "The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.",
4
- "version": "4.14.2",
4
+ "version": "4.15.0",
5
5
  "main": "dpr/all.mjs",
6
6
  "sass": "dpr/all.scss",
7
7
  "engines": {
@@ -138,11 +138,13 @@
138
138
  ]
139
139
  },
140
140
  "dependencies": {
141
- "@ministryofjustice/frontend": "^3.0.3",
141
+ "@ministryofjustice/frontend": "^6.0.0",
142
142
  "agentkeepalive": "^4.5.0",
143
143
  "bunyan": "^1.8.15",
144
144
  "bunyan-format": "^0.2.1",
145
145
  "chart.js": "^3.9.1",
146
+ "chartjs-adapter-dayjs-3": "^1.2.3",
147
+ "chartjs-chart-matrix": "^3.0.0",
146
148
  "chartjs-plugin-datalabels": "^2.2.0",
147
149
  "chokidar": "^3.6.0",
148
150
  "concurrently": "^9.2.0",
@@ -161,6 +163,7 @@
161
163
  "parseurl": "^1.3.3",
162
164
  "redis": "^5.8.3",
163
165
  "superagent": "^10.1.1",
166
+ "with-alpha-hex": "^1.0.6",
164
167
  "zod": "^4.1.11"
165
168
  },
166
169
  "devDependencies": {