@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.20.1 → 4.20.2
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/_filters/filter-input/types.d.js.map +1 -1
- package/dpr/components/_filters/filter-input/types.d.ts +1 -1
- 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/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/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/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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var n=Object.defineProperty;var
|
|
1
|
+
"use strict";var n=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var u=(t,r,s,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of a(r))!l.call(t,e)&&e!==s&&n(t,e,{get:()=>r[e],enumerable:!(i=o(r,e))||i.enumerable});return t};var g=t=>u(n({},"__esModule",{value:!0}),t);var c={};module.exports=g(c);
|
|
2
2
|
//# sourceMappingURL=types.d.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/components/_async/async-filters-form/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["
|
|
4
|
+
"sourcesContent": ["import { FilterValue } from '../../_filters/types'\nimport Dict = NodeJS.Dict\n\nexport interface requestAsyncReportParams {\n apiTimeout: number\n apiUrl: string\n token: string\n reportId: string\n reportVariantId: string\n query: Query\n}\n\n// todo update to correct type\ninterface Query {\n sortColumn: string\n sortedAsc: boolean\n filters: filter[]\n dataProductDefinitionsPath: string\n}\n\ninterface filter {\n [filterId: string]: string\n}\n\nexport interface SortByDefaults {\n options: { text: string; value: string }[]\n value: string\n}\n\nexport interface RenderFiltersReturnValue {\n filters: FilterValue[]\n sortBy?: FilterValue[]\n}\n\nexport interface SetQueryFromFiltersResult {\n query: Record<string, string>\n filterData: Record<string, string>\n querySummary: Array<Record<string, string>>\n sortData: Record<string, string>\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { FilterValue } from '../../_filters/types'
|
|
2
|
+
import Dict = NodeJS.Dict
|
|
3
|
+
|
|
1
4
|
export interface requestAsyncReportParams {
|
|
2
5
|
apiTimeout: number
|
|
3
6
|
apiUrl: string
|
|
@@ -30,8 +33,8 @@ export interface RenderFiltersReturnValue {
|
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
export interface SetQueryFromFiltersResult {
|
|
33
|
-
query:
|
|
34
|
-
filterData:
|
|
35
|
-
querySummary: Array<
|
|
36
|
-
sortData:
|
|
36
|
+
query: Record<string, string>
|
|
37
|
+
filterData: Record<string, string>
|
|
38
|
+
querySummary: Array<Record<string, string>>
|
|
39
|
+
sortData: Record<string, string>
|
|
37
40
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var O=Object.create;var
|
|
1
|
+
"use strict";var O=Object.create;var D=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var W=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var U=(t,i)=>{for(var e in i)D(t,e,{get:i[e],enumerable:!0})},F=(t,i,e,l)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of M(i))!v.call(t,r)&&r!==e&&D(t,r,{get:()=>i[r],enumerable:!(l=x(i,r))||l.enumerable});return t};var u=(t,i,e)=>(e=t!=null?O(W(t)):{},F(i||!t||!t.__esModule?D(e,"default",{value:t,enumerable:!0}):e,t)),j=t=>F(D({},"__esModule",{value:!0}),t);var N={};U(N,{default:()=>B,getSortByFromDefinition:()=>$,renderFilters:()=>Y,setDurationStartAndEnd:()=>b,setQueryFromFilters:()=>A});module.exports=j(N);var h=u(require("./sortByTemplate")),y=u(require("../../../utils/definitionUtils")),S=u(require("../../../utils/DateMapper/DateMapper")),R=u(require("../../_filters/utils")),V=u(require("../../_inputs/date-range/utils"));const $=(t,i)=>{if(!i){const e=h.default.sortByTemplate(),l=t.filter(r=>r.sortable).map(r=>{r.defaultsort&&(e[0].value=r.name);const c={value:r.name,text:r.display};return r.sortDirection&&(e[1].value=r.sortDirection==="asc"?"true":"false"),c});if(l.length){const r=e[0];return r.options=l,e[0]=r,e}}return[]},b=(t,i,e,l,r,c)=>{const{startDate:f,endDate:m}=V.default.calcDates(i),s=f?f.format("YYYY-MM-DD").toString():"",p=m?m.format("YYYY-MM-DD").toString():"",n=t.split(".")[1],o=c.find(d=>d.name===n);e[`filters.${n}.start`]=s,e[`filters.${n}.end`]=p,l[t]=i;let a=`${i.charAt(0).toUpperCase()+i.slice(1).replaceAll("-"," ")}`;return a=`${a} (${s} - ${p})`,r.push({name:o?`${o.display}`:t,value:a}),{querySummary:r,filterData:l,query:e}},Y=async(t,i)=>({filters:R.default.getFiltersFromDefinition(t,!1),sortBy:$(t,i)}),A=(t,i)=>{let e={},l={},r=[];const c={},f=new S.default,m=new URLSearchParams(t.body.search);return Object.keys(t.body).filter(s=>s!=="_csrf"&&t.body[s]!=="").forEach(s=>{const p=s.replace("filters.",""),n=t.body[s];if(s.startsWith("filters.")&&n!==""&&!e[s]&&n!=="no-filter")if(s.includes("relative-duration"))({query:e,filterData:l,querySummary:r}=b(s,n,e,l,r,i));else{let o=m.getAll(s);o=!o||o.length===0?n:o,o=o.length===1?`${o[0]}`:`${o}`,e[s]=o,l[p]=o;let a;if(f.isDate(n)){a=f.toDateString(n,"local-date");const g=f.toDateString(n,"iso");g&&(e[s]=g,l[p]=g)}const d=y.default.getFieldDisplayName(i,p);r.push({name:d||p,value:a||o})}else if(s.startsWith("sort")){e[s]=n,c[s]=n;const o=y.default.getField(i,n);let a="Sort Direction",d=n==="true"?"Ascending":"Descending";o&&(a="Sort Column",d=o.display),r.push({name:a,value:d})}}),{query:e,filterData:l,querySummary:r,sortData:c}};var B={renderFilters:Y,setQueryFromFilters:A};0&&(module.exports={getSortByFromDefinition,renderFilters,setDurationStartAndEnd,setQueryFromFilters});
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/components/_async/async-filters-form/utils.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Request } from 'express'\nimport { Dayjs } from 'dayjs'\nimport
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,4BAAAC,EAAA,kBAAAC,EAAA,2BAAAC,EAAA,wBAAAC,IAAA,eAAAC,EAAAP,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Request } from 'express'\nimport { Dayjs } from 'dayjs'\nimport type { SetQueryFromFiltersResult } from './types'\nimport type { components } from '../../../types/api'\n\nimport SortHelper from './sortByTemplate'\nimport DefinitionUtils from '../../../utils/definitionUtils'\nimport DateMapper from '../../../utils/DateMapper/DateMapper'\nimport FiltersUtils from '../../_filters/utils'\nimport DateRangeInputUtils from '../../_inputs/date-range/utils'\nimport { FilterOption, FilterValue, FilterValueWithOptions } from '../../_filters/types'\n\n/**\n * Initialises the sortData from the definition\n */\nexport const getSortByFromDefinition = (\n fields: components['schemas']['FieldDefinition'][],\n interactive?: boolean,\n): FilterValue[] => {\n if (!interactive) {\n const sortBy = SortHelper.sortByTemplate()\n const options = fields\n .filter((f) => f.sortable)\n .map((f) => {\n if (f.defaultsort) sortBy[0].value = f.name\n const field: FilterOption = { value: f.name, text: f.display }\n if (f.sortDirection) {\n // the 'value' here is whether sortedAsc is true or not\n sortBy[1].value = f.sortDirection === 'asc' ? 'true' : 'false'\n }\n return field\n })\n\n if (options.length) {\n const sortWithOptions: FilterValueWithOptions = <FilterValueWithOptions>sortBy[0]\n sortWithOptions.options = options\n sortBy[0] = sortWithOptions\n return sortBy\n }\n }\n return []\n}\n\nexport const setDurationStartAndEnd = (\n name: string,\n value: string,\n query: Record<string, string>,\n filterData: Record<string, string>,\n querySummary: Array<Record<string, string>>,\n fields: components['schemas']['FieldDefinition'][],\n) => {\n const { startDate, endDate } = DateRangeInputUtils.calcDates(value)\n const startDateDisplayString = startDate ? (<Dayjs>startDate).format('YYYY-MM-DD').toString() : ''\n const endDateDisplayString = endDate ? (<Dayjs>endDate).format('YYYY-MM-DD').toString() : ''\n\n const fieldId = name.split('.')[1]\n const field = fields.find((f) => {\n return f.name === fieldId\n })\n\n query[`filters.${fieldId}.start`] = startDateDisplayString\n query[`filters.${fieldId}.end`] = endDateDisplayString\n\n filterData[name] = value\n\n let queryValue = `${value.charAt(0).toUpperCase() + value.slice(1).replaceAll('-', ' ')}`\n queryValue = `${queryValue} (${startDateDisplayString} - ${endDateDisplayString})`\n querySummary.push({\n name: field ? `${field.display}` : name,\n value: queryValue,\n })\n\n return {\n querySummary,\n filterData,\n query,\n }\n}\n\n/**\n * Returns the data required for rendering the async filters component\n *\n * @param {AsyncReportUtilsParams} { req, res, dataSources }\n * @return {*}\n */\nexport const renderFilters = async (fields: components['schemas']['FieldDefinition'][], interactive?: boolean) => {\n return {\n filters: FiltersUtils.getFiltersFromDefinition(fields, false),\n sortBy: getSortByFromDefinition(fields, interactive),\n }\n}\n\nexport const setQueryFromFilters = (\n req: Request,\n fields: components['schemas']['FieldDefinition'][],\n): SetQueryFromFiltersResult => {\n let query: Record<string, string> = {}\n let filterData: Record<string, string> = {}\n let querySummary: Array<Record<string, string>> = []\n const sortData: Record<string, string> = {}\n const dateMapper = new DateMapper()\n const urlParams = new URLSearchParams(req.body.search)\n\n Object.keys(req.body)\n .filter((name) => name !== '_csrf' && req.body[name] !== '')\n .forEach((name) => {\n const shortName = name.replace('filters.', '')\n const value = req.body[name]\n\n if (name.startsWith('filters.') && value !== '' && !query[name] && value !== 'no-filter') {\n if (name.includes('relative-duration')) {\n ;({ query, filterData, querySummary } = setDurationStartAndEnd(\n name,\n value,\n query,\n filterData,\n querySummary,\n fields,\n ))\n } else {\n let urlParamValue: string | string[] = urlParams.getAll(name)\n urlParamValue = !urlParamValue || urlParamValue.length === 0 ? value : urlParamValue\n urlParamValue = urlParamValue.length === 1 ? `${urlParamValue[0]}` : `${urlParamValue}`\n\n query[name] = urlParamValue\n filterData[shortName] = urlParamValue\n\n let dateDisplayValue\n if (dateMapper.isDate(value)) {\n dateDisplayValue = dateMapper.toDateString(value, 'local-date')\n\n const isoFormatDate = dateMapper.toDateString(value, 'iso')\n if (isoFormatDate) {\n query[name] = isoFormatDate\n filterData[shortName] = isoFormatDate\n }\n }\n\n const fieldDisplayName = DefinitionUtils.getFieldDisplayName(fields, shortName)\n querySummary.push({\n name: fieldDisplayName || shortName,\n value: dateDisplayValue || urlParamValue,\n })\n }\n } else if (name.startsWith('sort')) {\n query[name] = value\n sortData[name] = value\n\n const fieldDef = DefinitionUtils.getField(fields, value)\n\n let displayName = 'Sort Direction'\n let displayValue = value === 'true' ? 'Ascending' : 'Descending'\n if (fieldDef) {\n displayName = 'Sort Column'\n displayValue = fieldDef.display\n }\n\n querySummary.push({\n name: displayName,\n value: displayValue,\n })\n }\n })\n\n return {\n query,\n filterData,\n querySummary,\n sortData,\n }\n}\n\nexport default {\n renderFilters,\n setQueryFromFilters,\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["utils_exports", "__export", "utils_default", "getSortByFromDefinition", "renderFilters", "setDurationStartAndEnd", "setQueryFromFilters", "__toCommonJS", "import_sortByTemplate", "import_definitionUtils", "import_DateMapper", "import_utils", "fields", "interactive", "sortBy", "SortHelper", "options", "f", "field", "sortWithOptions", "name", "value", "query", "filterData", "querySummary", "startDate", "endDate", "DateRangeInputUtils", "startDateDisplayString", "endDateDisplayString", "fieldId", "queryValue", "FiltersUtils", "req", "sortData", "dateMapper", "DateMapper", "urlParams", "shortName", "urlParamValue", "dateDisplayValue", "isoFormatDate", "fieldDisplayName", "DefinitionUtils", "fieldDef", "displayName", "displayValue"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/* eslint-disable no-param-reassign */
|
|
2
2
|
import { Request } from 'express'
|
|
3
3
|
import { Dayjs } from 'dayjs'
|
|
4
|
-
import Dict = NodeJS.Dict
|
|
5
4
|
import type { SetQueryFromFiltersResult } from './types'
|
|
6
5
|
import type { components } from '../../../types/api'
|
|
7
6
|
|
|
@@ -46,9 +45,9 @@ export const getSortByFromDefinition = (
|
|
|
46
45
|
export const setDurationStartAndEnd = (
|
|
47
46
|
name: string,
|
|
48
47
|
value: string,
|
|
49
|
-
query:
|
|
50
|
-
filterData:
|
|
51
|
-
querySummary: Array<
|
|
48
|
+
query: Record<string, string>,
|
|
49
|
+
filterData: Record<string, string>,
|
|
50
|
+
querySummary: Array<Record<string, string>>,
|
|
52
51
|
fields: components['schemas']['FieldDefinition'][],
|
|
53
52
|
) => {
|
|
54
53
|
const { startDate, endDate } = DateRangeInputUtils.calcDates(value)
|
|
@@ -60,10 +59,10 @@ export const setDurationStartAndEnd = (
|
|
|
60
59
|
return f.name === fieldId
|
|
61
60
|
})
|
|
62
61
|
|
|
63
|
-
query[`filters.${fieldId}.start`
|
|
64
|
-
query[`filters.${fieldId}.end`
|
|
62
|
+
query[`filters.${fieldId}.start`] = startDateDisplayString
|
|
63
|
+
query[`filters.${fieldId}.end`] = endDateDisplayString
|
|
65
64
|
|
|
66
|
-
filterData[name
|
|
65
|
+
filterData[name] = value
|
|
67
66
|
|
|
68
67
|
let queryValue = `${value.charAt(0).toUpperCase() + value.slice(1).replaceAll('-', ' ')}`
|
|
69
68
|
queryValue = `${queryValue} (${startDateDisplayString} - ${endDateDisplayString})`
|
|
@@ -96,10 +95,10 @@ export const setQueryFromFilters = (
|
|
|
96
95
|
req: Request,
|
|
97
96
|
fields: components['schemas']['FieldDefinition'][],
|
|
98
97
|
): SetQueryFromFiltersResult => {
|
|
99
|
-
let query:
|
|
100
|
-
let filterData:
|
|
101
|
-
let querySummary: Array<
|
|
102
|
-
const sortData:
|
|
98
|
+
let query: Record<string, string> = {}
|
|
99
|
+
let filterData: Record<string, string> = {}
|
|
100
|
+
let querySummary: Array<Record<string, string>> = []
|
|
101
|
+
const sortData: Record<string, string> = {}
|
|
103
102
|
const dateMapper = new DateMapper()
|
|
104
103
|
const urlParams = new URLSearchParams(req.body.search)
|
|
105
104
|
|
|
@@ -124,16 +123,18 @@ export const setQueryFromFilters = (
|
|
|
124
123
|
urlParamValue = !urlParamValue || urlParamValue.length === 0 ? value : urlParamValue
|
|
125
124
|
urlParamValue = urlParamValue.length === 1 ? `${urlParamValue[0]}` : `${urlParamValue}`
|
|
126
125
|
|
|
127
|
-
query[name
|
|
128
|
-
filterData[shortName
|
|
126
|
+
query[name] = urlParamValue
|
|
127
|
+
filterData[shortName] = urlParamValue
|
|
129
128
|
|
|
130
129
|
let dateDisplayValue
|
|
131
130
|
if (dateMapper.isDate(value)) {
|
|
132
131
|
dateDisplayValue = dateMapper.toDateString(value, 'local-date')
|
|
133
132
|
|
|
134
133
|
const isoFormatDate = dateMapper.toDateString(value, 'iso')
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
if (isoFormatDate) {
|
|
135
|
+
query[name] = isoFormatDate
|
|
136
|
+
filterData[shortName] = isoFormatDate
|
|
137
|
+
}
|
|
137
138
|
}
|
|
138
139
|
|
|
139
140
|
const fieldDisplayName = DefinitionUtils.getFieldDisplayName(fields, shortName)
|
|
@@ -143,8 +144,8 @@ export const setQueryFromFilters = (
|
|
|
143
144
|
})
|
|
144
145
|
}
|
|
145
146
|
} else if (name.startsWith('sort')) {
|
|
146
|
-
query[name
|
|
147
|
-
sortData[name
|
|
147
|
+
query[name] = value
|
|
148
|
+
sortData[name] = value
|
|
148
149
|
|
|
149
150
|
const fieldDef = DefinitionUtils.getField(fields, value)
|
|
150
151
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/components/_filters/filter-input/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import { FilterType } from './enum'\n\nexport interface FilterOption {\n value: string\n text: string\n disabled?: boolean\n selected?: boolean\n}\n\nexport type FilterValue = GenericFilterValue | DateFilterValue\n\nexport interface GenericFilterValue {\n text: string\n name: string\n type: FilterType\n value?: string\n options?: Array<FilterOption>\n minimumLength?: number\n dynamicResourceEndpoint?: string\n mandatory?: boolean\n}\n\nexport interface DateFilterValue extends GenericFilterValue {\n type: FilterType.dateRange\n value?: DateRange\n min?: string\n max?: string\n}\n\nexport interface SelectedFilter {\n text: string\n href: string\n classes: string\n}\n\nexport interface DateRange {\n start: string\n end: string\n}\n\nexport interface FilterOptions {\n filters: Array<FilterValue>\n selectedFilters: Array<SelectedFilter>\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { FilterType } from './enum'\n\nexport interface FilterOption {\n value: string\n text: string\n disabled?: boolean\n selected?: boolean\n}\n\nexport type FilterValue = GenericFilterValue | DateFilterValue\n\nexport interface GenericFilterValue {\n text: string\n name: string\n type: FilterType\n value?: string | DateRange\n options?: Array<FilterOption>\n minimumLength?: number\n dynamicResourceEndpoint?: string\n mandatory?: boolean\n}\n\nexport interface DateFilterValue extends GenericFilterValue {\n type: FilterType.dateRange\n value?: DateRange\n min?: string\n max?: string\n}\n\nexport interface SelectedFilter {\n text: string\n href: string\n classes: string\n}\n\nexport interface DateRange {\n start: string\n end: string\n}\n\nexport interface FilterOptions {\n filters: Array<FilterValue>\n selectedFilters: Array<SelectedFilter>\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/dpr/components/_reports/report-actions/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import { LoadType } from '../../../types/UserReports'\n\nexport interface DownloadActionParams {\n enabled: boolean\n csrfToken: string\n reportId: string\n reportName: string\n name: string\n id: string\n tableId?: string\n columns: string[]\n definitionPath: string\n canDownload: boolean\n loadType: LoadType\n currentUrl: string\n currentQueryParams?: string | undefined\n nestedBaseUrl: string\n sortColumn?: string\n sortedAsc?: string\n}\n\nexport interface ShareActionParams {\n reportName: string\n name: string\n url: string\n}\n\nexport interface RefreshActionParams {\n url: string\n executionId: string\n}\n\nexport interface PrintActionParams {\n enabled: boolean\n}\n\nexport interface CopyActionParams {\n url: string\n}\n\nexport interface GetActionsParams {\n refresh?: RefreshActionParams\n print?: PrintActionParams\n copy?: CopyActionParams\n share?: ShareActionParams\n download?: DownloadActionParams\n}\n\nexport interface ActionTemplate {\n id: string\n disabled: boolean\n text: string\n ariaLabelText: string\n}\n\nexport interface ActionTemplates {\n refresh: ActionTemplate\n printable: ActionTemplate\n sharable: ActionTemplate\n copy: ActionTemplate\n downloadable: ActionTemplate\n}\n\nexport interface ReportAction {\n id: string\n disabled: boolean\n text: string\n ariaLabelText: string\n href?: string\n attributes?: {\n reportId?: string\n id?: string\n csrfToken?: string\n tableId?: string\n type?: ReportType\n reportName?: string\n name?: string\n columns: string[]\n definitionPath: string\n }\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { LoadType, ReportType } from '../../../types/UserReports'\n\nexport interface DownloadActionParams {\n enabled: boolean\n csrfToken: string\n reportId: string\n reportName: string\n name: string\n id: string\n tableId?: string\n columns: string[]\n definitionPath: string\n canDownload: boolean\n loadType: LoadType\n currentUrl: string\n currentQueryParams?: string | undefined\n nestedBaseUrl: string\n sortColumn?: string\n sortedAsc?: string\n}\n\nexport interface ShareActionParams {\n reportName: string\n name: string\n url: string\n}\n\nexport interface RefreshActionParams {\n url: string\n executionId: string\n}\n\nexport interface PrintActionParams {\n enabled: boolean\n}\n\nexport interface CopyActionParams {\n url: string\n}\n\nexport interface GetActionsParams {\n refresh?: RefreshActionParams\n print?: PrintActionParams\n copy?: CopyActionParams\n share?: ShareActionParams\n download?: DownloadActionParams\n}\n\nexport interface ActionTemplate {\n id: string\n disabled: boolean\n text: string\n ariaLabelText: string\n}\n\nexport interface ActionTemplates {\n refresh: ActionTemplate\n printable: ActionTemplate\n sharable: ActionTemplate\n copy: ActionTemplate\n downloadable: ActionTemplate\n}\n\nexport interface ReportAction {\n id: string\n disabled: boolean\n text: string\n ariaLabelText: string\n href?: string\n attributes?: {\n reportId?: string\n id?: string\n csrfToken?: string\n tableId?: string\n type?: ReportType\n reportName?: string\n name?: string\n columns: string[]\n definitionPath: string\n }\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/components/report-list/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import { NextFunction, Request, Response } from 'express'\nimport Dict = NodeJS.Dict\nimport ReportQuery from '../../types/ReportQuery'\nimport { ListWithWarnings } from '../../data/types'\nimport { components } from '../../types/api'\n\nexport interface ListDataSources {\n data: Promise<Dict<string>[]> | Promise<ListWithWarnings>\n count: Promise<number>\n}\n\nexport interface RenderListWithDataInput {\n title: string\n reportName?: string\n variantDefinition: components['schemas']['VariantDefinition']\n request: Request\n response: Response\n next: NextFunction\n getListDataSources: (reportQuery: ReportQuery) => ListDataSources\n otherOptions?: Dict<object>\n layoutTemplate: string\n dynamicAutocompleteEndpoint?: string\n}\n\nexport interface RenderListWithDefinitionInput {\n definitionName: string\n variantName: string\n request: Request\n response: Response\n next: NextFunction\n apiUrl: string\n layoutTemplate: string\n token: string\n title?: string\n otherOptions?: Dict<object>\n dynamicAutocompleteEndpoint?: string\n apiTimeout: number\n definitionsPath?: string\n}\n\nexport interface CreateRequestHandlerInput {\n title?: string\n definitionName: string\n variantName: string\n apiUrl: string\n apiTimeout\n otherOptions?: Dict<object>\n layoutTemplate: string\n tokenProvider: (request: Request, response: Response, next: NextFunction) => string\n dynamicAutocompleteEndpoint?: string\n definitionsPath?: string\n}\n"],
|
|
4
|
+
"sourcesContent": ["import { NextFunction, Request, Response } from 'express'\nimport Dict = NodeJS.Dict\nimport ReportQuery from '../../types/ReportQuery'\nimport { ListWithWarnings } from '../../data/types'\nimport { components } from '../../types/api'\n\nexport interface ListDataSources {\n data: Promise<Dict<string>[]> | Promise<ListWithWarnings>\n count: Promise<number>\n}\n\nexport interface RenderListWithDataInput {\n title: string\n reportName?: string\n variantDefinition: components['schemas']['VariantDefinition']\n request: Request\n response: Response\n next: NextFunction\n getListDataSources: (reportQuery: ReportQuery) => ListDataSources\n otherOptions?: Dict<object>\n layoutTemplate: string\n dynamicAutocompleteEndpoint?: string\n}\n\nexport interface RenderListWithDefinitionInput {\n definitionName: string\n variantName: string\n request: Request\n response: Response\n next: NextFunction\n apiUrl: string\n layoutTemplate: string\n token: string\n title?: string\n otherOptions?: Dict<object>\n dynamicAutocompleteEndpoint?: string\n apiTimeout: number\n definitionsPath?: string\n}\n\nexport interface CreateRequestHandlerInput {\n title?: string\n definitionName: string\n variantName: string\n apiUrl: string\n apiTimeout: number\n otherOptions?: Dict<object>\n layoutTemplate: string\n tokenProvider: (request: Request, response: Response, next: NextFunction) => string\n dynamicAutocompleteEndpoint?: string\n definitionsPath?: string\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -43,7 +43,7 @@ export interface CreateRequestHandlerInput {
|
|
|
43
43
|
definitionName: string
|
|
44
44
|
variantName: string
|
|
45
45
|
apiUrl: string
|
|
46
|
-
apiTimeout
|
|
46
|
+
apiTimeout: number
|
|
47
47
|
otherOptions?: Dict<object>
|
|
48
48
|
layoutTemplate: string
|
|
49
49
|
tokenProvider: (request: Request, response: Response, next: NextFunction) => string
|
package/dpr/data/types.d.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var r=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var f=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of o(t))!g.call(e,n)&&n!==s&&r(e,n,{get:()=>t[n],enumerable:!(i=a(t,n))||i.enumerable});return e};var c=e=>f(r({},"__esModule",{value:!0}),e);var d={};module.exports=c(d);
|
|
2
2
|
//# sourceMappingURL=types.d.js.map
|
package/dpr/data/types.d.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/dpr/data/types.d.ts"],
|
|
4
|
-
"sourcesContent": ["import AgentConfig from './agentConfig'\n\nexport interface GetRequest {\n path?: string\n query?: object\n headers?: Record<string, string>\n responseType?: string\n raw?: boolean\n token: string\n}\n\nexport interface ApiConfig {\n url: string\n agent: AgentConfig\n}\n\nexport interface Count {\n count: number\n}\n\nexport interface ListWithWarnings {\n data: Array<Dict<string>>\n warnings: Warnings\n}\n\nexport interface Warnings {\n noDataAvailable?: string | undefined\n}\n\nexport interface FieldValuesRequest {\n token: string\n definitionName: string\n variantName: string\n fieldName: string\n prefix: string\n definitionsPath?: string\n}\n\nexport interface AsyncRequestQuery {\n sortColumn: string\n sortedAsc: boolean\n dataProductDefinitionsPath: string\n [key: string]: string\n}\n\ninterface filter {\n [filterId: string]: string\n}\n"],
|
|
4
|
+
"sourcesContent": ["import AgentConfig from './agentConfig'\nimport Dict = NodeJS.Dict\n\nexport interface GetRequest {\n path?: string\n query?: object\n headers?: Record<string, string>\n responseType?: string\n raw?: boolean\n token: string\n}\n\nexport interface ApiConfig {\n url: string\n agent: AgentConfig\n}\n\nexport interface Count {\n count: number\n}\n\nexport interface ListWithWarnings {\n data: Array<Dict<string>>\n warnings: Warnings\n}\n\nexport interface Warnings {\n noDataAvailable?: string | undefined\n}\n\nexport interface FieldValuesRequest {\n token: string\n definitionName: string\n variantName: string\n fieldName: string\n prefix: string\n definitionsPath?: string\n}\n\nexport interface AsyncRequestQuery {\n sortColumn: string\n sortedAsc: boolean\n dataProductDefinitionsPath: string\n [key: string]: string | boolean\n}\n\ninterface filter {\n [filterId: string]: string\n}\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_d_exports", "__toCommonJS"]
|
|
7
7
|
}
|
package/dpr/data/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import AgentConfig from './agentConfig'
|
|
2
|
+
import Dict = NodeJS.Dict
|
|
2
3
|
|
|
3
4
|
export interface GetRequest {
|
|
4
5
|
path?: string
|
|
@@ -40,7 +41,7 @@ export interface AsyncRequestQuery {
|
|
|
40
41
|
sortColumn: string
|
|
41
42
|
sortedAsc: boolean
|
|
42
43
|
dataProductDefinitionsPath: string
|
|
43
|
-
[key: string]: string
|
|
44
|
+
[key: string]: string | boolean
|
|
44
45
|
}
|
|
45
46
|
|
|
46
47
|
interface filter {
|
|
@@ -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": "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
|
|
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)
|
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
|
|
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
|
}
|
|
@@ -78,7 +78,7 @@ class UserStoreItemBuilder {
|
|
|
78
78
|
return this
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
addSortData = (sortData
|
|
81
|
+
addSortData = (sortData?: Record<string, string>) => {
|
|
82
82
|
const sortByQueryString = new URLSearchParams(sortData).toString()
|
|
83
83
|
this.userStoreItem = {
|
|
84
84
|
...this.userStoreItem,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ministryofjustice/hmpps-digital-prison-reporting-frontend",
|
|
3
3
|
"description": "The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.",
|
|
4
|
-
"version": "4.20.
|
|
4
|
+
"version": "4.20.2",
|
|
5
5
|
"main": "dpr/all.mjs",
|
|
6
6
|
"sass": "dpr/all.scss",
|
|
7
7
|
"engines": {
|