From bbdd7ee95cd48973aca0be4f416ee3f6f1a707dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Mon, 11 Mar 2024 12:33:28 +0100 Subject: [PATCH 1/3] MOBILE-4329 dataprivacy: Add disabled features check --- src/core/features/dataprivacy/constants.ts | 2 ++ .../dataprivacy/services/handlers/createdatarequest-link.ts | 3 ++- .../dataprivacy/services/handlers/datarequests-link.ts | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/features/dataprivacy/constants.ts b/src/core/features/dataprivacy/constants.ts index 73043ed8558..4a17949ec32 100644 --- a/src/core/features/dataprivacy/constants.ts +++ b/src/core/features/dataprivacy/constants.ts @@ -14,3 +14,5 @@ // Routing. export const CORE_DATAPRIVACY_PAGE_NAME = 'dataprivacy'; + +export const CORE_DATAPRIVACY_FEATURE_NAME = 'CoreUserDelegate_CoreDataPrivacy'; diff --git a/src/core/features/dataprivacy/services/handlers/createdatarequest-link.ts b/src/core/features/dataprivacy/services/handlers/createdatarequest-link.ts index eeb9f376cb9..d6832ddba9f 100644 --- a/src/core/features/dataprivacy/services/handlers/createdatarequest-link.ts +++ b/src/core/features/dataprivacy/services/handlers/createdatarequest-link.ts @@ -16,7 +16,7 @@ import { Injectable } from '@angular/core'; import { Params } from '@angular/router'; import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base-handler'; import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate'; -import { CORE_DATAPRIVACY_PAGE_NAME } from '@features/dataprivacy/constants'; +import { CORE_DATAPRIVACY_FEATURE_NAME, CORE_DATAPRIVACY_PAGE_NAME } from '@features/dataprivacy/constants'; import { CoreNavigator } from '@services/navigator'; import { makeSingleton } from '@singletons'; import { CoreDataPrivacy } from '../dataprivacy'; @@ -29,6 +29,7 @@ export class CoreDataPrivacyCreateDataRequestLinkHandlerService extends CoreCont name = 'CoreDataPrivacyCreateDataRequestLinkHandler'; pattern = /\/admin\/tool\/dataprivacy\/createdatarequest\.php.*([?&]type=\d+)/; + featureName = CORE_DATAPRIVACY_FEATURE_NAME; /** * @inheritdoc diff --git a/src/core/features/dataprivacy/services/handlers/datarequests-link.ts b/src/core/features/dataprivacy/services/handlers/datarequests-link.ts index ce7fb8d0ea7..1e384239e25 100644 --- a/src/core/features/dataprivacy/services/handlers/datarequests-link.ts +++ b/src/core/features/dataprivacy/services/handlers/datarequests-link.ts @@ -15,7 +15,7 @@ import { Injectable } from '@angular/core'; import { CoreContentLinksHandlerBase } from '@features/contentlinks/classes/base-handler'; import { CoreContentLinksAction } from '@features/contentlinks/services/contentlinks-delegate'; -import { CORE_DATAPRIVACY_PAGE_NAME } from '@features/dataprivacy/constants'; +import { CORE_DATAPRIVACY_FEATURE_NAME, CORE_DATAPRIVACY_PAGE_NAME } from '@features/dataprivacy/constants'; import { CoreNavigator } from '@services/navigator'; import { makeSingleton } from '@singletons'; import { CoreDataPrivacy } from '../dataprivacy'; @@ -28,6 +28,7 @@ export class CoreDataPrivacyDataRequestsLinkHandlerService extends CoreContentLi name = 'CoreDataPrivacyDataRequestsLinkHandler'; pattern = /\/admin\/tool\/dataprivacy\/mydatarequests\.php/; + featureName = CORE_DATAPRIVACY_FEATURE_NAME; /** * @inheritdoc From 6be582f932f22dee554fc91d2dd4b745b0172dd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Mon, 11 Mar 2024 12:40:50 +0100 Subject: [PATCH 2/3] MOBILE-4329 dataprivacy: Add download button when download is ready --- scripts/langindex.json | 3 +- src/core/features/dataprivacy/lang.json | 3 +- .../features/dataprivacy/pages/main/main.html | 88 ++++++++++--------- .../dataprivacy/services/dataprivacy.ts | 1 + .../tests/behat/create_data_request.feature | 5 +- 5 files changed, 56 insertions(+), 44 deletions(-) diff --git a/scripts/langindex.json b/scripts/langindex.json index 3140fadfa2c..009ac93f884 100644 --- a/scripts/langindex.json +++ b/scripts/langindex.json @@ -1684,9 +1684,10 @@ "core.dataprivacy.datarequests": "tool_dataprivacy", "core.dataprivacy.daterequested": "tool_dataprivacy", "core.dataprivacy.deletemyaccount": "tool_dataprivacy", + "core.dataprivacy.download": "tool_dataprivacy", "core.dataprivacy.message": "tool_dataprivacy", "core.dataprivacy.newrequest": "tool_dataprivacy", - "core.dataprivacy.nodatarequests": "tool_dataprivacy", + "core.dataprivacy.nopersonaldatarequests": "tool_dataprivacy", "core.dataprivacy.pluginname": "tool_dataprivacy", "core.dataprivacy.replyto": "tool_dataprivacy", "core.dataprivacy.requestactions": "tool_dataprivacy", diff --git a/src/core/features/dataprivacy/lang.json b/src/core/features/dataprivacy/lang.json index 13f0290bd50..3304876cd52 100644 --- a/src/core/features/dataprivacy/lang.json +++ b/src/core/features/dataprivacy/lang.json @@ -6,9 +6,10 @@ "datarequests": "Data requests", "daterequested": "Date requested", "deletemyaccount": "Delete my account", + "download": "Download", "message": "Message", "newrequest": "New request", - "nodatarequests": "There are no data requests", + "nopersonaldatarequests": "You don't have any personal data requests", "pluginname": "Data privacy", "replyto": "Reply to", "requestactions": "Actions", diff --git a/src/core/features/dataprivacy/pages/main/main.html b/src/core/features/dataprivacy/pages/main/main.html index 5e42746b8e7..38ffc3aa15b 100644 --- a/src/core/features/dataprivacy/pages/main/main.html +++ b/src/core/features/dataprivacy/pages/main/main.html @@ -35,24 +35,27 @@

{{ 'core.dataprivacy.datarequests' | translate }}

- +

{{ 'core.dataprivacy.requestby' | translate }}

{{ request.requestedbyuser.fullname }}

- +

{{ 'core.dataprivacy.message' | translate }}

- + - + {{ 'core.dataprivacy.cancelrequest' | translate }} + + {{ 'core.dataprivacy.download' | translate }} + @@ -90,12 +93,17 @@

{{ 'core.dataprivacy.datarequests' | translate }}

{{ 'core.dataprivacy.cancelrequest' | translate }} + + {{ 'core.dataprivacy.download' | translate }} + - +
@@ -117,44 +125,44 @@

{{ 'core.dataprivacy.datarequests' | translate }}

@switch (request.status) { - @case (0) { - {{'core.dataprivacy.statuspending' | translate }} - } @case (1) { - {{'core.dataprivacy.statuspreprocessing' | translate }} - } @case (2) { - {{'core.dataprivacy.statusawaitingapproval' | translate }} - } @case (3) { - {{'core.dataprivacy.statusapproved' | translate }} - } @case (4) { - {{'core.dataprivacy.statusprocessing' | translate }} - } @case (5) { - {{'core.dataprivacy.statuscomplete' | translate }} - } @case (6) { - {{'core.dataprivacy.statuscancelled' | translate }} - } @case (7) { - {{'core.dataprivacy.statusrejected' | translate }} - } @case (8) { - {{'core.dataprivacy.statusready' | translate }} - } @case (9) { - {{'core.dataprivacy.statusexpired' | translate }} - } @case (10) { - {{'core.dataprivacy.statusdeleted' | translate }} - } @default { - {{request.statuslabel}} - } + @case (0) { + {{'core.dataprivacy.statuspending' | translate }} + } @case (1) { + {{'core.dataprivacy.statuspreprocessing' | translate }} + } @case (2) { + {{'core.dataprivacy.statusawaitingapproval' | translate }} + } @case (3) { + {{'core.dataprivacy.statusapproved' | translate }} + } @case (4) { + {{'core.dataprivacy.statusprocessing' | translate }} + } @case (5) { + {{'core.dataprivacy.statuscomplete' | translate }} + } @case (6) { + {{'core.dataprivacy.statuscancelled' | translate }} + } @case (7) { + {{'core.dataprivacy.statusrejected' | translate }} + } @case (8) { + {{'core.dataprivacy.statusready' | translate }} + } @case (9) { + {{'core.dataprivacy.statusexpired' | translate }} + } @case (10) { + {{'core.dataprivacy.statusdeleted' | translate }} + } @default { + {{request.statuslabel}} + } } @switch (request.type) { - @case (1) { - {{ 'core.dataprivacy.requesttypeexport' | translate }} - } @case (2) { - {{ 'core.dataprivacy.requesttypedelete' | translate }} - } @case (3) { - {{ 'core.dataprivacy.requesttypeothers' | translate }} - } @default { - {{request.typename}} - } + @case (1) { + {{ 'core.dataprivacy.requesttypeexport' | translate }} + } @case (2) { + {{ 'core.dataprivacy.requesttypedelete' | translate }} + } @case (3) { + {{ 'core.dataprivacy.requesttypeothers' | translate }} + } @default { + {{request.typename}} + } } diff --git a/src/core/features/dataprivacy/services/dataprivacy.ts b/src/core/features/dataprivacy/services/dataprivacy.ts index 21feed9c64e..d7d35e22585 100644 --- a/src/core/features/dataprivacy/services/dataprivacy.ts +++ b/src/core/features/dataprivacy/services/dataprivacy.ts @@ -375,4 +375,5 @@ export type CoreDataPrivacyRequest = { approvedeny?: boolean; // Approvedeny. allowfiltering?: boolean; // Allowfiltering. canmarkcomplete?: boolean; // Canmarkcomplete. + downloadlink?: string; // Downloadlink. }; diff --git a/src/core/features/dataprivacy/tests/behat/create_data_request.feature b/src/core/features/dataprivacy/tests/behat/create_data_request.feature index 4be00278772..c55c8872402 100644 --- a/src/core/features/dataprivacy/tests/behat/create_data_request.feature +++ b/src/core/features/dataprivacy/tests/behat/create_data_request.feature @@ -58,5 +58,6 @@ Feature: Data export and delete from the privacy API Then I should find "Approved" near "Export all of my personal data" in the app When I run all adhoc tasks And I pull to refresh in the app - And I should find "Download ready" near "Export all of my personal data" in the app - # TODO: Add download link and test it. + Then I should find "Download ready" near "Export all of my personal data" in the app + And I press "Download" in the app + And the app should have opened a browser tab with url "$WWWROOTPATTERN" From 6454a744642c93c054abea3cf5e6be5a1f7e7b67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Mon, 11 Mar 2024 13:35:33 +0100 Subject: [PATCH 3/3] MOBILE-4329 chore: Make core table x-scrollables --- .../report-detail/report-detail.html | 2 +- .../report-detail/report-detail.scss | 2 - src/theme/theme.base.scss | 37 +++++++++++-------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/src/core/features/reportbuilder/components/report-detail/report-detail.html b/src/core/features/reportbuilder/components/report-detail/report-detail.html index 3f1810cb90b..d05ddfcdc1d 100644 --- a/src/core/features/reportbuilder/components/report-detail/report-detail.html +++ b/src/core/features/reportbuilder/components/report-detail/report-detail.html @@ -22,7 +22,7 @@ - +
diff --git a/src/core/features/reportbuilder/components/report-detail/report-detail.scss b/src/core/features/reportbuilder/components/report-detail/report-detail.scss index 427a3cffb67..0cf045281a5 100644 --- a/src/core/features/reportbuilder/components/report-detail/report-detail.scss +++ b/src/core/features/reportbuilder/components/report-detail/report-detail.scss @@ -6,8 +6,6 @@ } table { - overflow-x: auto; - th, td { min-width: 200px; } diff --git a/src/theme/theme.base.scss b/src/theme/theme.base.scss index 88c59f68e3b..c83994d6668 100644 --- a/src/theme/theme.base.scss +++ b/src/theme/theme.base.scss @@ -2023,6 +2023,10 @@ table.core-table { margin: 1em auto; color: var(--text-color); + &.x-scrollable { + overflow-x: auto; + display: block; + } thead th { vertical-align: bottom; @@ -2031,8 +2035,13 @@ table.core-table { background-color: var(--core-table-header-background); } - tbody th { - font-weight: normal; + tbody { + th { + font-weight: normal; + } + td { + font-size: 16px; + } } th, td { @@ -2045,10 +2054,6 @@ table.core-table { border-bottom: 1px solid var(--core-table-border-color); } - tbody td { - font-size: 16px; - } - .odd { --cell-background: var(--core-table-odd-cell-background); --cell-hover: var(--core-table-odd-cell-hover); @@ -2069,19 +2074,21 @@ table.core-table { } } - tbody.auto-striped tr:nth-child(odd) { - background-color: var(--core-table-odd-cell-background); + tbody.auto-striped { + tr:nth-child(odd) { + background-color: var(--core-table-odd-cell-background); - &:hover { - background-color: var(--core-table-even-odd-hover); + &:hover { + background-color: var(--core-table-even-odd-hover); + } } - } - tbody.auto-striped tr:nth-child(even) { - background-color: var(--core-table-even-cell-background); + tr:nth-child(even) { + background-color: var(--core-table-even-cell-background); - &:hover { - background-color: var(--core-table-even-cell-hover); + &:hover { + background-color: var(--core-table-even-cell-hover); + } } }