@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.20.1 → 4.21.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.
- package/dpr/components/_async/async-filters-form/types.d.js +1 -1
- package/dpr/components/_async/async-filters-form/types.d.js.map +1 -1
- package/dpr/components/_async/async-filters-form/types.d.ts +7 -4
- package/dpr/components/_async/async-filters-form/utils.js +1 -1
- package/dpr/components/_async/async-filters-form/utils.js.map +2 -2
- package/dpr/components/_async/async-filters-form/utils.ts +18 -17
- package/dpr/components/_catalogue/catalogue-list/utils.test.ts +1 -1
- package/dpr/components/_charts/chart/Chart.js +2 -0
- package/dpr/components/_charts/chart/Chart.js.map +7 -0
- package/dpr/components/_charts/chart/Chart.ts +89 -0
- package/dpr/components/_charts/chart/ChartColours.js +2 -0
- package/dpr/components/_charts/chart/ChartColours.js.map +7 -0
- package/dpr/components/_charts/chart/ChartColours.ts +36 -0
- package/dpr/components/_charts/chart/ChartTimeseries.js +2 -0
- package/dpr/components/_charts/chart/ChartTimeseries.js.map +7 -0
- package/dpr/components/_charts/chart/ChartTimeseries.ts +95 -0
- package/dpr/components/_charts/chart/bar/BarChart.js +2 -0
- package/dpr/components/_charts/chart/bar/BarChart.js.map +7 -0
- package/dpr/components/_charts/chart/bar/BarChart.ts +204 -0
- package/dpr/components/_charts/chart/bar/clientClass.mjs +0 -58
- package/dpr/components/_charts/chart/bar/types.js +2 -0
- package/dpr/components/_charts/chart/bar/types.js.map +7 -0
- package/dpr/components/_charts/chart/bar/types.ts +6 -0
- package/dpr/components/_charts/chart/bar/validate.js +2 -0
- package/dpr/components/_charts/chart/bar/validate.js.map +7 -0
- package/dpr/components/_charts/chart/bar/validate.ts +59 -0
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js +2 -0
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.js.map +7 -0
- package/dpr/components/_charts/chart/bar-timeseries/BarTimeseriesChart.ts +57 -0
- package/dpr/components/_charts/chart/bar-timeseries/types.js +2 -0
- package/dpr/components/_charts/chart/bar-timeseries/types.js.map +7 -0
- package/dpr/components/_charts/chart/bar-timeseries/types.ts +5 -0
- package/dpr/components/_charts/chart/bar-timeseries/validate.js +2 -0
- package/dpr/components/_charts/chart/bar-timeseries/validate.js.map +7 -0
- package/dpr/components/_charts/chart/bar-timeseries/validate.ts +30 -0
- package/dpr/components/_charts/chart/buckets/Buckets.js +2 -0
- package/dpr/components/_charts/chart/buckets/Buckets.js.map +7 -0
- package/dpr/components/_charts/chart/{Buckets.ts → buckets/Buckets.ts} +18 -14
- package/dpr/components/_charts/chart/buckets/types.js +2 -0
- package/dpr/components/_charts/chart/buckets/types.js.map +7 -0
- package/dpr/components/_charts/chart/buckets/types.ts +4 -0
- package/dpr/components/_charts/chart/buckets/validate.js +2 -0
- package/dpr/components/_charts/chart/buckets/validate.js.map +7 -0
- package/dpr/components/_charts/chart/buckets/validate.ts +15 -0
- package/dpr/components/_charts/chart/chart-config.js +2 -0
- package/dpr/components/_charts/chart/chart-config.js.map +7 -0
- package/dpr/components/_charts/chart/chart-config.ts +108 -0
- package/dpr/components/_charts/chart/clientClass.mjs +28 -106
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.js +2 -0
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.js.map +7 -0
- package/dpr/components/_charts/chart/doughnut/DoughnutChart.ts +77 -0
- package/dpr/components/_charts/chart/doughnut/clientClass.mjs +0 -45
- package/dpr/components/_charts/chart/doughnut/types.js +2 -0
- package/dpr/components/_charts/chart/doughnut/types.js.map +7 -0
- package/dpr/components/_charts/chart/doughnut/types.ts +5 -0
- package/dpr/components/_charts/chart/doughnut/validate.js +2 -0
- package/dpr/components/_charts/chart/doughnut/validate.js.map +7 -0
- package/dpr/components/_charts/chart/doughnut/validate.ts +30 -0
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js +1 -1
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.js.map +3 -3
- package/dpr/components/_charts/chart/heatmap/HeatmapChart.ts +122 -44
- package/dpr/components/_charts/chart/heatmap/clientClass.mjs +7 -89
- package/dpr/components/_charts/chart/heatmap/types.js +1 -1
- package/dpr/components/_charts/chart/heatmap/types.js.map +1 -1
- package/dpr/components/_charts/chart/heatmap/types.ts +5 -0
- package/dpr/components/_charts/chart/heatmap/validate.js +2 -0
- package/dpr/components/_charts/chart/heatmap/validate.js.map +7 -0
- package/dpr/components/_charts/chart/heatmap/validate.ts +25 -0
- package/dpr/components/_charts/chart/line/LineChart.js +2 -0
- package/dpr/components/_charts/chart/line/LineChart.js.map +7 -0
- package/dpr/components/_charts/chart/line/LineChart.ts +89 -0
- package/dpr/components/_charts/chart/line/clientClass.mjs +5 -36
- package/dpr/components/_charts/chart/line/types.js +2 -0
- package/dpr/components/_charts/chart/line/types.js.map +7 -0
- package/dpr/components/_charts/chart/line/types.ts +5 -0
- package/dpr/components/_charts/chart/line/validate.js +2 -0
- package/dpr/components/_charts/chart/line/validate.js.map +7 -0
- package/dpr/components/_charts/chart/line/validate.ts +30 -0
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js +2 -0
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.js.map +7 -0
- package/dpr/components/_charts/chart/line-timeseries/LineTimeseriesChart.ts +57 -0
- package/dpr/components/_charts/chart/line-timeseries/types.js +2 -0
- package/dpr/components/_charts/chart/line-timeseries/types.js.map +7 -0
- package/dpr/components/_charts/chart/line-timeseries/types.ts +5 -0
- package/dpr/components/_charts/chart/line-timeseries/validate.js +2 -0
- package/dpr/components/_charts/chart/line-timeseries/validate.js.map +7 -0
- package/dpr/components/_charts/chart/line-timeseries/validate.ts +30 -0
- package/dpr/components/_charts/chart/view.njk +8 -1
- package/dpr/components/_charts/chart-tabs/view.njk +15 -14
- package/dpr/components/_charts/utils.js +1 -1
- package/dpr/components/_charts/utils.js.map +3 -3
- package/dpr/components/_charts/utils.test.ts +9 -3
- package/dpr/components/_charts/utils.ts +59 -193
- package/dpr/components/_dashboards/dashboard-list/types.js +2 -0
- package/dpr/components/_dashboards/dashboard-list/types.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-list/types.ts +4 -0
- package/dpr/components/_dashboards/dashboard-list/validate.js +2 -0
- package/dpr/components/_dashboards/dashboard-list/validate.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-list/validate.ts +28 -0
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.js +2 -0
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.js.map +7 -0
- package/dpr/components/_dashboards/dashboard-visualisation/Validate.ts +71 -0
- package/dpr/components/_dashboards/dashboard-visualisation/types.js +1 -1
- package/dpr/components/_dashboards/dashboard-visualisation/types.js.map +2 -2
- package/dpr/components/_dashboards/dashboard-visualisation/types.ts +32 -2
- package/dpr/components/_dashboards/scorecard/Scorecard.js +1 -1
- package/dpr/components/_dashboards/scorecard/Scorecard.js.map +3 -3
- package/dpr/components/_dashboards/scorecard/Scorecard.ts +82 -213
- package/dpr/components/_dashboards/scorecard/types.js +1 -1
- package/dpr/components/_dashboards/scorecard/types.js.map +1 -1
- package/dpr/components/_dashboards/scorecard/types.ts +11 -1
- package/dpr/components/_dashboards/scorecard/validate.js +2 -0
- package/dpr/components/_dashboards/scorecard/validate.js.map +7 -0
- package/dpr/components/_dashboards/scorecard/validate.ts +36 -0
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js +2 -0
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.js.map +7 -0
- package/dpr/components/_dashboards/scorecard-group/ScorecardGroup.ts +228 -0
- package/dpr/components/_dashboards/scorecard-group/types.js +2 -0
- package/dpr/components/_dashboards/scorecard-group/types.js.map +7 -0
- package/dpr/components/_dashboards/scorecard-group/types.ts +5 -0
- package/dpr/components/_dashboards/scorecard-group/validate.js +2 -0
- package/dpr/components/_dashboards/scorecard-group/validate.js.map +7 -0
- package/dpr/components/_dashboards/scorecard-group/validate.ts +37 -0
- package/dpr/components/_filters/filter-input/types.d.js.map +1 -1
- package/dpr/components/_filters/filter-input/types.d.ts +1 -1
- package/dpr/components/_filters/types.d.js.map +1 -1
- package/dpr/components/_filters/types.d.ts +6 -4
- package/dpr/components/_reports/report-actions/types.d.js.map +1 -1
- package/dpr/components/_reports/report-actions/types.d.ts +1 -1
- package/dpr/components/report-list/types.d.js.map +1 -1
- package/dpr/components/report-list/types.d.ts +1 -1
- package/dpr/data/types.d.js +1 -1
- package/dpr/data/types.d.js.map +1 -1
- package/dpr/data/types.d.ts +2 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/dashboard/utils.js.map +3 -3
- package/dpr/routes/journeys/view-report/async/dashboard/utils.ts +22 -10
- package/dpr/routes/journeys/view-report/async/report/utils.js +1 -1
- package/dpr/routes/journeys/view-report/async/report/utils.js.map +2 -2
- package/dpr/routes/journeys/view-report/async/report/utils.ts +1 -1
- package/dpr/routes/journeys/view-report/controller.js +1 -1
- package/dpr/routes/journeys/view-report/controller.js.map +3 -3
- package/dpr/routes/journeys/view-report/controller.ts +3 -1
- package/dpr/types/Services.d.js +1 -1
- package/dpr/types/Services.d.js.map +1 -1
- package/dpr/types/Services.d.ts +0 -2
- package/dpr/utils/DataTableBuilder/types.d.js +1 -1
- package/dpr/utils/DataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/DataTableBuilder/types.d.ts +2 -2
- package/dpr/utils/ErrorHandler.js +1 -1
- package/dpr/utils/ErrorHandler.js.map +3 -3
- package/dpr/utils/ErrorHandler.ts +16 -0
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/types.d.js.map +1 -1
- package/dpr/utils/ParentChildDataTableBuilder/types.d.ts +1 -0
- package/dpr/utils/Personalisation/types.d.js +1 -1
- package/dpr/utils/Personalisation/types.d.js.map +1 -1
- package/dpr/utils/Personalisation/types.d.ts +1 -0
- package/dpr/utils/UserStoreItemBuilder.js.map +2 -2
- package/dpr/utils/UserStoreItemBuilder.ts +1 -1
- package/package.json +1 -1
- package/dpr/components/_charts/chart/Buckets.js +0 -2
- package/dpr/components/_charts/chart/Buckets.js.map +0 -7
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js +0 -2
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.js.map +0 -7
- package/dpr/components/_dashboards/dashboard-visualisation/DashboardVisualisation.ts +0 -40
|
@@ -20,11 +20,13 @@ import DashboardListUtils from '../../../../../components/_dashboards/dashboard-
|
|
|
20
20
|
import FilterUtils from '../../../../../components/_filters/utils'
|
|
21
21
|
import ScorecardsUtils from '../../../../../components/_dashboards/scorecard/utils'
|
|
22
22
|
import ScorecardVisualisation from '../../../../../components/_dashboards/scorecard/Scorecard'
|
|
23
|
+
import ScorecardGroupVisualisation from '../../../../../components/_dashboards/scorecard-group/ScorecardGroup'
|
|
23
24
|
import ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'
|
|
24
25
|
import ReportQuery from '../../../../../types/ReportQuery'
|
|
25
26
|
import LocalsHelper from '../../../../../utils/localsHelper'
|
|
26
|
-
import { FilterValue } from '../../../../../components/_filters/types'
|
|
27
|
+
import { FilterValue, GranularDateRangeFilterValue, PartialDate } from '../../../../../components/_filters/types'
|
|
27
28
|
import { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'
|
|
29
|
+
import { FilterType } from '../../../../../components/_filters/filter-input/enum'
|
|
28
30
|
|
|
29
31
|
const setDashboardActions = (
|
|
30
32
|
dashboardDefinition: components['schemas']['DashboardDefinition'],
|
|
@@ -123,6 +125,7 @@ const getSections = (
|
|
|
123
125
|
dashboardDefinition: components['schemas']['DashboardDefinition'],
|
|
124
126
|
dashboardData: DashboardDataResponse[],
|
|
125
127
|
query: Record<string, string | string[]>,
|
|
128
|
+
partialDate?: PartialDate,
|
|
126
129
|
): DashboardSection[] => {
|
|
127
130
|
return dashboardDefinition.sections.map((section: components['schemas']['DashboardSectionDefinition']) => {
|
|
128
131
|
const { id, display: title, description } = section
|
|
@@ -141,26 +144,23 @@ const getSections = (
|
|
|
141
144
|
|
|
142
145
|
case DashboardVisualisationType.SCORECARD:
|
|
143
146
|
hasScorecard = true
|
|
144
|
-
data = new ScorecardVisualisation(
|
|
147
|
+
data = new ScorecardVisualisation().withDefinition(visDefinition).withData(dashboardData).build()
|
|
145
148
|
break
|
|
146
149
|
|
|
147
150
|
case DashboardVisualisationType.SCORECARD_GROUP:
|
|
148
|
-
data = new
|
|
151
|
+
data = new ScorecardGroupVisualisation().withDefinition(visDefinition).withData(dashboardData).build()
|
|
149
152
|
break
|
|
150
153
|
|
|
151
154
|
case DashboardVisualisationType.BAR:
|
|
152
155
|
case DashboardVisualisationType.LINE:
|
|
153
156
|
case DashboardVisualisationType.DONUT: {
|
|
154
|
-
data = ChartUtils.createChart(visDefinition, dashboardData)
|
|
155
|
-
break
|
|
156
|
-
}
|
|
157
|
-
case DashboardVisualisationType.MATRIX_TIMESERIES: {
|
|
158
|
-
data = ChartUtils.createMatrixChart(visDefinition, dashboardData, query)
|
|
157
|
+
data = ChartUtils.createChart(visDefinition, dashboardData, type)
|
|
159
158
|
break
|
|
160
159
|
}
|
|
160
|
+
case DashboardVisualisationType.MATRIX_TIMESERIES:
|
|
161
161
|
case DashboardVisualisationType.BAR_TIMESERIES:
|
|
162
162
|
case DashboardVisualisationType.LINE_TIMESERIES: {
|
|
163
|
-
data = ChartUtils.createTimeseriesCharts(visDefinition, dashboardData)
|
|
163
|
+
data = ChartUtils.createTimeseriesCharts(visDefinition, dashboardData, type, query, partialDate)
|
|
164
164
|
break
|
|
165
165
|
}
|
|
166
166
|
default:
|
|
@@ -208,6 +208,17 @@ const updateStore = async (
|
|
|
208
208
|
return dashboardRequestData
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
+
const getPartialDate = (filters: FilterValue[]) => {
|
|
212
|
+
let partialDate: PartialDate | undefined
|
|
213
|
+
const granularDateRangeFilter = <GranularDateRangeFilterValue | undefined>(
|
|
214
|
+
filters.find((f) => f.type === FilterType.granularDateRange.toLowerCase())
|
|
215
|
+
)
|
|
216
|
+
if (granularDateRangeFilter) {
|
|
217
|
+
partialDate = granularDateRangeFilter.value.partialDate
|
|
218
|
+
}
|
|
219
|
+
return partialDate
|
|
220
|
+
}
|
|
221
|
+
|
|
211
222
|
export const renderAsyncDashboard = async ({ req, res, services }: AsyncReportUtilsParams) => {
|
|
212
223
|
const { token, csrfToken, dprUser, nestedBaseUrl } = LocalsHelper.getValues(res)
|
|
213
224
|
const { reportId, id, tableId } = req.params
|
|
@@ -235,9 +246,10 @@ export const renderAsyncDashboard = async ({ req, res, services }: AsyncReportUt
|
|
|
235
246
|
)
|
|
236
247
|
|
|
237
248
|
const flattenedData: DashboardDataResponse[] = dashboardData.flat()
|
|
249
|
+
const partialDate = getPartialDate(filters.filters)
|
|
238
250
|
|
|
239
251
|
// Get the dashboard parts
|
|
240
|
-
const sections: DashboardSection[] = getSections(dashboardDefinition, flattenedData, query)
|
|
252
|
+
const sections: DashboardSection[] = getSections(dashboardDefinition, flattenedData, query, partialDate)
|
|
241
253
|
|
|
242
254
|
// Update the store
|
|
243
255
|
if (requestedReportService) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var M=Object.create;var v=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var Z=(t,e)=>{for(var o in e)v(t,o,{get:e[o],enumerable:!0})},E=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of J(e))!X.call(t,n)&&n!==o&&v(t,n,{get:()=>e[n],enumerable:!(r=G(e,n))||r.enumerable});return t};var R=(t,e,o)=>(o=t!=null?M(K(t)):{},E(e||!t||!t.__esModule?v(o,"default",{value:t,enumerable:!0}):o,t)),$=t=>E(v({},"__esModule",{value:!0}),t);var ut={};Z(ut,{default:()=>pt,getChildData:()=>Y,getData:()=>O,getSummariesData:()=>W,renderReport:()=>_});module.exports=$(ut);var V=R(require("parseurl")),C=require("../../../../../types/UserReports"),T=R(require("../../../../../types/ReportQuery")),x=require("../../../../../components/_filters/filtersTypeEnum"),A=R(require("../../../../../utils/definitionUtils")),k=R(require("../../../../../components/_reports/report-pagination/utils")),F=R(require("../../../../../components/_reports/report-totals/utils")),q=R(require("../../../../../components/_filters/utils")),Q=R(require("../../../../../components/_reports/report-columns-form/utils")),N=R(require("../../../../../components/_reports/report-actions/utils")),B=R(require("../../../../../components/user-reports/utils")),
|
|
1
|
+
"use strict";var M=Object.create;var v=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var Z=(t,e)=>{for(var o in e)v(t,o,{get:e[o],enumerable:!0})},E=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of J(e))!X.call(t,n)&&n!==o&&v(t,n,{get:()=>e[n],enumerable:!(r=G(e,n))||r.enumerable});return t};var R=(t,e,o)=>(o=t!=null?M(K(t)):{},E(e||!t||!t.__esModule?v(o,"default",{value:t,enumerable:!0}):o,t)),$=t=>E(v({},"__esModule",{value:!0}),t);var ut={};Z(ut,{default:()=>pt,getChildData:()=>Y,getData:()=>O,getSummariesData:()=>W,renderReport:()=>_});module.exports=$(ut);var V=R(require("parseurl")),C=require("../../../../../types/UserReports"),T=R(require("../../../../../types/ReportQuery")),x=require("../../../../../components/_filters/filtersTypeEnum"),A=R(require("../../../../../utils/definitionUtils")),k=R(require("../../../../../components/_reports/report-pagination/utils")),F=R(require("../../../../../components/_reports/report-totals/utils")),q=R(require("../../../../../components/_filters/utils")),Q=R(require("../../../../../components/_reports/report-columns-form/utils")),N=R(require("../../../../../components/_reports/report-actions/utils")),B=R(require("../../../../../components/user-reports/utils")),h=R(require("../../../../../utils/localsHelper")),L=R(require("../../../../../components/_reports/report-data-table/utils")),z=R(require("../../../../../utils/CollatedSummaryBuilder/CollatedSummaryBuilder"));const O=async({res:t,req:e,services:o,token:r,userId:n})=>{const{definitionsPath:i}=h.default.getValues(t),{reportId:a,variantId:l,id:c,tableId:d}=e.params,p=l||c,s=await o.requestedReportService.getReportByTableId(d,n),f=s?.query?.data,m=await o.reportingService.getDefinition(r,a,p,i,f),{variant:y}=m,{specification:g}=y;if(!g)throw new Error("No specification found in variant definition");const S=Q.default.getColumns(g,e),w=await tt(m,S,t,e,o,s),U=await et({definition:m,services:o,token:r,req:e,res:t,reportQuery:w}),{summaries:D}=m.variant,I=D?await W(D,o,r,e,t):[],{childVariants:P}=m.variant,b=P?await Y(P,o,r,e,t,s):[];return{definition:m,requestData:s,reportData:U,summariesData:I,childData:b,reportQuery:w,columns:S}},tt=async(t,e,o,r,n,i)=>{const{definitionsPath:a}=h.default.getValues(o),l=A.default.getFields(t),c=A.default.getTemplate(t),d=await q.default.getFilters({fields:l,req:r,filtersType:x.FiltersType.INTERACTIVE,res:o,services:n}),p=r.query?.sortColumn||i?.query?.data?.sortColumn,u=r.query?.sortedAsc||i?.query?.data?.sortedAsc,s=r.query?.selectedPage,f=r.query?.pageSize,m=q.default.setRequestQueryFromFilterValues(d.filters),y={...p&&{sortColumn:p},...u&&{sortedAsc:u},...m,...f&&{pageSize:f},...s&&{selectedPage:s},...e&&{columns:e.value}};return new T.default({fields:l,template:c,queryParams:y,definitionsPath:a})},et=async t=>{const{services:e,token:o,req:r,reportQuery:n}=t,{reportId:i,variantId:a,id:l,tableId:c}=r.params,d=a||l;return e.reportingService.getAsyncReport(o,i,d,c,n.toRecordWithFilterPrefix(!0))},W=async(t,e,o,r,n)=>{const{reportId:i,variantId:a,id:l,tableId:c}=r.params,{definitionsPath:d}=h.default.getValues(n),p=a||l;return Promise.all(t.map(async u=>{const s=await e.reportingService.getAsyncSummaryReport(o,i,p,c,u.id,{dataProductDefinitionsPath:d});return{...u,data:s}}))},Y=async(t,e,o,r,n,i)=>{const{definitionsPath:a}=h.default.getValues(n),{reportId:l}=r.params,c=i?.childExecutionData;if(!c)throw new Error("getChildData: No execution data found for child variants");return Promise.all(t.map(async d=>{const{specification:p}=d;if(!p)throw new Error("getChildData: No specification found in child variant definition");const u=new T.default({fields:p?.fields||[],template:"parent-child",queryParams:r.query,definitionsPath:a}).toRecordWithFilterPrefix(!0),s=c.find(y=>y.variantId===d.id);if(!s||!s.tableId)throw new Error("getChildData: No matching child execution data found");const{tableId:f}=s,m=await e.reportingService.getAsyncReport(o,l,d.id,f,u);return{id:d.id,data:m}}))},_=async({req:t,res:e,services:o})=>{const{token:r,dprUser:n}=h.default.getValues(e),{definition:i,requestData:a,reportData:l,childData:c,summariesData:d,reportQuery:p,columns:u}=await O({req:t,res:e,services:o,token:r,userId:n.id}),s=L.default.createDataTable(i,u,l,c,d,p),f=await ot(t,e,o,i,d,s,u,p,a),m={...f,dataTable:s};return a&&Object.keys(a).length&&B.default.updateLastViewed({req:t,services:o,reportStateData:a,userId:n.id,filters:f.filterData.filters}),{renderData:m}},ot=async(t,e,o,r,n,i,a,l,c)=>{const{nestedBaseUrl:d}=h.default.getValues(e),p=(0,V.default)(t);if(!p)throw new Error("Unable to set url data from request");const u=p?nt(p,t):void 0,s=ct(r),{fields:f,specification:m}=s,y=c?lt(c):void 0,g=await st(r,o,e,t,l),S=await q.default.getFilters({fields:f,req:t,res:e,services:o,filtersType:x.FiltersType.INTERACTIVE}),w=await it(o,e,t,a,s,y,u),U=at(e,t);let D;n.length&&(D=new z.default(m,n).collatePageSummaries());let I,P;if(s.template==="list"){I=k.default.getPaginationData(p,g,t);const{pageSize:b,currentPage:j,totalRows:H}=I;P=F.default.getTotals(b,j,H,i[0].rowCount)}return{...rt(m)&&{columns:a},filterData:S,count:g,nestedBaseUrl:d,...U,...w,...s,...y,...u,...I&&{pagination:I},...P&&{totals:P},...D&&{reportSummaries:D}}},rt=t=>{const{template:e}=t;return!["row-section","row-section-child","summary","summary-section"].includes(e)},at=(t,e)=>{const{csrfToken:o}=h.default.getValues(t),{tableId:r,reportId:n,id:i}=e.params;return{csrfToken:o,loadType:C.LoadType.ASYNC,type:C.ReportType.REPORT,tableId:r,reportId:n,id:i}},nt=(t,e)=>{const{search:o}=t,r=o?encodeURIComponent(o):void 0,n=o?e.originalUrl.split(o)[0]:e.originalUrl;return{reportUrl:n.replace("/download-disabled","").replace("/download-disabled?",""),reportSearch:o||void 0,encodedSearch:r,pathname:n}},it=async(t,e,o,r,n,i,a)=>{const{csrfToken:l,dprUser:c,bookmarkingEnabled:d,downloadingEnabled:p}=h.default.getValues(e),{reportId:u,id:s}=o.params,{downloadPermissionService:f,bookmarkService:m}=t;let y=!1;p&&(y=await f.downloadEnabledForReport(c.id,u,s));let g;return d&&(g=await m.isBookmarked(s,u,c.id)),{actions:dt(l,r,y,e,o,n,i,a),canDownload:y,bookmarked:g}},st=async(t,e,o,r,n)=>{const{token:i}=h.default.getValues(o),{tableId:a,reportId:l,id:c}=r.params;return t.variant.interactive?e.reportingService.getAsyncInteractiveCount(i,a,l,c,n):e.reportingService.getAsyncCount(i,a)},ct=t=>{const{variant:e,name:o,description:r}=t,{classification:n,printable:i,specification:a,name:l,description:c}=e;if(!a)throw new Error("No specification found in variant definition");const{template:d,fields:p}=a;return{reportName:o,name:l,description:c||r,classification:n,printable:!!i,specification:a,template:d,fields:p}},lt=t=>{const{query:e,url:o,timestamp:r}=t;return{executionId:t.executionId,requestedTimestamp:r.requested?new Date(r.requested).toLocaleString():void 0,querySummary:e?.summary||[],queryData:e?.data,requestUrl:o?.request,defaultQuery:o?.report?.default,dataProductDefinitionsPath:t.dataProductDefinitionsPath}},dt=(t,e,o,r,n,i,a,l)=>{const{reportName:c,name:d,printable:p}=i,{tableId:u,id:s,reportId:f}=n.params,{nestedBaseUrl:m,definitionsPath:y,downloadingEnabled:g}=h.default.getValues(r);let S;l&&g&&(S={enabled:g,name:d,reportName:c,csrfToken:t,reportId:f,id:s,tableId:u,columns:e.value,definitionPath:y,loadType:C.LoadType.ASYNC,nestedBaseUrl:m,canDownload:o,currentUrl:l.pathname,currentQueryParams:l.reportSearch,...a?.queryData&&{sortColumn:a.queryData.sortColumn,sortedAsc:a.queryData.sortedAsc}});let w,U;a?.requestUrl?.fullUrl&&(w={reportName:c,name:d,url:a.requestUrl.fullUrl},U={url:a.requestUrl.fullUrl});let D;return a?.executionId&&a?.requestUrl?.fullUrl&&(D={url:a.requestUrl.fullUrl,executionId:a.executionId}),N.default.getActions({...S&&{download:S},...w&&{share:w},...D&&{refresh:D},...U&&{copy:U},print:{enabled:p}})};var pt={renderReport:_};0&&(module.exports={getChildData,getData,getSummariesData,renderReport});
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/dpr/routes/journeys/view-report/async/report/utils.ts"],
|
|
4
|
-
"sourcesContent": ["import parseUrl from 'parseurl'\nimport { Url } from 'url'\nimport { Request, Response } from 'express'\n\n// Types\nimport type { Columns } from '../../../../../components/_reports/report-columns-form/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\nimport type { DataTable } from '../../../../../utils/DataTableBuilder/types'\nimport type { components } from '../../../../../types/api'\nimport type { AsyncSummary, RequestedReport } from '../../../../../types/UserReports'\nimport { LoadType, ReportType } from '../../../../../types/UserReports'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport type { ChildData } from '../../../../../utils/ParentChildDataTableBuilder/types'\nimport type { ExtractedDefinitionData, ExtractedRequestData, ReportUrls } from './types'\nimport type { DownloadActionParams } from '../../../../../components/_reports/report-actions/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport type { Services } from '../../../../../types/Services'\n\n// Utils\nimport definitionUtils from '../../../../../utils/definitionUtils'\nimport PaginationUtils from '../../../../../components/_reports/report-pagination/utils'\nimport TotalsUtils from '../../../../../components/_reports/report-totals/utils'\nimport ReportFiltersUtils from '../../../../../components/_filters/utils'\nimport ColumnUtils from '../../../../../components/_reports/report-columns-form/utils'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport DataTableUtils from '../../../../../components/_reports/report-data-table/utils'\nimport RequestedReportService from '../../../my-reports/requested-reports/service'\n\nimport CollatedSummaryBuilder from '../../../../../utils/CollatedSummaryBuilder/CollatedSummaryBuilder'\n\nexport const getData = async ({\n res,\n req,\n services,\n token,\n userId,\n}: AsyncReportUtilsParams & { token: string; userId: string }) => {\n const { definitionsPath: definitionPath } = LocalsHelper.getValues(res)\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n // Get the request data\n const requestedReportService = <RequestedReportService>services.requestedReportService\n const requestData: RequestedReport | undefined = await requestedReportService.getReportByTableId(tableId, userId)\n const queryData = requestData?.query?.data\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, reportVariantId, definitionPath, queryData)\n const { variant } = definition\n const { specification } = variant\n\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n\n // Get the columns\n const columns = ColumnUtils.getColumns(specification, req)\n\n // initialise report query\n const reportQuery = await initReportQuery(definition, columns, res, req, services, requestData)\n\n // Get the reportData\n const reportData = await getReportData({ definition, services, token, req, res, reportQuery })\n\n // Get the summary data, if applicable\n const { summaries } = definition.variant\n const summariesData = !summaries ? [] : await getSummariesData(summaries, services, token, req, res)\n\n // Get the child data, if applicable\n const { childVariants } = definition.variant\n const childData: ChildData[] = !childVariants\n ? []\n : await getChildData(childVariants, services, token, req, res, requestData)\n\n return {\n definition,\n requestData,\n reportData,\n summariesData,\n childData,\n reportQuery,\n columns,\n }\n}\n\nconst initReportQuery = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n columns: Columns,\n res: Response,\n req: Request,\n services: Services,\n requestData?: RequestedReport,\n) => {\n const { definitionsPath } = LocalsHelper.getValues(res)\n const fields = definitionUtils.getFields(definition)\n const template = definitionUtils.getTemplate(definition)\n\n const filtersData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n filtersType: FiltersType.INTERACTIVE,\n res,\n services,\n })\n\n // Sort\n const sortColumn = req.query?.['sortColumn'] || requestData?.query?.data?.['sortColumn']\n const sortedAsc = req.query?.['sortedAsc'] || requestData?.query?.data?.['sortedAsc']\n\n // Pagination\n const selectedPage = req.query?.['selectedPage']\n const pageSize = req.query?.['pageSize']\n\n // Filters\n const filtersQuery = ReportFiltersUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n const queryParams = {\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n ...filtersQuery,\n ...(pageSize && { pageSize }),\n ...(selectedPage && { selectedPage }),\n ...(columns && { columns: columns.value }),\n }\n\n return new ReportQuery({\n fields,\n template,\n queryParams,\n definitionsPath,\n })\n}\n\nconst getReportData = async (args: {\n definition: components['schemas']['SingleVariantReportDefinition']\n services: Services\n token: string\n req: Request\n res: Response\n reportQuery: ReportQuery\n}) => {\n const { services, token, req, reportQuery } = args\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n return services.reportingService.getAsyncReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n reportQuery.toRecordWithFilterPrefix(true),\n )\n}\n\nexport const getSummariesData = async (\n summaries: components['schemas']['ReportSummary'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n): Promise<AsyncSummary[]> => {\n const { reportId, variantId, id, tableId } = req.params\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const reportVariantId = variantId || id\n\n return Promise.all(\n summaries.map(async (summary) => {\n const summaryReport = await services.reportingService.getAsyncSummaryReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n summary.id,\n {\n dataProductDefinitionsPath,\n },\n )\n\n return {\n ...summary,\n data: summaryReport,\n }\n }),\n )\n}\n\nexport const getChildData = async (\n childVariants: components['schemas']['ChildVariantDefinition'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n requestData?: RequestedReport,\n): Promise<ChildData[]> => {\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const { reportId } = req.params\n const childExecutionData = requestData?.childExecutionData\n if (!childExecutionData) {\n throw new Error('getChildData: No execution data found for child variants')\n }\n return Promise.all(\n childVariants.map(async (childVariant) => {\n const { specification } = childVariant\n if (!specification) {\n throw new Error('getChildData: No specification found in child variant definition')\n }\n\n const query = new ReportQuery({\n fields: specification?.fields || [],\n template: specification.template,\n queryParams: req.query,\n definitionsPath: dataProductDefinitionsPath,\n }).toRecordWithFilterPrefix(true)\n\n const childData = childExecutionData.find((e) => e.variantId === childVariant.id)\n if (!childData || !childData.tableId) {\n throw new Error('getChildData: No matching child execution data found')\n }\n const { tableId: childTableId } = childData\n\n const childReport = await services.reportingService.getAsyncReport(\n token,\n reportId,\n childVariant.id,\n childTableId,\n query,\n )\n\n return {\n id: childVariant.id,\n data: childReport,\n }\n }),\n )\n}\n\n/**\n * Entry point function to render the report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const renderReport = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser } = LocalsHelper.getValues(res)\n\n // Get the report data\n const { definition, requestData, reportData, childData, summariesData, reportQuery, columns } = await getData({\n req,\n res,\n services,\n token,\n userId: dprUser.id,\n })\n\n // Get the data table\n const dataTable: DataTable[] = DataTableUtils.createDataTable(\n definition,\n columns,\n reportData,\n childData,\n summariesData,\n reportQuery,\n )\n\n // Get the template data\n const templateData = await getTemplateData(\n req,\n res,\n services,\n definition,\n summariesData,\n dataTable,\n columns,\n reportQuery,\n requestData,\n )\n\n const renderData = {\n ...templateData,\n dataTable,\n }\n\n if (requestData && Object.keys(requestData).length) {\n UserReportsUtils.updateLastViewed({\n req,\n services,\n reportStateData: requestData,\n userId: dprUser.id,\n filters: templateData.filterData.filters,\n })\n }\n\n return { renderData }\n}\n\nconst getTemplateData = async (\n req: Request,\n res: Response,\n services: Services,\n definition: components['schemas']['SingleVariantReportDefinition'],\n summariesData: AsyncSummary[],\n dataTable: DataTable[],\n columns: Columns,\n reportQuery: ReportQuery,\n requestData?: RequestedReport,\n) => {\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n\n // get url data\n const url = parseUrl(req)\n if (!url) {\n throw new Error('Unable to set url data from request')\n }\n\n const urls = url ? setUrls(url, req) : undefined\n\n // get from definition\n const definitionData = extractDataFromDefinition(definition)\n const { fields, specification } = definitionData\n\n // get from requestedData\n const requestedData = requestData ? extractDataFromRequest(requestData) : undefined\n\n // Get the count\n const count = await getCount(definition, services, res, req, reportQuery)\n\n // Get the filters\n const filterData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n res,\n services,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n // Set the features\n const features = await setFeatures(services, res, req, columns, definitionData, requestedData, urls)\n\n // Set the extra meta data\n const meta = setMetaData(res, req)\n\n let reportSummaries\n if (summariesData.length) {\n const collatedSummaryBuilder = new CollatedSummaryBuilder(specification, summariesData)\n reportSummaries = collatedSummaryBuilder.collatePageSummaries()\n }\n\n let pagination\n let totals\n if (definitionData.template === 'list') {\n pagination = PaginationUtils.getPaginationData(url, count, req)\n const { pageSize, currentPage, totalRows } = pagination\n totals = TotalsUtils.getTotals(pageSize, currentPage, totalRows, dataTable[0].rowCount)\n }\n\n return {\n ...(showColumns(specification) && { columns }),\n filterData,\n count,\n nestedBaseUrl,\n ...meta,\n ...features,\n ...definitionData,\n ...requestedData,\n ...urls,\n ...(pagination && { pagination }),\n ...(totals && { totals }),\n ...(reportSummaries && { reportSummaries }),\n }\n}\n\nconst showColumns = (specification: components['schemas']['Specification']) => {\n const { template } = specification\n\n return !['row-section', 'row-section-child', 'summary', 'summary-section'].includes(template)\n}\n\nconst setMetaData = (res: Response, req: Request) => {\n const { csrfToken } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return {\n csrfToken,\n loadType: LoadType.ASYNC,\n type: ReportType.REPORT,\n tableId,\n reportId,\n id,\n }\n}\n\nconst setUrls = (url: Url, req: Request): ReportUrls => {\n const { search } = url\n const encodedSearch = search ? encodeURIComponent(search) : undefined\n const pathname = search ? req.originalUrl.split(search)[0] : req.originalUrl\n const reportUrl = pathname.replace('/download-disabled', '').replace('/download-disabled?', '')\n\n return {\n reportUrl,\n reportSearch: search || undefined,\n encodedSearch,\n pathname,\n }\n}\n\nconst setFeatures = async (\n services: Services,\n res: Response,\n req: Request,\n columns: Columns,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { csrfToken, dprUser, bookmarkingEnabled, downloadingEnabled } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const { downloadPermissionService, bookmarkService } = services\n\n let canDownload = false\n if (downloadingEnabled) {\n canDownload = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)\n }\n\n let bookmarked\n if (bookmarkingEnabled) {\n bookmarked = await bookmarkService.isBookmarked(id, reportId, dprUser.id)\n }\n\n const actions = setActions(csrfToken, columns, canDownload, res, req, definitionData, requestData, urls)\n\n return {\n actions,\n canDownload,\n bookmarked,\n }\n}\n\nconst getCount = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n services: Services,\n res: Response,\n req: Request,\n reportQuery: ReportQuery,\n) => {\n const { token } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return !definition.variant.interactive\n ? services.reportingService.getAsyncCount(token, tableId)\n : services.reportingService.getAsyncInteractiveCount(token, tableId, reportId, id, reportQuery)\n}\n\nconst extractDataFromDefinition = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): ExtractedDefinitionData => {\n const { variant, name: reportName, description: reportDescription } = definition\n const { classification, printable, specification, name, description } = variant\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n const { template, fields } = specification\n\n return {\n reportName,\n name,\n description: description || reportDescription,\n classification,\n printable: Boolean(printable),\n specification,\n template,\n fields,\n }\n}\n\nconst extractDataFromRequest = (requestData: RequestedReport): ExtractedRequestData => {\n const { query, url, timestamp } = requestData\n\n return {\n executionId: requestData.executionId,\n requestedTimestamp: timestamp.requested ? new Date(timestamp.requested).toLocaleString() : undefined,\n querySummary: query?.summary || [],\n queryData: query?.data,\n requestUrl: url?.request,\n defaultQuery: url?.report?.default,\n dataProductDefinitionsPath: requestData.dataProductDefinitionsPath,\n }\n}\n\nconst setActions = (\n csrfToken: string,\n columns: Columns,\n canDownload: boolean,\n res: Response,\n req: Request,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { reportName, name, printable } = definitionData\n const { tableId, id, reportId } = req.params\n const { nestedBaseUrl, definitionsPath, downloadingEnabled } = LocalsHelper.getValues(res)\n\n // DownloadActionParams\n let downloadConfig: DownloadActionParams | undefined\n if (urls && downloadingEnabled) {\n downloadConfig = {\n enabled: downloadingEnabled,\n name,\n reportName,\n csrfToken,\n reportId,\n id,\n tableId,\n columns: columns.value,\n definitionPath: definitionsPath,\n loadType: LoadType.ASYNC,\n nestedBaseUrl,\n canDownload,\n currentUrl: urls.pathname,\n currentQueryParams: urls.reportSearch,\n ...(requestData?.queryData && {\n sortColumn: <string>requestData.queryData['sortColumn'],\n sortedAsc: <string>requestData.queryData['sortedAsc'],\n }),\n }\n }\n\n let shareConfig\n let copyConfig\n if (requestData?.requestUrl?.fullUrl) {\n shareConfig = {\n reportName,\n name,\n url: requestData.requestUrl.fullUrl,\n }\n copyConfig = {\n url: requestData.requestUrl.fullUrl,\n }\n }\n\n let refreshConfig\n if (requestData?.executionId && requestData?.requestUrl?.fullUrl) {\n refreshConfig = {\n url: requestData.requestUrl.fullUrl,\n executionId: requestData.executionId,\n }\n }\n\n return ReportActionsUtils.getActions({\n ...(downloadConfig && { download: downloadConfig }),\n ...(shareConfig && { share: shareConfig }),\n ...(refreshConfig && { refresh: refreshConfig }),\n ...(copyConfig && { copy: copyConfig }),\n print: { enabled: printable },\n })\n}\n\nexport default {\n renderReport,\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,GAAA,GAAAC,EAAAD,GAAA,aAAAE,GAAA,iBAAAC,EAAA,YAAAC,EAAA,qBAAAC,EAAA,iBAAAC,IAAA,eAAAC,EAAAP,IAAA,IAAAQ,EAAqB,uBAUrBC,EAAqC,4CACrCC,EAAwB,+CAIxBC,EAA4B,8DAI5BC,EAA4B,mDAC5BC,EAA4B,yEAC5BA,EAAwB,qEACxBA,EAA+B,uDAC/BA,EAAwB,2EACxBA,EAA+B,sEAC/BA,EAA6B,2DAC7BC,EAAyB,gDACzBD,EAA2B,yEAG3BE,EAAmC,iFAE5B,MAAMX,EAAU,MAAO,CAC5B,IAAAY,EACA,IAAAC,EACA,SAAAC,EACA,MAAAC,EACA,OAAAC,CACF,IAAkE,CAChE,KAAM,CAAE,gBAAiBC,CAAe,EAAI,EAAAC,QAAa,UAAUN,CAAG,EAChE,CAAE,SAAAO,EAAU,UAAAC,EAAW,GAAAC,EAAI,QAAAC,CAAQ,EAAIT,EAAI,OAC3CU,EAAkBH,GAAaC,EAI/BG,EAA2C,MADMV,EAAS,uBACc,mBAAmBQ,EAASN,CAAM,EAC1GS,EAAYD,GAAa,OAAO,KAGhCE,EACJ,MAAMZ,EAAS,iBAAiB,cAAcC,EAAOI,EAAUI,EAAiBN,EAAgBQ,CAAS,EACrG,CAAE,QAAAE,CAAQ,EAAID,EACd,CAAE,cAAAE,CAAc,EAAID,EAE1B,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,8CAA8C,EAIhE,MAAMC,EAAU,EAAAC,QAAY,WAAWF,EAAef,CAAG,EAGnDkB,EAAc,MAAMC,GAAgBN,EAAYG,EAASjB,EAAKC,EAAKC,EAAUU,CAAW,EAGxFS,EAAa,MAAMC,GAAc,CAAE,WAAAR,EAAY,SAAAZ,EAAU,MAAAC,EAAO,IAAAF,EAAK,IAAAD,EAAK,YAAAmB,CAAY,CAAC,EAGvF,CAAE,UAAAI,CAAU,EAAIT,EAAW,QAC3BU,EAAiBD,EAAiB,MAAMlC,EAAiBkC,EAAWrB,EAAUC,EAAOF,EAAKD,CAAG,EAAhE,CAAC,EAG9B,CAAE,cAAAyB,CAAc,EAAIX,EAAW,QAC/BY,EAA0BD,EAE5B,MAAMtC,EAAasC,EAAevB,EAAUC,EAAOF,EAAKD,EAAKY,CAAW,EADxE,CAAC,EAGL,MAAO,CACL,WAAAE,EACA,YAAAF,EACA,WAAAS,EACA,cAAAG,EACA,UAAAE,EACA,YAAAP,EACA,QAAAF,CACF,CACF,EAEMG,GAAkB,MACtBN,EACAG,EACAjB,EACAC,EACAC,EACAU,IACG,CACH,KAAM,CAAE,gBAAAe,CAAgB,EAAI,EAAArB,QAAa,UAAUN,CAAG,EAChD4B,EAAS,EAAAC,QAAgB,UAAUf,CAAU,EAC7CgB,EAAW,EAAAD,QAAgB,YAAYf,CAAU,EAEjDiB,EAAc,MAAM,EAAAC,QAAmB,WAAW,CACtD,OAAAJ,EACA,IAAA3B,EACA,YAAa,cAAY,YACzB,IAAAD,EACA,SAAAE,CACF,CAAC,EAGK+B,EAAahC,EAAI,OAAQ,YAAiBW,GAAa,OAAO,MAAO,WACrEsB,EAAYjC,EAAI,OAAQ,WAAgBW,GAAa,OAAO,MAAO,UAGnEuB,EAAelC,EAAI,OAAQ,aAC3BmC,EAAWnC,EAAI,OAAQ,SAGvBoC,EAAe,EAAAL,QAAmB,gCAAgCD,EAAY,OAAO,EAErFO,EAAc,CAClB,GAAIL,GAAc,CAAE,WAAAA,CAAW,EAC/B,GAAIC,GAAa,CAAE,UAAAA,CAAU,EAC7B,GAAGG,EACH,GAAID,GAAY,CAAE,SAAAA,CAAS,EAC3B,GAAID,GAAgB,CAAE,aAAAA,CAAa,EACnC,GAAIlB,GAAW,CAAE,QAASA,EAAQ,KAAM,CAC1C,EAEA,OAAO,IAAI,EAAAsB,QAAY,CACrB,OAAAX,EACA,SAAAE,EACA,YAAAQ,EACA,gBAAAX,CACF,CAAC,CACH,EAEML,GAAgB,MAAOkB,GAOvB,CACJ,KAAM,CAAE,SAAAtC,EAAU,MAAAC,EAAO,IAAAF,EAAK,YAAAkB,CAAY,EAAIqB,EACxC,CAAE,SAAAjC,EAAU,UAAAC,EAAW,GAAAC,EAAI,QAAAC,CAAQ,EAAIT,EAAI,OAC3CU,EAAkBH,GAAaC,EAErC,OAAOP,EAAS,iBAAiB,eAC/BC,EACAI,EACAI,EACAD,EACAS,EAAY,yBAAyB,EAAI,CAC3C,CACF,EAEa9B,EAAmB,MAC9BkC,EACArB,EACAC,EACAF,EACAD,IAC4B,CAC5B,KAAM,CAAE,SAAAO,EAAU,UAAAC,EAAW,GAAAC,EAAI,QAAAC,CAAQ,EAAIT,EAAI,OAC3C,CAAE,gBAAiBwC,CAA2B,EAAI,EAAAnC,QAAa,UAAUN,CAAG,EAC5EW,EAAkBH,GAAaC,EAErC,OAAO,QAAQ,IACbc,EAAU,IAAI,MAAOmB,GAAY,CAC/B,MAAMC,EAAgB,MAAMzC,EAAS,iBAAiB,sBACpDC,EACAI,EACAI,EACAD,EACAgC,EAAQ,GACR,CACE,2BAAAD,CACF,CACF,EAEA,MAAO,CACL,GAAGC,EACH,KAAMC,CACR,CACF,CAAC,CACH,CACF,EAEaxD,EAAe,MAC1BsC,EACAvB,EACAC,EACAF,EACAD,EACAY,IACyB,CACzB,KAAM,CAAE,gBAAiB6B,CAA2B,EAAI,EAAAnC,QAAa,UAAUN,CAAG,EAC5E,CAAE,SAAAO,CAAS,EAAIN,EAAI,OACnB2C,EAAqBhC,GAAa,mBACxC,GAAI,CAACgC,EACH,MAAM,IAAI,MAAM,0DAA0D,EAE5E,OAAO,QAAQ,IACbnB,EAAc,IAAI,MAAOoB,GAAiB,CACxC,KAAM,CAAE,cAAA7B,CAAc,EAAI6B,EAC1B,GAAI,CAAC7B,EACH,MAAM,IAAI,MAAM,kEAAkE,EAGpF,MAAM8B,EAAQ,IAAI,EAAAP,QAAY,CAC5B,OAAQvB,GAAe,QAAU,CAAC,EAClC,
|
|
4
|
+
"sourcesContent": ["import parseUrl from 'parseurl'\nimport { Url } from 'url'\nimport { Request, Response } from 'express'\n\n// Types\nimport type { Columns } from '../../../../../components/_reports/report-columns-form/types'\nimport type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils'\nimport type { DataTable } from '../../../../../utils/DataTableBuilder/types'\nimport type { components } from '../../../../../types/api'\nimport type { AsyncSummary, RequestedReport } from '../../../../../types/UserReports'\nimport { LoadType, ReportType } from '../../../../../types/UserReports'\nimport ReportQuery from '../../../../../types/ReportQuery'\nimport type { ChildData } from '../../../../../utils/ParentChildDataTableBuilder/types'\nimport type { ExtractedDefinitionData, ExtractedRequestData, ReportUrls } from './types'\nimport type { DownloadActionParams } from '../../../../../components/_reports/report-actions/types'\nimport { FiltersType } from '../../../../../components/_filters/filtersTypeEnum'\nimport type { Services } from '../../../../../types/Services'\n\n// Utils\nimport definitionUtils from '../../../../../utils/definitionUtils'\nimport PaginationUtils from '../../../../../components/_reports/report-pagination/utils'\nimport TotalsUtils from '../../../../../components/_reports/report-totals/utils'\nimport ReportFiltersUtils from '../../../../../components/_filters/utils'\nimport ColumnUtils from '../../../../../components/_reports/report-columns-form/utils'\nimport ReportActionsUtils from '../../../../../components/_reports/report-actions/utils'\nimport UserReportsUtils from '../../../../../components/user-reports/utils'\nimport LocalsHelper from '../../../../../utils/localsHelper'\nimport DataTableUtils from '../../../../../components/_reports/report-data-table/utils'\nimport RequestedReportService from '../../../my-reports/requested-reports/service'\n\nimport CollatedSummaryBuilder from '../../../../../utils/CollatedSummaryBuilder/CollatedSummaryBuilder'\n\nexport const getData = async ({\n res,\n req,\n services,\n token,\n userId,\n}: AsyncReportUtilsParams & { token: string; userId: string }) => {\n const { definitionsPath: definitionPath } = LocalsHelper.getValues(res)\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n // Get the request data\n const requestedReportService = <RequestedReportService>services.requestedReportService\n const requestData: RequestedReport | undefined = await requestedReportService.getReportByTableId(tableId, userId)\n const queryData = requestData?.query?.data\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, reportVariantId, definitionPath, queryData)\n const { variant } = definition\n const { specification } = variant\n\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n\n // Get the columns\n const columns = ColumnUtils.getColumns(specification, req)\n\n // initialise report query\n const reportQuery = await initReportQuery(definition, columns, res, req, services, requestData)\n\n // Get the reportData\n const reportData = await getReportData({ definition, services, token, req, res, reportQuery })\n\n // Get the summary data, if applicable\n const { summaries } = definition.variant\n const summariesData = !summaries ? [] : await getSummariesData(summaries, services, token, req, res)\n\n // Get the child data, if applicable\n const { childVariants } = definition.variant\n const childData: ChildData[] = !childVariants\n ? []\n : await getChildData(childVariants, services, token, req, res, requestData)\n\n return {\n definition,\n requestData,\n reportData,\n summariesData,\n childData,\n reportQuery,\n columns,\n }\n}\n\nconst initReportQuery = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n columns: Columns,\n res: Response,\n req: Request,\n services: Services,\n requestData?: RequestedReport,\n) => {\n const { definitionsPath } = LocalsHelper.getValues(res)\n const fields = definitionUtils.getFields(definition)\n const template = definitionUtils.getTemplate(definition)\n\n const filtersData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n filtersType: FiltersType.INTERACTIVE,\n res,\n services,\n })\n\n // Sort\n const sortColumn = req.query?.['sortColumn'] || requestData?.query?.data?.['sortColumn']\n const sortedAsc = req.query?.['sortedAsc'] || requestData?.query?.data?.['sortedAsc']\n\n // Pagination\n const selectedPage = req.query?.['selectedPage']\n const pageSize = req.query?.['pageSize']\n\n // Filters\n const filtersQuery = ReportFiltersUtils.setRequestQueryFromFilterValues(filtersData.filters)\n\n const queryParams = {\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n ...filtersQuery,\n ...(pageSize && { pageSize }),\n ...(selectedPage && { selectedPage }),\n ...(columns && { columns: columns.value }),\n }\n\n return new ReportQuery({\n fields,\n template,\n queryParams,\n definitionsPath,\n })\n}\n\nconst getReportData = async (args: {\n definition: components['schemas']['SingleVariantReportDefinition']\n services: Services\n token: string\n req: Request\n res: Response\n reportQuery: ReportQuery\n}) => {\n const { services, token, req, reportQuery } = args\n const { reportId, variantId, id, tableId } = req.params\n const reportVariantId = variantId || id\n\n return services.reportingService.getAsyncReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n reportQuery.toRecordWithFilterPrefix(true),\n )\n}\n\nexport const getSummariesData = async (\n summaries: components['schemas']['ReportSummary'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n): Promise<AsyncSummary[]> => {\n const { reportId, variantId, id, tableId } = req.params\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const reportVariantId = variantId || id\n\n return Promise.all(\n summaries.map(async (summary) => {\n const summaryReport = await services.reportingService.getAsyncSummaryReport(\n token,\n reportId,\n reportVariantId,\n tableId,\n summary.id,\n {\n dataProductDefinitionsPath,\n },\n )\n\n return {\n ...summary,\n data: summaryReport,\n }\n }),\n )\n}\n\nexport const getChildData = async (\n childVariants: components['schemas']['ChildVariantDefinition'][],\n services: Services,\n token: string,\n req: Request,\n res: Response,\n requestData?: RequestedReport,\n): Promise<ChildData[]> => {\n const { definitionsPath: dataProductDefinitionsPath } = LocalsHelper.getValues(res)\n const { reportId } = req.params\n const childExecutionData = requestData?.childExecutionData\n if (!childExecutionData) {\n throw new Error('getChildData: No execution data found for child variants')\n }\n return Promise.all(\n childVariants.map(async (childVariant) => {\n const { specification } = childVariant\n if (!specification) {\n throw new Error('getChildData: No specification found in child variant definition')\n }\n\n const query = new ReportQuery({\n fields: specification?.fields || [],\n template: 'parent-child',\n queryParams: req.query,\n definitionsPath: dataProductDefinitionsPath,\n }).toRecordWithFilterPrefix(true)\n\n const childData = childExecutionData.find((e) => e.variantId === childVariant.id)\n if (!childData || !childData.tableId) {\n throw new Error('getChildData: No matching child execution data found')\n }\n const { tableId: childTableId } = childData\n\n const childReport = await services.reportingService.getAsyncReport(\n token,\n reportId,\n childVariant.id,\n childTableId,\n query,\n )\n\n return {\n id: childVariant.id,\n data: childReport,\n }\n }),\n )\n}\n\n/**\n * Entry point function to render the report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const renderReport = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser } = LocalsHelper.getValues(res)\n\n // Get the report data\n const { definition, requestData, reportData, childData, summariesData, reportQuery, columns } = await getData({\n req,\n res,\n services,\n token,\n userId: dprUser.id,\n })\n\n // Get the data table\n const dataTable: DataTable[] = DataTableUtils.createDataTable(\n definition,\n columns,\n reportData,\n childData,\n summariesData,\n reportQuery,\n )\n\n // Get the template data\n const templateData = await getTemplateData(\n req,\n res,\n services,\n definition,\n summariesData,\n dataTable,\n columns,\n reportQuery,\n requestData,\n )\n\n const renderData = {\n ...templateData,\n dataTable,\n }\n\n if (requestData && Object.keys(requestData).length) {\n UserReportsUtils.updateLastViewed({\n req,\n services,\n reportStateData: requestData,\n userId: dprUser.id,\n filters: templateData.filterData.filters,\n })\n }\n\n return { renderData }\n}\n\nconst getTemplateData = async (\n req: Request,\n res: Response,\n services: Services,\n definition: components['schemas']['SingleVariantReportDefinition'],\n summariesData: AsyncSummary[],\n dataTable: DataTable[],\n columns: Columns,\n reportQuery: ReportQuery,\n requestData?: RequestedReport,\n) => {\n const { nestedBaseUrl } = LocalsHelper.getValues(res)\n\n // get url data\n const url = parseUrl(req)\n if (!url) {\n throw new Error('Unable to set url data from request')\n }\n\n const urls = url ? setUrls(url, req) : undefined\n\n // get from definition\n const definitionData = extractDataFromDefinition(definition)\n const { fields, specification } = definitionData\n\n // get from requestedData\n const requestedData = requestData ? extractDataFromRequest(requestData) : undefined\n\n // Get the count\n const count = await getCount(definition, services, res, req, reportQuery)\n\n // Get the filters\n const filterData = await ReportFiltersUtils.getFilters({\n fields,\n req,\n res,\n services,\n filtersType: FiltersType.INTERACTIVE,\n })\n\n // Set the features\n const features = await setFeatures(services, res, req, columns, definitionData, requestedData, urls)\n\n // Set the extra meta data\n const meta = setMetaData(res, req)\n\n let reportSummaries\n if (summariesData.length) {\n const collatedSummaryBuilder = new CollatedSummaryBuilder(specification, summariesData)\n reportSummaries = collatedSummaryBuilder.collatePageSummaries()\n }\n\n let pagination\n let totals\n if (definitionData.template === 'list') {\n pagination = PaginationUtils.getPaginationData(url, count, req)\n const { pageSize, currentPage, totalRows } = pagination\n totals = TotalsUtils.getTotals(pageSize, currentPage, totalRows, dataTable[0].rowCount)\n }\n\n return {\n ...(showColumns(specification) && { columns }),\n filterData,\n count,\n nestedBaseUrl,\n ...meta,\n ...features,\n ...definitionData,\n ...requestedData,\n ...urls,\n ...(pagination && { pagination }),\n ...(totals && { totals }),\n ...(reportSummaries && { reportSummaries }),\n }\n}\n\nconst showColumns = (specification: components['schemas']['Specification']) => {\n const { template } = specification\n\n return !['row-section', 'row-section-child', 'summary', 'summary-section'].includes(template)\n}\n\nconst setMetaData = (res: Response, req: Request) => {\n const { csrfToken } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return {\n csrfToken,\n loadType: LoadType.ASYNC,\n type: ReportType.REPORT,\n tableId,\n reportId,\n id,\n }\n}\n\nconst setUrls = (url: Url, req: Request): ReportUrls => {\n const { search } = url\n const encodedSearch = search ? encodeURIComponent(search) : undefined\n const pathname = search ? req.originalUrl.split(search)[0] : req.originalUrl\n const reportUrl = pathname.replace('/download-disabled', '').replace('/download-disabled?', '')\n\n return {\n reportUrl,\n reportSearch: search || undefined,\n encodedSearch,\n pathname,\n }\n}\n\nconst setFeatures = async (\n services: Services,\n res: Response,\n req: Request,\n columns: Columns,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { csrfToken, dprUser, bookmarkingEnabled, downloadingEnabled } = LocalsHelper.getValues(res)\n const { reportId, id } = req.params\n const { downloadPermissionService, bookmarkService } = services\n\n let canDownload = false\n if (downloadingEnabled) {\n canDownload = await downloadPermissionService.downloadEnabledForReport(dprUser.id, reportId, id)\n }\n\n let bookmarked\n if (bookmarkingEnabled) {\n bookmarked = await bookmarkService.isBookmarked(id, reportId, dprUser.id)\n }\n\n const actions = setActions(csrfToken, columns, canDownload, res, req, definitionData, requestData, urls)\n\n return {\n actions,\n canDownload,\n bookmarked,\n }\n}\n\nconst getCount = async (\n definition: components['schemas']['SingleVariantReportDefinition'],\n services: Services,\n res: Response,\n req: Request,\n reportQuery: ReportQuery,\n) => {\n const { token } = LocalsHelper.getValues(res)\n const { tableId, reportId, id } = req.params\n\n return !definition.variant.interactive\n ? services.reportingService.getAsyncCount(token, tableId)\n : services.reportingService.getAsyncInteractiveCount(token, tableId, reportId, id, reportQuery)\n}\n\nconst extractDataFromDefinition = (\n definition: components['schemas']['SingleVariantReportDefinition'],\n): ExtractedDefinitionData => {\n const { variant, name: reportName, description: reportDescription } = definition\n const { classification, printable, specification, name, description } = variant\n if (!specification) {\n throw new Error('No specification found in variant definition')\n }\n const { template, fields } = specification\n\n return {\n reportName,\n name,\n description: description || reportDescription,\n classification,\n printable: Boolean(printable),\n specification,\n template,\n fields,\n }\n}\n\nconst extractDataFromRequest = (requestData: RequestedReport): ExtractedRequestData => {\n const { query, url, timestamp } = requestData\n\n return {\n executionId: requestData.executionId,\n requestedTimestamp: timestamp.requested ? new Date(timestamp.requested).toLocaleString() : undefined,\n querySummary: query?.summary || [],\n queryData: query?.data,\n requestUrl: url?.request,\n defaultQuery: url?.report?.default,\n dataProductDefinitionsPath: requestData.dataProductDefinitionsPath,\n }\n}\n\nconst setActions = (\n csrfToken: string,\n columns: Columns,\n canDownload: boolean,\n res: Response,\n req: Request,\n definitionData: ExtractedDefinitionData,\n requestData?: ExtractedRequestData,\n urls?: ReportUrls,\n) => {\n const { reportName, name, printable } = definitionData\n const { tableId, id, reportId } = req.params\n const { nestedBaseUrl, definitionsPath, downloadingEnabled } = LocalsHelper.getValues(res)\n\n // DownloadActionParams\n let downloadConfig: DownloadActionParams | undefined\n if (urls && downloadingEnabled) {\n downloadConfig = {\n enabled: downloadingEnabled,\n name,\n reportName,\n csrfToken,\n reportId,\n id,\n tableId,\n columns: columns.value,\n definitionPath: definitionsPath,\n loadType: LoadType.ASYNC,\n nestedBaseUrl,\n canDownload,\n currentUrl: urls.pathname,\n currentQueryParams: urls.reportSearch,\n ...(requestData?.queryData && {\n sortColumn: <string>requestData.queryData['sortColumn'],\n sortedAsc: <string>requestData.queryData['sortedAsc'],\n }),\n }\n }\n\n let shareConfig\n let copyConfig\n if (requestData?.requestUrl?.fullUrl) {\n shareConfig = {\n reportName,\n name,\n url: requestData.requestUrl.fullUrl,\n }\n copyConfig = {\n url: requestData.requestUrl.fullUrl,\n }\n }\n\n let refreshConfig\n if (requestData?.executionId && requestData?.requestUrl?.fullUrl) {\n refreshConfig = {\n url: requestData.requestUrl.fullUrl,\n executionId: requestData.executionId,\n }\n }\n\n return ReportActionsUtils.getActions({\n ...(downloadConfig && { download: downloadConfig }),\n ...(shareConfig && { share: shareConfig }),\n ...(refreshConfig && { refresh: refreshConfig }),\n ...(copyConfig && { copy: copyConfig }),\n print: { enabled: printable },\n })\n}\n\nexport default {\n renderReport,\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["utils_exports", "__export", "utils_default", "getChildData", "getData", "getSummariesData", "renderReport", "__toCommonJS", "import_parseurl", "import_UserReports", "import_ReportQuery", "import_filtersTypeEnum", "import_definitionUtils", "import_utils", "import_localsHelper", "import_CollatedSummaryBuilder", "res", "req", "services", "token", "userId", "definitionPath", "LocalsHelper", "reportId", "variantId", "id", "tableId", "reportVariantId", "requestData", "queryData", "definition", "variant", "specification", "columns", "ColumnUtils", "reportQuery", "initReportQuery", "reportData", "getReportData", "summaries", "summariesData", "childVariants", "childData", "definitionsPath", "fields", "definitionUtils", "template", "filtersData", "ReportFiltersUtils", "sortColumn", "sortedAsc", "selectedPage", "pageSize", "filtersQuery", "queryParams", "ReportQuery", "args", "dataProductDefinitionsPath", "summary", "summaryReport", "childExecutionData", "childVariant", "query", "e", "childTableId", "childReport", "dprUser", "dataTable", "DataTableUtils", "templateData", "getTemplateData", "renderData", "UserReportsUtils", "nestedBaseUrl", "url", "parseUrl", "urls", "setUrls", "definitionData", "extractDataFromDefinition", "requestedData", "extractDataFromRequest", "count", "getCount", "filterData", "features", "setFeatures", "meta", "setMetaData", "reportSummaries", "CollatedSummaryBuilder", "pagination", "totals", "PaginationUtils", "currentPage", "totalRows", "TotalsUtils", "showColumns", "csrfToken", "search", "encodedSearch", "pathname", "bookmarkingEnabled", "downloadingEnabled", "downloadPermissionService", "bookmarkService", "canDownload", "bookmarked", "setActions", "reportName", "reportDescription", "classification", "printable", "name", "description", "timestamp", "downloadConfig", "shareConfig", "copyConfig", "refreshConfig", "ReportActionsUtils"]
|
|
7
7
|
}
|
|
@@ -210,7 +210,7 @@ export const getChildData = async (
|
|
|
210
210
|
|
|
211
211
|
const query = new ReportQuery({
|
|
212
212
|
fields: specification?.fields || [],
|
|
213
|
-
template:
|
|
213
|
+
template: 'parent-child',
|
|
214
214
|
queryParams: req.query,
|
|
215
215
|
definitionsPath: dataProductDefinitionsPath,
|
|
216
216
|
}).toRecordWithFilterPrefix(true)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var c=Object.create;var s=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var y=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var h=(o,r)=>{for(var e in r)s(o,e,{get:r[e],enumerable:!0})},n=(o,r,e,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of u(r))!f.call(o,t)&&t!==e&&s(o,t,{get:()=>r[t],enumerable:!(a=d(r,t))||a.enumerable});return o};var l=(o,r,e)=>(e=o!=null?c(y(o)):{},n(r||!o||!o.__esModule?s(e,"default",{value:o,enumerable:!0}):e,o)),v=o=>n(s({},"__esModule",{value:!0}),o);var H={};h(H,{ViewReportController:()=>i,default:()=>g});module.exports=v(H);var m=l(require("../../../utils/ErrorHandler")),p=l(require("../../../utils/logger"));class i{constructor(r,e){this.errorHandler=async(r,e,a)=>{p.default.error(`Error: ${JSON.stringify(r.body)}`);const t=new m.default(r.body.error).formatError();e.render("dpr/routes/journeys/view-report/error",{layoutPath:this.layoutPath,...r.body,...r.params,error:t,params:r.params})};this.layoutPath=r,this.services=e}}var g=i;0&&(module.exports={ViewReportController});
|
|
2
2
|
//# sourceMappingURL=controller.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/routes/journeys/view-report/controller.ts"],
|
|
4
|
-
"sourcesContent": ["import { RequestHandler } from 'express'\nimport { Services } from '../../../types/Services'\nimport logger from '../../../utils/logger'\n\nclass ViewReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n errorHandler: RequestHandler = async (req, res, _next) => {\n logger.error(`Error: ${JSON.stringify(req.body)}`)\n\n res.render(`dpr/routes/journeys/view-report/error`, {\n layoutPath: this.layoutPath,\n ...req.body,\n ...req.params,\n error
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,
|
|
6
|
-
"names": ["controller_exports", "__export", "ViewReportController", "controller_default", "__toCommonJS", "import_logger", "layoutPath", "services", "req", "res", "_next", "logger"]
|
|
4
|
+
"sourcesContent": ["import { RequestHandler } from 'express'\nimport ErrorHandler from '../../../utils/ErrorHandler'\nimport { Services } from '../../../types/Services'\nimport logger from '../../../utils/logger'\n\nclass ViewReportController {\n layoutPath: string\n\n services: Services\n\n constructor(layoutPath: string, services: Services) {\n this.layoutPath = layoutPath\n this.services = services\n }\n\n errorHandler: RequestHandler = async (req, res, _next) => {\n logger.error(`Error: ${JSON.stringify(req.body)}`)\n const error = new ErrorHandler(req.body.error).formatError()\n\n res.render(`dpr/routes/journeys/view-report/error`, {\n layoutPath: this.layoutPath,\n ...req.body,\n ...req.params,\n error,\n params: req.params,\n })\n }\n}\n\nexport { ViewReportController }\nexport default ViewReportController\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAyB,0CAEzBC,EAAmB,oCAEnB,MAAMJ,CAAqB,CAKzB,YAAYK,EAAoBC,EAAoB,CAKpD,kBAA+B,MAAOC,EAAKC,EAAKC,IAAU,CACxD,EAAAC,QAAO,MAAM,UAAU,KAAK,UAAUH,EAAI,IAAI,CAAC,EAAE,EACjD,MAAMI,EAAQ,IAAI,EAAAC,QAAaL,EAAI,KAAK,KAAK,EAAE,YAAY,EAE3DC,EAAI,OAAO,wCAAyC,CAClD,WAAY,KAAK,WACjB,GAAGD,EAAI,KACP,GAAGA,EAAI,OACP,MAAAI,EACA,OAAQJ,EAAI,MACd,CAAC,CACH,EAfE,KAAK,WAAaF,EAClB,KAAK,SAAWC,CAClB,CAcF,CAGA,IAAOL,EAAQD",
|
|
6
|
+
"names": ["controller_exports", "__export", "ViewReportController", "controller_default", "__toCommonJS", "import_ErrorHandler", "import_logger", "layoutPath", "services", "req", "res", "_next", "logger", "error", "ErrorHandler"]
|
|
7
7
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RequestHandler } from 'express'
|
|
2
|
+
import ErrorHandler from '../../../utils/ErrorHandler'
|
|
2
3
|
import { Services } from '../../../types/Services'
|
|
3
4
|
import logger from '../../../utils/logger'
|
|
4
5
|
|
|
@@ -14,12 +15,13 @@ class ViewReportController {
|
|
|
14
15
|
|
|
15
16
|
errorHandler: RequestHandler = async (req, res, _next) => {
|
|
16
17
|
logger.error(`Error: ${JSON.stringify(req.body)}`)
|
|
18
|
+
const error = new ErrorHandler(req.body.error).formatError()
|
|
17
19
|
|
|
18
20
|
res.render(`dpr/routes/journeys/view-report/error`, {
|
|
19
21
|
layoutPath: this.layoutPath,
|
|
20
22
|
...req.body,
|
|
21
23
|
...req.params,
|
|
22
|
-
error
|
|
24
|
+
error,
|
|
23
25
|
params: req.params,
|
|
24
26
|
})
|
|
25
27
|
}
|
package/dpr/types/Services.d.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var t=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var s=(r,e,c,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of v(e))!l.call(r,i)&&i!==c&&t(r,i,{get:()=>e[i],enumerable:!(o=S(e,i))||o.enumerable});return r};var n=r=>s(t({},"__esModule",{value:!0}),r);var d={};module.exports=n(d);
|
|
2
2
|
//# sourceMappingURL=Services.d.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/dpr/types/Services.d.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n BookmarkService,\n
|
|
4
|
+
"sourcesContent": ["import {\n BookmarkService,\n DefaultFilterValuesService,\n DownloadPermissionService,\n RecentlyViewedStoreService,\n RequestedReportService,\n} from '../services'\nimport { ProductCollectionStoreService } from '../services/productCollection/productCollectionStoreService'\nimport MissingReportService from '../services/missingReport/missingReportService'\nimport ReportingService from '../services/reportingService'\nimport DashboardService from '../services/dashboardService'\nimport { ProductCollectionService } from '../services/productCollection/productCollectionService'\n\nexport type Services = UserStoreServices & {\n reportingService: ReportingService\n dashboardService: DashboardService\n missingReportService: MissingReportService\n productCollectionService: ProductCollectionService\n}\n\nexport interface UserStoreServices {\n downloadPermissionService: DownloadPermissionService\n requestedReportService: RequestedReportService\n recentlyViewedService: RecentlyViewedStoreService\n bookmarkService: BookmarkService\n defaultFilterValuesService: DefaultFilterValuesService\n productCollectionStoreService: ProductCollectionStoreService\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["Services_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
package/dpr/types/Services.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BookmarkService,
|
|
3
|
-
DashboardService,
|
|
4
3
|
DefaultFilterValuesService,
|
|
5
4
|
DownloadPermissionService,
|
|
6
5
|
RecentlyViewedStoreService,
|
|
7
|
-
ReportingService,
|
|
8
6
|
RequestedReportService,
|
|
9
7
|
} from '../services'
|
|
10
8
|
import { ProductCollectionStoreService } from '../services/productCollection/productCollectionStoreService'
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var t=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var d=(r,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of i(e))!s.call(r,n)&&n!==a&&t(r,n,{get:()=>e[n],enumerable:!(o=l(e,n))||o.enumerable});return r};var b=r=>d(t({},"__esModule",{value:!0}),r);var m={};module.exports=b(m);
|
|
2
2
|
//# sourceMappingURL=types.d.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/utils/DataTableBuilder/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["export type CellFormat = 'numeric' | 'string'\n\nexport interface Cell {\n fieldName?: string\n text?: string | undefined\n html?: string | undefined\n format?: CellFormat\n classes?: string\n colspan?: number\n rowspan?: number | undefined\n}\n\nexport interface DataTable {\n head: Array<
|
|
4
|
+
"sourcesContent": ["export type CellFormat = 'numeric' | 'string'\n\nexport interface Cell {\n fieldName?: string\n text?: string | undefined\n html?: string | undefined\n format?: CellFormat\n classes?: string\n colspan?: number\n rowspan?: number | undefined\n}\n\nexport interface DataTable {\n head: Array<Cell> | null\n rows: Array<Array<Cell>>\n rowCount: number\n colCount: number\n}\n\nexport interface FieldDefinition {\n name: string\n display?: string\n type?: 'boolean' | 'date' | 'double' | 'HTML' | 'long' | 'string' | 'time'\n wordWrap?: 'none' | 'normal' | 'break-words'\n calculated?: boolean\n sortable?: boolean\n header?: boolean\n mergeRows?: boolean\n visible?: boolean\n}\n\nexport interface SortKey {\n sortKey: string\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -11,7 +11,7 @@ export interface Cell {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export interface DataTable {
|
|
14
|
-
head: Array<
|
|
14
|
+
head: Array<Cell> | null
|
|
15
15
|
rows: Array<Array<Cell>>
|
|
16
16
|
rowCount: number
|
|
17
17
|
colCount: number
|
|
@@ -29,6 +29,6 @@ export interface FieldDefinition {
|
|
|
29
29
|
visible?: boolean
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
export interface SortKey
|
|
32
|
+
export interface SortKey {
|
|
33
33
|
sortKey: string
|
|
34
34
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var h=Object.create;var
|
|
1
|
+
"use strict";var h=Object.create;var a=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var c=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty;var f=(s,e)=>{for(var r in e)a(s,r,{get:e[r],enumerable:!0})},g=(s,e,r,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of u(e))!d.call(s,t)&&t!==r&&a(s,t,{get:()=>e[t],enumerable:!(o=p(e,t))||o.enumerable});return s};var l=(s,e,r)=>(r=s!=null?h(c(s)):{},g(e||!s||!s.__esModule?a(r,"default",{value:s,enumerable:!0}):r,s)),m=s=>g(a({},"__esModule",{value:!0}),s);var E={};f(E,{ErrorHandler:()=>i,default:()=>M});module.exports=m(E);var n=l(require("./logger"));class i{constructor(e){this.formatError=()=>this.handleError();this.handleError=()=>{if(typeof this.error=="string")this.developerMessage=this.error;else if(this.error.data){const r=this.error.data;this.developerMessage=r.developerMessage,this.userMessage=r.userMessage,this.moreInfo=r.moreInfo,this.status=r.status}else if(Object.prototype.hasOwnProperty.call(this.error,"message")){const r=this.error;this.userMessage=r.message,this.stack=r.stack,this.status=500}else if(Object.prototype.hasOwnProperty.call(this.error,"developerMessage")){const r=this.error;this.developerMessage=r.developerMessage,this.userMessage=r.userMessage,this.moreInfo=r.moreInfo,this.status=r.status}else if(Object.prototype.hasOwnProperty.call(this.error,"userMessage")){const r=this.error;if(r.stack&&r.stack.includes("ZodError")){const o=JSON.parse(r.userMessage);this.userMessage=o.map(t=>t.message).join(", "),this.status=500,this.stack=r.stack}}const e={...this.developerMessage&&{developerMessage:this.developerMessage},...this.userMessage&&{userMessage:this.userMessage},...this.moreInfo&&{moreInfo:this.moreInfo},...this.stack&&{stack:this.stack},...this.status&&{status:this.status}};return n.default.error(JSON.stringify(e,null,2)),e};this.error=e,n.default.error(`Error: ${JSON.stringify(e)}`)}}var M=i;0&&(module.exports={ErrorHandler});
|
|
2
2
|
//# sourceMappingURL=ErrorHandler.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/dpr/utils/ErrorHandler.ts"],
|
|
4
|
-
"sourcesContent": ["import { components } from '../types/api'\nimport logger from './logger'\n\ninterface DprErrorMessage {\n userMessage?: string\n developerMessage?: string\n stack?: string\n moreInfo?: string\n status?: string | number\n}\n\ninterface DprErrorData {\n data: components['schemas']['ErrorResponse']\n}\n\nclass ErrorHandler {\n error: Error | components['schemas']['ErrorResponse'] | string | undefined | unknown | DprErrorData\n\n developerMessage?: string | undefined\n\n userMessage?: string | undefined\n\n moreInfo?: string | undefined\n\n stack?: string | undefined\n\n status?: number | string | undefined\n\n constructor(error: Error | components['schemas']['ErrorResponse'] | string | undefined | unknown) {\n this.error = error\n logger.error(`Error: ${JSON.stringify(error)}`)\n }\n\n formatError = (): DprErrorMessage => {\n return this.handleError()\n }\n\n private handleError = (): DprErrorMessage => {\n // status: FAILED\n if (typeof this.error === 'string') {\n this.developerMessage = this.error\n }\n\n // Error response\n else if ((<DprErrorData>this.error).data) {\n const error = (<DprErrorData>this.error).data\n this.developerMessage = error.developerMessage\n this.userMessage = error.userMessage\n this.moreInfo = error.moreInfo\n this.status = error.status\n }\n\n // client side error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'message')) {\n const error = <Error>this.error\n this.userMessage = error.message\n this.stack = error.stack\n this.status = 500\n }\n\n // Server response error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'developerMessage')) {\n const error = <components['schemas']['ErrorResponse']>this.error\n this.developerMessage = error.developerMessage\n this.userMessage = error.userMessage\n this.moreInfo = error.moreInfo\n this.status = error.status\n }\n\n const formattedError = {\n ...(this.developerMessage && { developerMessage: this.developerMessage }),\n ...(this.userMessage && { userMessage: this.userMessage }),\n ...(this.moreInfo && { moreInfo: this.moreInfo }),\n ...(this.stack && { stack: this.stack }),\n ...(this.status && { status: this.status }),\n }\n\n logger.error(JSON.stringify(formattedError, null, 2))\n\n return formattedError\n }\n}\n\nexport { ErrorHandler }\nexport default ErrorHandler\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAmB,
|
|
6
|
-
"names": ["ErrorHandler_exports", "__export", "ErrorHandler", "ErrorHandler_default", "__toCommonJS", "import_logger", "error", "formattedError", "logger"]
|
|
4
|
+
"sourcesContent": ["import { components } from '../types/api'\nimport logger from './logger'\n\ninterface DprErrorMessage {\n userMessage?: string\n developerMessage?: string\n stack?: string\n moreInfo?: string\n status?: string | number\n}\n\ninterface DprErrorData {\n data: components['schemas']['ErrorResponse']\n}\n\ninterface ZodValidationError {\n userMessage: string\n stack: string\n}\n\nclass ErrorHandler {\n error: Error | components['schemas']['ErrorResponse'] | string | undefined | unknown | DprErrorData\n\n developerMessage?: string | undefined\n\n userMessage?: string | undefined\n\n moreInfo?: string | undefined\n\n stack?: string | undefined\n\n status?: number | string | undefined\n\n constructor(error: Error | components['schemas']['ErrorResponse'] | string | undefined | unknown) {\n this.error = error\n logger.error(`Error: ${JSON.stringify(error)}`)\n }\n\n formatError = (): DprErrorMessage => {\n return this.handleError()\n }\n\n private handleError = (): DprErrorMessage => {\n // status: FAILED\n if (typeof this.error === 'string') {\n this.developerMessage = this.error\n }\n\n // Error response\n else if ((<DprErrorData>this.error).data) {\n const error = (<DprErrorData>this.error).data\n this.developerMessage = error.developerMessage\n this.userMessage = error.userMessage\n this.moreInfo = error.moreInfo\n this.status = error.status\n }\n\n // client side error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'message')) {\n const error = <Error>this.error\n this.userMessage = error.message\n this.stack = error.stack\n this.status = 500\n }\n\n // Server response error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'developerMessage')) {\n const error = <components['schemas']['ErrorResponse']>this.error\n this.developerMessage = error.developerMessage\n this.userMessage = error.userMessage\n this.moreInfo = error.moreInfo\n this.status = error.status\n }\n\n // Zod error\n else if (Object.prototype.hasOwnProperty.call(this.error, 'userMessage')) {\n const error = <ZodValidationError>this.error\n if (error.stack && error.stack.includes('ZodError')) {\n const errorArr: { message: string }[] = JSON.parse(error.userMessage)\n this.userMessage = errorArr.map((m) => m.message).join(', ')\n this.status = 500\n this.stack = error.stack\n }\n }\n\n const formattedError = {\n ...(this.developerMessage && { developerMessage: this.developerMessage }),\n ...(this.userMessage && { userMessage: this.userMessage }),\n ...(this.moreInfo && { moreInfo: this.moreInfo }),\n ...(this.stack && { stack: this.stack }),\n ...(this.status && { status: this.status }),\n }\n\n logger.error(JSON.stringify(formattedError, null, 2))\n\n return formattedError\n }\n}\n\nexport { ErrorHandler }\nexport default ErrorHandler\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAmB,uBAmBnB,MAAMH,CAAa,CAajB,YAAYI,EAAsF,CAKlG,iBAAc,IACL,KAAK,YAAY,EAG1B,KAAQ,YAAc,IAAuB,CAE3C,GAAI,OAAO,KAAK,OAAU,SACxB,KAAK,iBAAmB,KAAK,cAIP,KAAK,MAAO,KAAM,CACxC,MAAMA,EAAuB,KAAK,MAAO,KACzC,KAAK,iBAAmBA,EAAM,iBAC9B,KAAK,YAAcA,EAAM,YACzB,KAAK,SAAWA,EAAM,SACtB,KAAK,OAASA,EAAM,MACtB,SAGS,OAAO,UAAU,eAAe,KAAK,KAAK,MAAO,SAAS,EAAG,CACpE,MAAMA,EAAe,KAAK,MAC1B,KAAK,YAAcA,EAAM,QACzB,KAAK,MAAQA,EAAM,MACnB,KAAK,OAAS,GAChB,SAGS,OAAO,UAAU,eAAe,KAAK,KAAK,MAAO,kBAAkB,EAAG,CAC7E,MAAMA,EAAgD,KAAK,MAC3D,KAAK,iBAAmBA,EAAM,iBAC9B,KAAK,YAAcA,EAAM,YACzB,KAAK,SAAWA,EAAM,SACtB,KAAK,OAASA,EAAM,MACtB,SAGS,OAAO,UAAU,eAAe,KAAK,KAAK,MAAO,aAAa,EAAG,CACxE,MAAMA,EAA4B,KAAK,MACvC,GAAIA,EAAM,OAASA,EAAM,MAAM,SAAS,UAAU,EAAG,CACnD,MAAMC,EAAkC,KAAK,MAAMD,EAAM,WAAW,EACpE,KAAK,YAAcC,EAAS,IAAKC,GAAMA,EAAE,OAAO,EAAE,KAAK,IAAI,EAC3D,KAAK,OAAS,IACd,KAAK,MAAQF,EAAM,KACrB,CACF,CAEA,MAAMG,EAAiB,CACrB,GAAI,KAAK,kBAAoB,CAAE,iBAAkB,KAAK,gBAAiB,EACvE,GAAI,KAAK,aAAe,CAAE,YAAa,KAAK,WAAY,EACxD,GAAI,KAAK,UAAY,CAAE,SAAU,KAAK,QAAS,EAC/C,GAAI,KAAK,OAAS,CAAE,MAAO,KAAK,KAAM,EACtC,GAAI,KAAK,QAAU,CAAE,OAAQ,KAAK,MAAO,CAC3C,EAEA,SAAAC,QAAO,MAAM,KAAK,UAAUD,EAAgB,KAAM,CAAC,CAAC,EAE7CA,CACT,EA9DE,KAAK,MAAQH,EACb,EAAAI,QAAO,MAAM,UAAU,KAAK,UAAUJ,CAAK,CAAC,EAAE,CAChD,CA6DF,CAGA,IAAOH,EAAQD",
|
|
6
|
+
"names": ["ErrorHandler_exports", "__export", "ErrorHandler", "ErrorHandler_default", "__toCommonJS", "import_logger", "error", "errorArr", "m", "formattedError", "logger"]
|
|
7
7
|
}
|
|
@@ -13,6 +13,11 @@ interface DprErrorData {
|
|
|
13
13
|
data: components['schemas']['ErrorResponse']
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
+
interface ZodValidationError {
|
|
17
|
+
userMessage: string
|
|
18
|
+
stack: string
|
|
19
|
+
}
|
|
20
|
+
|
|
16
21
|
class ErrorHandler {
|
|
17
22
|
error: Error | components['schemas']['ErrorResponse'] | string | undefined | unknown | DprErrorData
|
|
18
23
|
|
|
@@ -67,6 +72,17 @@ class ErrorHandler {
|
|
|
67
72
|
this.status = error.status
|
|
68
73
|
}
|
|
69
74
|
|
|
75
|
+
// Zod error
|
|
76
|
+
else if (Object.prototype.hasOwnProperty.call(this.error, 'userMessage')) {
|
|
77
|
+
const error = <ZodValidationError>this.error
|
|
78
|
+
if (error.stack && error.stack.includes('ZodError')) {
|
|
79
|
+
const errorArr: { message: string }[] = JSON.parse(error.userMessage)
|
|
80
|
+
this.userMessage = errorArr.map((m) => m.message).join(', ')
|
|
81
|
+
this.status = 500
|
|
82
|
+
this.stack = error.stack
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
70
86
|
const formattedError = {
|
|
71
87
|
...(this.developerMessage && { developerMessage: this.developerMessage }),
|
|
72
88
|
...(this.userMessage && { userMessage: this.userMessage }),
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var o=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var s=(r,t,a,e)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of d(t))!n.call(r,i)&&i!==a&&o(r,i,{get:()=>t[i],enumerable:!(e=c(t,i))||e.enumerable});return r};var y=r=>s(o({},"__esModule",{value:!0}),r);var D={};module.exports=y(D);
|
|
2
2
|
//# sourceMappingURL=types.d.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/utils/ParentChildDataTableBuilder/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import { SortKey } from '../DataTableBuilder/types'\n\nexport interface ParentChildSortKey extends SortKey {\n childSortKeys: Dict<string>\n}\n\nexport interface ChildData {\n id: string\n data: Array<Dict<string>>\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { SortKey } from '../DataTableBuilder/types'\nimport Dict = NodeJS.Dict\n\nexport interface ParentChildSortKey extends SortKey {\n childSortKeys: Dict<string>\n}\n\nexport interface ChildData {\n id: string\n data: Array<Dict<string>>\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var i=Object.defineProperty;var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var s=(t,e,l,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of u(e))!f.call(t,r)&&r!==l&&i(t,r,{get:()=>e[r],enumerable:!(a=n(e,r))||a.enumerable});return t};var g=t=>s(i({},"__esModule",{value:!0}),t);var o={};module.exports=g(o);
|
|
2
2
|
//# sourceMappingURL=types.d.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/utils/Personalisation/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import { Granularity, QuickFilters } from '../../components/_inputs/granular-date-range/types'\nimport { FiltersType } from '../../components/_filters/filtersTypeEnum'\n\nexport interface defaultFilterValue {\n name: string\n value: string | DefaultDateFilterValue | DefaultGranularDateFilterValue\n type?: FiltersType\n}\n\nexport interface DefaultDateFilterValue {\n start: string\n end: string\n relative?: RelativeDateRange\n}\n\nexport interface DefaultGranularDateFilterValue {\n start: string\n end: string\n granularity: Granularity\n quickFilter: QuickFilters\n}\n\nexport interface defaultFilterConfig {\n reportId: string\n id: string\n values: defaultFilterValue[]\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { Granularity, QuickFilters } from '../../components/_inputs/granular-date-range/types'\nimport { FiltersType } from '../../components/_filters/filtersTypeEnum'\nimport RelativeDateRange from '../../components/_inputs/date-range/types'\n\nexport interface defaultFilterValue {\n name: string\n value: string | DefaultDateFilterValue | DefaultGranularDateFilterValue\n type?: FiltersType\n}\n\nexport interface DefaultDateFilterValue {\n start: string\n end: string\n relative?: RelativeDateRange\n}\n\nexport interface DefaultGranularDateFilterValue {\n start: string\n end: string\n granularity: Granularity\n quickFilter: QuickFilters\n}\n\nexport interface defaultFilterConfig {\n reportId: string\n id: string\n values: defaultFilterValue[]\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Granularity, QuickFilters } from '../../components/_inputs/granular-date-range/types'
|
|
2
2
|
import { FiltersType } from '../../components/_filters/filtersTypeEnum'
|
|
3
|
+
import RelativeDateRange from '../../components/_inputs/date-range/types'
|
|
3
4
|
|
|
4
5
|
export interface defaultFilterValue {
|
|
5
6
|
name: string
|
|
@@ -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 { components } from '../types/api'\n\ninterface ReportData {\n type: ReportType\n reportId: string\n reportName: string\n description: string\n id: string\n name: string\n}\n\nclass UserStoreItemBuilder {\n userStoreItem: UserReportData\n\n requestFormData: RequestFormData | Record<string, never>\n\n constructor(reportData: ReportData, requestFormData?: RequestFormData) {\n this.requestFormData = requestFormData || {}\n this.userStoreItem = this.addReportData(reportData)\n }\n\n build = () => {\n return this.userStoreItem as RequestedReport\n }\n\n addReportData = ({ type, reportId, reportName, description, id, name }: ReportData) => {\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
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,EAAA,YAAAC,IAAA,eAAAC,EAAAJ,GACA,IAAAK,EAAqB,uBACrBC,EAQO,gCAcP,MAAMJ,CAAqB,CAKzB,YAAYK,EAAwBC,EAAmC,CAKvE,WAAQ,IACC,KAAK,cAGd,mBAAgB,CAAC,CAAE,KAAAC,EAAM,SAAAC,EAAU,WAAAC,EAAY,YAAAC,EAAa,GAAAC,EAAI,KAAAC,CAAK,KAC5D,CACL,KAAML,EACN,SAAAC,EACA,WAAAC,EACA,YAAAC,EACA,GAAAC,EACA,KAAAC,EACA,UAAW,CAAC,CACd,GAGF,sBAAoBC,IAClB,KAAK,cAAgB,CACnB,GAAoB,KAAK,cACzB,GAAGA,CACL,EACO,MAGT,2BAAyBC,IACvB,KAAK,cAAgB,CACnB,GAAoB,KAAK,cACzB,mBAAAA,CACF,EACO,MAGT,gBAAcC,GAAwC,CACpD,MAAMC,EAAqB,IAAI,gBAAgBD,CAAU,EAAE,SAAS,EACpE,YAAK,cAAgB,CACnB,GAAG,KAAK,cAEN,QAAS,CACP,KAAMA,EACN,YAAaC,CACf,CAEJ,EACO,IACT,EAEA,iBAAeC,
|
|
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 { components } from '../types/api'\n\ninterface ReportData {\n type: ReportType\n reportId: string\n reportName: string\n description: string\n id: string\n name: string\n}\n\nclass UserStoreItemBuilder {\n userStoreItem: UserReportData\n\n requestFormData: RequestFormData | Record<string, never>\n\n constructor(reportData: ReportData, requestFormData?: RequestFormData) {\n this.requestFormData = requestFormData || {}\n this.userStoreItem = this.addReportData(reportData)\n }\n\n build = () => {\n return this.userStoreItem as RequestedReport\n }\n\n addReportData = ({ type, reportId, reportName, description, id, name }: ReportData) => {\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 if (url) {\n this.userStoreItem = {\n ...this.userStoreItem,\n ...{\n url,\n },\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 | 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: components['schemas']['DashboardSectionDefinition'][]) => {\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
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
|
}
|