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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dpr/components/_charts/chart/heatmap/Heatmap.js +2 -0
  2. package/dpr/components/_charts/chart/heatmap/Heatmap.js.map +7 -0
  3. package/dpr/components/_charts/chart/heatmap/Heatmap.ts +278 -0
  4. package/dpr/components/_charts/utils.js +1 -1
  5. package/dpr/components/_charts/utils.js.map +3 -3
  6. package/dpr/components/_charts/utils.ts +2 -2
  7. package/dpr/components/_dashboards/dashboard/types.js +1 -1
  8. package/dpr/components/_dashboards/dashboard/types.js.map +2 -2
  9. package/dpr/components/_dashboards/dashboard/types.ts +8 -0
  10. package/dpr/components/_dashboards/dashboard-list/utils.js +1 -1
  11. package/dpr/components/_dashboards/dashboard-list/utils.js.map +3 -3
  12. package/dpr/components/_dashboards/dashboard-list/utils.ts +3 -2
  13. package/dpr/components/user-reports/utils.js +1 -1
  14. package/dpr/components/user-reports/utils.js.map +3 -3
  15. package/dpr/components/user-reports/utils.ts +13 -3
  16. package/dpr/routes/journeys/view-report/async/report/tests.cy.js +1 -1
  17. package/dpr/routes/journeys/view-report/async/report/tests.cy.js.map +2 -2
  18. package/dpr/routes/journeys/view-report/async/report/tests.cy.ts +44 -8
  19. package/dpr/routes/journeys/view-report/utils.js +1 -1
  20. package/dpr/routes/journeys/view-report/utils.js.map +3 -3
  21. package/dpr/routes/journeys/view-report/utils.ts +6 -1
  22. package/dpr/utils/DataTableBuilder/DataTableBuilder.js +1 -1
  23. package/dpr/utils/DataTableBuilder/DataTableBuilder.js.map +2 -2
  24. package/dpr/utils/DataTableBuilder/DataTableBuilder.ts +37 -19
  25. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js +1 -1
  26. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.js.map +2 -2
  27. package/dpr/utils/ParentChildDataTableBuilder/ParentChildDataTableBuilder.ts +6 -3
  28. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.js.map +2 -2
  29. package/dpr/utils/SectionedDataTableBuilder/SectionedDataTableBuilder.ts +5 -2
  30. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js +1 -1
  31. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.js.map +2 -2
  32. package/dpr/utils/SummaryDataTableBuilder/SummaryDataTableBuilder.ts +2 -1
  33. package/dpr/utils/UserStoreItemBuilder.js.map +1 -1
  34. package/dpr/utils/UserStoreItemBuilder.ts +1 -1
  35. package/package.json +1 -1
  36. package/dpr/components/_charts/chart/heatmap/utils.js +0 -2
  37. package/dpr/components/_charts/chart/heatmap/utils.js.map +0 -7
  38. package/dpr/components/_charts/chart/heatmap/utils.ts +0 -182
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/dpr/routes/journeys/view-report/async/report/tests.cy.ts"],
4
- "sourcesContent": ["import { checkSelectedFilterValues, requestReport } from '../../../../../../../cypress-tests/cypressUtils'\nimport DateMapper from '../../../../../utils/DateMapper/DateMapper'\n\ncontext('Viewing a report', () => {\n const path = '/embedded/platform/'\n let viewReportUrl: string\n let tableId: string\n\n describe('List report page', () => {\n before(() => {\n cy.task('resetStubs')\n cy.task('resetRedis')\n cy.task('stubDefinitions')\n cy.task('stubReportStatusMock')\n cy.task('stubReportsFinishedStatus')\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubReportsFinishedStatus')\n cy.task('stubTestDashboard8')\n cy.task('stubMockDashboardsStatusFinished')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult10')\n cy.task('stubRequestSuccessReportTablesCount')\n cy.task('stubRequestSuccessResult100')\n cy.task('stubViewAsyncReportingResults')\n\n // Request and run a report so we can go back to it for each test\n requestReport({ name: 'Successful Report', description: 'this will succeed', path })\n cy.url().then((url) => {\n viewReportUrl = url\n const urlArr = url.split('/')\n tableId = urlArr[urlArr.length - 2]\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n describe('Report details', () => {\n it('should show the report details', () => {\n cy.findAllByRole('group').contains('Report details').should('be.visible').click()\n\n cy.findAllByRole('group')\n .contains('Report details')\n .parent()\n .parent()\n .within(() => {\n cy.findAllByRole('row').each((row, index) => {\n cy.wrap(row).within(() => {\n switch (index) {\n case 0:\n cy.findAllByRole('cell', { name: 'Name:' }).should('exist')\n cy.findAllByRole('cell', { name: 'Successful Report' }).should('exist')\n break\n case 1:\n cy.findAllByRole('cell', { name: 'Product:' }).should('exist')\n cy.findAllByRole('cell', { name: 'Successful Report' }).should('exist')\n break\n case 2:\n cy.findAllByRole('cell', { name: 'Description:' }).should('exist')\n cy.findAllByRole('cell', { name: 'this will succeed' }).should('exist')\n break\n case 3:\n cy.findAllByRole('cell', { name: 'Classification:' }).should('exist')\n cy.findAllByRole('cell', { name: 'OFFICIAL' }).should('exist')\n break\n case 4:\n cy.findAllByRole('cell', { name: 'Requested at:' }).should('exist')\n cy.findAllByRole('cell', { name: /\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}/ }).should('exist')\n break\n case 5:\n cy.findAllByRole('cell', { name: 'Applied Filters:' }).should('exist')\n cy.findAllByRole('listitem').each((item, i) => {\n switch (i) {\n case 0:\n cy.wrap(item).contains('Field 1: value1.2')\n break\n case 1:\n cy.wrap(item).contains('Field 3 start: 01/02/2003')\n break\n case 2:\n cy.wrap(item).contains('Field 3 end: 04/05/2006')\n break\n case 3:\n cy.wrap(item).contains('Field 7: 01/02/2005')\n break\n case 4:\n cy.wrap(item).contains('Field 8: value8.2,value8.3')\n break\n case 5:\n cy.wrap(item).contains('Sort column: Field 1')\n break\n case 6:\n cy.wrap(item).contains('Sort direction: Descending')\n break\n default:\n break\n }\n })\n break\n default:\n break\n }\n })\n })\n })\n })\n })\n\n describe('Actions', () => {\n it('should show the actions and go to the filters page when refresh action is clicked', () => {\n cy.findByLabelText('Refresh report').should('be.visible')\n cy.findByLabelText(/Print screen/)\n .should('be.visible')\n .should('be.disabled')\n cy.findByLabelText(/download/).should('be.visible')\n cy.findByLabelText(/Copy report link/).should('be.visible')\n cy.findByRole('button', { name: /Add bookmark/ }).should('be.visible')\n\n cy.findByLabelText('Refresh report').should('be.visible').click()\n cy.url().should(\n 'match',\n /.*\\/embedded\\/platform\\/dpr\\/request-report\\/report\\/request-examples\\/request-example-success\\/filters/i,\n )\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 describe('Column interactions', () => {\n const expectInitialisedColumns = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('not.be.checked')\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).not.to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).to.contain(`columns=field7`)\n expect(location.search).not.to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 5)\n })\n })\n })\n }\n\n const expectUpdatedColumns = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('be.checked')\n\n cy.location().should((location) => {\n expect(location.search).not.to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).not.to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).not.to.contain(`columns=field7`)\n expect(location.search).to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 4)\n })\n })\n })\n }\n\n const setColumnValues = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 5' }).check()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 8' }).check()\n }\n\n it('should initialise the column content correctly', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .should('be.visible')\n .click()\n expectInitialisedColumns()\n cy.findAllByRole('group').contains('Show columns (5 of 8 shown)')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 1')\n break\n case 1:\n cy.wrap(head).contains('Field 2')\n break\n case 2:\n cy.wrap(head).contains('Field 3')\n break\n case 3:\n cy.wrap(head).contains('Field 6')\n break\n case 4:\n cy.wrap(head).contains('Field 7')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should apply the columns', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n setColumnValues()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n\n expectUpdatedColumns()\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 2')\n break\n case 1:\n cy.wrap(head).contains('Field 5')\n break\n case 2:\n cy.wrap(head).contains('Field 6')\n break\n case 3:\n cy.wrap(head).contains('Field 8')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should reset the columns to their DPD defaults', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n setColumnValues()\n cy.findByRole('button', { name: 'Apply columns' }).click()\n expectUpdatedColumns()\n\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n cy.findByRole('link', { name: 'Reset columns' }).click()\n\n expectInitialisedColumns()\n })\n\n it('should apply the columns from the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?columns=field1&columns=field5&columns=field8`,\n )\n\n cy.findByRole('checkbox', { name: 'Field 1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('be.checked')\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 1')\n break\n case 1:\n cy.wrap(head).contains('Field 2')\n break\n case 2:\n cy.wrap(head).contains('Field 5')\n break\n case 3:\n cy.wrap(head).contains('Field 6')\n break\n case 4:\n cy.wrap(head).contains('Field 8')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should only apply mandatory columms', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('not.be.checked')\n\n cy.location().should((location) => {\n expect(location.search).not.to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).not.to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).not.to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).not.to.contain(`columns=field7`)\n expect(location.search).not.to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 2)\n })\n })\n })\n })\n })\n\n describe('Paging interaction', () => {\n it('should show the table totals', () => {\n cy.findAllByRole('paragraph')\n .contains(/Showing \\d{1,4} to \\d{1,4} of \\d{1,4} results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 20)\n })\n })\n })\n\n it('should change the page size', () => {\n cy.get('#page-size-select').select('10')\n cy.findAllByRole('paragraph')\n .contains(/Showing 1 to 10 of 100 results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 10)\n })\n })\n })\n\n it('should change the page size via the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?pageSize=100`,\n )\n cy.findAllByRole('paragraph')\n .contains(/100 total results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 100)\n })\n })\n })\n\n it('should change the page', () => {\n cy.findByLabelText('Page 5').click()\n cy.location().should((location) => {\n expect(location.search).to.contain(`selectedPage=5`)\n })\n })\n\n it('should change the page via the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?selectedPage=3`,\n )\n cy.findByRole('link', { current: 'page' }).contains('3')\n })\n })\n })\n\n describe('Interactive report', () => {\n const applyFilters = () => {\n cy.findByRole('button', { name: 'Apply filters' }).click()\n }\n\n const showFilters = () => {\n cy.findAllByRole('group')\n .contains(/Show filters/)\n .click()\n }\n\n before(() => {\n cy.task('resetStubs')\n cy.task('resetRedis')\n cy.task('stubDefinitions')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('stubReportStatusMock')\n cy.task('stubAsyncRequestSuccessReportTablesCount')\n cy.task('stubViewAsyncReportingResults')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult100')\n })\n\n describe('Apply filters', () => {\n before(() => {\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n const removeAllFilters = () => {\n for (let index = 0; index < 4; index += 1) {\n cy.findByLabelText('Selected filters').within(() => {\n cy.findAllByRole('link').first().click()\n })\n }\n }\n\n describe('Date range', () => {\n it('should apply the date range', () => {\n cy.findByRole('textbox', { name: 'From' }).should('have.value', '01/02/2003')\n cy.findByRole('textbox', { name: 'To' }).should('have.value', '04/05/2006')\n\n removeAllFilters()\n showFilters()\n\n cy.findByRole('textbox', { name: 'From' }).type('02/05/2025')\n cy.findByRole('textbox', { name: 'To' }).type('05/07/2025').blur()\n\n applyFilters()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field3.start=2025-05-02`)\n expect(location.search).to.contain(`filters.field3.end=2025-07-05`)\n })\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 3', value: '02/05/2025 - 05/07/2025' }] })\n })\n\n it('should apply the relative daterange', () => {\n removeAllFilters()\n showFilters()\n\n cy.findByRole('tab', { name: 'Preset date ranges' }).click()\n cy.findByRole('radio', { name: 'Tomorrow' }).check()\n\n applyFilters()\n\n let startValue: string\n let endValue: string\n cy.findByRole('textbox', { name: 'From' })\n .invoke('val')\n .should('not.be.empty')\n .then((val: string) => {\n startValue = val\n })\n cy.findByRole('textbox', { name: 'To' })\n .invoke('val')\n .should('not.be.empty')\n .then((val: string) => {\n endValue = val\n })\n\n const dateMapper = new DateMapper()\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field3.start=${dateMapper.toDateString(startValue, 'iso')}`)\n expect(location.search).to.contain(`filters.field3.end=${dateMapper.toDateString(endValue, 'iso')}`)\n expect(location.search).to.contain(`filters.field3.relative-duration=tomorrow`)\n })\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 3', value: 'Tomorrow' }] })\n })\n })\n\n describe('Multiselect', () => {\n it('should apply the multiselect values', () => {\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 8', value: 'Value 8.1, Value 8.3' }] })\n })\n\n it('should set the selected filter values correctly', () => {\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\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 applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('be.checked')\n\n checkSelectedFilterValues({\n length: 2,\n buttonValues: [{ key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' }],\n })\n })\n\n it('should set the values correctly when only one checkbox selected', () => {\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n checkSelectedFilterValues({\n length: 2,\n buttonValues: [{ key: 'Field 8', value: 'Value 8.1' }],\n })\n })\n })\n })\n\n describe('User defined interactive defaults', () => {\n const saveDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Save current filter values as defaults' })\n }\n const updateDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Update defaults' })\n }\n const deleteDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Delete defaults' })\n }\n\n const checkSelectedFiltersInUserReports = ({\n name,\n product,\n length,\n selectedFilters,\n }: {\n name: string\n product: string\n length: number\n selectedFilters: { key: string; value: string }[]\n }) => {\n cy.findByLabelText(/Viewed \\(/).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return element.textContent.includes(name) && element.textContent.includes(product)\n },\n }).within(() => {\n cy.findAllByRole('listitem')\n .should('have.length', length)\n .each((li, index) => {\n if (selectedFilters[index]) {\n const { key, value } = selectedFilters[index]\n cy.wrap(li).contains(key)\n cy.wrap(li).contains(value)\n }\n })\n })\n })\n }\n\n it('should save the interactive filters correctly', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the default filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.4' }).check()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.2')\n applyFilters()\n\n const selectedFiltersButtonValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n })\n\n it('should init the report with saved interactive defaults', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n const selectedFiltersButtonValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: selectedFiltersButtonValues,\n })\n })\n\n it('should reset the filter values to the saved defaults', () => {\n cy.visit(viewReportUrl)\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n const savedDefaultSelectedFilters = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: savedDefaultSelectedFilters,\n })\n\n // apply some filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n applyFilters()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.4' },\n ],\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.4' },\n ],\n })\n\n cy.visit(viewReportUrl)\n\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: savedDefaultSelectedFilters,\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: savedDefaultSelectedFilters,\n })\n })\n\n it('should update the filter values and init the report with the updated interactive defaults', () => {\n cy.visit(viewReportUrl)\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ],\n })\n\n // apply some filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n applyFilters()\n\n const expectedSelectedValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.4' },\n ]\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n updateDefaultsButton().click()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n\n // check the initial filter values match the default\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: expectedSelectedValues,\n })\n })\n\n it('should delete the saved defaults', () => {\n cy.visit(viewReportUrl)\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.4' },\n ],\n })\n\n deleteDefaultsButton().click()\n\n // Expect DPD defaults to be applied\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 4,\n selectedFilters: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n })\n\n describe('Input types', () => {\n describe('Relative date range', () => {\n it('should save the relative daterange', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('tab', { name: 'Preset date ranges' }).click()\n cy.findByRole('radio', { name: 'Tomorrow' }).check()\n applyFilters()\n\n const expectedUpdatedSelected = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: 'Tomorrow' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ]\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // request the report to check it defaults to saved\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n deleteDefaultsButton().click()\n })\n })\n\n describe('Multiselect', () => {\n it('should save a single multiselect value', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n applyFilters()\n\n const expectedUpdatedSelected = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2' },\n ]\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // request the report to check it defaults to saved\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n })\n })\n })\n })\n\n describe('Sorting', () => {\n before(() => {\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n it('should show the sort direction in the column header and the url', () => {\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n\n cy.findByRole('link', { name: 'Field 1' }).click()\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=false`)\n })\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-descending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n\n cy.findByRole('link', { name: 'Field 1' }).click()\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=true`)\n })\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n\n cy.findByRole('link', { name: 'Field 2' }).click()\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=true`)\n })\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')\n\n cy.findByRole('link', { name: 'Field 2' }).click()\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=false`)\n })\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-descending')\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')\n })\n })\n })\n})\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { checkSelectedFilterValues, requestReport } from '../../../../../../../cypress-tests/cypressUtils'\nimport DateMapper from '../../../../../utils/DateMapper/DateMapper'\n\ncontext('Viewing a report', () => {\n const path = '/embedded/platform/'\n let viewReportUrl: string\n let tableId: string\n\n describe('List report page', () => {\n before(() => {\n cy.task('resetStubs')\n cy.task('resetRedis')\n cy.task('stubDefinitions')\n cy.task('stubReportStatusMock')\n cy.task('stubReportsFinishedStatus')\n cy.task('stubDefinitionRequestExamplesSuccess')\n cy.task('stubReportsFinishedStatus')\n cy.task('stubTestDashboard8')\n cy.task('stubMockDashboardsStatusFinished')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult10')\n cy.task('stubRequestSuccessReportTablesCount')\n cy.task('stubRequestSuccessResult100')\n cy.task('stubViewAsyncReportingResults')\n\n // Request and run a report so we can go back to it for each test\n requestReport({ name: 'Successful Report', description: 'this will succeed', path })\n cy.url().then((url) => {\n viewReportUrl = url\n const urlArr = url.split('/')\n tableId = urlArr[urlArr.length - 2]\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n describe('Report details', () => {\n it('should show the report details', () => {\n cy.findAllByRole('group').contains('Report details').should('be.visible').click()\n\n cy.findAllByRole('group')\n .contains('Report details')\n .parent()\n .parent()\n .within(() => {\n cy.findAllByRole('row').each((row, index) => {\n cy.wrap(row).within(() => {\n switch (index) {\n case 0:\n cy.findAllByRole('cell', { name: 'Name:' }).should('exist')\n cy.findAllByRole('cell', { name: 'Successful Report' }).should('exist')\n break\n case 1:\n cy.findAllByRole('cell', { name: 'Product:' }).should('exist')\n cy.findAllByRole('cell', { name: 'Successful Report' }).should('exist')\n break\n case 2:\n cy.findAllByRole('cell', { name: 'Description:' }).should('exist')\n cy.findAllByRole('cell', { name: 'this will succeed' }).should('exist')\n break\n case 3:\n cy.findAllByRole('cell', { name: 'Classification:' }).should('exist')\n cy.findAllByRole('cell', { name: 'OFFICIAL' }).should('exist')\n break\n case 4:\n cy.findAllByRole('cell', { name: 'Requested at:' }).should('exist')\n cy.findAllByRole('cell', { name: /\\d{1,2}\\/\\d{1,2}\\/\\d{2,4}/ }).should('exist')\n break\n case 5:\n cy.findAllByRole('cell', { name: 'Applied Filters:' }).should('exist')\n cy.findAllByRole('listitem').each((item, i) => {\n switch (i) {\n case 0:\n cy.wrap(item).contains('Field 1: value1.2')\n break\n case 1:\n cy.wrap(item).contains('Field 3 start: 01/02/2003')\n break\n case 2:\n cy.wrap(item).contains('Field 3 end: 04/05/2006')\n break\n case 3:\n cy.wrap(item).contains('Field 7: 01/02/2005')\n break\n case 4:\n cy.wrap(item).contains('Field 8: value8.2,value8.3')\n break\n case 5:\n cy.wrap(item).contains('Sort column: Field 1')\n break\n case 6:\n cy.wrap(item).contains('Sort direction: Descending')\n break\n default:\n break\n }\n })\n break\n default:\n break\n }\n })\n })\n })\n })\n })\n\n describe('Actions', () => {\n it('should show the actions and go to the filters page when refresh action is clicked', () => {\n cy.findByLabelText('Refresh report').should('be.visible')\n cy.findByLabelText(/Print screen/)\n .should('be.visible')\n .should('be.disabled')\n cy.findByLabelText(/download/).should('be.visible')\n cy.findByLabelText(/Copy report link/).should('be.visible')\n cy.findByRole('button', { name: /Add bookmark/ }).should('be.visible')\n\n cy.findByLabelText('Refresh report').should('be.visible').click()\n cy.url().should(\n 'match',\n /.*\\/embedded\\/platform\\/dpr\\/request-report\\/report\\/request-examples\\/request-example-success\\/filters/i,\n )\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 describe('Column interactions', () => {\n const expectInitialisedColumns = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('not.be.checked')\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).not.to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).to.contain(`columns=field7`)\n expect(location.search).not.to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 5)\n })\n })\n })\n }\n\n const expectUpdatedColumns = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('be.checked')\n\n cy.location().should((location) => {\n expect(location.search).not.to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).not.to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).not.to.contain(`columns=field7`)\n expect(location.search).to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 4)\n })\n })\n })\n }\n\n const setColumnValues = () => {\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 5' }).check()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 8' }).check()\n }\n\n it('should initialise the column content correctly', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .should('be.visible')\n .click()\n expectInitialisedColumns()\n cy.findAllByRole('group').contains('Show columns (5 of 8 shown)')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 1')\n break\n case 1:\n cy.wrap(head).contains('Field 2')\n break\n case 2:\n cy.wrap(head).contains('Field 3')\n break\n case 3:\n cy.wrap(head).contains('Field 6')\n break\n case 4:\n cy.wrap(head).contains('Field 7')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should apply the columns', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n setColumnValues()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n\n expectUpdatedColumns()\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 2')\n break\n case 1:\n cy.wrap(head).contains('Field 5')\n break\n case 2:\n cy.wrap(head).contains('Field 6')\n break\n case 3:\n cy.wrap(head).contains('Field 8')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should reset the columns to their DPD defaults', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n setColumnValues()\n cy.findByRole('button', { name: 'Apply columns' }).click()\n expectUpdatedColumns()\n\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n cy.findByRole('link', { name: 'Reset columns' }).click()\n\n expectInitialisedColumns()\n })\n\n it('should apply the columns from the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?columns=field1&columns=field5&columns=field8`,\n )\n\n cy.findByRole('checkbox', { name: 'Field 1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('be.checked')\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('columnheader').each((head, index) => {\n switch (index) {\n case 0:\n cy.wrap(head).contains('Field 1')\n break\n case 1:\n cy.wrap(head).contains('Field 2')\n break\n case 2:\n cy.wrap(head).contains('Field 5')\n break\n case 3:\n cy.wrap(head).contains('Field 6')\n break\n case 4:\n cy.wrap(head).contains('Field 8')\n break\n default:\n break\n }\n })\n })\n })\n })\n\n it('should only apply mandatory columms', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 2' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 4' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 5' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 6' }).should('be.checked').should('be.disabled')\n cy.findByRole('checkbox', { name: 'Field 7' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Field 8' }).should('not.be.checked')\n\n cy.location().should((location) => {\n expect(location.search).not.to.contain(`columns=field1`)\n expect(location.search).to.contain(`columns=field2`)\n expect(location.search).not.to.contain(`columns=field3`)\n expect(location.search).not.to.contain(`columns=field4`)\n expect(location.search).not.to.contain(`columns=field5`)\n expect(location.search).to.contain(`columns=field6`)\n expect(location.search).not.to.contain(`columns=field7`)\n expect(location.search).not.to.contain(`columns=field8`)\n })\n\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(0)\n .within(() => {\n cy.findAllByRole('row')\n .eq(1)\n .within(() => {\n cy.findAllByRole('columnheader').should('have.length', 2)\n })\n })\n })\n })\n })\n\n describe('Paging interaction', () => {\n it('should show the table totals', () => {\n cy.findAllByRole('paragraph')\n .contains(/Showing \\d{1,4} to \\d{1,4} of \\d{1,4} results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 20)\n })\n })\n })\n\n it('should change the page size', () => {\n cy.get('#page-size-select').select('10')\n cy.findAllByRole('paragraph')\n .contains(/Showing 1 to 10 of 100 results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 10)\n })\n })\n })\n\n it('should change the page size via the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?pageSize=100`,\n )\n cy.findAllByRole('paragraph')\n .contains(/100 total results/)\n .should('exist')\n cy.findByLabelText(/Successful Report/).within(() => {\n cy.findAllByRole('rowgroup')\n .eq(1)\n .within(() => {\n cy.findAllByRole('row').should('have.length', 100)\n })\n })\n })\n\n it('should change the page', () => {\n cy.findByLabelText('Page 5').click()\n cy.location().should((location) => {\n expect(location.search).to.contain(`selectedPage=5`)\n })\n })\n\n it('should change the page via the URL', () => {\n cy.visit(\n `/embedded/platform/dpr/view-report/async/report/request-examples/request-example-success/${tableId}/report?selectedPage=3`,\n )\n cy.findByRole('link', { current: 'page' }).contains('3')\n })\n })\n })\n\n describe('Interactive report', () => {\n const applyFilters = () => {\n cy.findByRole('button', { name: 'Apply filters' }).click()\n }\n\n const showFilters = () => {\n cy.findAllByRole('group')\n .contains(/Show filters/)\n .click()\n }\n\n before(() => {\n cy.task('resetStubs')\n cy.task('resetRedis')\n cy.task('stubDefinitions')\n cy.task('stubDefinitionFeatureTestingInteractive')\n cy.task('stubReportStatusMock')\n cy.task('stubAsyncRequestSuccessReportTablesCount')\n cy.task('stubViewAsyncReportingResults')\n cy.task('stubRequestSuccessResult20')\n cy.task('stubRequestSuccessResult100')\n })\n\n describe('Apply filters', () => {\n before(() => {\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n const removeAllFilters = () => {\n for (let index = 0; index < 4; index += 1) {\n cy.findByLabelText('Selected filters').within(() => {\n cy.findAllByRole('link').first().click()\n })\n }\n }\n\n describe('Date range', () => {\n it('should apply the date range', () => {\n cy.findByRole('textbox', { name: 'From' }).should('have.value', '01/02/2003')\n cy.findByRole('textbox', { name: 'To' }).should('have.value', '04/05/2006')\n\n removeAllFilters()\n showFilters()\n\n cy.findByRole('textbox', { name: 'From' }).type('02/05/2025')\n cy.findByRole('textbox', { name: 'To' }).type('05/07/2025').blur()\n\n applyFilters()\n\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field3.start=2025-05-02`)\n expect(location.search).to.contain(`filters.field3.end=2025-07-05`)\n })\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 3', value: '02/05/2025 - 05/07/2025' }] })\n })\n\n it('should apply the relative daterange', () => {\n removeAllFilters()\n showFilters()\n\n cy.findByRole('tab', { name: 'Preset date ranges' }).click()\n cy.findByRole('radio', { name: 'Tomorrow' }).check()\n\n applyFilters()\n\n let startValue: string\n let endValue: string\n cy.findByRole('textbox', { name: 'From' })\n .invoke('val')\n .should('not.be.empty')\n .then((val: string) => {\n startValue = val\n })\n cy.findByRole('textbox', { name: 'To' })\n .invoke('val')\n .should('not.be.empty')\n .then((val: string) => {\n endValue = val\n })\n\n const dateMapper = new DateMapper()\n cy.location().should((location) => {\n expect(location.search).to.contain(`filters.field3.start=${dateMapper.toDateString(startValue, 'iso')}`)\n expect(location.search).to.contain(`filters.field3.end=${dateMapper.toDateString(endValue, 'iso')}`)\n expect(location.search).to.contain(`filters.field3.relative-duration=tomorrow`)\n })\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 3', value: 'Tomorrow' }] })\n })\n })\n\n describe('Multiselect', () => {\n it('should apply the multiselect values', () => {\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n checkSelectedFilterValues({ length: 2, buttonValues: [{ key: 'Field 8', value: 'Value 8.1, Value 8.3' }] })\n })\n\n it('should set the selected filter values correctly', () => {\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\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 applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('be.checked')\n\n checkSelectedFilterValues({\n length: 2,\n buttonValues: [{ key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' }],\n })\n })\n\n it('should set the values correctly when only one checkbox selected', () => {\n removeAllFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n showFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n\n applyFilters()\n\n cy.findByRole('checkbox', { name: 'Value 8.1' }).should('be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.2' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.3' }).should('not.be.checked')\n cy.findByRole('checkbox', { name: 'Value 8.4' }).should('not.be.checked')\n\n checkSelectedFilterValues({\n length: 2,\n buttonValues: [{ key: 'Field 8', value: 'Value 8.1' }],\n })\n })\n })\n\n it('Applying filters should persist current applied columns', () => {\n cy.findAllByRole('group')\n .contains(/Show columns/)\n .should('be.visible')\n .click()\n\n cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 5' }).check()\n cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()\n cy.findByRole('checkbox', { name: 'Field 8' }).check()\n\n cy.findByRole('button', { name: 'Apply columns' }).click()\n cy.findAllByRole('group').contains('Show columns (4 of 8 shown)')\n\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).check()\n applyFilters()\n\n cy.findAllByRole('group').contains('Show columns (4 of 8 shown)')\n })\n })\n\n describe('User defined interactive defaults', () => {\n const saveDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Save current filter values as defaults' })\n }\n const updateDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Update defaults' })\n }\n const deleteDefaultsButton = () => {\n return cy.findByRole('button', { name: 'Delete defaults' })\n }\n\n const checkSelectedFiltersInUserReports = ({\n name,\n product,\n length,\n selectedFilters,\n }: {\n name: string\n product: string\n length: number\n selectedFilters: { key: string; value: string }[]\n }) => {\n cy.findByLabelText(/Viewed \\(/).within(() => {\n cy.findByRole('row', {\n name: (_, element) => {\n return element.textContent.includes(name) && element.textContent.includes(product)\n },\n }).within(() => {\n cy.findAllByRole('listitem')\n .should('have.length', length)\n .each((li, index) => {\n if (selectedFilters[index]) {\n const { key, value } = selectedFilters[index]\n cy.wrap(li).contains(key)\n cy.wrap(li).contains(value)\n }\n })\n })\n })\n }\n\n it('should save the interactive filters correctly', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the default filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).check()\n cy.findByRole('checkbox', { name: 'Value 8.4' }).check()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.2')\n applyFilters()\n\n const selectedFiltersButtonValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n })\n\n it('should init the report with saved interactive defaults', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n const selectedFiltersButtonValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: selectedFiltersButtonValues,\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: selectedFiltersButtonValues,\n })\n })\n\n it('should reset the filter values to the saved defaults', () => {\n cy.visit(viewReportUrl)\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n const savedDefaultSelectedFilters = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ]\n checkSelectedFilterValues({\n length: 6,\n buttonValues: savedDefaultSelectedFilters,\n })\n\n // apply some filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n applyFilters()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.4' },\n ],\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.4' },\n ],\n })\n\n cy.visit(viewReportUrl)\n\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: savedDefaultSelectedFilters,\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: savedDefaultSelectedFilters,\n })\n })\n\n it('should update the filter values and init the report with the updated interactive defaults', () => {\n cy.visit(viewReportUrl)\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.1, Value 8.2, Value 8.3 + 1 more' },\n ],\n })\n\n // apply some filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.1' }).uncheck()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n cy.findByRole('combobox', { name: 'Field 2' }).select('value2.3')\n applyFilters()\n\n const expectedSelectedValues = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.4' },\n ]\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n updateDefaultsButton().click()\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n\n // check the initial filter values match the default\n checkSelectedFilterValues({\n length: 6,\n buttonValues: expectedSelectedValues,\n })\n\n // check saved defaults page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 5,\n selectedFilters: expectedSelectedValues,\n })\n })\n\n it('should delete the saved defaults', () => {\n cy.visit(viewReportUrl)\n\n checkSelectedFilterValues({\n length: 6,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 2', value: 'Value 2.3' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.4' },\n ],\n })\n\n deleteDefaultsButton().click()\n\n // Expect DPD defaults to be applied\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n cy.visit(path)\n cy.findByRole('tab', { name: /Viewed/ }).click()\n checkSelectedFiltersInUserReports({\n name: 'Interactive Report',\n product: 'Interactive Report',\n length: 4,\n selectedFilters: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n })\n\n describe('Input types', () => {\n describe('Relative date range', () => {\n it('should save the relative daterange', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('tab', { name: 'Preset date ranges' }).click()\n cy.findByRole('radio', { name: 'Tomorrow' }).check()\n applyFilters()\n\n const expectedUpdatedSelected = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: 'Tomorrow' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ]\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // request the report to check it defaults to saved\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n deleteDefaultsButton().click()\n })\n })\n\n describe('Multiselect', () => {\n it('should save a single multiselect value', () => {\n // request the report\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2, Value 8.3' },\n ],\n })\n\n // update the filters\n showFilters()\n cy.findByRole('checkbox', { name: 'Value 8.3' }).uncheck()\n applyFilters()\n\n const expectedUpdatedSelected = [\n { key: 'Field 1', value: 'Value 1.2' },\n { key: 'Field 3', value: '01/02/2003 - 04/05/2006' },\n { key: 'Field 7', value: '01/02/2005' },\n { key: 'Field 8', value: 'Value 8.2' },\n ]\n\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // save the filters\n saveDefaultsButton().click()\n\n // check for saved page furniture\n updateDefaultsButton().should('exist')\n deleteDefaultsButton().should('exist')\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n // request the report to check it defaults to saved\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n\n // check the selected filters\n checkSelectedFilterValues({\n length: 5,\n buttonValues: expectedUpdatedSelected,\n })\n\n deleteDefaultsButton().click()\n })\n })\n })\n })\n\n describe('Sorting', () => {\n before(() => {\n requestReport({ name: 'Interactive Report', description: 'this is an interactive report', path })\n cy.url().then((url) => {\n viewReportUrl = url\n })\n })\n\n beforeEach(() => {\n cy.visit(viewReportUrl)\n })\n\n it('should show the sort direction in the column header and the url', () => {\n cy.findByRole('link', { name: 'Reset filters' }).click()\n\n // Initial state\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n\n // Sort desc by field 1\n cy.findByRole('link', { name: 'Field 1' }).click()\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-descending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=false`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n // Sort asc by field 1\n cy.findByRole('link', { name: 'Field 1' }).click()\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=true`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n // Sort asc by field 2\n cy.findByRole('link', { name: 'Field 2' }).click()\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-ascending')\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=true`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n\n // Sort desc by field 2\n cy.findByRole('link', { name: 'Field 2' }).click()\n cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-descending')\n cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')\n cy.location().should((location) => {\n expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=false`)\n expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)\n })\n })\n })\n })\n})\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_cypressUtils", "import_DateMapper", "path", "viewReportUrl", "tableId", "url", "urlArr", "row", "index", "item", "i", "location", "expectInitialisedColumns", "expectUpdatedColumns", "setColumnValues", "head", "applyFilters", "showFilters", "removeAllFilters", "startValue", "endValue", "val", "dateMapper", "DateMapper", "saveDefaultsButton", "updateDefaultsButton", "deleteDefaultsButton", "checkSelectedFiltersInUserReports", "name", "product", "length", "selectedFilters", "_", "element", "li", "key", "value", "selectedFiltersButtonValues", "savedDefaultSelectedFilters", "expectedSelectedValues", "expectedUpdatedSelected"]
7
7
  }
@@ -631,6 +631,29 @@ context('Viewing a report', () => {
631
631
  })
632
632
  })
633
633
  })
634
+
635
+ it('Applying filters should persist current applied columns', () => {
636
+ cy.findAllByRole('group')
637
+ .contains(/Show columns/)
638
+ .should('be.visible')
639
+ .click()
640
+
641
+ cy.findByRole('checkbox', { name: 'Field 1' }).uncheck()
642
+ cy.findByRole('checkbox', { name: 'Field 3' }).uncheck()
643
+ cy.findByRole('checkbox', { name: 'Field 5' }).check()
644
+ cy.findByRole('checkbox', { name: 'Field 7' }).uncheck()
645
+ cy.findByRole('checkbox', { name: 'Field 8' }).check()
646
+
647
+ cy.findByRole('button', { name: 'Apply columns' }).click()
648
+ cy.findAllByRole('group').contains('Show columns (4 of 8 shown)')
649
+
650
+ showFilters()
651
+ cy.findByRole('checkbox', { name: 'Value 8.1' }).check()
652
+ cy.findByRole('checkbox', { name: 'Value 8.3' }).check()
653
+ applyFilters()
654
+
655
+ cy.findAllByRole('group').contains('Show columns (4 of 8 shown)')
656
+ })
634
657
  })
635
658
 
636
659
  describe('User defined interactive defaults', () => {
@@ -1051,6 +1074,8 @@ context('Viewing a report', () => {
1051
1074
  length: 5,
1052
1075
  buttonValues: expectedUpdatedSelected,
1053
1076
  })
1077
+
1078
+ deleteDefaultsButton().click()
1054
1079
  })
1055
1080
  })
1056
1081
  })
@@ -1069,36 +1094,47 @@ context('Viewing a report', () => {
1069
1094
  })
1070
1095
 
1071
1096
  it('should show the sort direction in the column header and the url', () => {
1097
+ cy.findByRole('link', { name: 'Reset filters' }).click()
1098
+
1099
+ // Initial state
1072
1100
  cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')
1073
1101
  cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')
1074
1102
 
1103
+ // Sort desc by field 1
1075
1104
  cy.findByRole('link', { name: 'Field 1' }).click()
1105
+ cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-descending')
1106
+ cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')
1076
1107
  cy.location().should((location) => {
1077
1108
  expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=false`)
1109
+ expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)
1078
1110
  })
1079
- cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-descending')
1080
- cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')
1081
1111
 
1112
+ // Sort asc by field 1
1082
1113
  cy.findByRole('link', { name: 'Field 1' }).click()
1114
+ cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')
1115
+ cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')
1083
1116
  cy.location().should((location) => {
1084
1117
  expect(location.search).to.contain(`&sortColumn=field1&sortedAsc=true`)
1118
+ expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)
1085
1119
  })
1086
- cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-ascending')
1087
- cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-none')
1088
1120
 
1121
+ // Sort asc by field 2
1089
1122
  cy.findByRole('link', { name: 'Field 2' }).click()
1123
+ cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-ascending')
1124
+ cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')
1090
1125
  cy.location().should((location) => {
1091
1126
  expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=true`)
1127
+ expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)
1092
1128
  })
1093
- cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-ascending')
1094
- cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')
1095
1129
 
1130
+ // Sort desc by field 2
1096
1131
  cy.findByRole('link', { name: 'Field 2' }).click()
1132
+ cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-descending')
1133
+ cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')
1097
1134
  cy.location().should((location) => {
1098
1135
  expect(location.search).to.contain(`&sortColumn=field2&sortedAsc=false`)
1136
+ expect(location.search).to.contain(`filters.field8=value8.2&filters.field8=value8.3`)
1099
1137
  })
1100
- cy.findByRole('link', { name: 'Field 2' }).should('have.class', 'data-table-header-button-sort-descending')
1101
- cy.findByRole('link', { name: 'Field 1' }).should('have.class', 'data-table-header-button-sort-none')
1102
1138
  })
1103
1139
  })
1104
1140
  })
@@ -1,2 +1,2 @@
1
- var A=Object.create;var g=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty;var x=(e,o)=>{for(var t in o)g(e,t,{get:o[t],enumerable:!0})},b=(e,o,t,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of U(o))!T.call(e,r)&&r!==t&&g(e,r,{get:()=>o[r],enumerable:!(i=Q(o,r))||i.enumerable});return e};var y=(e,o,t)=>(t=e!=null?A(P(e)):{},b(o||!e||!e.__esModule?g(t,"default",{value:e,enumerable:!0}):t,e)),E=e=>b(g({},"__esModule",{value:!0}),e);var M={};x(M,{applyDashboardInteractiveQuery:()=>F,applyReportInteractiveQuery:()=>C,default:()=>B});module.exports=E(M);var f=require("../../../components/_filters/filter-input/enum"),D=y(require("../../../utils/localsHelper")),w=y(require("../../../utils/definitionUtils")),v=y(require("../../../utils/DateMapper/DateMapper")),L=y(require("../../../components/_reports/report-columns-form/utils"));const C=async(e,o,t,i)=>{const{reportId:r,id:n}=e.params,{token:l,definitionsPath:a}=D.default.getValues(o),s=(await t.reportingService.getDefinition(l,r,n,a)).variant.specification.fields||[];return h(e,o,t,i,s)},F=async(e,o,t,i)=>{const{reportId:r,id:n}=e.params,{token:l,definitionsPath:a}=D.default.getValues(o),s=(await t.dashboardService.getDefinition(l,r,n,a)).filterFields||[];return h(e,o,t,i,s)},h=async(e,o,t,i,r)=>{const{tableId:n,id:l}=e.params,{dprUser:a}=D.default.getValues(o);let p;n?p=await t.recentlyViewedService.getReportByTableId(n,a.id):p=await t.recentlyViewedService.getReportById(l,a.id);const s=p?.interactiveQuery?.data,{preventDefault:d}=s,R=Object.keys(s).filter(c=>c.includes("filters.")).reduce((c,u)=>({...c,[u]:s[u]}),{});let m={...d&&{preventDefault:d},...e.body};if(i==="columns"){const{columns:c}=e.body,u=L.default.mandatoryColumns(r);let S=[];c&&(S=Array.isArray(c)?c:[c]);const V=[...u,...S];m={...m,columns:V,...R}}else{const{columns:c}=s;m={...m,columns:c}}const I=j({formData:m,fields:r});o.redirect(`${e.baseUrl}?${I}`)},j=({formData:e,fields:o})=>{const t=new URLSearchParams;Object.keys(e).forEach(r=>{const n=e[r];if(n&&r!=="_csrf"){const l=r.split(".")[1];if(l){const a=w.default.getFilter(o,l);if(a){const{type:p}=a;switch(p.toLocaleLowerCase()){case f.FilterType.date.toLocaleLowerCase():case f.FilterType.dateRange.toLocaleLowerCase():case f.FilterType.granularDateRange.toLocaleLowerCase():{let s=n;const d=new v.default;d.getDateType(s)!=="none"&&(s=d.toDateString(s,"iso")),t.append(r,s)}break;case f.FilterType.multiselect.toLocaleLowerCase():Array.isArray(n)?n.forEach(d=>{t.append(r,d)}):t.append(r,n);break;default:t.append(r,n);break}}}else Array.isArray(n)?n.forEach(a=>{t.append(r,a)}):t.append(r,n)}});const i=t.toString();return decodeURIComponent(i)};var B={applyDashboardInteractiveQuery:F,applyReportInteractiveQuery:C};0&&(module.exports={applyDashboardInteractiveQuery,applyReportInteractiveQuery});
1
+ var T=Object.create;var g=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty;var M=(e,o)=>{for(var t in o)g(e,t,{get:o[t],enumerable:!0})},v=(e,o,t,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of E(o))!B.call(e,r)&&r!==t&&g(e,r,{get:()=>o[r],enumerable:!(i=x(o,r))||i.enumerable});return e};var y=(e,o,t)=>(t=e!=null?T(j(e)):{},v(o||!e||!e.__esModule?g(t,"default",{value:e,enumerable:!0}):t,e)),O=e=>v(g({},"__esModule",{value:!0}),e);var H={};M(H,{applyDashboardInteractiveQuery:()=>A,applyReportInteractiveQuery:()=>V,default:()=>z});module.exports=O(H);var f=require("../../../components/_filters/filter-input/enum"),D=y(require("../../../utils/localsHelper")),C=y(require("../../../utils/definitionUtils")),F=y(require("../../../utils/DateMapper/DateMapper")),I=y(require("../../../components/_reports/report-columns-form/utils"));const V=async(e,o,t,i)=>{const{reportId:r,id:n}=e.params,{token:l,definitionsPath:a}=D.default.getValues(o),s=(await t.reportingService.getDefinition(l,r,n,a)).variant.specification.fields||[];return L(e,o,t,i,s)},A=async(e,o,t,i)=>{const{reportId:r,id:n}=e.params,{token:l,definitionsPath:a}=D.default.getValues(o),s=(await t.dashboardService.getDefinition(l,r,n,a)).filterFields||[];return L(e,o,t,i,s)},L=async(e,o,t,i,r)=>{const{tableId:n,id:l}=e.params,{dprUser:a}=D.default.getValues(o);let p;n?p=await t.recentlyViewedService.getReportByTableId(n,a.id):p=await t.recentlyViewedService.getReportById(l,a.id);const s=p?.interactiveQuery?.data,{preventDefault:d,selectedPage:R,pageSize:S,sortColumn:b,sortedAsc:h}=s,Q=Object.keys(s).filter(c=>c.includes("filters.")).reduce((c,u)=>({...c,[u]:s[u]}),{});let m={...d&&{preventDefault:d},...R&&{selectedPage:R},...S&&{pageSize:S},...b&&{sortColumn:b},...h&&{sortedAsc:h},...e.body};if(i==="columns"){const{columns:c}=e.body,u=I.default.mandatoryColumns(r);let w=[];c&&(w=Array.isArray(c)?c:[c]);const P=[...u,...w];m={...m,columns:P,...Q}}else{const{columns:c}=s;m={...m,columns:c}}const U=$({formData:m,fields:r});o.redirect(`${e.baseUrl}?${U}`)},$=({formData:e,fields:o})=>{const t=new URLSearchParams;Object.keys(e).forEach(r=>{const n=e[r];if(n&&r!=="_csrf"){const l=r.split(".")[1];if(l){const a=C.default.getFilter(o,l);if(a){const{type:p}=a;switch(p.toLocaleLowerCase()){case f.FilterType.date.toLocaleLowerCase():case f.FilterType.dateRange.toLocaleLowerCase():case f.FilterType.granularDateRange.toLocaleLowerCase():{let s=n;const d=new F.default;d.getDateType(s)!=="none"&&(s=d.toDateString(s,"iso")),t.append(r,s)}break;case f.FilterType.multiselect.toLocaleLowerCase():Array.isArray(n)?n.forEach(d=>{t.append(r,d)}):t.append(r,n);break;default:t.append(r,n);break}}}else Array.isArray(n)?n.forEach(a=>{t.append(r,a)}):t.append(r,n)}});const i=t.toString();return decodeURIComponent(i)};var z={applyDashboardInteractiveQuery:A,applyReportInteractiveQuery:V};0&&(module.exports={applyDashboardInteractiveQuery,applyReportInteractiveQuery});
2
2
  //# sourceMappingURL=utils.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/dpr/routes/journeys/view-report/utils.ts"],
4
- "sourcesContent": ["import { Request, Response } from 'express'\nimport { FilterType } from '../../../components/_filters/filter-input/enum'\nimport { components } from '../../../types/api'\nimport { StoredReportData } from '../../../types/UserReports'\nimport { Services } from '../../../types/Services'\nimport LocalsHelper from '../../../utils/localsHelper'\nimport definitionUtils from '../../../utils/definitionUtils'\nimport DateMapper from '../../../utils/DateMapper/DateMapper'\nimport ColumnsUtils from '../../../components/_reports/report-columns-form/utils'\n\nexport const applyReportInteractiveQuery = async (\n req: Request,\n res: Response,\n services: Services,\n applyType: 'columns' | 'filters',\n) => {\n const { reportId, id } = req.params\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, id, definitionsPath)\n const fields = definition.variant.specification.fields || []\n\n return applyInteractiveQuery(req, res, services, applyType, fields)\n}\n\nexport const applyDashboardInteractiveQuery = async (\n req: Request,\n res: Response,\n services: Services,\n applyType: 'columns' | 'filters',\n) => {\n const { reportId, id } = req.params\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n\n // Get the definition\n const definition: components['schemas']['DashboardDefinition'] = await services.dashboardService.getDefinition(\n token,\n reportId,\n id,\n definitionsPath,\n )\n const fields = definition.filterFields || []\n\n return applyInteractiveQuery(req, res, services, applyType, fields)\n}\n\nconst applyInteractiveQuery = async (\n req: Request,\n res: Response,\n services: Services,\n applyType: 'columns' | 'filters',\n fields: components['schemas']['FieldDefinition'][],\n) => {\n const { tableId, id } = req.params\n const { dprUser } = LocalsHelper.getValues(res)\n\n // get the report state\n let reportStateData: StoredReportData\n if (tableId) {\n // means its an async report\n reportStateData = await services.recentlyViewedService.getReportByTableId(tableId, dprUser.id)\n } else {\n // its a sync report and can be indentified by ID as will always only be 1\n reportStateData = await services.recentlyViewedService.getReportById(id, dprUser.id)\n }\n\n // Get the stored interactive query data\n const interactiveQueryData = reportStateData?.interactiveQuery?.data\n const { preventDefault } = interactiveQueryData\n const filters = Object.keys(interactiveQueryData)\n .filter((key) => key.includes('filters.'))\n .reduce((acc, key) => ({ ...acc, [key]: interactiveQueryData[key] }), {})\n\n // Create merged form data\n let formData: Record<string, string | string[]> = {\n ...(preventDefault && { preventDefault }),\n ...req.body,\n }\n\n if (applyType === 'columns') {\n const { columns } = req.body\n const mandatoryCols = ColumnsUtils.mandatoryColumns(fields)\n\n let bodyColumns = []\n if (columns) {\n bodyColumns = Array.isArray(columns) ? columns : [columns]\n }\n const columnsData = [...mandatoryCols, ...bodyColumns]\n formData = { ...formData, columns: columnsData, ...filters }\n } else {\n const { columns } = interactiveQueryData\n formData = { ...formData, columns }\n }\n\n // Create query string\n const filtersString = createQueryParamsFromFormData({\n formData,\n fields,\n })\n\n // Redirect back to report\n res.redirect(`${req.baseUrl}?${filtersString}`)\n}\n\nconst createQueryParamsFromFormData = ({\n formData,\n fields,\n}: {\n fields: components['schemas']['FieldDefinition'][]\n formData: Record<string, string | string[]>\n}) => {\n // create the query string\n const params = new URLSearchParams()\n Object.keys(formData).forEach((key) => {\n const value = formData[key]\n\n if (value && key !== '_csrf') {\n const fieldId = key.split('.')[1] // filters are prefixed with 'filters.'\n if (fieldId) {\n const filter = definitionUtils.getFilter(fields, fieldId)\n if (filter) {\n const { type: filterType } = filter\n switch (filterType.toLocaleLowerCase()) {\n // DATE RANGE TYPES\n case FilterType.date.toLocaleLowerCase():\n case FilterType.dateRange.toLocaleLowerCase():\n case FilterType.granularDateRange.toLocaleLowerCase():\n {\n let dateValue = <string>value\n const dateMapper = new DateMapper()\n const currentDateFormat = dateMapper.getDateType(dateValue)\n if (currentDateFormat !== 'none') {\n dateValue = dateMapper.toDateString(dateValue, 'iso')\n }\n params.append(key, dateValue)\n }\n break\n\n // MULTIVALUE TYPES: string[] || string if only one value selected\n case FilterType.multiselect.toLocaleLowerCase():\n if (Array.isArray(value)) {\n const multiselectValue = <string[]>value\n multiselectValue.forEach((v: string) => {\n params.append(key, v)\n })\n } else {\n params.append(key, <string>value)\n }\n break\n\n // OTHER TYPES - always a string\n default:\n params.append(key, <string>value)\n break\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((v: string) => {\n params.append(key, v)\n })\n } else {\n params.append(key, value)\n }\n }\n })\n\n const encodedFilters = params.toString()\n return decodeURIComponent(encodedFilters)\n}\n\nexport default {\n applyDashboardInteractiveQuery,\n applyReportInteractiveQuery,\n}\n"],
5
- "mappings": "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",
6
- "names": ["utils_exports", "__export", "applyDashboardInteractiveQuery", "applyReportInteractiveQuery", "utils_default", "__toCommonJS", "import_enum", "import_localsHelper", "import_definitionUtils", "import_DateMapper", "import_utils", "req", "res", "services", "applyType", "reportId", "id", "token", "definitionsPath", "LocalsHelper", "fields", "applyInteractiveQuery", "tableId", "dprUser", "reportStateData", "interactiveQueryData", "preventDefault", "filters", "key", "acc", "formData", "columns", "mandatoryCols", "ColumnsUtils", "bodyColumns", "columnsData", "filtersString", "createQueryParamsFromFormData", "params", "value", "fieldId", "filter", "definitionUtils", "filterType", "dateValue", "dateMapper", "DateMapper", "v", "encodedFilters"]
4
+ "sourcesContent": ["import { Request, Response } from 'express'\nimport { FilterType } from '../../../components/_filters/filter-input/enum'\nimport { components } from '../../../types/api'\nimport { StoredReportData } from '../../../types/UserReports'\nimport { Services } from '../../../types/Services'\nimport LocalsHelper from '../../../utils/localsHelper'\nimport definitionUtils from '../../../utils/definitionUtils'\nimport DateMapper from '../../../utils/DateMapper/DateMapper'\nimport ColumnsUtils from '../../../components/_reports/report-columns-form/utils'\n\nexport const applyReportInteractiveQuery = async (\n req: Request,\n res: Response,\n services: Services,\n applyType: 'columns' | 'filters',\n) => {\n const { reportId, id } = req.params\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n\n // Get the definition\n const definition: components['schemas']['SingleVariantReportDefinition'] =\n await services.reportingService.getDefinition(token, reportId, id, definitionsPath)\n const fields = definition.variant.specification.fields || []\n\n return applyInteractiveQuery(req, res, services, applyType, fields)\n}\n\nexport const applyDashboardInteractiveQuery = async (\n req: Request,\n res: Response,\n services: Services,\n applyType: 'columns' | 'filters',\n) => {\n const { reportId, id } = req.params\n const { token, definitionsPath } = LocalsHelper.getValues(res)\n\n // Get the definition\n const definition: components['schemas']['DashboardDefinition'] = await services.dashboardService.getDefinition(\n token,\n reportId,\n id,\n definitionsPath,\n )\n const fields = definition.filterFields || []\n\n return applyInteractiveQuery(req, res, services, applyType, fields)\n}\n\nconst applyInteractiveQuery = async (\n req: Request,\n res: Response,\n services: Services,\n applyType: 'columns' | 'filters',\n fields: components['schemas']['FieldDefinition'][],\n) => {\n const { tableId, id } = req.params\n const { dprUser } = LocalsHelper.getValues(res)\n\n // get the report state\n let reportStateData: StoredReportData\n if (tableId) {\n // means its an async report\n reportStateData = await services.recentlyViewedService.getReportByTableId(tableId, dprUser.id)\n } else {\n // its a sync report and can be indentified by ID as will always only be 1\n reportStateData = await services.recentlyViewedService.getReportById(id, dprUser.id)\n }\n\n // Get the stored interactive query data\n const interactiveQueryData = reportStateData?.interactiveQuery?.data\n\n const { preventDefault, selectedPage, pageSize, sortColumn, sortedAsc } = interactiveQueryData\n const filters = Object.keys(interactiveQueryData)\n .filter((key) => key.includes('filters.'))\n .reduce((acc, key) => ({ ...acc, [key]: interactiveQueryData[key] }), {})\n\n // Create merged form data\n let formData: Record<string, string | string[]> = {\n ...(preventDefault && { preventDefault }),\n ...(selectedPage && { selectedPage }),\n ...(pageSize && { pageSize }),\n ...(sortColumn && { sortColumn }),\n ...(sortedAsc && { sortedAsc }),\n ...req.body,\n }\n\n if (applyType === 'columns') {\n const { columns } = req.body\n const mandatoryCols = ColumnsUtils.mandatoryColumns(fields)\n\n let bodyColumns = []\n if (columns) {\n bodyColumns = Array.isArray(columns) ? columns : [columns]\n }\n const columnsData = [...mandatoryCols, ...bodyColumns]\n formData = { ...formData, columns: columnsData, ...filters }\n } else {\n const { columns } = interactiveQueryData\n formData = { ...formData, columns }\n }\n\n // Create query string\n const filtersString = createQueryParamsFromFormData({\n formData,\n fields,\n })\n\n // Redirect back to report\n res.redirect(`${req.baseUrl}?${filtersString}`)\n}\n\nconst createQueryParamsFromFormData = ({\n formData,\n fields,\n}: {\n fields: components['schemas']['FieldDefinition'][]\n formData: Record<string, string | string[]>\n}) => {\n // create the query string\n const params = new URLSearchParams()\n Object.keys(formData).forEach((key) => {\n const value = formData[key]\n\n if (value && key !== '_csrf') {\n const fieldId = key.split('.')[1] // filters are prefixed with 'filters.'\n if (fieldId) {\n const filter = definitionUtils.getFilter(fields, fieldId)\n if (filter) {\n const { type: filterType } = filter\n switch (filterType.toLocaleLowerCase()) {\n // DATE RANGE TYPES\n case FilterType.date.toLocaleLowerCase():\n case FilterType.dateRange.toLocaleLowerCase():\n case FilterType.granularDateRange.toLocaleLowerCase():\n {\n let dateValue = <string>value\n const dateMapper = new DateMapper()\n const currentDateFormat = dateMapper.getDateType(dateValue)\n if (currentDateFormat !== 'none') {\n dateValue = dateMapper.toDateString(dateValue, 'iso')\n }\n params.append(key, dateValue)\n }\n break\n\n // MULTIVALUE TYPES: string[] || string if only one value selected\n case FilterType.multiselect.toLocaleLowerCase():\n if (Array.isArray(value)) {\n const multiselectValue = <string[]>value\n multiselectValue.forEach((v: string) => {\n params.append(key, v)\n })\n } else {\n params.append(key, <string>value)\n }\n break\n\n // OTHER TYPES - always a string\n default:\n params.append(key, <string>value)\n break\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach((v: string) => {\n params.append(key, v)\n })\n } else {\n params.append(key, value)\n }\n }\n })\n\n const encodedFilters = params.toString()\n return decodeURIComponent(encodedFilters)\n}\n\nexport default {\n applyDashboardInteractiveQuery,\n applyReportInteractiveQuery,\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["utils_exports", "__export", "applyDashboardInteractiveQuery", "applyReportInteractiveQuery", "utils_default", "__toCommonJS", "import_enum", "import_localsHelper", "import_definitionUtils", "import_DateMapper", "import_utils", "req", "res", "services", "applyType", "reportId", "id", "token", "definitionsPath", "LocalsHelper", "fields", "applyInteractiveQuery", "tableId", "dprUser", "reportStateData", "interactiveQueryData", "preventDefault", "selectedPage", "pageSize", "sortColumn", "sortedAsc", "filters", "key", "acc", "formData", "columns", "mandatoryCols", "ColumnsUtils", "bodyColumns", "columnsData", "filtersString", "createQueryParamsFromFormData", "params", "value", "fieldId", "filter", "definitionUtils", "filterType", "dateValue", "dateMapper", "DateMapper", "v", "encodedFilters"]
7
7
  }
@@ -68,7 +68,8 @@ const applyInteractiveQuery = async (
68
68
 
69
69
  // Get the stored interactive query data
70
70
  const interactiveQueryData = reportStateData?.interactiveQuery?.data
71
- const { preventDefault } = interactiveQueryData
71
+
72
+ const { preventDefault, selectedPage, pageSize, sortColumn, sortedAsc } = interactiveQueryData
72
73
  const filters = Object.keys(interactiveQueryData)
73
74
  .filter((key) => key.includes('filters.'))
74
75
  .reduce((acc, key) => ({ ...acc, [key]: interactiveQueryData[key] }), {})
@@ -76,6 +77,10 @@ const applyInteractiveQuery = async (
76
77
  // Create merged form data
77
78
  let formData: Record<string, string | string[]> = {
78
79
  ...(preventDefault && { preventDefault }),
80
+ ...(selectedPage && { selectedPage }),
81
+ ...(pageSize && { pageSize }),
82
+ ...(sortColumn && { sortColumn }),
83
+ ...(sortedAsc && { sortedAsc }),
79
84
  ...req.body,
80
85
  }
81
86