@ministryofjustice/hmpps-digital-prison-reporting-frontend 4.22.0 → 4.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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": "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,+BAc3BC,EAAoD,mCAEpDC,EAAiC,uCACjCA,EAAgC,0CAChCA,EAA2B,0CAC3BA,EAAwC,mDACxCA,EAA8B,uDAC9BA,EAA6B,4CAE7BC,EAAgC,+DAChCC,EAAmC,oCAEnCC,EAA4B,6BAC5BC,EAAyB,uCAUlB,MAAMT,EAA6B,CACxCU,EACAC,EACAC,EAAS,aACS,CAClB,KAAM,CAAE,eAAAC,CAAe,EAAIF,EAAI,MAE/B,OAAI,OAAO,KAAKA,EAAI,KAAK,EAAE,MAAOG,GAAQ,CAACA,EAAI,SAASF,CAAM,CAAC,GAAK,CAACC,EAC5DH,EAGFA,EAAQ,IAAKK,GAAwB,CAC1C,IAAIC,EACAC,EACAC,EAGJ,OADaH,EAAO,KAAK,YAAY,EACvB,CACZ,KAAK,aAAW,UAAU,YAAY,EACpCC,EAAqB,EAAAG,QAAoB,oBAA0CJ,EAAQJ,EAAKC,CAAM,EACtG,MAEF,KAAK,aAAW,kBAAkB,YAAY,EAC5CI,EAAqB,EAAAI,QAA4B,oBACjBL,EAC9BJ,EACAC,CACF,EACA,MAEF,KAAK,aAAW,KAAK,YAAY,EAC/BI,EAAqB,EAAAK,QAAe,oBAAqCN,EAAQJ,EAAKC,CAAM,EAC5F,MAEF,KAAK,aAAW,YAAY,YAAY,GACpC,CAAE,mBAAAI,EAAoB,oBAAAC,CAAoB,EAAI,EAAAK,QAAiB,oBACvCP,EACxBJ,EACAC,CACF,GACA,MAEF,KAAK,aAAW,aAAa,YAAY,EAAG,EACxC,CAAE,mBAAAI,EAAoB,mBAAAE,CAAmB,EAAI,EAAAK,QAAkB,oBACvCR,EACxBJ,EACAC,CACF,GACA,KACF,CAEA,QACEI,EAA6BL,EAAI,MAAM,GAAGC,CAAM,GAAGG,EAAO,IAAI,EAAE,EAChE,KACJ,CAEA,IAAIS,EAAyB,KAC7B,OAAIR,EACFQ,EAAQR,EACCH,IACTW,EAAQ,IAGH,CACL,GAAGT,EACH,MAAAS,EACA,GAAIP,GAAuB,CAAE,OAAQA,CAAoB,EACzD,GAAIC,GAAsB,CAAE,sBAAuBA,CAAmB,CACxE,CACF,CAAC,CACH,EAEanB,EAAqC,CAChD0B,EACAC,IACG,CACH,IAAIC,EAA2DF,EAAO,OAAQG,GAAMA,EAAE,MAAM,EAC5F,OAAIF,IACFC,EAAeA,EAAa,OACzBC,GAA8EA,EAAE,OAAQ,WAC3F,GAGKD,EACJ,OAAQE,GAAUA,EAAM,SAAW,MAAS,EAC5C,OAAQA,GAAsDA,EAAM,OAAQ,eAAiB,MAAS,EACtG,IAAKA,GAAU,CACd,MAAMd,EAAoDc,EAAM,OAGhE,OAFad,EAAO,KAAK,kBAAkB,EAE7B,CACZ,KAAK,aAAW,UAAU,YAAY,EACpC,OAAO,EAAAI,QAAoB,uBAAuBJ,EAAQc,EAAM,KAAM,wBAAsB,EAE9F,KAAK,aAAW,YAAY,YAAY,EACtC,OAAO,EAAAP,QAAiB,uBAAuBP,EAAQc,EAAM,KAAM,wBAAsB,EAE3F,KAAK,aAAW,kBAAkB,YAAY,EAAG,CAC/C,MAAMC,EAAiB,EAAAX,QAAoB,uBAAuBJ,EAAQc,EAAM,KAAM,wBAAsB,EAC5G,OAAO,EAAAT,QAA4B,uBACjCL,EAIAc,EAAM,KACN,yBACAC,CACF,CACF,CAEA,QACE,MAAO,GAAG,wBAAsB,GAAGD,EAAM,IAAI,IAAId,EAAO,YAAY,EACxE,CACF,CAAC,EACA,KAAK,GAAG,CACb,EAEanB,EAA2B,CACtC6B,EACAC,IACkB,CAClB,MAAMhB,EAAUe,EACb,OAAQG,GAAMA,EAAE,MAAM,EACtB,OAAQA,GACHF,IAAgB,OACdE,EAAE,QAAQ,cAAgB,OACrB,CAACF,EAEHA,IAAgBE,EAAE,OAAO,YAE3B,EACR,EACA,IAAKA,GAAM,CACV,KAAM,CAAE,QAASG,EAAM,KAAAC,CAAK,EAAIJ,EAC1Bb,EAAoDa,EAAE,OACtD,CAAE,KAAAK,EAAM,cAAAC,EAAe,eAAAC,EAAgB,aAAAC,EAAc,UAAAC,EAAW,QAAAC,EAAS,MAAAC,CAAM,EAAIxB,EAEnFyB,EAA0BN,EAC5BA,EAAc,IAAKO,IACV,CAAE,MAAOA,EAAI,KAAM,KAAMA,EAAI,OAAQ,EAC7C,EACD,CAAC,EAEL,IAAIC,EAA0B,CAC5B,KAAAX,EACA,KAAAC,EACA,KAAMC,EACN,MAAOG,GAAgB,KACvB,UAAWC,GAAa,GACxB,cAAeF,GAAgB,cAC/B,QAAAG,EACA,MAAAC,CACF,EAEA,MAAMI,EAAiB,CACrB,MAAO,YACP,KAAM,OACN,SAAU,EACZ,EAEA,OAAQV,EAAM,CACZ,KAAK,aAAW,aAAa,YAAY,EACvCS,EAAa,CACX,GAAGA,EACH,QAAAF,CACF,EACA,MAEF,KAAK,aAAW,MACTH,GAAWG,EAAQ,QAAQG,CAAc,EAC9CD,EAAa,CACX,GAAGA,EACH,QAAAF,CACF,EACA,MAEF,KAAK,aAAW,OAAQ,CACjBH,GAAWG,EAAQ,QAAQG,CAAc,EAC9CH,EAAQ,QAAQ,CACd,MAAO,GACP,KAAM,qBACN,SAAU,GACV,SAAU,EACZ,CAAC,EAEDE,EAAa,CACX,GAAGA,EACH,QAAAF,CACF,EACA,KACF,CAEA,KAAK,aAAW,YAAY,YAAY,EACtCE,EAAa,CACX,GAAGA,EACH,QAAAF,EACA,OAAQJ,EAAeA,EAAa,MAAM,GAAG,EAAI,CAAC,CACpD,EACA,MAEF,KAAK,aAAW,UAAU,YAAY,EACpCM,EAAa,EAAAvB,QAAoB,wBAAwBJ,EAAQ2B,CAAU,EAC3E,MAEF,KAAK,aAAW,KAAK,YAAY,EAC/BA,EAAa,EAAArB,QAAe,wBAAwBN,EAAQ2B,CAAU,EACtE,MAEF,KAAK,aAAW,kBAAkB,kBAAkB,EAAG,CACrDA,EAAa,EAAAtB,QAA4B,wBAAwBL,EAAQ2B,CAAU,EACnF,KACF,CAEA,QACE,KACJ,CAEA,OAAOA,CACT,CAAC,EAGH,OADuBE,EAAalC,CAAO,CAE7C,EAEMkC,EAAgBC,GAAgC,CACpD,MAAMC,EAAiBD,EAAa,OAAQjB,GAAMA,EAAE,QAAU,MAAS,EAEvE,OADqBiB,EAAa,OAAQjB,GAAMA,EAAE,QAAU,MAAS,EACxD,QAASA,GAAM,CACtBA,EAAE,QAAU,QAAWkB,EAAe,OAAOlB,EAAE,MAAO,EAAGA,CAAC,CAChE,CAAC,EACMkB,CACT,EAEa7C,EAAkC,CAAC4C,EAA6BE,EAAU,KAChEF,EAClB,OAAQG,GAAOA,EAAG,KAAK,EACvB,OAAO,CAACC,EAAKC,IAAS,CACrB,KAAM,CAAE,MAAA1B,EAAO,KAAAQ,EAAM,KAAAC,CAAK,EAAIiB,EACxBC,EAAe,WAAWnB,CAAI,GACpC,OAAQC,EAAM,CACZ,KAAK,aAAW,kBAAkB,YAAY,EAC5C,CACE,MAAMmB,EAA4C5B,EAClD,OAAO,KAAK4B,CAAsB,EAAE,QAAStC,GAAQ,CACnD,IAAIuC,EAAID,EAAuBtC,CAA8B,EACzDA,EAAI,SAAS,aAAa,EAC5BmC,EAAM,CACJ,GAAGA,CACL,IAEInC,EAAI,SAAS,aAAa,GAAKA,EAAI,SAAS,aAAa,KAC3DuC,EAA4EA,EAAG,OAEjFJ,EAAM,CACJ,GAAGA,EACH,CAAC,GAAGE,CAAY,IAAIrC,CAAG,EAAE,EAAGuC,CAC9B,EAEJ,CAAC,CACH,CACA,MACF,KAAK,aAAW,UAAU,YAAY,EAChC7B,GACF,OAAO,KAAKA,CAAK,EAAE,QAASV,GAAQ,CAClC,MAAMwC,EAAU,CAACP,GAAWjC,EAAI,SAAS,UAAU,EAAI,OAAY,GAAGqC,CAAY,IAAIrC,CAAG,GACnFyC,EAAY/B,EAAMV,CAA4B,EAChDwC,IACFL,EAAM,CACJ,GAAGA,EACH,CAAC,GAAGK,CAAO,EAAE,EAAGC,CAClB,EAEJ,CAAC,EAEH,MACF,KAAK,aAAW,YAAY,YAAY,EACtCN,EAAM,CACJ,GAAGA,EACH,CAAC,GAAGE,CAAY,EAAE,EAAY3B,EAAO,MAAM,GAAG,CAChD,EACA,MACF,QACEyB,EAAM,CACJ,GAAGA,EACH,CAAC,GAAGE,CAAY,EAAE,EAAG3B,CACvB,EACA,KACJ,CACA,OAAOyB,CACT,EAAG,CAAC,CAAC,EAKInD,EAA6B,CACxC0D,EACAC,EACAC,EACAC,IACG,CACH,MAAMC,EAAyC,CAAC,EAC1C,CAAE,cAAAC,CAAc,EAAIJ,EACpBhC,EAASoC,EAAgBA,EAAc,OAAS,CAAC,EACjD,CAAE,eAAAhD,CAAe,EAAI8C,EAAQ,MA4BnC,GA3B0B,OAAO,KAAKH,EAAY,OAAO,EAAE,SAAW,GAAK,CAAC3C,GAE1EY,EACG,OAAQG,GAAMA,EAAE,QAAUA,EAAE,OAAO,YAAY,EAC/C,QAASA,GAAM,CACd,KAAM,CAAE,OAAAb,CAAO,EAAIa,EACnB,GAAIb,EACF,GAAIA,EAAO,KAAK,YAAY,IAAM,aAAW,UAAU,YAAY,EAAG,CACpE,KAAM,CAAE,aAAAqB,CAAa,EAA+CrB,EAC9D+C,EAAQ1B,EAAeA,EAAa,MAAM,KAAK,EAAI,GAErD0B,EAAM,QAAU,IAElBF,EAAe,GAAG,wBAAsB,GAAGhC,EAAE,IAAI,QAAQ,EAAIkC,EAAM,CAAC,EAEhEA,EAAM,QAAU,IAElBF,EAAe,GAAG,wBAAsB,GAAGhC,EAAE,IAAI,MAAM,EAAIkC,EAAM,CAAC,GAGxE,MACEF,EAAe,GAAG,wBAAsB,GAAGhC,EAAE,IAAI,EAAE,EAAIb,EAAO,cAAgB,EAGpF,CAAC,EAGD,OAAO,KAAK6C,CAAc,EAAE,OAAS,EAAG,CAC1C,MAAMG,KAAc,EAAAC,SAAuBR,EAAY,yBAAyB,EAAGI,EAAgBnC,CAAM,EACzG,OAAAiC,EAAS,SAAS,GAAGC,EAAQ,OAAO,GAAGA,EAAQ,IAAI,GAAGI,CAAW,EAAE,EAC5D,EACT,CAEA,MAAO,EACT,EAEalE,EAAyB,MACpCa,EACAC,EACAsD,EACAC,EACAC,IACG,CACH,KAAM,CAAE,SAAAC,EAAU,GAAAC,CAAG,EAAI1D,EAAI,OACvB,CAAE,QAAA2D,CAAQ,EAAI,EAAAC,QAAa,UAAUN,CAAG,EACxCO,EAAsB,MAAMN,EAAS,2BAA2B,IAAII,EAAQ,GAAIF,EAAUC,EAAIF,CAAW,EAC/G,IAAIP,EAAiBlD,EACrB,OAAI8D,IAEFZ,EAD4B,EAAAa,QAAoB,iCAAiC/D,EAAS,CAAC,EAAG8D,CAAmB,EAC5E,SAGhC,CAAE,QAASZ,EAAgB,oBAAAY,CAAoB,CACxD,EAEa7E,EAAa,MAAO,CAC/B,OAAA8B,EACA,IAAAd,EACA,IAAAsD,EACA,OAAArD,EAAS,WACT,SAAAsD,EACA,YAAAC,CACF,IAOM,CAEJ,IAAIzD,EAAU,MAAMd,EAAyB6B,EAAQ0C,IAAgB,cAAY,WAAW,EAExFO,EACAC,EAAkB,GACtB,GAAIT,GAAYD,GAAOA,EAAI,OAAO,oBAAwB,CAExD,KAAM,CAAE,QAASW,EAA0B,oBAAAJ,CAAoB,EAAI,MAAM3E,EACvEa,EACAC,EACAsD,EACAC,EACAC,CACF,EACAzD,EAAUkE,EACVF,EAAcF,GAAuBA,EAAoB,OAAS,EAClEG,EAAkB,EACpB,CAGIhE,EAAI,QACND,EAAUV,EAA2BU,EAASC,CAAG,GAInD,MAAMkE,EAAkB,EAAAC,QAAqB,mBAAmBpE,EAASE,CAAM,EAE/E,MAAO,CACL,QAAAF,EACA,gBAAAmE,EACA,YAAAH,EACA,gBAAAC,CACF,CACF,EAEA,IAAOjF,EAAQ,CACb,yBAAAE,EACA,2BAAAI,EACA,WAAAL,EACA,mCAAAI,EACA,2BAAAD,EACA,gCAAAG,EACA,uBAAAJ,CACF",
|
|
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/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.1",
|
|
5
5
|
"main": "dpr/all.mjs",
|
|
6
6
|
"sass": "dpr/all.scss",
|
|
7
7
|
"engines": {
|