@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.22.0 → 4.22.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/clientClass.mjs +1 -1
- package/dpr/components/_async/async-filters-form/utils.js +1 -1
- package/dpr/components/_async/async-filters-form/utils.js.map +3 -3
- package/dpr/components/_async/async-filters-form/utils.test.ts +2 -2
- package/dpr/components/_async/async-filters-form/utils.ts +29 -16
- package/dpr/components/_filters/utils.js +1 -1
- package/dpr/components/_filters/utils.js.map +3 -3
- package/dpr/components/_filters/utils.ts +17 -0
- package/dpr/components/_inputs/autocomplete-text-input/utils.js +2 -0
- package/dpr/components/_inputs/autocomplete-text-input/utils.js.map +7 -0
- package/dpr/components/_inputs/autocomplete-text-input/utils.ts +30 -0
- package/dpr/routes/journeys/request-report/filters/tests.cy.js +1 -1
- package/dpr/routes/journeys/request-report/filters/tests.cy.js.map +2 -2
- package/dpr/routes/journeys/request-report/filters/tests.cy.ts +96 -0
- package/dpr/routes/journeys/request-report/filters/utils.js.map +2 -2
- package/dpr/routes/journeys/request-report/filters/utils.ts +5 -0
- package/dpr/types/ReportQuery.js +1 -1
- package/dpr/types/ReportQuery.js.map +3 -3
- package/dpr/types/ReportQuery.ts +16 -1
- package/package.json +1 -1
|
@@ -36,7 +36,7 @@ class AsyncFilters extends DprSelectedFiltersClass {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
initValues() {
|
|
39
|
-
this.initInputsFromQueryParams()
|
|
39
|
+
// this.initInputsFromQueryParams()
|
|
40
40
|
this.initQueryParamsFromInputs(this.mainForm.elements)
|
|
41
41
|
this.initInputEvents(this.mainForm.elements)
|
|
42
42
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var j=Object.create;var g=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var N=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var C=(t,i)=>{for(var e in i)g(t,e,{get:i[e],enumerable:!0})},S=(t,i,e,n)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of B(i))!w.call(t,r)&&r!==e&&g(t,r,{get:()=>i[r],enumerable:!(n=v(i,r))||n.enumerable});return t};var d=(t,i,e)=>(e=t!=null?j(N(t)):{},S(i||!t||!t.__esModule?g(e,"default",{value:t,enumerable:!0}):e,t)),I=t=>S(g({},"__esModule",{value:!0}),t);var Q={};C(Q,{default:()=>P,getSortByFromDefinition:()=>O,renderFilters:()=>M,setDurationStartAndEnd:()=>x,setQueryFromFilters:()=>U});module.exports=I(Q);var R=d(require("./sortByTemplate")),F=d(require("../../../utils/definitionUtils")),V=d(require("../../../utils/DateMapper/DateMapper")),$=d(require("../../_filters/utils")),b=d(require("../../_inputs/date-range/utils")),A=d(require("../../_inputs/autocomplete-text-input/utils")),Y=require("../../_filters/filter-input/enum");const O=(t,i)=>{if(!i){const e=R.default.sortByTemplate(),n=t.filter(r=>r.sortable).map(r=>{r.defaultsort&&(e[0].value=r.name);const m={value:r.name,text:r.display};return r.sortDirection&&(e[1].value=r.sortDirection==="asc"?"true":"false"),m});if(n.length){const r=e[0];return r.options=n,e[0]=r,e}}return[]},x=(t,i,e,n,r,m)=>{const{startDate:u,endDate:y}=b.default.calcDates(i),s=u?u.format("YYYY-MM-DD").toString():"",p=y?y.format("YYYY-MM-DD").toString():"",o=t.split(".")[1],c=m.find(f=>f.name===o);e[`filters.${o}.start`]=s,e[`filters.${o}.end`]=p,n[t]=i;let a=`${i.charAt(0).toUpperCase()+i.slice(1).replaceAll("-"," ")}`;return a=`${a} (${s} - ${p})`,r.push({name:c?`${c.display}`:t,value:a}),{querySummary:r,filterData:n,query:e}},M=async(t,i)=>({filters:$.default.getFiltersFromDefinition(t,!1),sortBy:O(t,i)}),U=(t,i)=>{let e={},n={},r=[];const m={},u=new V.default,y=new URLSearchParams(t.body.search);return Object.keys(t.body).filter(s=>s!=="_csrf"&&t.body[s]!=="").forEach(s=>{const p=s.replace("filters.",""),o=t.body[s];let c=o;if(s.startsWith("filters.")&&o!==""&&!e[s]&&o!=="no-filter")if(s.includes("relative-duration"))({query:e,filterData:n,querySummary:r}=x(s,o,e,n,r,i));else{const a=s.split(".")[1],f=i.find(D=>D.name===a)?.filter;let l=y.getAll(s);l=!l||l.length===0?o:l,l=l.length===1?`${l[0]}`:`${l}`;let h;if(u.isDate(o)){h=u.toDateString(o,"local-date");const D=u.toDateString(o,"iso");D&&(e[s]=D,n[p]=D)}else e[s]=l,n[p]=l;f?.type===Y.FilterType.autocomplete.toLowerCase()?c=A.default.getDisplayValue(f,o):c=h||c;const W=F.default.getFieldDisplayName(i,p);r.push({name:W||p,value:c})}else if(s.startsWith("sort")){e[s]=o,m[s]=o;const a=F.default.getField(i,o);let f="Sort Direction",l=o==="true"?"Ascending":"Descending";a&&(f="Sort Column",l=a.display),r.push({name:f,value:l})}}),{query:e,filterData:n,querySummary:r,sortData:m}};var P={renderFilters:M,setQueryFromFilters:U};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 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
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,4BAAAC,EAAA,kBAAAC,EAAA,2BAAAC,EAAA,wBAAAC,IAAA,eAAAC,EAAAP,GAMA,IAAAQ,EAAuB,+BACvBC,EAA4B,6CAC5BC,EAAuB,mDACvBC,EAAyB,mCACzBA,EAAgC,
|
|
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"]
|
|
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 AutocompleteUtils from '../../_inputs/autocomplete-text-input/utils'\nimport { FilterOption, FilterValue, FilterValueWithOptions } from '../../_filters/types'\nimport { FilterType } from '../../_filters/filter-input/enum'\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 queryValue = req.body[name]\n let summaryValue = queryValue\n\n if (name.startsWith('filters.') && queryValue !== '' && !query[name] && queryValue !== 'no-filter') {\n if (name.includes('relative-duration')) {\n ;({ query, filterData, querySummary } = setDurationStartAndEnd(\n name,\n queryValue,\n query,\n filterData,\n querySummary,\n fields,\n ))\n } else {\n const fieldId = name.split('.')[1]\n const filter: components['schemas']['FilterDefinition'] | undefined = fields.find(\n (f) => f.name === fieldId,\n )?.filter\n\n let urlParamValue: string | string[] = urlParams.getAll(name)\n urlParamValue = !urlParamValue || urlParamValue.length === 0 ? queryValue : urlParamValue\n urlParamValue = urlParamValue.length === 1 ? `${urlParamValue[0]}` : `${urlParamValue}`\n\n let dateDisplayValue\n if (dateMapper.isDate(queryValue)) {\n dateDisplayValue = dateMapper.toDateString(queryValue, 'local-date')\n const isoFormatDate = dateMapper.toDateString(queryValue, 'iso')\n if (isoFormatDate) {\n query[name] = isoFormatDate\n filterData[shortName] = isoFormatDate\n }\n } else {\n query[name] = urlParamValue\n filterData[shortName] = urlParamValue\n }\n\n if (filter?.type === FilterType.autocomplete.toLowerCase()) {\n summaryValue = AutocompleteUtils.getDisplayValue(filter, queryValue)\n } else {\n summaryValue = dateDisplayValue || summaryValue\n }\n\n const fieldDisplayName = DefinitionUtils.getFieldDisplayName(fields, shortName)\n querySummary.push({\n name: fieldDisplayName || shortName,\n value: summaryValue,\n })\n }\n } else if (name.startsWith('sort')) {\n query[name] = queryValue\n sortData[name] = queryValue\n\n const fieldDef = DefinitionUtils.getField(fields, queryValue)\n\n let displayName = 'Sort Direction'\n let displayValue = queryValue === '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
|
+
"names": ["utils_exports", "__export", "utils_default", "getSortByFromDefinition", "renderFilters", "setDurationStartAndEnd", "setQueryFromFilters", "__toCommonJS", "import_sortByTemplate", "import_definitionUtils", "import_DateMapper", "import_utils", "import_enum", "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", "summaryValue", "filter", "urlParamValue", "dateDisplayValue", "isoFormatDate", "AutocompleteUtils", "fieldDisplayName", "DefinitionUtils", "fieldDef", "displayName", "displayValue"]
|
|
7
7
|
}
|
|
@@ -275,7 +275,7 @@ describe('AsyncFiltersUtils', () => {
|
|
|
275
275
|
querySummary: [
|
|
276
276
|
{
|
|
277
277
|
name: 'Field 1 Display',
|
|
278
|
-
value: '
|
|
278
|
+
value: 'Fezzick',
|
|
279
279
|
},
|
|
280
280
|
{
|
|
281
281
|
name: 'Field 2 Display',
|
|
@@ -343,7 +343,7 @@ describe('AsyncFiltersUtils', () => {
|
|
|
343
343
|
querySummary: [
|
|
344
344
|
{
|
|
345
345
|
name: 'Field 1 Display',
|
|
346
|
-
value: '
|
|
346
|
+
value: 'Fezzick',
|
|
347
347
|
},
|
|
348
348
|
{
|
|
349
349
|
name: 'Field 2 Display',
|
|
@@ -9,7 +9,9 @@ import DefinitionUtils from '../../../utils/definitionUtils'
|
|
|
9
9
|
import DateMapper from '../../../utils/DateMapper/DateMapper'
|
|
10
10
|
import FiltersUtils from '../../_filters/utils'
|
|
11
11
|
import DateRangeInputUtils from '../../_inputs/date-range/utils'
|
|
12
|
+
import AutocompleteUtils from '../../_inputs/autocomplete-text-input/utils'
|
|
12
13
|
import { FilterOption, FilterValue, FilterValueWithOptions } from '../../_filters/types'
|
|
14
|
+
import { FilterType } from '../../_filters/filter-input/enum'
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* Initialises the sortData from the definition
|
|
@@ -106,51 +108,62 @@ export const setQueryFromFilters = (
|
|
|
106
108
|
.filter((name) => name !== '_csrf' && req.body[name] !== '')
|
|
107
109
|
.forEach((name) => {
|
|
108
110
|
const shortName = name.replace('filters.', '')
|
|
109
|
-
const
|
|
111
|
+
const queryValue = req.body[name]
|
|
112
|
+
let summaryValue = queryValue
|
|
110
113
|
|
|
111
|
-
if (name.startsWith('filters.') &&
|
|
114
|
+
if (name.startsWith('filters.') && queryValue !== '' && !query[name] && queryValue !== 'no-filter') {
|
|
112
115
|
if (name.includes('relative-duration')) {
|
|
113
116
|
;({ query, filterData, querySummary } = setDurationStartAndEnd(
|
|
114
117
|
name,
|
|
115
|
-
|
|
118
|
+
queryValue,
|
|
116
119
|
query,
|
|
117
120
|
filterData,
|
|
118
121
|
querySummary,
|
|
119
122
|
fields,
|
|
120
123
|
))
|
|
121
124
|
} else {
|
|
125
|
+
const fieldId = name.split('.')[1]
|
|
126
|
+
const filter: components['schemas']['FilterDefinition'] | undefined = fields.find(
|
|
127
|
+
(f) => f.name === fieldId,
|
|
128
|
+
)?.filter
|
|
129
|
+
|
|
122
130
|
let urlParamValue: string | string[] = urlParams.getAll(name)
|
|
123
|
-
urlParamValue = !urlParamValue || urlParamValue.length === 0 ?
|
|
131
|
+
urlParamValue = !urlParamValue || urlParamValue.length === 0 ? queryValue : urlParamValue
|
|
124
132
|
urlParamValue = urlParamValue.length === 1 ? `${urlParamValue[0]}` : `${urlParamValue}`
|
|
125
133
|
|
|
126
|
-
query[name] = urlParamValue
|
|
127
|
-
filterData[shortName] = urlParamValue
|
|
128
|
-
|
|
129
134
|
let dateDisplayValue
|
|
130
|
-
if (dateMapper.isDate(
|
|
131
|
-
dateDisplayValue = dateMapper.toDateString(
|
|
132
|
-
|
|
133
|
-
const isoFormatDate = dateMapper.toDateString(value, 'iso')
|
|
135
|
+
if (dateMapper.isDate(queryValue)) {
|
|
136
|
+
dateDisplayValue = dateMapper.toDateString(queryValue, 'local-date')
|
|
137
|
+
const isoFormatDate = dateMapper.toDateString(queryValue, 'iso')
|
|
134
138
|
if (isoFormatDate) {
|
|
135
139
|
query[name] = isoFormatDate
|
|
136
140
|
filterData[shortName] = isoFormatDate
|
|
137
141
|
}
|
|
142
|
+
} else {
|
|
143
|
+
query[name] = urlParamValue
|
|
144
|
+
filterData[shortName] = urlParamValue
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (filter?.type === FilterType.autocomplete.toLowerCase()) {
|
|
148
|
+
summaryValue = AutocompleteUtils.getDisplayValue(filter, queryValue)
|
|
149
|
+
} else {
|
|
150
|
+
summaryValue = dateDisplayValue || summaryValue
|
|
138
151
|
}
|
|
139
152
|
|
|
140
153
|
const fieldDisplayName = DefinitionUtils.getFieldDisplayName(fields, shortName)
|
|
141
154
|
querySummary.push({
|
|
142
155
|
name: fieldDisplayName || shortName,
|
|
143
|
-
value:
|
|
156
|
+
value: summaryValue,
|
|
144
157
|
})
|
|
145
158
|
}
|
|
146
159
|
} else if (name.startsWith('sort')) {
|
|
147
|
-
query[name] =
|
|
148
|
-
sortData[name] =
|
|
160
|
+
query[name] = queryValue
|
|
161
|
+
sortData[name] = queryValue
|
|
149
162
|
|
|
150
|
-
const fieldDef = DefinitionUtils.getField(fields,
|
|
163
|
+
const fieldDef = DefinitionUtils.getField(fields, queryValue)
|
|
151
164
|
|
|
152
165
|
let displayName = 'Sort Direction'
|
|
153
|
-
let displayValue =
|
|
166
|
+
let displayValue = queryValue === 'true' ? 'Ascending' : 'Descending'
|
|
154
167
|
if (fieldDef) {
|
|
155
168
|
displayName = 'Sort Column'
|
|
156
169
|
displayValue = fieldDef.display
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var N=Object.create;var D=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var H=(a,r)=>{for(var i in r)D(a,i,{get:r[i],enumerable:!0})},C=(a,r,i,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of A(r))!_.call(a,t)&&t!==i&&D(a,t,{get:()=>r[t],enumerable:!(e=W(r,t))||e.enumerable});return a};var d=(a,r,i)=>(i=a!=null?N(M(a)):{},C(r||!a||!a.__esModule?D(i,"default",{value:a,enumerable:!0}):i,a)),K=a=>C(D({},"__esModule",{value:!0}),a);var B={};H(B,{default:()=>z,getFilters:()=>I,getFiltersFromDefinition:()=>L,getPersonalisedFilters:()=>k,redirectWithDefaultFilters:()=>U,setFilterQueryFromFilterDefinition:()=>E,setFilterValuesFromRequest:()=>w,setRequestQueryFromFilterValues:()=>S});module.exports=K(B);var o=require("./filter-input/enum"),F=require("../../types/ReportQuery"),x=d(require("./filters-selected/utils")),V=d(require("../_inputs/date-range/utils")),h=d(require("../_inputs/date-input/utils")),R=d(require("../_inputs/granular-date-range/utils")),Q=d(require("../_inputs/autocomplete-text-input/utils")),b=d(require("../_inputs/multi-select/utils")),G=d(require("../../utils/Personalisation/personalisationUtils")),q=d(require("../../utils/urlHelper")),O=require("./filtersTypeEnum"),T=d(require("../../utils/localsHelper"));const w=(a,r,i="filters.")=>{const{preventDefault:e}=r.query;return Object.keys(r.query).every(t=>!t.includes(i))&&!e?a:a.map(t=>{let s,n,f;switch(t.type.toLowerCase()){case o.FilterType.dateRange.toLowerCase():s=V.default.setValueFromRequest(t,r,i);break;case o.FilterType.granularDateRange.toLowerCase():s=R.default.setValueFromRequest(t,r,i);break;case o.FilterType.date.toLowerCase():s=h.default.setValueFromRequest(t,r,i);break;case o.FilterType.multiselect.toLowerCase():({requestfilterValue:s,requestfilterValues:n}=b.default.setValueFromRequest(t,r,i));break;case o.FilterType.autocomplete.toLowerCase():{({requestfilterValue:s,requestOptionValue:f}=Q.default.setValueFromRequest(t,r,i));break}default:s=r.query[`${i}${t.name}`];break}let l=null;return s?l=s:e&&(l=""),{...t,value:l,...n&&{values:n},...f&&{staticOptionNameValue:f}}})},E=(a,r)=>{let i=a.filter(e=>e.filter);return r&&(i=i.filter(e=>e.filter.interactive)),i.filter(e=>e.filter!==void 0).filter(e=>e.filter.defaultValue!==void 0).map(e=>{const t=e.filter;switch(t.type.toLocaleLowerCase()){case o.FilterType.dateRange.toLowerCase():return V.default.getQueryFromDefinition(t,e.name,F.DEFAULT_FILTERS_PREFIX);case o.FilterType.multiselect.toLowerCase():return b.default.getQueryFromDefinition(t,e.name,F.DEFAULT_FILTERS_PREFIX);case o.FilterType.granularDateRange.toLowerCase():{const n=V.default.getQueryFromDefinition(t,e.name,F.DEFAULT_FILTERS_PREFIX);return R.default.getQueryFromDefinition(t,e.name,F.DEFAULT_FILTERS_PREFIX,n)}default:return`${F.DEFAULT_FILTERS_PREFIX}${e.name}=${t.defaultValue}`}}).join("&")},L=(a,r)=>{const i=a.filter(t=>t.filter).filter(t=>r!==void 0?t.filter?.interactive===void 0?!r:r===t.filter.interactive:!0).map(t=>{const{display:s,name:n}=t,f=t.filter,{type:c,staticOptions:l,dynamicOptions:u,defaultValue:m,mandatory:y,pattern:P,index:j}=f,g=l?l.map($=>({value:$.name,text:$.display})):[];let p={text:s,name:n,type:c,value:m||null,mandatory:y||!1,minimumLength:u?.minimumLength,pattern:P,index:j};const v={value:"no-filter",text:"None",disabled:!1};switch(c){case o.FilterType.autocomplete.toLowerCase():p={...p,options:g};break;case o.FilterType.radio:y||g.unshift(v),p={...p,options:g};break;case o.FilterType.select:{y||g.unshift(v),g.unshift({value:"",text:"Select your option",disabled:!0,selected:!0}),p={...p,options:g};break}case o.FilterType.multiselect.toLowerCase():p={...p,options:g,values:m?m.split(","):[]};break;case o.FilterType.dateRange.toLowerCase():p=V.default.getFilterFromDefinition(f,p);break;case o.FilterType.date.toLowerCase():p=h.default.getFilterFromDefinition(f,p);break;case o.FilterType.granularDateRange.toLocaleLowerCase():{p=R.default.getFilterFromDefinition(f,p);break}default:break}return p});return X(i)},X=a=>{const r=a.filter(e=>e.index===void 0);return a.filter(e=>e.index!==void 0).forEach(e=>{e.index!==void 0&&r.splice(e.index,0,e)}),r},S=(a,r=!1)=>a.filter(e=>e.value).reduce((e,t)=>{const{value:s,name:n,type:f}=t,c=`filters.${n}`;switch(f){case o.FilterType.granularDateRange.toLowerCase():{const l=s;Object.keys(l).forEach(u=>{let m=l[u];u.includes("partialDate")?e={...e}:((u.includes("granularity")||u.includes("quickFilter"))&&(m=m.value),e={...e,[`${c}.${u}`]:m})})}break;case o.FilterType.dateRange.toLowerCase():s&&Object.keys(s).forEach(l=>{const u=!r&&l.includes("relative")?void 0:`${c}.${l}`,m=s[l];u&&(e={...e,[`${u}`]:m})});break;case o.FilterType.multiselect.toLowerCase():e={...e,[`${c}`]:s.split(",")};break;default:e={...e,[`${c}`]:s};break}return e},{}),U=(a,r,i,e)=>{const t={},{specification:s}=r,n=s?s.fields:[],{preventDefault:f}=e.query;if(Object.keys(a.filters).length===0&&!f&&n.filter(l=>l.filter&&l.filter.defaultValue).forEach(l=>{const{filter:u}=l;if(u)if(u.type.toLowerCase()===o.FilterType.dateRange.toLowerCase()){const{defaultValue:m}=u,y=m?m.split(" - "):"";y.length>=1&&(t[`${F.DEFAULT_FILTERS_PREFIX}${l.name}.start`]=y[0],y.length>=2&&(t[`${F.DEFAULT_FILTERS_PREFIX}${l.name}.end`]=y[1]))}else t[`${F.DEFAULT_FILTERS_PREFIX}${l.name}`]=u.defaultValue||""}),Object.keys(t).length>0){const l=(0,q.default)(a.toRecordWithFilterPrefix(),t,n);return i.redirect(`${e.baseUrl}${e.path}${l}`),!0}return!1},k=async(a,r,i,e,t)=>{const{reportId:s,id:n}=r.params,{dprUser:f}=T.default.getValues(i),c=await e.defaultFilterValuesService.get(f.id,s,n,t);let l=a;return c&&(l=G.default.setFilterValuesFromSavedDefaults(a,[],c).filters),{filters:l,defaultFilterValues:c}},I=async({fields:a,req:r,res:i,prefix:e="filters.",services:t,filtersType:s})=>{let n=await L(a,s===O.FiltersType.INTERACTIVE),f,c=!1;if(t&&i&&i.locals.saveDefaultsEnabled){const{filters:u,defaultFilterValues:m}=await k(n,r,i,t,s);n=u,f=m&&m.length>0,c=!0}r.query&&(n=w(n,r));const l=x.default.getSelectedFilters(n,e);return{filters:n,selectedFilters:l,hasDefaults:f,canSaveDefaults:c}};var z={getFiltersFromDefinition:L,setFilterValuesFromRequest:w,getFilters:I,setFilterQueryFromFilterDefinition:E,redirectWithDefaultFilters:U,setRequestQueryFromFilterValues:S,getPersonalisedFilters:k};0&&(module.exports={getFilters,getFiltersFromDefinition,getPersonalisedFilters,redirectWithDefaultFilters,setFilterQueryFromFilterDefinition,setFilterValuesFromRequest,setRequestQueryFromFilterValues});
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/dpr/components/_filters/utils.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Request, Response } from 'express'\nimport { GranularDateRangeQuickFilterValue } from './types'\nimport { FilterType } from './filter-input/enum'\nimport type { components } from '../../types/api'\nimport type { FilterOption } from './filter-input/types'\nimport type {\n DateFilterValue,\n FilterValueType,\n DateRangeFilterValue,\n FilterValue,\n MultiselectFilterValue,\n GranularDateRangeFilterValue,\n GranularDateRange,\n GranularDateRangeGranularityValue,\n} from './types'\nimport ReportQuery, { DEFAULT_FILTERS_PREFIX } from '../../types/ReportQuery'\n\nimport SelectedFiltersUtils from './filters-selected/utils'\nimport DateRangeInputUtils from '../_inputs/date-range/utils'\nimport DateInputUtils from '../_inputs/date-input/utils'\nimport GranularDateRangeInputUtils from '../_inputs/granular-date-range/utils'\nimport MultiSelectUtils from '../_inputs/multi-select/utils'\nimport { Granularity, QuickFilters } from '../_inputs/granular-date-range/types'\nimport PersonalistionUtils from '../../utils/Personalisation/personalisationUtils'\nimport createUrlForParameters from '../../utils/urlHelper'\nimport { Services } from '../../types/Services'\nimport { FiltersType } from './filtersTypeEnum'\nimport LocalsHelper from '../../utils/localsHelper'\n\n/**\n * Given a FilterValue[], will update the values to match the req.query values if present\n *\n * @param {FilterValue[]} filters\n * @param {Request} req\n * @param {string} [prefix='filters.']\n * @return {*} {FilterValue[]}\n */\nexport const setFilterValuesFromRequest = (\n filters: FilterValue[],\n req: Request,\n prefix = 'filters.',\n): FilterValue[] => {\n const { preventDefault } = req.query\n\n if (Object.keys(req.query).every((key) => !key.includes(prefix)) && !preventDefault) {\n return filters\n }\n\n return filters.map((filter: FilterValue) => {\n let requestfilterValue: FilterValueType\n let requestfilterValues: string[] | undefined\n\n const type = filter.type.toLowerCase()\n switch (type) {\n case FilterType.dateRange.toLowerCase():\n requestfilterValue = DateRangeInputUtils.setValueFromRequest(<DateRangeFilterValue>filter, req, prefix)\n break\n case FilterType.granularDateRange.toLowerCase():\n requestfilterValue = GranularDateRangeInputUtils.setValueFromRequest(\n <GranularDateRangeFilterValue>filter,\n req,\n prefix,\n )\n break\n case FilterType.date.toLowerCase():\n requestfilterValue = DateInputUtils.setValueFromRequest(<DateFilterValue>filter, req, prefix)\n break\n case FilterType.multiselect.toLowerCase():\n ;({ requestfilterValue, requestfilterValues } = MultiSelectUtils.setValueFromRequest(\n <MultiselectFilterValue>filter,\n req,\n prefix,\n ))\n break\n default:\n requestfilterValue = <string>req.query[`${prefix}${filter.name}`]\n break\n }\n\n let value: FilterValueType = null\n if (requestfilterValue) {\n value = requestfilterValue\n } else if (preventDefault) {\n value = ''\n }\n\n return {\n ...filter,\n value,\n ...(requestfilterValues && { values: requestfilterValues }),\n }\n })\n}\n\nexport const setFilterQueryFromFilterDefinition = (\n fields: components['schemas']['FieldDefinition'][],\n interactive?: boolean,\n) => {\n let filterFields: components['schemas']['FieldDefinition'][] = fields.filter((f) => f.filter)\n if (interactive) {\n filterFields = filterFields.filter(\n (f) => (<components['schemas']['FilterDefinition'] & { interactive?: boolean }>f.filter).interactive,\n )\n }\n\n return filterFields\n .filter((field) => field.filter !== undefined)\n .filter((field) => (<components['schemas']['FilterDefinition']>field.filter).defaultValue !== undefined)\n .map((field) => {\n const filter = <components['schemas']['FilterDefinition']>field.filter\n const type = filter.type.toLocaleLowerCase()\n\n switch (type) {\n case FilterType.dateRange.toLowerCase():\n return DateRangeInputUtils.getQueryFromDefinition(filter, field.name, DEFAULT_FILTERS_PREFIX)\n\n case FilterType.multiselect.toLowerCase():\n return MultiSelectUtils.getQueryFromDefinition(filter, field.name, DEFAULT_FILTERS_PREFIX)\n\n case FilterType.granularDateRange.toLowerCase(): {\n const startEndParams = DateRangeInputUtils.getQueryFromDefinition(filter, field.name, DEFAULT_FILTERS_PREFIX)\n return GranularDateRangeInputUtils.getQueryFromDefinition(\n filter as unknown as components['schemas']['FilterDefinition'] & {\n defaultGranularity: Granularity\n defaultQuickFilterValue: QuickFilters\n },\n field.name,\n DEFAULT_FILTERS_PREFIX,\n startEndParams,\n )\n }\n\n default:\n return `${DEFAULT_FILTERS_PREFIX}${field.name}=${filter.defaultValue}`\n }\n })\n .join('&')\n}\n\nexport const getFiltersFromDefinition = (\n fields: components['schemas']['FieldDefinition'][],\n interactive?: boolean,\n): FilterValue[] => {\n const filters = fields\n .filter((f) => f.filter)\n .filter((f) => {\n if (interactive !== undefined) {\n if (f.filter?.interactive === undefined) {\n return !interactive\n }\n return interactive === f.filter.interactive\n }\n return true\n })\n .map((f) => {\n const { display: text, name } = f\n const filter = <components['schemas']['FilterDefinition']>f.filter\n const { type, staticOptions, dynamicOptions, defaultValue, mandatory, pattern, index } = filter\n\n const options: FilterOption[] = staticOptions\n ? staticOptions.map((opt) => {\n return { value: opt.name, text: opt.display }\n })\n : []\n\n let filterData: FilterValue = {\n text,\n name,\n type: type as FilterType,\n value: defaultValue || null,\n mandatory: mandatory || false,\n minimumLength: dynamicOptions?.minimumLength,\n pattern,\n index,\n }\n\n const noFilterOption = {\n value: 'no-filter',\n text: 'None',\n disabled: false,\n }\n\n switch (type) {\n case FilterType.autocomplete.toLowerCase():\n filterData = {\n ...filterData,\n options,\n }\n break\n\n case FilterType.radio:\n if (!mandatory) options.unshift(noFilterOption)\n filterData = {\n ...filterData,\n options,\n }\n break\n\n case FilterType.select: {\n if (!mandatory) options.unshift(noFilterOption)\n options.unshift({\n value: '',\n text: 'Select your option',\n disabled: true,\n selected: true,\n })\n\n filterData = {\n ...filterData,\n options,\n }\n break\n }\n\n case FilterType.multiselect.toLowerCase():\n filterData = {\n ...filterData,\n options,\n values: defaultValue ? defaultValue.split(',') : [],\n }\n break\n\n case FilterType.dateRange.toLowerCase():\n filterData = DateRangeInputUtils.getFilterFromDefinition(filter, filterData)\n break\n\n case FilterType.date.toLowerCase():\n filterData = DateInputUtils.getFilterFromDefinition(filter, filterData)\n break\n\n case FilterType.granularDateRange.toLocaleLowerCase(): {\n filterData = GranularDateRangeInputUtils.getFilterFromDefinition(filter, filterData)\n break\n }\n\n default:\n break\n }\n\n return filterData\n })\n\n const orderedFilters = orderFilters(filters)\n return orderedFilters\n}\n\nconst orderFilters = (filterValues: FilterValue[]) => {\n const noIndexFilters = filterValues.filter((f) => f.index === undefined)\n const indexFilters = filterValues.filter((f) => f.index !== undefined)\n indexFilters.forEach((f) => {\n if (f.index !== undefined) noIndexFilters.splice(f.index, 0, f)\n })\n return noIndexFilters\n}\n\nexport const setRequestQueryFromFilterValues = (filterValues: FilterValue[], verbose = false) => {\n const requestQuery = filterValues\n .filter((fv) => fv.value)\n .reduce((acc, curr) => {\n const { value, name, type } = curr\n const filterPrefix = `filters.${name}`\n switch (type) {\n case FilterType.granularDateRange.toLowerCase():\n {\n const granularDateRangeValue = <GranularDateRange>value\n Object.keys(granularDateRangeValue).forEach((key) => {\n let v = granularDateRangeValue[key as keyof GranularDateRange]\n if (key.includes('partialDate')) {\n acc = {\n ...acc,\n }\n } else {\n if (key.includes('granularity') || key.includes('quickFilter')) {\n v = (<GranularDateRangeGranularityValue | GranularDateRangeQuickFilterValue>v).value\n }\n acc = {\n ...acc,\n [`${filterPrefix}.${key}`]: v,\n }\n }\n })\n }\n break\n case FilterType.dateRange.toLowerCase():\n if (value) {\n Object.keys(value).forEach((key) => {\n const attrKey = !verbose && key.includes('relative') ? undefined : `${filterPrefix}.${key}`\n const attrValue = value[key as keyof FilterValueType]\n if (attrKey) {\n acc = {\n ...acc,\n [`${attrKey}`]: attrValue,\n }\n }\n })\n }\n break\n case FilterType.multiselect.toLowerCase():\n acc = {\n ...acc,\n [`${filterPrefix}`]: (<string>value).split(','),\n }\n break\n default:\n acc = {\n ...acc,\n [`${filterPrefix}`]: value,\n }\n break\n }\n return acc\n }, {})\n\n return requestQuery\n}\n\nexport const redirectWithDefaultFilters = (\n reportQuery: ReportQuery,\n variantDefinition: components['schemas']['VariantDefinition'],\n response: Response,\n request: Request,\n) => {\n const defaultFilters: Record<string, string> = {}\n const { specification } = variantDefinition\n const fields = specification ? specification.fields : []\n const { preventDefault } = request.query\n const hasNoQueryFilters = Object.keys(reportQuery.filters).length === 0 && !preventDefault\n if (hasNoQueryFilters) {\n fields\n .filter((f) => f.filter && f.filter.defaultValue)\n .forEach((f) => {\n const { filter } = f\n if (filter) {\n if (filter.type.toLowerCase() === FilterType.dateRange.toLowerCase()) {\n const { defaultValue } = <components['schemas']['FilterDefinition']>filter\n const dates = defaultValue ? defaultValue.split(' - ') : ''\n\n if (dates.length >= 1) {\n // eslint-disable-next-line prefer-destructuring\n defaultFilters[`${DEFAULT_FILTERS_PREFIX}${f.name}.start`] = dates[0]\n\n if (dates.length >= 2) {\n // eslint-disable-next-line prefer-destructuring\n defaultFilters[`${DEFAULT_FILTERS_PREFIX}${f.name}.end`] = dates[1]\n }\n }\n } else {\n defaultFilters[`${DEFAULT_FILTERS_PREFIX}${f.name}`] = filter.defaultValue || ''\n }\n }\n })\n }\n\n if (Object.keys(defaultFilters).length > 0) {\n const querystring = createUrlForParameters(reportQuery.toRecordWithFilterPrefix(), defaultFilters, fields)\n response.redirect(`${request.baseUrl}${request.path}${querystring}`)\n return true\n }\n\n return false\n}\n\nexport const getPersonalisedFilters = async (\n filters: FilterValue[],\n req: Request,\n res: Response,\n services: Services,\n filtersType: FiltersType,\n) => {\n const { reportId, id } = req.params\n const { dprUser } = LocalsHelper.getValues(res)\n const defaultFilterValues = await services.defaultFilterValuesService.get(dprUser.id, reportId, id, filtersType)\n let defaultFilters = filters\n if (defaultFilterValues) {\n const personalisedFilters = PersonalistionUtils.setFilterValuesFromSavedDefaults(filters, [], defaultFilterValues)\n defaultFilters = personalisedFilters.filters\n }\n\n return { filters: defaultFilters, defaultFilterValues }\n}\n\nexport const getFilters = async ({\n fields,\n req,\n res,\n prefix = 'filters.',\n services,\n filtersType,\n}: {\n fields: components['schemas']['FieldDefinition'][]\n req: Request\n res?: Response | undefined\n prefix?: string\n services?: Services | undefined\n filtersType: FiltersType\n}) => {\n // 1. Set the filters from the product definition\n let filters = await getFiltersFromDefinition(fields, filtersType === FiltersType.INTERACTIVE)\n\n let hasDefaults\n let canSaveDefaults = false\n if (services && res && res.locals['saveDefaultsEnabled']) {\n // 2. If there are personalised filters, overwrite fiters with the personalised filter values.\n const { filters: personalisedFilterValues, defaultFilterValues } = await getPersonalisedFilters(\n filters,\n req,\n res,\n services,\n filtersType,\n )\n filters = personalisedFilterValues\n hasDefaults = defaultFilterValues && defaultFilterValues.length > 0\n canSaveDefaults = true\n }\n\n // If there is a request query, overwrite the filters with the query params\n if (req.query) {\n filters = setFilterValuesFromRequest(filters, req)\n }\n\n // Set the selected filters\n const selectedFilters = SelectedFiltersUtils.getSelectedFilters(filters, prefix)\n\n return {\n filters,\n selectedFilters,\n hasDefaults,\n canSaveDefaults,\n }\n}\n\nexport default {\n getFiltersFromDefinition,\n setFilterValuesFromRequest,\n getFilters,\n setFilterQueryFromFilterDefinition,\n redirectWithDefaultFilters,\n setRequestQueryFromFilterValues,\n getPersonalisedFilters,\n}\n"],
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,eAAAC,EAAA,6BAAAC,EAAA,2BAAAC,EAAA,+BAAAC,EAAA,uCAAAC,EAAA,+BAAAC,EAAA,oCAAAC,IAAA,eAAAC,EAAAV,GAGA,IAAAW,EAA2B,+
|
|
6
|
-
"names": ["utils_exports", "__export", "utils_default", "getFilters", "getFiltersFromDefinition", "getPersonalisedFilters", "redirectWithDefaultFilters", "setFilterQueryFromFilterDefinition", "setFilterValuesFromRequest", "setRequestQueryFromFilterValues", "__toCommonJS", "import_enum", "import_ReportQuery", "import_utils", "import_personalisationUtils", "import_urlHelper", "import_filtersTypeEnum", "import_localsHelper", "filters", "req", "prefix", "preventDefault", "key", "filter", "requestfilterValue", "requestfilterValues", "DateRangeInputUtils", "GranularDateRangeInputUtils", "DateInputUtils", "MultiSelectUtils", "value", "fields", "interactive", "filterFields", "f", "field", "startEndParams", "text", "name", "type", "staticOptions", "dynamicOptions", "defaultValue", "mandatory", "pattern", "index", "options", "opt", "filterData", "noFilterOption", "orderFilters", "filterValues", "noIndexFilters", "verbose", "fv", "acc", "curr", "filterPrefix", "granularDateRangeValue", "v", "attrKey", "attrValue", "reportQuery", "variantDefinition", "response", "request", "defaultFilters", "specification", "dates", "querystring", "createUrlForParameters", "res", "services", "filtersType", "reportId", "id", "dprUser", "LocalsHelper", "defaultFilterValues", "PersonalistionUtils", "hasDefaults", "canSaveDefaults", "personalisedFilterValues", "selectedFilters", "SelectedFiltersUtils"]
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Request, Response } from 'express'\nimport { GranularDateRangeQuickFilterValue } from './types'\nimport { FilterType } from './filter-input/enum'\nimport type { components } from '../../types/api'\nimport type { FilterOption } from './filter-input/types'\nimport type {\n DateFilterValue,\n FilterValueType,\n DateRangeFilterValue,\n FilterValue,\n MultiselectFilterValue,\n GranularDateRangeFilterValue,\n GranularDateRange,\n GranularDateRangeGranularityValue,\n FilterValueWithOptions,\n} from './types'\nimport ReportQuery, { DEFAULT_FILTERS_PREFIX } from '../../types/ReportQuery'\n\nimport SelectedFiltersUtils from './filters-selected/utils'\nimport DateRangeInputUtils from '../_inputs/date-range/utils'\nimport DateInputUtils from '../_inputs/date-input/utils'\nimport GranularDateRangeInputUtils from '../_inputs/granular-date-range/utils'\nimport AutocompleteUtils from '../_inputs/autocomplete-text-input/utils'\nimport MultiSelectUtils from '../_inputs/multi-select/utils'\nimport { Granularity, QuickFilters } from '../_inputs/granular-date-range/types'\nimport PersonalistionUtils from '../../utils/Personalisation/personalisationUtils'\nimport createUrlForParameters from '../../utils/urlHelper'\nimport { Services } from '../../types/Services'\nimport { FiltersType } from './filtersTypeEnum'\nimport LocalsHelper from '../../utils/localsHelper'\n\n/**\n * Given a FilterValue[], will update the values to match the req.query values if present\n *\n * @param {FilterValue[]} filters\n * @param {Request} req\n * @param {string} [prefix='filters.']\n * @return {*} {FilterValue[]}\n */\nexport const setFilterValuesFromRequest = (\n filters: FilterValue[],\n req: Request,\n prefix = 'filters.',\n): FilterValue[] => {\n const { preventDefault } = req.query\n\n if (Object.keys(req.query).every((key) => !key.includes(prefix)) && !preventDefault) {\n return filters\n }\n\n return filters.map((filter: FilterValue) => {\n let requestfilterValue: FilterValueType\n let requestfilterValues: string[] | undefined\n let requestOptionValue: string | undefined\n\n const type = filter.type.toLowerCase()\n switch (type) {\n case FilterType.dateRange.toLowerCase():\n requestfilterValue = DateRangeInputUtils.setValueFromRequest(<DateRangeFilterValue>filter, req, prefix)\n break\n\n case FilterType.granularDateRange.toLowerCase():\n requestfilterValue = GranularDateRangeInputUtils.setValueFromRequest(\n <GranularDateRangeFilterValue>filter,\n req,\n prefix,\n )\n break\n\n case FilterType.date.toLowerCase():\n requestfilterValue = DateInputUtils.setValueFromRequest(<DateFilterValue>filter, req, prefix)\n break\n\n case FilterType.multiselect.toLowerCase():\n ;({ requestfilterValue, requestfilterValues } = MultiSelectUtils.setValueFromRequest(\n <MultiselectFilterValue>filter,\n req,\n prefix,\n ))\n break\n\n case FilterType.autocomplete.toLowerCase(): {\n ;({ requestfilterValue, requestOptionValue } = AutocompleteUtils.setValueFromRequest(\n <FilterValueWithOptions>filter,\n req,\n prefix,\n ))\n break\n }\n\n default:\n requestfilterValue = <string>req.query[`${prefix}${filter.name}`]\n break\n }\n\n let value: FilterValueType = null\n if (requestfilterValue) {\n value = requestfilterValue\n } else if (preventDefault) {\n value = ''\n }\n\n return {\n ...filter,\n value,\n ...(requestfilterValues && { values: requestfilterValues }),\n ...(requestOptionValue && { staticOptionNameValue: requestOptionValue }),\n }\n })\n}\n\nexport const setFilterQueryFromFilterDefinition = (\n fields: components['schemas']['FieldDefinition'][],\n interactive?: boolean,\n) => {\n let filterFields: components['schemas']['FieldDefinition'][] = fields.filter((f) => f.filter)\n if (interactive) {\n filterFields = filterFields.filter(\n (f) => (<components['schemas']['FilterDefinition'] & { interactive?: boolean }>f.filter).interactive,\n )\n }\n\n return filterFields\n .filter((field) => field.filter !== undefined)\n .filter((field) => (<components['schemas']['FilterDefinition']>field.filter).defaultValue !== undefined)\n .map((field) => {\n const filter = <components['schemas']['FilterDefinition']>field.filter\n const type = filter.type.toLocaleLowerCase()\n\n switch (type) {\n case FilterType.dateRange.toLowerCase():\n return DateRangeInputUtils.getQueryFromDefinition(filter, field.name, DEFAULT_FILTERS_PREFIX)\n\n case FilterType.multiselect.toLowerCase():\n return MultiSelectUtils.getQueryFromDefinition(filter, field.name, DEFAULT_FILTERS_PREFIX)\n\n case FilterType.granularDateRange.toLowerCase(): {\n const startEndParams = DateRangeInputUtils.getQueryFromDefinition(filter, field.name, DEFAULT_FILTERS_PREFIX)\n return GranularDateRangeInputUtils.getQueryFromDefinition(\n filter as unknown as components['schemas']['FilterDefinition'] & {\n defaultGranularity: Granularity\n defaultQuickFilterValue: QuickFilters\n },\n field.name,\n DEFAULT_FILTERS_PREFIX,\n startEndParams,\n )\n }\n\n default:\n return `${DEFAULT_FILTERS_PREFIX}${field.name}=${filter.defaultValue}`\n }\n })\n .join('&')\n}\n\nexport const getFiltersFromDefinition = (\n fields: components['schemas']['FieldDefinition'][],\n interactive?: boolean,\n): FilterValue[] => {\n const filters = fields\n .filter((f) => f.filter)\n .filter((f) => {\n if (interactive !== undefined) {\n if (f.filter?.interactive === undefined) {\n return !interactive\n }\n return interactive === f.filter.interactive\n }\n return true\n })\n .map((f) => {\n const { display: text, name } = f\n const filter = <components['schemas']['FilterDefinition']>f.filter\n const { type, staticOptions, dynamicOptions, defaultValue, mandatory, pattern, index } = filter\n\n const options: FilterOption[] = staticOptions\n ? staticOptions.map((opt) => {\n return { value: opt.name, text: opt.display }\n })\n : []\n\n let filterData: FilterValue = {\n text,\n name,\n type: type as FilterType,\n value: defaultValue || null,\n mandatory: mandatory || false,\n minimumLength: dynamicOptions?.minimumLength,\n pattern,\n index,\n }\n\n const noFilterOption = {\n value: 'no-filter',\n text: 'None',\n disabled: false,\n }\n\n switch (type) {\n case FilterType.autocomplete.toLowerCase():\n filterData = {\n ...filterData,\n options,\n }\n break\n\n case FilterType.radio:\n if (!mandatory) options.unshift(noFilterOption)\n filterData = {\n ...filterData,\n options,\n }\n break\n\n case FilterType.select: {\n if (!mandatory) options.unshift(noFilterOption)\n options.unshift({\n value: '',\n text: 'Select your option',\n disabled: true,\n selected: true,\n })\n\n filterData = {\n ...filterData,\n options,\n }\n break\n }\n\n case FilterType.multiselect.toLowerCase():\n filterData = {\n ...filterData,\n options,\n values: defaultValue ? defaultValue.split(',') : [],\n }\n break\n\n case FilterType.dateRange.toLowerCase():\n filterData = DateRangeInputUtils.getFilterFromDefinition(filter, filterData)\n break\n\n case FilterType.date.toLowerCase():\n filterData = DateInputUtils.getFilterFromDefinition(filter, filterData)\n break\n\n case FilterType.granularDateRange.toLocaleLowerCase(): {\n filterData = GranularDateRangeInputUtils.getFilterFromDefinition(filter, filterData)\n break\n }\n\n default:\n break\n }\n\n return filterData\n })\n\n const orderedFilters = orderFilters(filters)\n return orderedFilters\n}\n\nconst orderFilters = (filterValues: FilterValue[]) => {\n const noIndexFilters = filterValues.filter((f) => f.index === undefined)\n const indexFilters = filterValues.filter((f) => f.index !== undefined)\n indexFilters.forEach((f) => {\n if (f.index !== undefined) noIndexFilters.splice(f.index, 0, f)\n })\n return noIndexFilters\n}\n\nexport const setRequestQueryFromFilterValues = (filterValues: FilterValue[], verbose = false) => {\n const requestQuery = filterValues\n .filter((fv) => fv.value)\n .reduce((acc, curr) => {\n const { value, name, type } = curr\n const filterPrefix = `filters.${name}`\n switch (type) {\n case FilterType.granularDateRange.toLowerCase():\n {\n const granularDateRangeValue = <GranularDateRange>value\n Object.keys(granularDateRangeValue).forEach((key) => {\n let v = granularDateRangeValue[key as keyof GranularDateRange]\n if (key.includes('partialDate')) {\n acc = {\n ...acc,\n }\n } else {\n if (key.includes('granularity') || key.includes('quickFilter')) {\n v = (<GranularDateRangeGranularityValue | GranularDateRangeQuickFilterValue>v).value\n }\n acc = {\n ...acc,\n [`${filterPrefix}.${key}`]: v,\n }\n }\n })\n }\n break\n case FilterType.dateRange.toLowerCase():\n if (value) {\n Object.keys(value).forEach((key) => {\n const attrKey = !verbose && key.includes('relative') ? undefined : `${filterPrefix}.${key}`\n const attrValue = value[key as keyof FilterValueType]\n if (attrKey) {\n acc = {\n ...acc,\n [`${attrKey}`]: attrValue,\n }\n }\n })\n }\n break\n case FilterType.multiselect.toLowerCase():\n acc = {\n ...acc,\n [`${filterPrefix}`]: (<string>value).split(','),\n }\n break\n default:\n acc = {\n ...acc,\n [`${filterPrefix}`]: value,\n }\n break\n }\n return acc\n }, {})\n\n return requestQuery\n}\n\nexport const redirectWithDefaultFilters = (\n reportQuery: ReportQuery,\n variantDefinition: components['schemas']['VariantDefinition'],\n response: Response,\n request: Request,\n) => {\n const defaultFilters: Record<string, string> = {}\n const { specification } = variantDefinition\n const fields = specification ? specification.fields : []\n const { preventDefault } = request.query\n const hasNoQueryFilters = Object.keys(reportQuery.filters).length === 0 && !preventDefault\n if (hasNoQueryFilters) {\n fields\n .filter((f) => f.filter && f.filter.defaultValue)\n .forEach((f) => {\n const { filter } = f\n if (filter) {\n if (filter.type.toLowerCase() === FilterType.dateRange.toLowerCase()) {\n const { defaultValue } = <components['schemas']['FilterDefinition']>filter\n const dates = defaultValue ? defaultValue.split(' - ') : ''\n\n if (dates.length >= 1) {\n // eslint-disable-next-line prefer-destructuring\n defaultFilters[`${DEFAULT_FILTERS_PREFIX}${f.name}.start`] = dates[0]\n\n if (dates.length >= 2) {\n // eslint-disable-next-line prefer-destructuring\n defaultFilters[`${DEFAULT_FILTERS_PREFIX}${f.name}.end`] = dates[1]\n }\n }\n } else {\n defaultFilters[`${DEFAULT_FILTERS_PREFIX}${f.name}`] = filter.defaultValue || ''\n }\n }\n })\n }\n\n if (Object.keys(defaultFilters).length > 0) {\n const querystring = createUrlForParameters(reportQuery.toRecordWithFilterPrefix(), defaultFilters, fields)\n response.redirect(`${request.baseUrl}${request.path}${querystring}`)\n return true\n }\n\n return false\n}\n\nexport const getPersonalisedFilters = async (\n filters: FilterValue[],\n req: Request,\n res: Response,\n services: Services,\n filtersType: FiltersType,\n) => {\n const { reportId, id } = req.params\n const { dprUser } = LocalsHelper.getValues(res)\n const defaultFilterValues = await services.defaultFilterValuesService.get(dprUser.id, reportId, id, filtersType)\n let defaultFilters = filters\n if (defaultFilterValues) {\n const personalisedFilters = PersonalistionUtils.setFilterValuesFromSavedDefaults(filters, [], defaultFilterValues)\n defaultFilters = personalisedFilters.filters\n }\n\n return { filters: defaultFilters, defaultFilterValues }\n}\n\nexport const getFilters = async ({\n fields,\n req,\n res,\n prefix = 'filters.',\n services,\n filtersType,\n}: {\n fields: components['schemas']['FieldDefinition'][]\n req: Request\n res?: Response | undefined\n prefix?: string\n services?: Services | undefined\n filtersType: FiltersType\n}) => {\n // 1. Set the filters from the product definition\n let filters = await getFiltersFromDefinition(fields, filtersType === FiltersType.INTERACTIVE)\n\n let hasDefaults\n let canSaveDefaults = false\n if (services && res && res.locals['saveDefaultsEnabled']) {\n // 2. If there are personalised filters, overwrite fiters with the personalised filter values.\n const { filters: personalisedFilterValues, defaultFilterValues } = await getPersonalisedFilters(\n filters,\n req,\n res,\n services,\n filtersType,\n )\n filters = personalisedFilterValues\n hasDefaults = defaultFilterValues && defaultFilterValues.length > 0\n canSaveDefaults = true\n }\n\n // If there is a request query, overwrite the filters with the query params\n if (req.query) {\n filters = setFilterValuesFromRequest(filters, req)\n }\n\n // Set the selected filters\n const selectedFilters = SelectedFiltersUtils.getSelectedFilters(filters, prefix)\n\n return {\n filters,\n selectedFilters,\n hasDefaults,\n canSaveDefaults,\n }\n}\n\nexport default {\n getFiltersFromDefinition,\n setFilterValuesFromRequest,\n getFilters,\n setFilterQueryFromFilterDefinition,\n redirectWithDefaultFilters,\n setRequestQueryFromFilterValues,\n getPersonalisedFilters,\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["utils_exports", "__export", "utils_default", "getFilters", "getFiltersFromDefinition", "getPersonalisedFilters", "redirectWithDefaultFilters", "setFilterQueryFromFilterDefinition", "setFilterValuesFromRequest", "setRequestQueryFromFilterValues", "__toCommonJS", "import_enum", "import_ReportQuery", "import_utils", "import_personalisationUtils", "import_urlHelper", "import_filtersTypeEnum", "import_localsHelper", "filters", "req", "prefix", "preventDefault", "key", "filter", "requestfilterValue", "requestfilterValues", "requestOptionValue", "DateRangeInputUtils", "GranularDateRangeInputUtils", "DateInputUtils", "MultiSelectUtils", "AutocompleteUtils", "value", "fields", "interactive", "filterFields", "f", "field", "startEndParams", "text", "name", "type", "staticOptions", "dynamicOptions", "defaultValue", "mandatory", "pattern", "index", "options", "opt", "filterData", "noFilterOption", "orderFilters", "filterValues", "noIndexFilters", "verbose", "fv", "acc", "curr", "filterPrefix", "granularDateRangeValue", "v", "attrKey", "attrValue", "reportQuery", "variantDefinition", "response", "request", "defaultFilters", "specification", "dates", "querystring", "createUrlForParameters", "res", "services", "filtersType", "reportId", "id", "dprUser", "LocalsHelper", "defaultFilterValues", "PersonalistionUtils", "hasDefaults", "canSaveDefaults", "personalisedFilterValues", "selectedFilters", "SelectedFiltersUtils"]
|
|
7
7
|
}
|
|
@@ -13,6 +13,7 @@ import type {
|
|
|
13
13
|
GranularDateRangeFilterValue,
|
|
14
14
|
GranularDateRange,
|
|
15
15
|
GranularDateRangeGranularityValue,
|
|
16
|
+
FilterValueWithOptions,
|
|
16
17
|
} from './types'
|
|
17
18
|
import ReportQuery, { DEFAULT_FILTERS_PREFIX } from '../../types/ReportQuery'
|
|
18
19
|
|
|
@@ -20,6 +21,7 @@ import SelectedFiltersUtils from './filters-selected/utils'
|
|
|
20
21
|
import DateRangeInputUtils from '../_inputs/date-range/utils'
|
|
21
22
|
import DateInputUtils from '../_inputs/date-input/utils'
|
|
22
23
|
import GranularDateRangeInputUtils from '../_inputs/granular-date-range/utils'
|
|
24
|
+
import AutocompleteUtils from '../_inputs/autocomplete-text-input/utils'
|
|
23
25
|
import MultiSelectUtils from '../_inputs/multi-select/utils'
|
|
24
26
|
import { Granularity, QuickFilters } from '../_inputs/granular-date-range/types'
|
|
25
27
|
import PersonalistionUtils from '../../utils/Personalisation/personalisationUtils'
|
|
@@ -50,12 +52,14 @@ export const setFilterValuesFromRequest = (
|
|
|
50
52
|
return filters.map((filter: FilterValue) => {
|
|
51
53
|
let requestfilterValue: FilterValueType
|
|
52
54
|
let requestfilterValues: string[] | undefined
|
|
55
|
+
let requestOptionValue: string | undefined
|
|
53
56
|
|
|
54
57
|
const type = filter.type.toLowerCase()
|
|
55
58
|
switch (type) {
|
|
56
59
|
case FilterType.dateRange.toLowerCase():
|
|
57
60
|
requestfilterValue = DateRangeInputUtils.setValueFromRequest(<DateRangeFilterValue>filter, req, prefix)
|
|
58
61
|
break
|
|
62
|
+
|
|
59
63
|
case FilterType.granularDateRange.toLowerCase():
|
|
60
64
|
requestfilterValue = GranularDateRangeInputUtils.setValueFromRequest(
|
|
61
65
|
<GranularDateRangeFilterValue>filter,
|
|
@@ -63,9 +67,11 @@ export const setFilterValuesFromRequest = (
|
|
|
63
67
|
prefix,
|
|
64
68
|
)
|
|
65
69
|
break
|
|
70
|
+
|
|
66
71
|
case FilterType.date.toLowerCase():
|
|
67
72
|
requestfilterValue = DateInputUtils.setValueFromRequest(<DateFilterValue>filter, req, prefix)
|
|
68
73
|
break
|
|
74
|
+
|
|
69
75
|
case FilterType.multiselect.toLowerCase():
|
|
70
76
|
;({ requestfilterValue, requestfilterValues } = MultiSelectUtils.setValueFromRequest(
|
|
71
77
|
<MultiselectFilterValue>filter,
|
|
@@ -73,6 +79,16 @@ export const setFilterValuesFromRequest = (
|
|
|
73
79
|
prefix,
|
|
74
80
|
))
|
|
75
81
|
break
|
|
82
|
+
|
|
83
|
+
case FilterType.autocomplete.toLowerCase(): {
|
|
84
|
+
;({ requestfilterValue, requestOptionValue } = AutocompleteUtils.setValueFromRequest(
|
|
85
|
+
<FilterValueWithOptions>filter,
|
|
86
|
+
req,
|
|
87
|
+
prefix,
|
|
88
|
+
))
|
|
89
|
+
break
|
|
90
|
+
}
|
|
91
|
+
|
|
76
92
|
default:
|
|
77
93
|
requestfilterValue = <string>req.query[`${prefix}${filter.name}`]
|
|
78
94
|
break
|
|
@@ -89,6 +105,7 @@ export const setFilterValuesFromRequest = (
|
|
|
89
105
|
...filter,
|
|
90
106
|
value,
|
|
91
107
|
...(requestfilterValues && { values: requestfilterValues }),
|
|
108
|
+
...(requestOptionValue && { staticOptionNameValue: requestOptionValue }),
|
|
92
109
|
}
|
|
93
110
|
})
|
|
94
111
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var c=(e,t)=>{for(var o in t)s(e,o,{get:t[o],enumerable:!0})},f=(e,t,o,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of a(t))!m.call(e,n)&&n!==o&&s(e,n,{get:()=>t[n],enumerable:!(i=p(t,n))||i.enumerable});return e};var q=e=>f(s({},"__esModule",{value:!0}),e);var F={};c(F,{default:()=>g});module.exports=q(F);const V=(e,t,o)=>{const i=t.query[`${o}${e.name}`],n=e.options.find(l=>l.value===i);let r=i,u;return n&&(r=n.text||i,u=i),{requestfilterValue:r,requestOptionValue:u}},d=(e,t)=>{const o=e.staticOptions?.find(i=>i.name===t);return o?o.display:t};var g={setValueFromRequest:V,getDisplayValue:d};
|
|
2
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/dpr/components/_inputs/autocomplete-text-input/utils.ts"],
|
|
4
|
+
"sourcesContent": ["import { Request } from 'express'\nimport { components } from '../../../types/api'\nimport { FilterValueWithOptions } from '../../_filters/types'\n\nconst setValueFromRequest = (filter: FilterValueWithOptions, req: Request, prefix: string) => {\n const value = <string>req.query[`${prefix}${filter.name}`]\n const option = filter.options.find((opt) => opt.value === value)\n\n let requestfilterValue = value\n let requestOptionValue\n if (option) {\n requestfilterValue = option.text || value\n requestOptionValue = value\n }\n\n return {\n requestfilterValue,\n requestOptionValue,\n }\n}\n\nconst getDisplayValue = (filter: components['schemas']['FilterDefinition'], value: string) => {\n const option = filter.staticOptions?.find((opt) => opt.name === value)\n return option ? option.display : value\n}\n\nexport default {\n setValueFromRequest,\n getDisplayValue,\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAIA,MAAMI,EAAsB,CAACC,EAAgCC,EAAcC,IAAmB,CAC5F,MAAMC,EAAgBF,EAAI,MAAM,GAAGC,CAAM,GAAGF,EAAO,IAAI,EAAE,EACnDI,EAASJ,EAAO,QAAQ,KAAMK,GAAQA,EAAI,QAAUF,CAAK,EAE/D,IAAIG,EAAqBH,EACrBI,EACJ,OAAIH,IACFE,EAAqBF,EAAO,MAAQD,EACpCI,EAAqBJ,GAGhB,CACL,mBAAAG,EACA,mBAAAC,CACF,CACF,EAEMC,EAAkB,CAACR,EAAmDG,IAAkB,CAC5F,MAAMC,EAASJ,EAAO,eAAe,KAAMK,GAAQA,EAAI,OAASF,CAAK,EACrE,OAAOC,EAASA,EAAO,QAAUD,CACnC,EAEA,IAAON,EAAQ,CACb,oBAAAE,EACA,gBAAAS,CACF",
|
|
6
|
+
"names": ["utils_exports", "__export", "utils_default", "__toCommonJS", "setValueFromRequest", "filter", "req", "prefix", "value", "option", "opt", "requestfilterValue", "requestOptionValue", "getDisplayValue"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Request } from 'express'
|
|
2
|
+
import { components } from '../../../types/api'
|
|
3
|
+
import { FilterValueWithOptions } from '../../_filters/types'
|
|
4
|
+
|
|
5
|
+
const setValueFromRequest = (filter: FilterValueWithOptions, req: Request, prefix: string) => {
|
|
6
|
+
const value = <string>req.query[`${prefix}${filter.name}`]
|
|
7
|
+
const option = filter.options.find((opt) => opt.value === value)
|
|
8
|
+
|
|
9
|
+
let requestfilterValue = value
|
|
10
|
+
let requestOptionValue
|
|
11
|
+
if (option) {
|
|
12
|
+
requestfilterValue = option.text || value
|
|
13
|
+
requestOptionValue = value
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return {
|
|
17
|
+
requestfilterValue,
|
|
18
|
+
requestOptionValue,
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const getDisplayValue = (filter: components['schemas']['FilterDefinition'], value: string) => {
|
|
23
|
+
const option = filter.staticOptions?.find((opt) => opt.name === value)
|
|
24
|
+
return option ? option.display : value
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default {
|
|
28
|
+
setValueFromRequest,
|
|
29
|
+
getDisplayValue,
|
|
30
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var y=require("../../../../../../cypress-tests/cypressUtils");describe("Request a report",()=>{const u="/embedded/platform/dpr/request-report/report/request-examples/request-example-success/filters",h="/embedded/platform/dpr/request-report/report/feature-testing/feature-testing-filter-order/filters";let c,s,n,d,r,o,f;const t=()=>{for(let e=0;e<5;e+=1)cy.get("#dpr-selected-filters > a:nth-child(1)").click(1,1)},a=()=>{cy.findByRole("combobox",{name:"Field 2"}).select("value2.2"),cy.findByRole("textbox",{name:"From"}).type("1/2/2003"),cy.findByRole("textbox",{name:"To"}).type("4/5/2007"),cy.findByRole("combobox",{name:"Field 4"}).type("Inigo Montoya"),cy.findByRole("textbox",{name:"Field 6"}).type("Value 6.1"),cy.findByRole("textbox",{name:"Field 7"}).type("05/05/2005"),cy.findByRole("checkbox",{name:"Value 8.1"}).check(),cy.findByRole("checkbox",{name:"Value 8.2"}).check(),cy.findByRole("checkbox",{name:"Value 8.3"}).check(),cy.findByRole("checkbox",{name:"Value 8.4"}).check()};before(()=>{(0,y.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("stubDefinitionOrderFilters")}),beforeEach(()=>{cy.visit(u),c=cy.findByRole("combobox",{name:"Field 2"}),s=cy.findByRole("textbox",{name:"From"}),n=cy.findByRole("textbox",{name:"To"}),d=cy.findByRole("combobox",{name:"Field 4"}),r=cy.findByRole("combobox",{name:"Field 5"}),o=cy.findByRole("textbox",{name:"Field 6"}),f=cy.findByRole("textbox",{name:"Field 7"})}),it("is accessible",()=>{cy.injectAxe(),cy.checkA11y()}),context("Selected filters",()=>{it("should show the default selected filters",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",6).each((e,l)=>{switch(l){case 0:cy.wrap(e).contains("Field 1"),cy.wrap(e).contains("Value 1.2");break;case 1:cy.wrap(e).contains("Field 3 start"),cy.wrap(e).contains("01/02/2003");break;case 2:cy.wrap(e).contains("Field 3 end"),cy.wrap(e).contains("04/05/2006");break;case 3:cy.wrap(e).contains("Field 7"),cy.wrap(e).contains("01/02/2005");break;case 4:cy.wrap(e).contains("Field 8"),cy.wrap(e).contains("Value 8.2, Value 8.3");break;case 5:cy.wrap(e).contains("Reset filters");break;default:break}})})}),it("should remove the selected filter and reset the input",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",6)}),t(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",1)}),cy.findByRole("radio",{name:"None"}).should("not.be.checked"),cy.findByRole("radio",{name:"Value 1.1"}).should("not.be.checked"),cy.findByRole("radio",{name:"Value 1.2"}).should("not.be.checked"),cy.findByRole("radio",{name:"Value 1.3"}).should("not.be.checked"),c.find("option:selected").should("have.text","Select your option"),s.should("have.value",""),n.should("have.value",""),d.should("have.value",""),r.should("have.value",""),o.should("have.value",""),f.should("have.value","")}),it("should add selected filters when inputs values are updated",()=>{t(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",1)}),a(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",8).each((e,l)=>{switch(l){case 0:cy.wrap(e).contains("Field 2"),cy.wrap(e).contains("Value 2.2");break;case 1:cy.wrap(e).contains("Field 3 start"),cy.wrap(e).contains("01/02/2003");break;case 2:cy.wrap(e).contains("Field 3 end"),cy.wrap(e).contains("4/5/2007");break;case 3:cy.wrap(e).contains("Field 4"),cy.wrap(e).contains("Inigo Montoya");break;case 4:cy.wrap(e).contains("Field 6"),cy.wrap(e).contains("Value 6.1");break;case 5:cy.wrap(e).contains("Field 7"),cy.wrap(e).contains("05/05/2005");break;case 6:cy.wrap(e).contains("Field 8"),cy.wrap(e).contains("Value 8.1, Value 8.2, Value 8.3 + 1 more");break;default:break}})}),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field4=Inigo+Montoya"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05")})}),it("should reset the filters back to their DPD defaults",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",6)}),t(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",1)}),cy.findByRole("link",{name:"Reset filters"}).click(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",6)})})}),context("Request query parameters",()=>{it("should correctly set the request query parameters from DPD defaults",()=>{cy.location().should(e=>{expect(e.search).to.contain("filters.field1=value1.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2006-05-04"),expect(e.search).to.contain("filters.field7=2005-02-01"),expect(e.search).to.contain("filters.field8=value8.2&filters.field8=value8.3")}),t(),a(),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field4=Inigo+Montoya"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4")})}),it("should correctly set the request query parameters when inputs are updated",()=>{t(),a(),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field4=Inigo+Montoya"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4")})})}),context("User defined defaults",()=>{it("should save the user defined defaults",()=>{t(),a(),cy.findByRole("button",{name:"Save current filter values as defaults"}).click(),cy.location().should(e=>{expect(e.search).to.contain("defaultsSaved=true")}),cy.findByRole("button",{name:"Update defaults"}).should("exist"),cy.findByRole("button",{name:"Delete defaults"}).should("exist")}),it("should pre-fill the filter values with the saved defaults next visit",()=>{cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field4=Inigo+Montoya"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).not.to.contain("defaultsSaved=true"),expect(e.search).to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4")}),cy.findByRole("button",{name:"Update defaults"}).should("exist"),cy.findByRole("button",{name:"Delete defaults"}).should("exist")}),it("should update the saved defaults",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").eq(1).click(1,1),cy.findAllByRole("link").eq(1).click(1,1),cy.findAllByRole("link").eq(1).click(1,1)}),cy.findByRole("checkbox",{name:"Value 8.2"}).uncheck(),cy.findByRole("checkbox",{name:"Value 8.3"}).uncheck(),cy.findByRole("combobox",{name:"Field 2"}).select("value2.3"),cy.findByRole("button",{name:"Update defaults"}).click(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",5)}),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.3"),expect(e.search).not.to.contain("filters.field3.start=2003-02-01"),expect(e.search).not.to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).to.contain("defaultsSaved=true"),expect(e.search).not.to.contain("filters.field4=Inigo+Montoya"),expect(e.search).not.to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4"),expect(e.search).to.contain("&filters.field8=value8.1&filters.field8=value8.4")}),cy.reload(),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.3"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).to.contain("defaultsSaved=true"),expect(e.search).not.to.contain("filters.field4=Inigo+Montoya"),expect(e.search).not.to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4"),expect(e.search).to.contain("&filters.field8=value8.1&filters.field8=value8.4")})}),it("should reset the defaults back to the user saved defaults",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").eq(1).click(1,1),cy.findAllByRole("link").eq(1).click(1,1),cy.findAllByRole("link").eq(1).click(1,1)}),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",2)}),cy.findByRole("link",{name:"Reset filters"}).click(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",5)})}),it("should remove the save defaults",()=>{cy.findByRole("button",{name:"Delete defaults"}).click(),cy.location().should(e=>{expect(e.search).to.contain("filters.field1=value1.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2006-05-04"),expect(e.search).to.contain("filters.field7=2005-02-01"),expect(e.search).to.contain("filters.field8=value8.2&filters.field8=value8.3")})})}),context("Submission",()=>{it("should submit the report details in the request",()=>{cy.intercept({method:"POST",url:"/embedded/platform/dpr/request-report/report/**/**/filters?**"}).as("requestSubmit"),cy.findByRole("button",{name:/Request/}).click(),cy.wait("@requestSubmit").its("request").then(e=>{cy.wrap(e).its("body").should("include","reportId=request-examples"),cy.wrap(e).its("body").should("include","name=Successful+Report"),cy.wrap(e).its("body").should("include","reportName=Successful+Report"),cy.wrap(e).its("body").should("include","id=request-example-success")})}),it("should submit the request with the correct query params",()=>{cy.intercept({method:"POST",url:"/embedded/platform/dpr/request-report/report/**/**/filters?**"}).as("requestSubmit"),cy.findByRole("button",{name:/Request/}).click(),cy.wait("@requestSubmit").its("request").then(e=>{expect(e.query).to.have.property("filters.field1","value1.2"),expect(e.query).to.have.property("filters.field3.end","2006-05-04"),expect(e.query).to.have.property("filters.field3.start","2003-02-01"),expect(e.query).to.have.property("filters.field7","2005-02-01"),expect(e.query).to.have.property("filters.field8"),cy.wrap(e.query["filters.field8"]).should("deep.eq",["value8.2","value8.3"]),expect(e.query).to.have.property("sortColumn","field1"),expect(e.query).to.have.property("sortedAsc","false")})})}),context("Filter order",()=>{beforeEach(()=>{cy.visit(h)}),it("should order the filters correctly",()=>{cy.findAllByLabelText(/Filters/).within(()=>{cy.findAllByRole("textbox").each((e,l)=>{switch(l){case 0:cy.wrap(e).should("have.attr","display-name").then(i=>{expect(i).contains("Field 2")});break;case 1:cy.wrap(e).should("have.attr","display-name").then(i=>{expect(i).contains("Field 3")});break;case 2:cy.wrap(e).should("have.attr","display-name").then(i=>{expect(i).contains("Field 1")});break;default:break}})})})})});
|
|
1
|
+
"use strict";var u=require("../../../../../../cypress-tests/cypressUtils");describe("Request a report",()=>{const c="/embedded/platform/dpr/request-report/report/request-examples/request-example-success/filters",h="/embedded/platform/dpr/request-report/report/feature-testing/feature-testing-filter-order/filters";let s,n,r,d,o,f,y;const l=()=>{for(let e=0;e<5;e+=1)cy.get("#dpr-selected-filters > a:nth-child(1)").click(1,1)},i=()=>{cy.findByRole("combobox",{name:"Field 2"}).select("value2.2"),cy.findByRole("textbox",{name:"From"}).type("1/2/2003"),cy.findByRole("textbox",{name:"To"}).type("4/5/2007"),cy.findByRole("combobox",{name:"Field 4"}).type("Inigo Montoya"),cy.findByRole("textbox",{name:"Field 6"}).type("Value 6.1"),cy.findByRole("textbox",{name:"Field 7"}).type("05/05/2005"),cy.findByRole("checkbox",{name:"Value 8.1"}).check(),cy.findByRole("checkbox",{name:"Value 8.2"}).check(),cy.findByRole("checkbox",{name:"Value 8.3"}).check(),cy.findByRole("checkbox",{name:"Value 8.4"}).check()};before(()=>{(0,u.executeReportStubs)(),cy.task("stubDefinitionRequestExamplesSuccess"),cy.task("stubRequestSuccessResult20"),cy.task("stubDefinitionOrderFilters")}),beforeEach(()=>{cy.visit(c),s=cy.findByRole("combobox",{name:"Field 2"}),n=cy.findByRole("textbox",{name:"From"}),r=cy.findByRole("textbox",{name:"To"}),d=cy.findByRole("combobox",{name:"Field 4"}),o=cy.findByRole("combobox",{name:"Field 5"}),f=cy.findByRole("textbox",{name:"Field 6"}),y=cy.findByRole("textbox",{name:"Field 7"})}),it("is accessible",()=>{cy.injectAxe(),cy.checkA11y()}),context("Selected filters",()=>{it("should show the default selected filters",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",6).each((e,t)=>{switch(t){case 0:cy.wrap(e).contains("Field 1"),cy.wrap(e).contains("Value 1.2");break;case 1:cy.wrap(e).contains("Field 3 start"),cy.wrap(e).contains("01/02/2003");break;case 2:cy.wrap(e).contains("Field 3 end"),cy.wrap(e).contains("04/05/2006");break;case 3:cy.wrap(e).contains("Field 7"),cy.wrap(e).contains("01/02/2005");break;case 4:cy.wrap(e).contains("Field 8"),cy.wrap(e).contains("Value 8.2, Value 8.3");break;case 5:cy.wrap(e).contains("Reset filters");break;default:break}})})}),it("should remove the selected filter and reset the input",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",6)}),l(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",1)}),cy.findByRole("radio",{name:"None"}).should("not.be.checked"),cy.findByRole("radio",{name:"Value 1.1"}).should("not.be.checked"),cy.findByRole("radio",{name:"Value 1.2"}).should("not.be.checked"),cy.findByRole("radio",{name:"Value 1.3"}).should("not.be.checked"),s.find("option:selected").should("have.text","Select your option"),n.should("have.value",""),r.should("have.value",""),d.should("have.value",""),o.should("have.value",""),f.should("have.value",""),y.should("have.value","")}),it("should add selected filters when inputs values are updated",()=>{l(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",1)}),i(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",8).each((e,t)=>{switch(t){case 0:cy.wrap(e).contains("Field 2"),cy.wrap(e).contains("Value 2.2");break;case 1:cy.wrap(e).contains("Field 3 start"),cy.wrap(e).contains("01/02/2003");break;case 2:cy.wrap(e).contains("Field 3 end"),cy.wrap(e).contains("4/5/2007");break;case 3:cy.wrap(e).contains("Field 4"),cy.wrap(e).contains("Inigo Montoya");break;case 4:cy.wrap(e).contains("Field 6"),cy.wrap(e).contains("Value 6.1");break;case 5:cy.wrap(e).contains("Field 7"),cy.wrap(e).contains("05/05/2005");break;case 6:cy.wrap(e).contains("Field 8"),cy.wrap(e).contains("Value 8.1, Value 8.2, Value 8.3 + 1 more");break;default:break}})}),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field4=Inigo+Montoya"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05")})}),it("should reset the filters back to their DPD defaults",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",6)}),l(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",1)}),cy.findByRole("link",{name:"Reset filters"}).click(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",6)})})}),context("Request query parameters",()=>{it("should correctly set the request query parameters from DPD defaults",()=>{cy.location().should(e=>{expect(e.search).to.contain("filters.field1=value1.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2006-05-04"),expect(e.search).to.contain("filters.field7=2005-02-01"),expect(e.search).to.contain("filters.field8=value8.2&filters.field8=value8.3")}),l(),i(),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field4=Inigo+Montoya"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4")})}),it("should correctly set the request query parameters when inputs are updated",()=>{l(),i(),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field4=Inigo+Montoya"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4")})}),it("should correctly set the input values from the query parameters",()=>{cy.visit(`${c}?filters.field1=value1.3&filters.field3.start=2004-02-01&filters.field3.end=2006-05-04&filters.field7=2004-02-01&filters.field8=value8.2&filters.field8=value8.4&sortColumn=field1&sortedAsc=false&filters.field2=value2.3&filters.field4=PrHu&preventDefault=true&filters.field8=value8.3&filters.field8=value8.1`),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",8).each((e,t)=>{switch(t){case 0:cy.wrap(e).contains("Field 1"),cy.wrap(e).contains("Value 1.3");break;case 1:cy.wrap(e).contains("Field 3 start"),cy.wrap(e).contains("01/02/2004");break;case 2:cy.wrap(e).contains("Field 3 end"),cy.wrap(e).contains("04/05/2006");break;case 3:cy.wrap(e).contains("Field 7"),cy.wrap(e).contains("01/02/2004");break;case 4:cy.wrap(e).contains("Field 8"),cy.wrap(e).contains("Value 8.1, Value 8.2, Value 8.3 + 1 more");break;case 5:cy.wrap(e).contains("Field 2"),cy.wrap(e).contains("Value 2.3");break;case 6:cy.wrap(e).contains("Field 4"),cy.wrap(e).contains("Prince Humperdink");break;case 7:cy.wrap(e).contains("Reset filters");break;default:break}})})}),it("should correctly set the input values from the query parameters with constraints",()=>{cy.visit(`${c}?filters.field1=value1.3&filters.field3.start=2002-02-01&filters.field3.end=2008-05-04&filters.field7=2004-02-01&filters.field8=value8.2&filters.field8=value8.4&sortColumn=field1&sortedAsc=false&filters.field2=value2.3&filters.field4=PrHu&preventDefault=true&filters.field8=value8.3&filters.field8=value8.1`),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",8).each((e,t)=>{switch(t){case 0:cy.wrap(e).contains("Field 1"),cy.wrap(e).contains("Value 1.3");break;case 1:cy.wrap(e).contains("Field 3 start"),cy.wrap(e).contains("01/02/2003");break;case 2:cy.wrap(e).contains("Field 3 end"),cy.wrap(e).contains("04/05/2007");break;case 3:cy.wrap(e).contains("Field 7"),cy.wrap(e).contains("01/02/2004");break;case 4:cy.wrap(e).contains("Field 8"),cy.wrap(e).contains("Value 8.1, Value 8.2, Value 8.3 + 1 more");break;case 5:cy.wrap(e).contains("Field 2"),cy.wrap(e).contains("Value 2.3");break;case 6:cy.wrap(e).contains("Field 4"),cy.wrap(e).contains("Prince Humperdink");break;case 7:cy.wrap(e).contains("Reset filters");break;default:break}})})})}),context("User defined defaults",()=>{it("should save the user defined defaults",()=>{l(),i(),cy.findByRole("button",{name:"Save current filter values as defaults"}).click(),cy.location().should(e=>{expect(e.search).to.contain("defaultsSaved=true")}),cy.findByRole("button",{name:"Update defaults"}).should("exist"),cy.findByRole("button",{name:"Delete defaults"}).should("exist")}),it("should pre-fill the filter values with the saved defaults next visit",()=>{cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field4=Inigo+Montoya"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).not.to.contain("defaultsSaved=true"),expect(e.search).to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4")}),cy.findByRole("button",{name:"Update defaults"}).should("exist"),cy.findByRole("button",{name:"Delete defaults"}).should("exist")}),it("should update the saved defaults",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").eq(1).click(1,1),cy.findAllByRole("link").eq(1).click(1,1),cy.findAllByRole("link").eq(1).click(1,1)}),cy.findByRole("checkbox",{name:"Value 8.2"}).uncheck(),cy.findByRole("checkbox",{name:"Value 8.3"}).uncheck(),cy.findByRole("combobox",{name:"Field 2"}).select("value2.3"),cy.findByRole("button",{name:"Update defaults"}).click(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",5)}),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.3"),expect(e.search).not.to.contain("filters.field3.start=2003-02-01"),expect(e.search).not.to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).to.contain("defaultsSaved=true"),expect(e.search).not.to.contain("filters.field4=Inigo+Montoya"),expect(e.search).not.to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4"),expect(e.search).to.contain("&filters.field8=value8.1&filters.field8=value8.4")}),cy.reload(),cy.location().should(e=>{expect(e.search).to.contain("filters.field2=value2.3"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2007-05-04"),expect(e.search).to.contain("filters.field6=Value+6.1"),expect(e.search).to.contain("filters.field7=2005-05-05"),expect(e.search).to.contain("defaultsSaved=true"),expect(e.search).not.to.contain("filters.field4=Inigo+Montoya"),expect(e.search).not.to.contain("filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4"),expect(e.search).to.contain("&filters.field8=value8.1&filters.field8=value8.4")})}),it("should reset the defaults back to the user saved defaults",()=>{cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").eq(1).click(1,1),cy.findAllByRole("link").eq(1).click(1,1),cy.findAllByRole("link").eq(1).click(1,1)}),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",2)}),cy.findByRole("link",{name:"Reset filters"}).click(),cy.findByLabelText(/Selected filters.*/i).within(()=>{cy.findAllByRole("link").should("have.length",5)})}),it("should remove the save defaults",()=>{cy.findByRole("button",{name:"Delete defaults"}).click(),cy.location().should(e=>{expect(e.search).to.contain("filters.field1=value1.2"),expect(e.search).to.contain("filters.field3.start=2003-02-01"),expect(e.search).to.contain("filters.field3.end=2006-05-04"),expect(e.search).to.contain("filters.field7=2005-02-01"),expect(e.search).to.contain("filters.field8=value8.2&filters.field8=value8.3")})})}),context("Submission",()=>{it("should submit the report details in the request",()=>{cy.intercept({method:"POST",url:"/embedded/platform/dpr/request-report/report/**/**/filters?**"}).as("requestSubmit"),cy.findByRole("button",{name:/Request/}).click(),cy.wait("@requestSubmit").its("request").then(e=>{cy.wrap(e).its("body").should("include","reportId=request-examples"),cy.wrap(e).its("body").should("include","name=Successful+Report"),cy.wrap(e).its("body").should("include","reportName=Successful+Report"),cy.wrap(e).its("body").should("include","id=request-example-success")})}),it("should submit the request with the correct query params",()=>{cy.intercept({method:"POST",url:"/embedded/platform/dpr/request-report/report/**/**/filters?**"}).as("requestSubmit"),cy.findByRole("button",{name:/Request/}).click(),cy.wait("@requestSubmit").its("request").then(e=>{expect(e.query).to.have.property("filters.field1","value1.2"),expect(e.query).to.have.property("filters.field3.end","2006-05-04"),expect(e.query).to.have.property("filters.field3.start","2003-02-01"),expect(e.query).to.have.property("filters.field7","2005-02-01"),expect(e.query).to.have.property("filters.field8"),cy.wrap(e.query["filters.field8"]).should("deep.eq",["value8.2","value8.3"]),expect(e.query).to.have.property("sortColumn","field1"),expect(e.query).to.have.property("sortedAsc","false")})})}),context("Filter order",()=>{beforeEach(()=>{cy.visit(h)}),it("should order the filters correctly",()=>{cy.findAllByLabelText(/Filters/).within(()=>{cy.findAllByRole("textbox").each((e,t)=>{switch(t){case 0:cy.wrap(e).should("have.attr","display-name").then(a=>{expect(a).contains("Field 2")});break;case 1:cy.wrap(e).should("have.attr","display-name").then(a=>{expect(a).contains("Field 3")});break;case 2:cy.wrap(e).should("have.attr","display-name").then(a=>{expect(a).contains("Field 1")});break;default:break}})})})})});
|
|
2
2
|
//# sourceMappingURL=tests.cy.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/dpr/routes/journeys/request-report/filters/tests.cy.ts"],
|
|
4
|
-
"sourcesContent": ["import { executeReportStubs } from '../../../../../../cypress-tests/cypressUtils'\n\ndescribe('Request a report', () => {\n const path = '/embedded/platform/dpr/request-report/report/request-examples/request-example-success/filters'\n const orderPath = '/embedded/platform/dpr/request-report/report/feature-testing/feature-testing-filter-order/filters'\n let field2: Cypress.Chainable<JQuery<HTMLElement>>\n let field3Start: Cypress.Chainable<JQuery<HTMLElement>>\n let field3End: Cypress.Chainable<JQuery<HTMLElement>>\n let field4: Cypress.Chainable<JQuery<HTMLElement>>\n let field5: Cypress.Chainable<JQuery<HTMLElement>>\n let field6: Cypress.Chainable<JQuery<HTMLElement>>\n let field7: Cypress.Chainable<JQuery<HTMLElement>>\n\n const clearSelectedFilters = () => {\n for (let index = 0; index < 5; index += 1) {\n const selectedFilter = cy.get('#dpr-selected-filters > a:nth-child(1)')\n selectedFilter.click(1, 1)\n }\n }\n\n const updateFilterValues = () => {\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.2')\n cy.findByRole('textbox', { name: 'From' }).type('1/2/2003')\n cy.findByRole('textbox', { name: 'To' }).type('4/5/2007')\n cy.findByRole('combobox', { name: 'Field 4' }).type('Inigo Montoya')\n cy.findByRole('textbox', { name: 'Field 6' }).type('Value 6.1')\n cy.findByRole('textbox', { name: 'Field 7' }).type('05/05/2005')\n // multiselect\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.2' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.4' }).check()\n }\n\n before(() => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubDefinitionOrderFilters')\n })\n\n beforeEach(() => {\n cy.visit(path)\n\n field2 = cy.findByRole('combobox', { name: 'Field 2' })\n field3Start = cy.findByRole('textbox', { name: 'From' })\n field3End = cy.findByRole('textbox', { name: 'To' })\n field4 = cy.findByRole('combobox', { name: 'Field 4' })\n field5 = cy.findByRole('combobox', { name: 'Field 5' })\n field6 = cy.findByRole('textbox', { name: 'Field 6' })\n field7 = cy.findByRole('textbox', { name: 'Field 7' })\n })\n\n it('is accessible', () => {\n cy.injectAxe()\n cy.checkA11y()\n })\n\n context('Selected filters', () => {\n it('should show the default selected filters', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link')\n .should('have.length', 6)\n .each((filter, index) => {\n switch (index) {\n case 0:\n cy.wrap(filter).contains('Field 1')\n cy.wrap(filter).contains('Value 1.2')\n break\n case 1:\n cy.wrap(filter).contains('Field 3 start')\n cy.wrap(filter).contains('01/02/2003')\n break\n case 2:\n cy.wrap(filter).contains('Field 3 end')\n cy.wrap(filter).contains('04/05/2006')\n break\n case 3:\n cy.wrap(filter).contains('Field 7')\n cy.wrap(filter).contains('01/02/2005')\n break\n case 4:\n cy.wrap(filter).contains('Field 8')\n cy.wrap(filter).contains('Value 8.2, Value 8.3')\n break\n case 5:\n cy.wrap(filter).contains('Reset filters')\n break\n default:\n break\n }\n })\n })\n })\n\n it('should remove the selected filter and reset the input', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 6)\n })\n clearSelectedFilters()\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 1)\n })\n\n cy.findByRole('radio', { name: 'None' }).should('not.be.checked')\n cy.findByRole('radio', { name: 'Value 1.1' }).should('not.be.checked')\n cy.findByRole('radio', { name: 'Value 1.2' }).should('not.be.checked')\n cy.findByRole('radio', { name: 'Value 1.3' }).should('not.be.checked')\n field2.find('option:selected').should('have.text', 'Select your option')\n field3Start.should('have.value', '')\n field3End.should('have.value', '')\n field4.should('have.value', '')\n field5.should('have.value', '')\n field6.should('have.value', '')\n field7.should('have.value', '')\n })\n\n it('should add selected filters when inputs values are updated', () => {\n clearSelectedFilters()\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 1)\n })\n\n updateFilterValues()\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link')\n .should('have.length', 8)\n .each((filter, index) => {\n switch (index) {\n case 0:\n cy.wrap(filter).contains('Field 2')\n cy.wrap(filter).contains('Value 2.2')\n break\n case 1:\n cy.wrap(filter).contains('Field 3 start')\n cy.wrap(filter).contains('01/02/2003')\n break\n case 2:\n cy.wrap(filter).contains('Field 3 end')\n cy.wrap(filter).contains('4/5/2007')\n break\n case 3:\n cy.wrap(filter).contains('Field 4')\n cy.wrap(filter).contains('Inigo Montoya')\n break\n case 4:\n cy.wrap(filter).contains('Field 6')\n cy.wrap(filter).contains('Value 6.1')\n break\n case 5:\n cy.wrap(filter).contains('Field 7')\n cy.wrap(filter).contains('05/05/2005')\n break\n case 6:\n cy.wrap(filter).contains('Field 8')\n cy.wrap(filter).contains('Value 8.1, Value 8.2, Value 8.3 + 1 more')\n break\n default:\n break\n }\n })\n })\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n })\n })\n\n it('should reset the filters back to their DPD defaults', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 6)\n })\n clearSelectedFilters()\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 1)\n })\n\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 6)\n })\n })\n })\n\n context('Request query parameters', () => {\n it('should correctly set the request query parameters from DPD defaults', () => {\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field1=value1.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2006-05-04`)\n expect(location.search).to.contain(`filters.field7=2005-02-01`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n clearSelectedFilters()\n updateFilterValues()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n })\n })\n\n it('should correctly set the request query parameters when inputs are updated', () => {\n clearSelectedFilters()\n updateFilterValues()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n })\n })\n })\n\n context('User defined defaults', () => {\n it('should save the user defined defaults', () => {\n clearSelectedFilters()\n updateFilterValues()\n\n cy.findByRole('button', { name: 'Save current filter values as defaults' }).click()\n\n cy.location().should((location) => {\n expect(location.search).to.contain('defaultsSaved=true')\n })\n\n cy.findByRole('button', { name: 'Update defaults' }).should('exist')\n cy.findByRole('button', { name: 'Delete defaults' }).should('exist')\n })\n\n it('should pre-fill the filter values with the saved defaults next visit', () => {\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).not.to.contain(`defaultsSaved=true`)\n expect(location.search).to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n })\n\n cy.findByRole('button', { name: 'Update defaults' }).should('exist')\n cy.findByRole('button', { name: 'Delete defaults' }).should('exist')\n })\n\n it('should update the saved defaults', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').eq(1).click(1, 1)\n cy.findAllByRole('link').eq(1).click(1, 1)\n cy.findAllByRole('link').eq(1).click(1, 1)\n })\n\n cy.findByRole('checkbox', { name: 'Value 8.2' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n\n cy.findByRole('button', { name: 'Update defaults' }).click()\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 5)\n })\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.3`)\n expect(location.search).not.to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).not.to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).to.contain(`defaultsSaved=true`)\n expect(location.search).not.to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).not.to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n expect(location.search).to.contain(`&filters.field8=value8.1&filters.field8=value8.4`)\n })\n\n cy.reload()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.3`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).to.contain(`defaultsSaved=true`)\n expect(location.search).not.to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).not.to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n expect(location.search).to.contain(`&filters.field8=value8.1&filters.field8=value8.4`)\n })\n })\n\n it('should reset the defaults back to the user saved defaults', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').eq(1).click(1, 1)\n cy.findAllByRole('link').eq(1).click(1, 1)\n cy.findAllByRole('link').eq(1).click(1, 1)\n })\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 2)\n })\n\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 5)\n })\n })\n\n it('should remove the save defaults', () => {\n cy.findByRole('button', { name: 'Delete defaults' }).click()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field1=value1.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2006-05-04`)\n expect(location.search).to.contain(`filters.field7=2005-02-01`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n })\n })\n\n context('Submission', () => {\n it('should submit the report details in the request', () => {\n cy.intercept({\n method: 'POST',\n url: '/embedded/platform/dpr/request-report/report/**/**/filters?**',\n }).as('requestSubmit')\n\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.wait('@requestSubmit')\n .its('request')\n .then((request) => {\n cy.wrap(request).its('body').should('include', 'reportId=request-examples')\n cy.wrap(request).its('body').should('include', 'name=Successful+Report')\n cy.wrap(request).its('body').should('include', 'reportName=Successful+Report')\n cy.wrap(request).its('body').should('include', 'id=request-example-success')\n })\n })\n\n it('should submit the request with the correct query params', () => {\n cy.intercept({\n method: 'POST',\n url: '/embedded/platform/dpr/request-report/report/**/**/filters?**',\n }).as('requestSubmit')\n\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.wait('@requestSubmit')\n .its('request')\n .then((request) => {\n expect(request.query).to.have.property('filters.field1', 'value1.2')\n expect(request.query).to.have.property('filters.field3.end', '2006-05-04')\n expect(request.query).to.have.property('filters.field3.start', '2003-02-01')\n expect(request.query).to.have.property('filters.field7', '2005-02-01')\n expect(request.query).to.have.property('filters.field8')\n cy.wrap(request.query['filters.field8']).should('deep.eq', ['value8.2', 'value8.3'])\n expect(request.query).to.have.property('sortColumn', 'field1')\n expect(request.query).to.have.property('sortedAsc', 'false')\n })\n })\n })\n\n context('Filter order', () => {\n beforeEach(() => {\n cy.visit(orderPath)\n })\n\n it('should order the filters correctly', () => {\n cy.findAllByLabelText(/Filters/).within(() => {\n cy.findAllByRole('textbox').each((el, idx) => {\n switch (idx) {\n case 0:\n cy.wrap(el)\n .should('have.attr', 'display-name')\n .then((displayName) => {\n expect(displayName).contains('Field 2')\n })\n break\n case 1:\n cy.wrap(el)\n .should('have.attr', 'display-name')\n .then((displayName) => {\n expect(displayName).contains('Field 3')\n })\n break\n case 2:\n cy.wrap(el)\n .should('have.attr', 'display-name')\n .then((displayName) => {\n expect(displayName).contains('Field 1')\n })\n break\n default:\n break\n }\n })\n })\n })\n })\n})\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["import { executeReportStubs } from '../../../../../../cypress-tests/cypressUtils'\n\ndescribe('Request a report', () => {\n const path = '/embedded/platform/dpr/request-report/report/request-examples/request-example-success/filters'\n const orderPath = '/embedded/platform/dpr/request-report/report/feature-testing/feature-testing-filter-order/filters'\n let field2: Cypress.Chainable<JQuery<HTMLElement>>\n let field3Start: Cypress.Chainable<JQuery<HTMLElement>>\n let field3End: Cypress.Chainable<JQuery<HTMLElement>>\n let field4: Cypress.Chainable<JQuery<HTMLElement>>\n let field5: Cypress.Chainable<JQuery<HTMLElement>>\n let field6: Cypress.Chainable<JQuery<HTMLElement>>\n let field7: Cypress.Chainable<JQuery<HTMLElement>>\n\n const clearSelectedFilters = () => {\n for (let index = 0; index < 5; index += 1) {\n const selectedFilter = cy.get('#dpr-selected-filters > a:nth-child(1)')\n selectedFilter.click(1, 1)\n }\n }\n\n const updateFilterValues = () => {\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.2')\n cy.findByRole('textbox', { name: 'From' }).type('1/2/2003')\n cy.findByRole('textbox', { name: 'To' }).type('4/5/2007')\n cy.findByRole('combobox', { name: 'Field 4' }).type('Inigo Montoya')\n cy.findByRole('textbox', { name: 'Field 6' }).type('Value 6.1')\n cy.findByRole('textbox', { name: 'Field 7' }).type('05/05/2005')\n // multiselect\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.2' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.4' }).check()\n }\n\n before(() => {\n executeReportStubs()\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubDefinitionOrderFilters')\n })\n\n beforeEach(() => {\n cy.visit(path)\n\n field2 = cy.findByRole('combobox', { name: 'Field 2' })\n field3Start = cy.findByRole('textbox', { name: 'From' })\n field3End = cy.findByRole('textbox', { name: 'To' })\n field4 = cy.findByRole('combobox', { name: 'Field 4' })\n field5 = cy.findByRole('combobox', { name: 'Field 5' })\n field6 = cy.findByRole('textbox', { name: 'Field 6' })\n field7 = cy.findByRole('textbox', { name: 'Field 7' })\n })\n\n it('is accessible', () => {\n cy.injectAxe()\n cy.checkA11y()\n })\n\n context('Selected filters', () => {\n it('should show the default selected filters', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link')\n .should('have.length', 6)\n .each((filter, index) => {\n switch (index) {\n case 0:\n cy.wrap(filter).contains('Field 1')\n cy.wrap(filter).contains('Value 1.2')\n break\n case 1:\n cy.wrap(filter).contains('Field 3 start')\n cy.wrap(filter).contains('01/02/2003')\n break\n case 2:\n cy.wrap(filter).contains('Field 3 end')\n cy.wrap(filter).contains('04/05/2006')\n break\n case 3:\n cy.wrap(filter).contains('Field 7')\n cy.wrap(filter).contains('01/02/2005')\n break\n case 4:\n cy.wrap(filter).contains('Field 8')\n cy.wrap(filter).contains('Value 8.2, Value 8.3')\n break\n case 5:\n cy.wrap(filter).contains('Reset filters')\n break\n default:\n break\n }\n })\n })\n })\n\n it('should remove the selected filter and reset the input', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 6)\n })\n clearSelectedFilters()\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 1)\n })\n\n cy.findByRole('radio', { name: 'None' }).should('not.be.checked')\n cy.findByRole('radio', { name: 'Value 1.1' }).should('not.be.checked')\n cy.findByRole('radio', { name: 'Value 1.2' }).should('not.be.checked')\n cy.findByRole('radio', { name: 'Value 1.3' }).should('not.be.checked')\n field2.find('option:selected').should('have.text', 'Select your option')\n field3Start.should('have.value', '')\n field3End.should('have.value', '')\n field4.should('have.value', '')\n field5.should('have.value', '')\n field6.should('have.value', '')\n field7.should('have.value', '')\n })\n\n it('should add selected filters when inputs values are updated', () => {\n clearSelectedFilters()\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 1)\n })\n\n updateFilterValues()\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link')\n .should('have.length', 8)\n .each((filter, index) => {\n switch (index) {\n case 0:\n cy.wrap(filter).contains('Field 2')\n cy.wrap(filter).contains('Value 2.2')\n break\n case 1:\n cy.wrap(filter).contains('Field 3 start')\n cy.wrap(filter).contains('01/02/2003')\n break\n case 2:\n cy.wrap(filter).contains('Field 3 end')\n cy.wrap(filter).contains('4/5/2007')\n break\n case 3:\n cy.wrap(filter).contains('Field 4')\n cy.wrap(filter).contains('Inigo Montoya')\n break\n case 4:\n cy.wrap(filter).contains('Field 6')\n cy.wrap(filter).contains('Value 6.1')\n break\n case 5:\n cy.wrap(filter).contains('Field 7')\n cy.wrap(filter).contains('05/05/2005')\n break\n case 6:\n cy.wrap(filter).contains('Field 8')\n cy.wrap(filter).contains('Value 8.1, Value 8.2, Value 8.3 + 1 more')\n break\n default:\n break\n }\n })\n })\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n })\n })\n\n it('should reset the filters back to their DPD defaults', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 6)\n })\n clearSelectedFilters()\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 1)\n })\n\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 6)\n })\n })\n })\n\n context('Request query parameters', () => {\n it('should correctly set the request query parameters from DPD defaults', () => {\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field1=value1.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2006-05-04`)\n expect(location.search).to.contain(`filters.field7=2005-02-01`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n clearSelectedFilters()\n updateFilterValues()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n })\n })\n\n it('should correctly set the request query parameters when inputs are updated', () => {\n clearSelectedFilters()\n updateFilterValues()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n })\n })\n\n it('should correctly set the input values from the query parameters', () => {\n cy.visit(\n `${path}?filters.field1=value1.3&filters.field3.start=2004-02-01&filters.field3.end=2006-05-04&filters.field7=2004-02-01&filters.field8=value8.2&filters.field8=value8.4&sortColumn=field1&sortedAsc=false&filters.field2=value2.3&filters.field4=PrHu&preventDefault=true&filters.field8=value8.3&filters.field8=value8.1`,\n )\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link')\n .should('have.length', 8)\n .each((filter, index) => {\n switch (index) {\n case 0:\n cy.wrap(filter).contains('Field 1')\n cy.wrap(filter).contains('Value 1.3')\n break\n case 1:\n cy.wrap(filter).contains('Field 3 start')\n cy.wrap(filter).contains('01/02/2004')\n break\n case 2:\n cy.wrap(filter).contains('Field 3 end')\n cy.wrap(filter).contains('04/05/2006')\n break\n case 3:\n cy.wrap(filter).contains('Field 7')\n cy.wrap(filter).contains('01/02/2004')\n break\n case 4:\n cy.wrap(filter).contains('Field 8')\n cy.wrap(filter).contains('Value 8.1, Value 8.2, Value 8.3 + 1 more')\n break\n case 5:\n cy.wrap(filter).contains('Field 2')\n cy.wrap(filter).contains('Value 2.3')\n break\n case 6:\n cy.wrap(filter).contains('Field 4')\n cy.wrap(filter).contains('Prince Humperdink')\n break\n case 7:\n cy.wrap(filter).contains('Reset filters')\n break\n default:\n break\n }\n })\n })\n })\n\n it('should correctly set the input values from the query parameters with constraints', () => {\n cy.visit(\n `${path}?filters.field1=value1.3&filters.field3.start=2002-02-01&filters.field3.end=2008-05-04&filters.field7=2004-02-01&filters.field8=value8.2&filters.field8=value8.4&sortColumn=field1&sortedAsc=false&filters.field2=value2.3&filters.field4=PrHu&preventDefault=true&filters.field8=value8.3&filters.field8=value8.1`,\n )\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link')\n .should('have.length', 8)\n .each((filter, index) => {\n switch (index) {\n case 0:\n cy.wrap(filter).contains('Field 1')\n cy.wrap(filter).contains('Value 1.3')\n break\n case 1:\n cy.wrap(filter).contains('Field 3 start')\n cy.wrap(filter).contains('01/02/2003')\n break\n case 2:\n cy.wrap(filter).contains('Field 3 end')\n cy.wrap(filter).contains('04/05/2007')\n break\n case 3:\n cy.wrap(filter).contains('Field 7')\n cy.wrap(filter).contains('01/02/2004')\n break\n case 4:\n cy.wrap(filter).contains('Field 8')\n cy.wrap(filter).contains('Value 8.1, Value 8.2, Value 8.3 + 1 more')\n break\n case 5:\n cy.wrap(filter).contains('Field 2')\n cy.wrap(filter).contains('Value 2.3')\n break\n case 6:\n cy.wrap(filter).contains('Field 4')\n cy.wrap(filter).contains('Prince Humperdink')\n break\n case 7:\n cy.wrap(filter).contains('Reset filters')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n context('User defined defaults', () => {\n it('should save the user defined defaults', () => {\n clearSelectedFilters()\n updateFilterValues()\n\n cy.findByRole('button', { name: 'Save current filter values as defaults' }).click()\n\n cy.location().should((location) => {\n expect(location.search).to.contain('defaultsSaved=true')\n })\n\n cy.findByRole('button', { name: 'Update defaults' }).should('exist')\n cy.findByRole('button', { name: 'Delete defaults' }).should('exist')\n })\n\n it('should pre-fill the filter values with the saved defaults next visit', () => {\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).not.to.contain(`defaultsSaved=true`)\n expect(location.search).to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n })\n\n cy.findByRole('button', { name: 'Update defaults' }).should('exist')\n cy.findByRole('button', { name: 'Delete defaults' }).should('exist')\n })\n\n it('should update the saved defaults', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').eq(1).click(1, 1)\n cy.findAllByRole('link').eq(1).click(1, 1)\n cy.findAllByRole('link').eq(1).click(1, 1)\n })\n\n cy.findByRole('checkbox', { name: 'Value 8.2' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n\n cy.findByRole('button', { name: 'Update defaults' }).click()\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 5)\n })\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.3`)\n expect(location.search).not.to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).not.to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).to.contain(`defaultsSaved=true`)\n expect(location.search).not.to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).not.to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n expect(location.search).to.contain(`&filters.field8=value8.1&filters.field8=value8.4`)\n })\n\n cy.reload()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field2=value2.3`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2007-05-04`)\n expect(location.search).to.contain(`filters.field6=Value+6.1`)\n expect(location.search).to.contain(`filters.field7=2005-05-05`)\n expect(location.search).to.contain(`defaultsSaved=true`)\n expect(location.search).not.to.contain(`filters.field4=Inigo+Montoya`)\n expect(location.search).not.to.contain(\n `filters.field8=value8.1&filters.field8=value8.2&filters.field8=value8.3&filters.field8=value8.4`,\n )\n expect(location.search).to.contain(`&filters.field8=value8.1&filters.field8=value8.4`)\n })\n })\n\n it('should reset the defaults back to the user saved defaults', () => {\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').eq(1).click(1, 1)\n cy.findAllByRole('link').eq(1).click(1, 1)\n cy.findAllByRole('link').eq(1).click(1, 1)\n })\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 2)\n })\n\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n cy.findByLabelText(/Selected filters.*/i).within(() => {\n cy.findAllByRole('link').should('have.length', 5)\n })\n })\n\n it('should remove the save defaults', () => {\n cy.findByRole('button', { name: 'Delete defaults' }).click()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field1=value1.2`)\n expect(location.search).to.contain(`filters.field3.start=2003-02-01`)\n expect(location.search).to.contain(`filters.field3.end=2006-05-04`)\n expect(location.search).to.contain(`filters.field7=2005-02-01`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n })\n })\n\n context('Submission', () => {\n it('should submit the report details in the request', () => {\n cy.intercept({\n method: 'POST',\n url: '/embedded/platform/dpr/request-report/report/**/**/filters?**',\n }).as('requestSubmit')\n\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.wait('@requestSubmit')\n .its('request')\n .then((request) => {\n cy.wrap(request).its('body').should('include', 'reportId=request-examples')\n cy.wrap(request).its('body').should('include', 'name=Successful+Report')\n cy.wrap(request).its('body').should('include', 'reportName=Successful+Report')\n cy.wrap(request).its('body').should('include', 'id=request-example-success')\n })\n })\n\n it('should submit the request with the correct query params', () => {\n cy.intercept({\n method: 'POST',\n url: '/embedded/platform/dpr/request-report/report/**/**/filters?**',\n }).as('requestSubmit')\n\n cy.findByRole('button', { name: /Request/ }).click()\n\n cy.wait('@requestSubmit')\n .its('request')\n .then((request) => {\n expect(request.query).to.have.property('filters.field1', 'value1.2')\n expect(request.query).to.have.property('filters.field3.end', '2006-05-04')\n expect(request.query).to.have.property('filters.field3.start', '2003-02-01')\n expect(request.query).to.have.property('filters.field7', '2005-02-01')\n expect(request.query).to.have.property('filters.field8')\n cy.wrap(request.query['filters.field8']).should('deep.eq', ['value8.2', 'value8.3'])\n expect(request.query).to.have.property('sortColumn', 'field1')\n expect(request.query).to.have.property('sortedAsc', 'false')\n })\n })\n })\n\n context('Filter order', () => {\n beforeEach(() => {\n cy.visit(orderPath)\n })\n\n it('should order the filters correctly', () => {\n cy.findAllByLabelText(/Filters/).within(() => {\n cy.findAllByRole('textbox').each((el, idx) => {\n switch (idx) {\n case 0:\n cy.wrap(el)\n .should('have.attr', 'display-name')\n .then((displayName) => {\n expect(displayName).contains('Field 2')\n })\n break\n case 1:\n cy.wrap(el)\n .should('have.attr', 'display-name')\n .then((displayName) => {\n expect(displayName).contains('Field 3')\n })\n break\n case 2:\n cy.wrap(el)\n .should('have.attr', 'display-name')\n .then((displayName) => {\n expect(displayName).contains('Field 1')\n })\n break\n default:\n break\n }\n })\n })\n })\n })\n})\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_cypressUtils", "path", "orderPath", "field2", "field3Start", "field3End", "field4", "field5", "field6", "field7", "clearSelectedFilters", "index", "updateFilterValues", "filter", "location", "request", "el", "idx", "displayName"]
|
|
7
7
|
}
|
|
@@ -231,6 +231,102 @@ describe('Request a report', () => {
|
|
|
231
231
|
)
|
|
232
232
|
})
|
|
233
233
|
})
|
|
234
|
+
|
|
235
|
+
it('should correctly set the input values from the query parameters', () => {
|
|
236
|
+
cy.visit(
|
|
237
|
+
`${path}?filters.field1=value1.3&filters.field3.start=2004-02-01&filters.field3.end=2006-05-04&filters.field7=2004-02-01&filters.field8=value8.2&filters.field8=value8.4&sortColumn=field1&sortedAsc=false&filters.field2=value2.3&filters.field4=PrHu&preventDefault=true&filters.field8=value8.3&filters.field8=value8.1`,
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
cy.findByLabelText(/Selected filters.*/i).within(() => {
|
|
241
|
+
cy.findAllByRole('link')
|
|
242
|
+
.should('have.length', 8)
|
|
243
|
+
.each((filter, index) => {
|
|
244
|
+
switch (index) {
|
|
245
|
+
case 0:
|
|
246
|
+
cy.wrap(filter).contains('Field 1')
|
|
247
|
+
cy.wrap(filter).contains('Value 1.3')
|
|
248
|
+
break
|
|
249
|
+
case 1:
|
|
250
|
+
cy.wrap(filter).contains('Field 3 start')
|
|
251
|
+
cy.wrap(filter).contains('01/02/2004')
|
|
252
|
+
break
|
|
253
|
+
case 2:
|
|
254
|
+
cy.wrap(filter).contains('Field 3 end')
|
|
255
|
+
cy.wrap(filter).contains('04/05/2006')
|
|
256
|
+
break
|
|
257
|
+
case 3:
|
|
258
|
+
cy.wrap(filter).contains('Field 7')
|
|
259
|
+
cy.wrap(filter).contains('01/02/2004')
|
|
260
|
+
break
|
|
261
|
+
case 4:
|
|
262
|
+
cy.wrap(filter).contains('Field 8')
|
|
263
|
+
cy.wrap(filter).contains('Value 8.1, Value 8.2, Value 8.3 + 1 more')
|
|
264
|
+
break
|
|
265
|
+
case 5:
|
|
266
|
+
cy.wrap(filter).contains('Field 2')
|
|
267
|
+
cy.wrap(filter).contains('Value 2.3')
|
|
268
|
+
break
|
|
269
|
+
case 6:
|
|
270
|
+
cy.wrap(filter).contains('Field 4')
|
|
271
|
+
cy.wrap(filter).contains('Prince Humperdink')
|
|
272
|
+
break
|
|
273
|
+
case 7:
|
|
274
|
+
cy.wrap(filter).contains('Reset filters')
|
|
275
|
+
break
|
|
276
|
+
default:
|
|
277
|
+
break
|
|
278
|
+
}
|
|
279
|
+
})
|
|
280
|
+
})
|
|
281
|
+
})
|
|
282
|
+
|
|
283
|
+
it('should correctly set the input values from the query parameters with constraints', () => {
|
|
284
|
+
cy.visit(
|
|
285
|
+
`${path}?filters.field1=value1.3&filters.field3.start=2002-02-01&filters.field3.end=2008-05-04&filters.field7=2004-02-01&filters.field8=value8.2&filters.field8=value8.4&sortColumn=field1&sortedAsc=false&filters.field2=value2.3&filters.field4=PrHu&preventDefault=true&filters.field8=value8.3&filters.field8=value8.1`,
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
cy.findByLabelText(/Selected filters.*/i).within(() => {
|
|
289
|
+
cy.findAllByRole('link')
|
|
290
|
+
.should('have.length', 8)
|
|
291
|
+
.each((filter, index) => {
|
|
292
|
+
switch (index) {
|
|
293
|
+
case 0:
|
|
294
|
+
cy.wrap(filter).contains('Field 1')
|
|
295
|
+
cy.wrap(filter).contains('Value 1.3')
|
|
296
|
+
break
|
|
297
|
+
case 1:
|
|
298
|
+
cy.wrap(filter).contains('Field 3 start')
|
|
299
|
+
cy.wrap(filter).contains('01/02/2003')
|
|
300
|
+
break
|
|
301
|
+
case 2:
|
|
302
|
+
cy.wrap(filter).contains('Field 3 end')
|
|
303
|
+
cy.wrap(filter).contains('04/05/2007')
|
|
304
|
+
break
|
|
305
|
+
case 3:
|
|
306
|
+
cy.wrap(filter).contains('Field 7')
|
|
307
|
+
cy.wrap(filter).contains('01/02/2004')
|
|
308
|
+
break
|
|
309
|
+
case 4:
|
|
310
|
+
cy.wrap(filter).contains('Field 8')
|
|
311
|
+
cy.wrap(filter).contains('Value 8.1, Value 8.2, Value 8.3 + 1 more')
|
|
312
|
+
break
|
|
313
|
+
case 5:
|
|
314
|
+
cy.wrap(filter).contains('Field 2')
|
|
315
|
+
cy.wrap(filter).contains('Value 2.3')
|
|
316
|
+
break
|
|
317
|
+
case 6:
|
|
318
|
+
cy.wrap(filter).contains('Field 4')
|
|
319
|
+
cy.wrap(filter).contains('Prince Humperdink')
|
|
320
|
+
break
|
|
321
|
+
case 7:
|
|
322
|
+
cy.wrap(filter).contains('Reset filters')
|
|
323
|
+
break
|
|
324
|
+
default:
|
|
325
|
+
break
|
|
326
|
+
}
|
|
327
|
+
})
|
|
328
|
+
})
|
|
329
|
+
})
|
|
234
330
|
})
|
|
235
331
|
|
|
236
332
|
context('User defined defaults', () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/dpr/routes/journeys/request-report/filters/utils.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Request, Response, NextFunction } from 'express'\n\n// Utils\nimport { defaultFilterValue } from '../../../../utils/Personalisation/types'\nimport FiltersFormUtils from '../../../../components/_async/async-filters-form/utils'\nimport LocalsHelper from '../../../../utils/localsHelper'\nimport FiltersUtils from '../../../../components/_filters/utils'\nimport { removeDuplicates } from '../../../../utils/reportStoreHelper'\nimport UserStoreItemBuilder from '../../../../utils/UserStoreItemBuilder'\n\n// Types\nimport type ReportingService from '../../../../services/reportingService'\nimport { ReportType, RequestFormData, RequestStatus } from '../../../../types/UserReports'\nimport type { ExecutionData, ChildReportExecutionData } from '../../../../types/ExecutionData'\nimport type { AsyncReportUtilsParams, RequestDataResult, RequestReportData } from '../../../../types/AsyncReportUtils'\nimport type {\n RenderFiltersReturnValue,\n SetQueryFromFiltersResult,\n} from '../../../../components/_async/async-filters-form/types'\nimport type { components } from '../../../../types/api'\nimport type { Services } from '../../../../types/Services'\nimport type DashboardService from '../../../../services/dashboardService'\nimport PersonalistionUtils from '../../../../utils/Personalisation/personalisationUtils'\nimport { FiltersType } from '../../../../components/_filters/filtersTypeEnum'\n\n/**\n * Updates the store with the request details\n *\n * @param {Request} req\n * @param {Response} res\n * @param {Services} services\n * @param {SetQueryFromFiltersResult} querySummaryData\n * @param {string} executionData\n * @return {*} {Promise<string>}\n */\nexport const updateStore = async ({\n req,\n res,\n services,\n queryData,\n executionData,\n childExecutionData,\n}: {\n req: Request\n res: Response\n services: Services\n queryData?: SetQueryFromFiltersResult | undefined\n executionData: ExecutionData\n childExecutionData: Array<ChildReportExecutionData>\n}): Promise<void> => {\n const { search, id, type } = req.body\n const { dprUser, definitionsPath, dpdPathFromQuery } = LocalsHelper.getValues(res)\n\n await removeDuplicates({ storeService: services.requestedReportService, userId: dprUser.id, id, search })\n await removeDuplicates({ storeService: services.recentlyViewedService, userId: dprUser.id, id, search })\n\n const requestFormData: RequestFormData = req.body\n const reportData = {\n type: requestFormData.type as ReportType,\n reportId: requestFormData.reportId,\n reportName: requestFormData.reportName,\n description: requestFormData.description,\n id: requestFormData.id,\n name: requestFormData.name,\n }\n\n let requestedReportData\n switch (type) {\n case ReportType.REPORT:\n requestedReportData = new UserStoreItemBuilder(reportData, requestFormData)\n .addExecutionData(executionData)\n .addChildExecutionData(childExecutionData)\n .addFilters(queryData?.filterData)\n .addSortData(queryData?.sortData)\n .addDefinitionsPath(definitionsPath, dpdPathFromQuery)\n .addRequestUrls(req)\n .addQuery(queryData)\n .addStatus(RequestStatus.SUBMITTED)\n .addTimestamp()\n .build()\n break\n case ReportType.DASHBOARD: {\n requestedReportData = new UserStoreItemBuilder(reportData, requestFormData)\n .addExecutionData(executionData)\n .addChildExecutionData(childExecutionData)\n .addFilters(queryData?.filterData)\n .addDefinitionsPath(definitionsPath, dpdPathFromQuery)\n .addRequestUrls(req)\n .addQuery(queryData)\n .addStatus(RequestStatus.SUBMITTED)\n .addTimestamp()\n .addMetrics(JSON.parse(req.body.sections))\n .build()\n break\n }\n default:\n break\n }\n\n if (requestedReportData) await services.requestedReportService.addReport(dprUser.id, requestedReportData)\n}\n\nasync function requestChildReports(\n childVariants: Array<components['schemas']['ChildVariantDefinition']>,\n reportingService: ReportingService,\n token: string,\n reportId: string,\n queryData?: SetQueryFromFiltersResult,\n dataProductDefinitionsPath?: string,\n): Promise<Array<ChildReportExecutionData>> {\n return Promise.all(\n childVariants.map((childVariant) =>\n reportingService\n .requestAsyncReport(token, reportId, childVariant.id, {\n ...(queryData && queryData.query),\n ...(dataProductDefinitionsPath && { dataProductDefinitionsPath }),\n })\n .then((response) => {\n const { executionId, tableId } = response\n if (!executionId || !tableId) {\n throw new Error('requestChildReports: No execution of tableId in response')\n }\n return { executionId, tableId, variantId: childVariant.id }\n }),\n ),\n )\n}\n\nconst requestProduct = async ({\n req,\n res,\n token,\n dashboardService,\n reportingService,\n}: {\n req: Request\n res: Response\n token: string\n dashboardService: DashboardService\n reportingService: ReportingService\n}): Promise<{\n executionData: ExecutionData\n childExecutionData: Array<ChildReportExecutionData>\n queryData?: SetQueryFromFiltersResult | undefined\n}> => {\n const { definitionsPath: dataProductDefinitionsPath, dpdPathFromQuery } = LocalsHelper.getValues(res)\n const { reportId, id, type } = req.body\n\n let fields: components['schemas']['FieldDefinition'][]\n let queryData\n let executionId\n let tableId\n let definition\n let childVariants: components['schemas']['ChildVariantDefinition'][] = []\n\n if (type === ReportType.REPORT) {\n definition = await reportingService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n\n fields = definition?.variant.specification?.fields || []\n queryData = FiltersFormUtils.setQueryFromFilters(req, fields)\n ;({ executionId, tableId } = await reportingService.requestAsyncReport(token, reportId, id, {\n ...queryData.query,\n dataProductDefinitionsPath,\n }))\n childVariants = definition.variant.childVariants ?? []\n }\n\n if (type === ReportType.DASHBOARD) {\n definition = await dashboardService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n\n fields = definition?.filterFields || []\n queryData = FiltersFormUtils.setQueryFromFilters(req, fields)\n ;({ executionId, tableId } = await dashboardService.requestAsyncDashboard(token, reportId, id, {\n ...queryData.query,\n dataProductDefinitionsPath,\n }))\n }\n\n const childExecutionData = await requestChildReports(\n childVariants,\n reportingService,\n token,\n reportId,\n queryData,\n dataProductDefinitionsPath,\n )\n\n const executionData = {\n executionId,\n tableId,\n ...(dpdPathFromQuery && { dataProductDefinitionsPath }),\n }\n\n return {\n executionData,\n childExecutionData,\n queryData,\n }\n}\n\nconst renderDashboardRequestData = async ({\n token,\n reportId,\n definitionPath,\n services,\n definition,\n}: {\n token: string\n reportId: string\n definitionPath: string\n services: Services\n definition: components['schemas']['DashboardDefinition']\n}) => {\n const productDefinitions = await services.reportingService.getDefinitions(token, definitionPath)\n const productDefinition = productDefinitions.find(\n (def: components['schemas']['ReportDefinitionSummary']) => def.id === reportId,\n )\n const reportName = productDefinition?.name\n const { name, description, sections, filterFields: fields } = definition\n\n return {\n reportName,\n name,\n description,\n sections: sections || [],\n fields: fields || [],\n }\n}\n\nconst renderReportRequestData = async (definition: components['schemas']['SingleVariantReportDefinition']) => {\n return {\n definition,\n reportName: definition.name,\n name: definition.variant.name,\n description: definition.variant.description || definition.description,\n template: definition.variant.specification,\n fields: definition?.variant?.specification?.fields || [],\n interactive: definition?.variant?.interactive,\n }\n}\n\nexport const getDefintionByType = async (req: Request, res: Response, _next: NextFunction, services: Services) => {\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n const { reportId, id, variantId, type } = req.params\n\n const service = type === ReportType.REPORT ? services.reportingService : services.dashboardService\n const definition = await service.getDefinition(token, reportId, variantId || id, definitionsPath)\n\n return definition\n}\n\nconst getFilterData = async (\n req: Request,\n res: Response,\n fields: components['schemas']['FieldDefinition'][],\n interactive: boolean,\n services: Services,\n userId: string,\n) => {\n const { reportId, id } = req.params\n\n let filtersData = <RenderFiltersReturnValue>await FiltersFormUtils.renderFilters(fields, interactive)\n filtersData.filters = PersonalistionUtils.setUserContextDefaults(res, filtersData.filters)\n\n let defaultFilterValues\n if (res.locals['saveDefaultsEnabled']) {\n defaultFilterValues = await services.defaultFilterValuesService.get(userId, reportId, id, FiltersType.REQUEST)\n }\n if (defaultFilterValues) {\n filtersData = PersonalistionUtils.setFilterValuesFromSavedDefaults(\n filtersData.filters,\n filtersData.sortBy || [],\n defaultFilterValues,\n )\n }\n\n filtersData.filters = FiltersUtils.setFilterValuesFromRequest(filtersData.filters, req)\n\n return { filtersData, defaultFilterValues }\n}\n\n/**\n * Sends the request for the async report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const request = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token } = LocalsHelper.getValues(res)\n const requestArgs = { req, res, token }\n\n const { executionData, queryData, childExecutionData } = await requestProduct({\n ...requestArgs,\n dashboardService: services.dashboardService,\n reportingService: services.reportingService,\n })\n\n if (executionData) {\n await updateStore({\n req,\n res,\n services,\n queryData,\n executionData,\n childExecutionData,\n })\n }\n\n return executionData\n}\n\nexport const cancelRequest = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser, definitionsPath } = LocalsHelper.getValues(res)\n const { reportId, id, executionId, type } = req.params\n\n let service: ReportingService | DashboardService = services.reportingService\n if (type === ReportType.REPORT) service = services.reportingService\n if (type === ReportType.DASHBOARD) service = services.dashboardService\n\n const response = await service.cancelAsyncRequest(token, reportId, id, executionId, definitionsPath)\n\n if (response && response['cancellationSucceeded']) {\n await services.requestedReportService.updateStatus(executionId, dprUser.id, RequestStatus.ABORTED)\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 renderRequest = async ({\n req,\n res,\n services,\n next,\n}: {\n req: Request\n res: Response\n next: NextFunction\n services: Services\n}): Promise<RequestDataResult | boolean> => {\n try {\n const { token, csrfToken, definitionsPath: definitionPath, dpdPathFromQuery, dprUser } = LocalsHelper.getValues(res)\n const { reportId, type, id } = req.params\n const { definition } = res.locals\n const defaultsSaved = <string>req.query['defaultsSaved']\n\n const definitionApiArgs = { token, reportId, definitionPath, services }\n\n let name\n let reportName\n let description\n let template\n let fields: components['schemas']['FieldDefinition'][] = []\n let sections\n let interactive\n let filtersData\n let defaultFilterValues: defaultFilterValue[] = []\n\n if (type === ReportType.REPORT) {\n ;({ name, reportName, description, fields, interactive } = await renderReportRequestData(definition))\n }\n\n if (type === ReportType.DASHBOARD) {\n ;({ name, reportName, description, sections, fields } = await renderDashboardRequestData({\n ...definitionApiArgs,\n definition,\n }))\n }\n\n if (fields) {\n const filterData = await getFilterData(req, res, fields, interactive || false, services, dprUser.id)\n defaultFilterValues = filterData.defaultFilterValues || defaultFilterValues\n filtersData = filterData.filtersData\n }\n\n const reportData: RequestReportData = {\n reportName,\n name,\n description,\n reportId,\n id,\n ...(dpdPathFromQuery && { definitionPath }),\n csrfToken,\n template,\n sections,\n hasDefaults: defaultFilterValues?.length > 0,\n defaultsSaved,\n type: type as ReportType,\n saveDefaultsEnabled: res.locals['saveDefaultsEnabled'],\n }\n\n return {\n title: `Request ${type}`,\n filtersDescription: `Customise your ${type} using the filters below and submit your request.`,\n filtersData,\n reportData,\n }\n } catch (error) {\n next(error)\n return false\n }\n}\n\nexport const getFiltersFromReqBody = (req: Request) => {\n return Object.keys(req.body)\n .filter((attr) => attr.includes('filters.'))\n .filter((attr) => !!req.body[attr])\n .map((attr) => {\n return { name: attr, value: req.body[attr] }\n })\n}\n\nexport default {\n request,\n cancelRequest,\n renderRequest,\n getFiltersFromReqBody,\n getDefintionByType,\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-param-reassign */\nimport { Request, Response, NextFunction } from 'express'\n\n// Utils\nimport { defaultFilterValue } from '../../../../utils/Personalisation/types'\nimport FiltersFormUtils from '../../../../components/_async/async-filters-form/utils'\nimport LocalsHelper from '../../../../utils/localsHelper'\nimport FiltersUtils from '../../../../components/_filters/utils'\nimport { removeDuplicates } from '../../../../utils/reportStoreHelper'\nimport UserStoreItemBuilder from '../../../../utils/UserStoreItemBuilder'\n\n// Types\nimport type ReportingService from '../../../../services/reportingService'\nimport { ReportType, RequestFormData, RequestStatus } from '../../../../types/UserReports'\nimport type { ExecutionData, ChildReportExecutionData } from '../../../../types/ExecutionData'\nimport type { AsyncReportUtilsParams, RequestDataResult, RequestReportData } from '../../../../types/AsyncReportUtils'\nimport type {\n RenderFiltersReturnValue,\n SetQueryFromFiltersResult,\n} from '../../../../components/_async/async-filters-form/types'\nimport type { components } from '../../../../types/api'\nimport type { Services } from '../../../../types/Services'\nimport type DashboardService from '../../../../services/dashboardService'\nimport PersonalistionUtils from '../../../../utils/Personalisation/personalisationUtils'\nimport { FiltersType } from '../../../../components/_filters/filtersTypeEnum'\n\n/**\n * Updates the store with the request details\n *\n * @param {Request} req\n * @param {Response} res\n * @param {Services} services\n * @param {SetQueryFromFiltersResult} querySummaryData\n * @param {string} executionData\n * @return {*} {Promise<string>}\n */\nexport const updateStore = async ({\n req,\n res,\n services,\n queryData,\n executionData,\n childExecutionData,\n}: {\n req: Request\n res: Response\n services: Services\n queryData?: SetQueryFromFiltersResult | undefined\n executionData: ExecutionData\n childExecutionData: Array<ChildReportExecutionData>\n}): Promise<void> => {\n const { search, id, type } = req.body\n const { dprUser, definitionsPath, dpdPathFromQuery } = LocalsHelper.getValues(res)\n\n await removeDuplicates({ storeService: services.requestedReportService, userId: dprUser.id, id, search })\n await removeDuplicates({ storeService: services.recentlyViewedService, userId: dprUser.id, id, search })\n\n const requestFormData: RequestFormData = req.body\n const reportData = {\n type: requestFormData.type as ReportType,\n reportId: requestFormData.reportId,\n reportName: requestFormData.reportName,\n description: requestFormData.description,\n id: requestFormData.id,\n name: requestFormData.name,\n }\n\n let requestedReportData\n switch (type) {\n case ReportType.REPORT:\n requestedReportData = new UserStoreItemBuilder(reportData, requestFormData)\n .addExecutionData(executionData)\n .addChildExecutionData(childExecutionData)\n .addFilters(queryData?.filterData)\n .addSortData(queryData?.sortData)\n .addDefinitionsPath(definitionsPath, dpdPathFromQuery)\n .addRequestUrls(req)\n .addQuery(queryData)\n .addStatus(RequestStatus.SUBMITTED)\n .addTimestamp()\n .build()\n break\n case ReportType.DASHBOARD: {\n requestedReportData = new UserStoreItemBuilder(reportData, requestFormData)\n .addExecutionData(executionData)\n .addChildExecutionData(childExecutionData)\n .addFilters(queryData?.filterData)\n .addDefinitionsPath(definitionsPath, dpdPathFromQuery)\n .addRequestUrls(req)\n .addQuery(queryData)\n .addStatus(RequestStatus.SUBMITTED)\n .addTimestamp()\n .addMetrics(JSON.parse(req.body.sections))\n .build()\n break\n }\n default:\n break\n }\n\n if (requestedReportData) await services.requestedReportService.addReport(dprUser.id, requestedReportData)\n}\n\nasync function requestChildReports(\n childVariants: Array<components['schemas']['ChildVariantDefinition']>,\n reportingService: ReportingService,\n token: string,\n reportId: string,\n queryData?: SetQueryFromFiltersResult,\n dataProductDefinitionsPath?: string,\n): Promise<Array<ChildReportExecutionData>> {\n return Promise.all(\n childVariants.map((childVariant) =>\n reportingService\n .requestAsyncReport(token, reportId, childVariant.id, {\n ...(queryData && queryData.query),\n ...(dataProductDefinitionsPath && { dataProductDefinitionsPath }),\n })\n .then((response) => {\n const { executionId, tableId } = response\n if (!executionId || !tableId) {\n throw new Error('requestChildReports: No execution of tableId in response')\n }\n return { executionId, tableId, variantId: childVariant.id }\n }),\n ),\n )\n}\n\nconst requestProduct = async ({\n req,\n res,\n token,\n dashboardService,\n reportingService,\n}: {\n req: Request\n res: Response\n token: string\n dashboardService: DashboardService\n reportingService: ReportingService\n}): Promise<{\n executionData: ExecutionData\n childExecutionData: Array<ChildReportExecutionData>\n queryData?: SetQueryFromFiltersResult | undefined\n}> => {\n const { definitionsPath: dataProductDefinitionsPath, dpdPathFromQuery } = LocalsHelper.getValues(res)\n const { reportId, id, type } = req.body\n\n let fields: components['schemas']['FieldDefinition'][]\n let queryData\n let executionId\n let tableId\n let definition\n let childVariants: components['schemas']['ChildVariantDefinition'][] = []\n\n if (type === ReportType.REPORT) {\n definition = await reportingService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n\n fields = definition?.variant.specification?.fields || []\n queryData = FiltersFormUtils.setQueryFromFilters(req, fields)\n ;({ executionId, tableId } = await reportingService.requestAsyncReport(token, reportId, id, {\n ...queryData.query,\n dataProductDefinitionsPath,\n }))\n childVariants = definition.variant.childVariants ?? []\n }\n\n if (type === ReportType.DASHBOARD) {\n definition = await dashboardService.getDefinition(token, reportId, id, dataProductDefinitionsPath)\n\n fields = definition?.filterFields || []\n queryData = FiltersFormUtils.setQueryFromFilters(req, fields)\n ;({ executionId, tableId } = await dashboardService.requestAsyncDashboard(token, reportId, id, {\n ...queryData.query,\n dataProductDefinitionsPath,\n }))\n }\n\n const childExecutionData = await requestChildReports(\n childVariants,\n reportingService,\n token,\n reportId,\n queryData,\n dataProductDefinitionsPath,\n )\n\n const executionData = {\n executionId,\n tableId,\n ...(dpdPathFromQuery && { dataProductDefinitionsPath }),\n }\n\n return {\n executionData,\n childExecutionData,\n queryData,\n }\n}\n\nconst renderDashboardRequestData = async ({\n token,\n reportId,\n definitionPath,\n services,\n definition,\n}: {\n token: string\n reportId: string\n definitionPath: string\n services: Services\n definition: components['schemas']['DashboardDefinition']\n}) => {\n const productDefinitions = await services.reportingService.getDefinitions(token, definitionPath)\n const productDefinition = productDefinitions.find(\n (def: components['schemas']['ReportDefinitionSummary']) => def.id === reportId,\n )\n const reportName = productDefinition?.name\n const { name, description, sections, filterFields: fields } = definition\n\n return {\n reportName,\n name,\n description,\n sections: sections || [],\n fields: fields || [],\n }\n}\n\nconst renderReportRequestData = async (definition: components['schemas']['SingleVariantReportDefinition']) => {\n return {\n definition,\n reportName: definition.name,\n name: definition.variant.name,\n description: definition.variant.description || definition.description,\n template: definition.variant.specification,\n fields: definition?.variant?.specification?.fields || [],\n interactive: definition?.variant?.interactive,\n }\n}\n\nexport const getDefintionByType = async (req: Request, res: Response, _next: NextFunction, services: Services) => {\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n const { reportId, id, variantId, type } = req.params\n\n const service = type === ReportType.REPORT ? services.reportingService : services.dashboardService\n const definition = await service.getDefinition(token, reportId, variantId || id, definitionsPath)\n\n return definition\n}\n\nconst getFilterData = async (\n req: Request,\n res: Response,\n fields: components['schemas']['FieldDefinition'][],\n interactive: boolean,\n services: Services,\n userId: string,\n) => {\n const { reportId, id } = req.params\n\n // 1. Get filters from definition with default values\n let filtersData = <RenderFiltersReturnValue>await FiltersFormUtils.renderFilters(fields, interactive)\n\n // 2. Update filter values with user context values. eg. establishmnent code\n filtersData.filters = PersonalistionUtils.setUserContextDefaults(res, filtersData.filters)\n\n // 3. Update filter values with saved defaults\n let defaultFilterValues\n if (res.locals['saveDefaultsEnabled']) {\n defaultFilterValues = await services.defaultFilterValuesService.get(userId, reportId, id, FiltersType.REQUEST)\n }\n if (defaultFilterValues) {\n filtersData = PersonalistionUtils.setFilterValuesFromSavedDefaults(\n filtersData.filters,\n filtersData.sortBy || [],\n defaultFilterValues,\n )\n }\n\n // 4. Overwrite filter values with query param values\n filtersData.filters = FiltersUtils.setFilterValuesFromRequest(filtersData.filters, req)\n\n return { filtersData, defaultFilterValues }\n}\n\n/**\n * Sends the request for the async report\n *\n * @param {AsyncReportUtilsParams} { req, res, services }\n * @return {*}\n */\nexport const request = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token } = LocalsHelper.getValues(res)\n const requestArgs = { req, res, token }\n\n const { executionData, queryData, childExecutionData } = await requestProduct({\n ...requestArgs,\n dashboardService: services.dashboardService,\n reportingService: services.reportingService,\n })\n\n if (executionData) {\n await updateStore({\n req,\n res,\n services,\n queryData,\n executionData,\n childExecutionData,\n })\n }\n\n return executionData\n}\n\nexport const cancelRequest = async ({ req, res, services }: AsyncReportUtilsParams) => {\n const { token, dprUser, definitionsPath } = LocalsHelper.getValues(res)\n const { reportId, id, executionId, type } = req.params\n\n let service: ReportingService | DashboardService = services.reportingService\n if (type === ReportType.REPORT) service = services.reportingService\n if (type === ReportType.DASHBOARD) service = services.dashboardService\n\n const response = await service.cancelAsyncRequest(token, reportId, id, executionId, definitionsPath)\n\n if (response && response['cancellationSucceeded']) {\n await services.requestedReportService.updateStatus(executionId, dprUser.id, RequestStatus.ABORTED)\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 renderRequest = async ({\n req,\n res,\n services,\n next,\n}: {\n req: Request\n res: Response\n next: NextFunction\n services: Services\n}): Promise<RequestDataResult | boolean> => {\n try {\n const { token, csrfToken, definitionsPath: definitionPath, dpdPathFromQuery, dprUser } = LocalsHelper.getValues(res)\n const { reportId, type, id } = req.params\n const { definition } = res.locals\n const defaultsSaved = <string>req.query['defaultsSaved']\n\n const definitionApiArgs = { token, reportId, definitionPath, services }\n\n let name\n let reportName\n let description\n let template\n let fields: components['schemas']['FieldDefinition'][] = []\n let sections\n let interactive\n let filtersData\n let defaultFilterValues: defaultFilterValue[] = []\n\n if (type === ReportType.REPORT) {\n ;({ name, reportName, description, fields, interactive } = await renderReportRequestData(definition))\n }\n\n if (type === ReportType.DASHBOARD) {\n ;({ name, reportName, description, sections, fields } = await renderDashboardRequestData({\n ...definitionApiArgs,\n definition,\n }))\n }\n\n if (fields) {\n const filterData = await getFilterData(req, res, fields, interactive || false, services, dprUser.id)\n defaultFilterValues = filterData.defaultFilterValues || defaultFilterValues\n filtersData = filterData.filtersData\n }\n\n const reportData: RequestReportData = {\n reportName,\n name,\n description,\n reportId,\n id,\n ...(dpdPathFromQuery && { definitionPath }),\n csrfToken,\n template,\n sections,\n hasDefaults: defaultFilterValues?.length > 0,\n defaultsSaved,\n type: type as ReportType,\n saveDefaultsEnabled: res.locals['saveDefaultsEnabled'],\n }\n\n return {\n title: `Request ${type}`,\n filtersDescription: `Customise your ${type} using the filters below and submit your request.`,\n filtersData,\n reportData,\n }\n } catch (error) {\n next(error)\n return false\n }\n}\n\nexport const getFiltersFromReqBody = (req: Request) => {\n return Object.keys(req.body)\n .filter((attr) => attr.includes('filters.'))\n .filter((attr) => !!req.body[attr])\n .map((attr) => {\n return { name: attr, value: req.body[attr] }\n })\n}\n\nexport default {\n request,\n cancelRequest,\n renderRequest,\n getFiltersFromReqBody,\n getDefintionByType,\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["utils_exports", "__export", "cancelRequest", "utils_default", "getDefintionByType", "getFiltersFromReqBody", "renderRequest", "request", "updateStore", "__toCommonJS", "import_utils", "import_localsHelper", "import_reportStoreHelper", "import_UserStoreItemBuilder", "import_UserReports", "import_personalisationUtils", "import_filtersTypeEnum", "req", "res", "services", "queryData", "executionData", "childExecutionData", "search", "id", "type", "dprUser", "definitionsPath", "dpdPathFromQuery", "LocalsHelper", "requestFormData", "reportData", "requestedReportData", "UserStoreItemBuilder", "requestChildReports", "childVariants", "reportingService", "token", "reportId", "dataProductDefinitionsPath", "childVariant", "response", "executionId", "tableId", "requestProduct", "dashboardService", "fields", "definition", "FiltersFormUtils", "renderDashboardRequestData", "definitionPath", "reportName", "def", "name", "description", "sections", "renderReportRequestData", "_next", "variantId", "getFilterData", "interactive", "userId", "filtersData", "PersonalistionUtils", "defaultFilterValues", "FiltersUtils", "requestArgs", "service", "next", "csrfToken", "defaultsSaved", "definitionApiArgs", "template", "filterData", "error", "attr"]
|
|
7
7
|
}
|
|
@@ -260,9 +260,13 @@ const getFilterData = async (
|
|
|
260
260
|
) => {
|
|
261
261
|
const { reportId, id } = req.params
|
|
262
262
|
|
|
263
|
+
// 1. Get filters from definition with default values
|
|
263
264
|
let filtersData = <RenderFiltersReturnValue>await FiltersFormUtils.renderFilters(fields, interactive)
|
|
265
|
+
|
|
266
|
+
// 2. Update filter values with user context values. eg. establishmnent code
|
|
264
267
|
filtersData.filters = PersonalistionUtils.setUserContextDefaults(res, filtersData.filters)
|
|
265
268
|
|
|
269
|
+
// 3. Update filter values with saved defaults
|
|
266
270
|
let defaultFilterValues
|
|
267
271
|
if (res.locals['saveDefaultsEnabled']) {
|
|
268
272
|
defaultFilterValues = await services.defaultFilterValuesService.get(userId, reportId, id, FiltersType.REQUEST)
|
|
@@ -275,6 +279,7 @@ const getFilterData = async (
|
|
|
275
279
|
)
|
|
276
280
|
}
|
|
277
281
|
|
|
282
|
+
// 4. Overwrite filter values with query param values
|
|
278
283
|
filtersData.filters = FiltersUtils.setFilterValuesFromRequest(filtersData.filters, req)
|
|
279
284
|
|
|
280
285
|
return { filtersData, defaultFilterValues }
|
package/dpr/types/ReportQuery.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var b=Object.create;var d=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var
|
|
1
|
+
"use strict";var b=Object.create;var d=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var A=(n,i)=>{for(var s in i)d(n,s,{get:i[s],enumerable:!0})},h=(n,i,s,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of z(i))!F.call(n,r)&&r!==s&&d(n,r,{get:()=>i[r],enumerable:!(t=R(i,r))||t.enumerable});return n};var T=(n,i,s)=>(s=n!=null?b(C(n)):{},h(i||!n||!n.__esModule?d(s,"default",{value:n,enumerable:!0}):s,n)),v=n=>h(d({},"__esModule",{value:!0}),n);var j={};A(j,{DEFAULT_FILTERS_PREFIX:()=>S,ReportQuery:()=>u,default:()=>O});module.exports=v(j);var m=require("../utils/urlHelper"),p=T(require("../components/_reports/report-columns-form/utils")),D=require("./UserReports");const S="filters.";class u{constructor({fields:i,template:s,queryParams:t,definitionsPath:r,filtersPrefix:P=S,reportType:x}){if(this.selectedPage=t.selectedPage?Number(t.selectedPage):1,this.pageSize=this.getPageSize(t,s,x),this.sortColumn=t.sortColumn?t.sortColumn.toString():this.getDefaultSortColumn(i),this.sortedAsc=t.sortedAsc!==void 0?t.sortedAsc!=="false":this.getDefaultSortDirection(i),this.dataProductDefinitionsPath=r??(t.dataProductDefinitionsPath?t.dataProductDefinitionsPath.toString():void 0),this.filtersPrefix=P,t.columns){const e=typeof t.columns=="string"?t.columns.split(","):t.columns;this.columns=p.default.ensureMandatoryColumns(i,e)}else this.columns=i.filter(e=>e.visible).map(e=>e.name);const o=i.find(e=>e.type==="date"&&e.filter&&e.filter.type==="daterange"||e.type==="date"&&e.filter&&e.filter.type==="date");let l,f;o&&o.filter&&(l=o.filter.min,f=o.filter.max),this.filters={},Object.keys(t).filter(e=>e.startsWith(this.filtersPrefix)).filter(e=>t[e]).forEach(e=>{const a=e.replace(this.filtersPrefix,""),g=t[e];let c=g?g.toString():"";a.includes(".start")&&l&&new Date(c)<new Date(l)&&(c=l),a.includes(".end")&&f&&new Date(c)>new Date(f)&&(c=f),c!=="no-filter"&&(this.filters[a]=c)}),o&&o.filter&&o.filter.type==="daterange"&&(l&&Object.keys(t).some(e=>e.includes(this.filtersPrefix))&&Object.keys(t).every(e=>!e.includes(".start"))&&(this.filters[`${o.name}.start`]=l),f&&Object.keys(t).some(e=>e.includes(this.filtersPrefix))&&Object.keys(t).every(e=>!e.includes(".end"))&&(this.filters[`${o.name}.end`]=f)),o&&o.filter&&o.filter.type==="date"&&l&&Object.keys(t).some(e=>e.includes(this.filtersPrefix))&&Object.keys(t).every(e=>!e.includes(o.name))&&(this.filters[`${o.name}.start`]=l)}getDefaultSortColumn(i){const s=i.find(t=>t.defaultsort);return s?s.name:i.find(t=>t.sortable)?.name}getDefaultSortDirection(i){const s=i.find(t=>t.defaultsort);return s&&s.sortDirection?s.sortDirection==="asc":!0}getPageSize(i,s,t){let r=5e6;return(!t||t===D.ReportType.REPORT)&&(i.pageSize?r=Number(i.pageSize):s&&(r=this.getDefaultPageSize(s))),r}toRecordWithFilterPrefix(i=!1){const s={selectedPage:this.selectedPage.toString(),...this.pageSize&&{pageSize:this.pageSize.toString()},...this.sortColumn&&{sortColumn:this.sortColumn},sortedAsc:this.sortedAsc.toString(),columns:this.columns};return this.dataProductDefinitionsPath&&(s.dataProductDefinitionsPath=this.dataProductDefinitionsPath),Object.keys(this.filters).forEach(t=>{const r=this.filters[t];(r&&!i||r!==m.clearFilterValue)&&(s[`${this.filtersPrefix}${t}`]=r)}),s}getDefaultPageSize(i){switch(i){case"list-section":case"summary-section":case"row-section-child":case"parent-child":case"parent-child-section":return 5e5;default:return 20}}}var O=u;0&&(module.exports={DEFAULT_FILTERS_PREFIX,ReportQuery});
|
|
2
2
|
//# sourceMappingURL=ReportQuery.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/dpr/types/ReportQuery.ts"],
|
|
4
|
-
"sourcesContent": ["import type { ParsedQs } from 'qs'\nimport { FilteredListRequest } from './index'\nimport Dict = NodeJS.Dict\nimport { components } from './api'\nimport { clearFilterValue } from '../utils/urlHelper'\nimport ColumnUtils from '../components/_reports/report-columns-form/utils'\nimport { Template } from './Templates'\nimport { ReportType } from './UserReports'\n\nexport const DEFAULT_FILTERS_PREFIX = 'filters.'\n\nclass ReportQuery implements FilteredListRequest {\n selectedPage: number\n\n pageSize: number\n\n sortColumn?: string | undefined\n\n columns: Array<string>\n\n sortedAsc: boolean\n\n filters: Dict<string>\n\n filtersPrefix: string\n\n dataProductDefinitionsPath?: string | undefined\n\n constructor({\n fields,\n template,\n queryParams,\n definitionsPath,\n filtersPrefix = DEFAULT_FILTERS_PREFIX,\n reportType,\n }: {\n fields: components['schemas']['FieldDefinition'][]\n template?: Template\n queryParams: ParsedQs\n definitionsPath?: string\n filtersPrefix?: string\n reportType?: ReportType\n }) {\n this.selectedPage = queryParams['selectedPage'] ? Number(queryParams['selectedPage']) : 1\n this.pageSize = this.getPageSize(queryParams, template, reportType)\n this.sortColumn = queryParams['sortColumn']\n ? queryParams['sortColumn'].toString()\n : this.getDefaultSortColumn(fields)\n this.sortedAsc
|
|
5
|
-
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,EAAA,gBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAL,GAIA,IAAAM,EAAiC,8BACjCC,EAAwB,+DAExBC,EAA2B,yBAEpB,MAAMN,EAAyB,WAEtC,MAAMC,CAA2C,CAiB/C,YAAY,CACV,OAAAM,EACA,SAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,cAAAC,EAAgBX,EAChB,WAAAY,CACF,EAOG,
|
|
6
|
-
"names": ["ReportQuery_exports", "__export", "DEFAULT_FILTERS_PREFIX", "ReportQuery", "ReportQuery_default", "__toCommonJS", "import_urlHelper", "import_utils", "import_UserReports", "fields", "template", "queryParams", "definitionsPath", "filtersPrefix", "reportType", "columns", "ColumnUtils", "f", "dateField", "min", "max", "key", "filter", "p", "value", "defaultSortColumn", "pageSize", "removeClearedFilters", "record", "filterName"]
|
|
4
|
+
"sourcesContent": ["import type { ParsedQs } from 'qs'\nimport { FilteredListRequest } from './index'\nimport Dict = NodeJS.Dict\nimport { components } from './api'\nimport { clearFilterValue } from '../utils/urlHelper'\nimport ColumnUtils from '../components/_reports/report-columns-form/utils'\nimport { Template } from './Templates'\nimport { ReportType } from './UserReports'\n\nexport const DEFAULT_FILTERS_PREFIX = 'filters.'\n\nclass ReportQuery implements FilteredListRequest {\n selectedPage: number\n\n pageSize: number\n\n sortColumn?: string | undefined\n\n columns: Array<string>\n\n sortedAsc: boolean\n\n filters: Dict<string>\n\n filtersPrefix: string\n\n dataProductDefinitionsPath?: string | undefined\n\n constructor({\n fields,\n template,\n queryParams,\n definitionsPath,\n filtersPrefix = DEFAULT_FILTERS_PREFIX,\n reportType,\n }: {\n fields: components['schemas']['FieldDefinition'][]\n template?: Template\n queryParams: ParsedQs\n definitionsPath?: string\n filtersPrefix?: string\n reportType?: ReportType\n }) {\n this.selectedPage = queryParams['selectedPage'] ? Number(queryParams['selectedPage']) : 1\n this.pageSize = this.getPageSize(queryParams, template, reportType)\n\n this.sortColumn = queryParams['sortColumn']\n ? queryParams['sortColumn'].toString()\n : this.getDefaultSortColumn(fields)\n\n this.sortedAsc =\n queryParams['sortedAsc'] !== undefined\n ? queryParams['sortedAsc'] !== 'false'\n : this.getDefaultSortDirection(fields)\n\n this.dataProductDefinitionsPath =\n definitionsPath ??\n (queryParams['dataProductDefinitionsPath'] ? queryParams['dataProductDefinitionsPath'].toString() : undefined)\n\n this.filtersPrefix = filtersPrefix\n\n if (queryParams['columns']) {\n const columns =\n typeof queryParams['columns'] === 'string'\n ? queryParams['columns'].split(',')\n : (queryParams['columns'] as string[])\n this.columns = ColumnUtils.ensureMandatoryColumns(fields, columns)\n } else {\n this.columns = fields.filter((f) => f.visible).map((f) => f.name)\n }\n\n const dateField: components['schemas']['FieldDefinition'] | undefined = fields.find((f) => {\n return (\n (f.type === 'date' && f.filter && f.filter.type === 'daterange') ||\n (f.type === 'date' && f.filter && f.filter.type === 'date')\n )\n })\n\n let min: string | undefined\n let max: string | undefined\n if (dateField && dateField.filter) {\n min = dateField.filter.min\n max = dateField.filter.max\n }\n\n this.filters = {}\n\n Object.keys(queryParams)\n .filter((key) => key.startsWith(this.filtersPrefix))\n .filter((key) => queryParams[key])\n .forEach((key) => {\n const filter = key.replace(this.filtersPrefix, '')\n const p = queryParams[key]\n let value = p ? p.toString() : ''\n if (filter.includes('.start') && min) {\n if (new Date(value) < new Date(min)) value = min\n }\n if (filter.includes('.end') && max) {\n if (new Date(value) > new Date(max)) value = max\n }\n if (value !== 'no-filter') {\n this.filters[filter] = value\n }\n })\n\n if (dateField && dateField.filter && dateField.filter.type === 'daterange') {\n if (\n min &&\n Object.keys(queryParams).some((key) => key.includes(this.filtersPrefix)) &&\n Object.keys(queryParams).every((key) => !key.includes('.start'))\n ) {\n this.filters[`${dateField.name}.start`] = min\n }\n\n if (\n max &&\n Object.keys(queryParams).some((key) => key.includes(this.filtersPrefix)) &&\n Object.keys(queryParams).every((key) => !key.includes('.end'))\n ) {\n this.filters[`${dateField.name}.end`] = max\n }\n }\n\n if (dateField && dateField.filter && dateField.filter.type === 'date') {\n if (\n min &&\n Object.keys(queryParams).some((key) => key.includes(this.filtersPrefix)) &&\n Object.keys(queryParams).every((key) => !key.includes(dateField.name))\n ) {\n this.filters[`${dateField.name}.start`] = min\n }\n }\n }\n\n private getDefaultSortColumn(fields: components['schemas']['FieldDefinition'][]) {\n const defaultSortColumn = fields.find((f) => f.defaultsort)\n return defaultSortColumn ? defaultSortColumn.name : fields.find((f) => f.sortable)?.name\n }\n\n private getDefaultSortDirection(fields: components['schemas']['FieldDefinition'][]) {\n const field = fields.find((f) => f.defaultsort)\n if (field) {\n return field.sortDirection ? field.sortDirection === 'asc' : true\n }\n return true\n }\n\n getPageSize(queryParams: ParsedQs, template?: Template, reportType?: ReportType): number {\n let pageSize = 5000000\n if (!reportType || reportType === ReportType.REPORT) {\n if (queryParams['pageSize']) {\n pageSize = Number(queryParams['pageSize'])\n } else if (template) {\n pageSize = this.getDefaultPageSize(template)\n }\n }\n return pageSize\n }\n\n toRecordWithFilterPrefix(removeClearedFilters = false): Record<string, string | Array<string>> {\n const record: Record<string, string | Array<string>> = {\n selectedPage: this.selectedPage.toString(),\n ...(this.pageSize && { pageSize: this.pageSize.toString() }),\n ...(this.sortColumn && { sortColumn: this.sortColumn }),\n sortedAsc: this.sortedAsc.toString(),\n columns: this.columns,\n }\n\n if (this.dataProductDefinitionsPath) {\n record['dataProductDefinitionsPath'] = this.dataProductDefinitionsPath\n }\n\n Object.keys(this.filters).forEach((filterName) => {\n const value = this.filters[filterName]\n if ((value && !removeClearedFilters) || value !== clearFilterValue) {\n record[`${this.filtersPrefix}${filterName}`] = <string>value\n }\n })\n\n return record\n }\n\n private getDefaultPageSize(template: Template) {\n const maxResultsSize = 500000\n const standardPage = 20\n\n switch (template) {\n case 'list-section':\n case 'summary-section':\n case 'row-section-child':\n case 'parent-child':\n case 'parent-child-section':\n return maxResultsSize\n\n default:\n return standardPage\n }\n }\n}\n\nexport { ReportQuery }\nexport default ReportQuery\n"],
|
|
5
|
+
"mappings": "0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,4BAAAE,EAAA,gBAAAC,EAAA,YAAAC,IAAA,eAAAC,EAAAL,GAIA,IAAAM,EAAiC,8BACjCC,EAAwB,+DAExBC,EAA2B,yBAEpB,MAAMN,EAAyB,WAEtC,MAAMC,CAA2C,CAiB/C,YAAY,CACV,OAAAM,EACA,SAAAC,EACA,YAAAC,EACA,gBAAAC,EACA,cAAAC,EAAgBX,EAChB,WAAAY,CACF,EAOG,CAmBD,GAlBA,KAAK,aAAeH,EAAY,aAAkB,OAAOA,EAAY,YAAe,EAAI,EACxF,KAAK,SAAW,KAAK,YAAYA,EAAaD,EAAUI,CAAU,EAElE,KAAK,WAAaH,EAAY,WAC1BA,EAAY,WAAc,SAAS,EACnC,KAAK,qBAAqBF,CAAM,EAEpC,KAAK,UACHE,EAAY,YAAiB,OACzBA,EAAY,YAAiB,QAC7B,KAAK,wBAAwBF,CAAM,EAEzC,KAAK,2BACHG,IACCD,EAAY,2BAAgCA,EAAY,2BAA8B,SAAS,EAAI,QAEtG,KAAK,cAAgBE,EAEjBF,EAAY,QAAY,CAC1B,MAAMI,EACJ,OAAOJ,EAAY,SAAe,SAC9BA,EAAY,QAAW,MAAM,GAAG,EAC/BA,EAAY,QACnB,KAAK,QAAU,EAAAK,QAAY,uBAAuBP,EAAQM,CAAO,CACnE,MACE,KAAK,QAAUN,EAAO,OAAQQ,GAAMA,EAAE,OAAO,EAAE,IAAKA,GAAMA,EAAE,IAAI,EAGlE,MAAMC,EAAkET,EAAO,KAAMQ,GAEhFA,EAAE,OAAS,QAAUA,EAAE,QAAUA,EAAE,OAAO,OAAS,aACnDA,EAAE,OAAS,QAAUA,EAAE,QAAUA,EAAE,OAAO,OAAS,MAEvD,EAED,IAAIE,EACAC,EACAF,GAAaA,EAAU,SACzBC,EAAMD,EAAU,OAAO,IACvBE,EAAMF,EAAU,OAAO,KAGzB,KAAK,QAAU,CAAC,EAEhB,OAAO,KAAKP,CAAW,EACpB,OAAQU,GAAQA,EAAI,WAAW,KAAK,aAAa,CAAC,EAClD,OAAQA,GAAQV,EAAYU,CAAG,CAAC,EAChC,QAASA,GAAQ,CAChB,MAAMC,EAASD,EAAI,QAAQ,KAAK,cAAe,EAAE,EAC3CE,EAAIZ,EAAYU,CAAG,EACzB,IAAIG,EAAQD,EAAIA,EAAE,SAAS,EAAI,GAC3BD,EAAO,SAAS,QAAQ,GAAKH,GAC3B,IAAI,KAAKK,CAAK,EAAI,IAAI,KAAKL,CAAG,IAAGK,EAAQL,GAE3CG,EAAO,SAAS,MAAM,GAAKF,GACzB,IAAI,KAAKI,CAAK,EAAI,IAAI,KAAKJ,CAAG,IAAGI,EAAQJ,GAE3CI,IAAU,cACZ,KAAK,QAAQF,CAAM,EAAIE,EAE3B,CAAC,EAECN,GAAaA,EAAU,QAAUA,EAAU,OAAO,OAAS,cAE3DC,GACA,OAAO,KAAKR,CAAW,EAAE,KAAMU,GAAQA,EAAI,SAAS,KAAK,aAAa,CAAC,GACvE,OAAO,KAAKV,CAAW,EAAE,MAAOU,GAAQ,CAACA,EAAI,SAAS,QAAQ,CAAC,IAE/D,KAAK,QAAQ,GAAGH,EAAU,IAAI,QAAQ,EAAIC,GAI1CC,GACA,OAAO,KAAKT,CAAW,EAAE,KAAMU,GAAQA,EAAI,SAAS,KAAK,aAAa,CAAC,GACvE,OAAO,KAAKV,CAAW,EAAE,MAAOU,GAAQ,CAACA,EAAI,SAAS,MAAM,CAAC,IAE7D,KAAK,QAAQ,GAAGH,EAAU,IAAI,MAAM,EAAIE,IAIxCF,GAAaA,EAAU,QAAUA,EAAU,OAAO,OAAS,QAE3DC,GACA,OAAO,KAAKR,CAAW,EAAE,KAAMU,GAAQA,EAAI,SAAS,KAAK,aAAa,CAAC,GACvE,OAAO,KAAKV,CAAW,EAAE,MAAOU,GAAQ,CAACA,EAAI,SAASH,EAAU,IAAI,CAAC,IAErE,KAAK,QAAQ,GAAGA,EAAU,IAAI,QAAQ,EAAIC,EAGhD,CAEQ,qBAAqBV,EAAoD,CAC/E,MAAMgB,EAAoBhB,EAAO,KAAMQ,GAAMA,EAAE,WAAW,EAC1D,OAAOQ,EAAoBA,EAAkB,KAAOhB,EAAO,KAAMQ,GAAMA,EAAE,QAAQ,GAAG,IACtF,CAEQ,wBAAwBR,EAAoD,CAClF,MAAMiB,EAAQjB,EAAO,KAAMQ,GAAMA,EAAE,WAAW,EAC9C,OAAIS,GACKA,EAAM,cAAgBA,EAAM,gBAAkB,MAEhD,EACT,CAEA,YAAYf,EAAuBD,EAAqBI,EAAiC,CACvF,IAAIa,EAAW,IACf,OAAI,CAACb,GAAcA,IAAe,aAAW,UACvCH,EAAY,SACdgB,EAAW,OAAOhB,EAAY,QAAW,EAChCD,IACTiB,EAAW,KAAK,mBAAmBjB,CAAQ,IAGxCiB,CACT,CAEA,yBAAyBC,EAAuB,GAA+C,CAC7F,MAAMC,EAAiD,CACrD,aAAc,KAAK,aAAa,SAAS,EACzC,GAAI,KAAK,UAAY,CAAE,SAAU,KAAK,SAAS,SAAS,CAAE,EAC1D,GAAI,KAAK,YAAc,CAAE,WAAY,KAAK,UAAW,EACrD,UAAW,KAAK,UAAU,SAAS,EACnC,QAAS,KAAK,OAChB,EAEA,OAAI,KAAK,6BACPA,EAAO,2BAAgC,KAAK,4BAG9C,OAAO,KAAK,KAAK,OAAO,EAAE,QAASC,GAAe,CAChD,MAAMN,EAAQ,KAAK,QAAQM,CAAU,GAChCN,GAAS,CAACI,GAAyBJ,IAAU,sBAChDK,EAAO,GAAG,KAAK,aAAa,GAAGC,CAAU,EAAE,EAAYN,EAE3D,CAAC,EAEMK,CACT,CAEQ,mBAAmBnB,EAAoB,CAI7C,OAAQA,EAAU,CAChB,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,eACL,IAAK,uBACH,MAAO,KAET,QACE,MAAO,GACX,CACF,CACF,CAGA,IAAON,EAAQD",
|
|
6
|
+
"names": ["ReportQuery_exports", "__export", "DEFAULT_FILTERS_PREFIX", "ReportQuery", "ReportQuery_default", "__toCommonJS", "import_urlHelper", "import_utils", "import_UserReports", "fields", "template", "queryParams", "definitionsPath", "filtersPrefix", "reportType", "columns", "ColumnUtils", "f", "dateField", "min", "max", "key", "filter", "p", "value", "defaultSortColumn", "field", "pageSize", "removeClearedFilters", "record", "filterName"]
|
|
7
7
|
}
|
package/dpr/types/ReportQuery.ts
CHANGED
|
@@ -43,13 +43,20 @@ class ReportQuery implements FilteredListRequest {
|
|
|
43
43
|
}) {
|
|
44
44
|
this.selectedPage = queryParams['selectedPage'] ? Number(queryParams['selectedPage']) : 1
|
|
45
45
|
this.pageSize = this.getPageSize(queryParams, template, reportType)
|
|
46
|
+
|
|
46
47
|
this.sortColumn = queryParams['sortColumn']
|
|
47
48
|
? queryParams['sortColumn'].toString()
|
|
48
49
|
: this.getDefaultSortColumn(fields)
|
|
49
|
-
|
|
50
|
+
|
|
51
|
+
this.sortedAsc =
|
|
52
|
+
queryParams['sortedAsc'] !== undefined
|
|
53
|
+
? queryParams['sortedAsc'] !== 'false'
|
|
54
|
+
: this.getDefaultSortDirection(fields)
|
|
55
|
+
|
|
50
56
|
this.dataProductDefinitionsPath =
|
|
51
57
|
definitionsPath ??
|
|
52
58
|
(queryParams['dataProductDefinitionsPath'] ? queryParams['dataProductDefinitionsPath'].toString() : undefined)
|
|
59
|
+
|
|
53
60
|
this.filtersPrefix = filtersPrefix
|
|
54
61
|
|
|
55
62
|
if (queryParams['columns']) {
|
|
@@ -130,6 +137,14 @@ class ReportQuery implements FilteredListRequest {
|
|
|
130
137
|
return defaultSortColumn ? defaultSortColumn.name : fields.find((f) => f.sortable)?.name
|
|
131
138
|
}
|
|
132
139
|
|
|
140
|
+
private getDefaultSortDirection(fields: components['schemas']['FieldDefinition'][]) {
|
|
141
|
+
const field = fields.find((f) => f.defaultsort)
|
|
142
|
+
if (field) {
|
|
143
|
+
return field.sortDirection ? field.sortDirection === 'asc' : true
|
|
144
|
+
}
|
|
145
|
+
return true
|
|
146
|
+
}
|
|
147
|
+
|
|
133
148
|
getPageSize(queryParams: ParsedQs, template?: Template, reportType?: ReportType): number {
|
|
134
149
|
let pageSize = 5000000
|
|
135
150
|
if (!reportType || reportType === ReportType.REPORT) {
|
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.22.
|
|
4
|
+
"version": "4.22.2",
|
|
5
5
|
"main": "dpr/all.mjs",
|
|
6
6
|
"sass": "dpr/all.scss",
|
|
7
7
|
"engines": {
|