From 26f27f3d6db45c5fd564ef55cde01d83d0819f39 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Wed, 18 Sep 2019 13:28:02 +0300 Subject: [PATCH 001/161] Fixes DMP export bug including Dataset Descriptions with Canceled or Deleted status. (Issue #159) --- .../eudat/logic/managers/DataManagementPlanManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index 094169e14..4b28a7fbf 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -194,13 +194,13 @@ public class DataManagementPlanManager { wordBuilder.addParagraphContent("Organisations", document, ParagraphStyle.HEADER2, BigInteger.ZERO); if (dmpEntity.getOrganisations().size() > 0) { - wordBuilder.addParagraphContent(dmpEntity.getOrganisations().stream().map(x -> x.getLabel()).collect(Collectors.joining(", ")) + wordBuilder.addParagraphContent(dmpEntity.getOrganisations().stream().map(Organisation::getLabel).collect(Collectors.joining(", ")) , document, ParagraphStyle.TEXT, BigInteger.ZERO); } wordBuilder.addParagraphContent("Researchers", document, ParagraphStyle.HEADER2, BigInteger.ZERO); if (dmpEntity.getResearchers().size() > 0) { - wordBuilder.addParagraphContent(dmpEntity.getResearchers().stream().map(x -> x.getLabel()).collect(Collectors.joining(", ")) + wordBuilder.addParagraphContent(dmpEntity.getResearchers().stream().map(Researcher::getLabel).collect(Collectors.joining(", ")) , document, ParagraphStyle.TEXT, BigInteger.ZERO); } @@ -214,7 +214,10 @@ public class DataManagementPlanManager { parBreakDMP.setPageBreak(true); wordBuilder.addParagraphContent("Datasets", document, ParagraphStyle.TITLE, BigInteger.ZERO); - dmpEntity.getDataset().stream().forEach(datasetEntity -> { + dmpEntity.getDataset().stream() + .filter(item -> item.getStatus() != Dataset.Status.CANCELED.getValue()) + .filter(item -> item.getStatus() != Dataset.Status.DELETED.getValue()) + .forEach(datasetEntity -> { Map properties = new HashMap<>(); if (datasetEntity.getProperties() != null) { JSONObject jobject = new JSONObject(datasetEntity.getProperties()); From e50875c9880bb48edbb22887e78ee4f8b341b698 Mon Sep 17 00:00:00 2001 From: apapachristou Date: Wed, 18 Sep 2019 14:35:51 +0300 Subject: [PATCH 002/161] Fixes styling issue in multi field set - (Issue #156) --- .../form-section/form-section.component.html | 16 ++++++++++++---- .../form-section/form-section.component.ts | 6 ++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html index b7bf93f40..eecf3ab27 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html @@ -14,14 +14,22 @@
- - +
+
+ +
+ +
+
+
-
+
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts index 2d17c1c31..3587177c0 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts @@ -39,6 +39,12 @@ export class FormSectionComponent implements OnInit { ((this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))).push(compositeField.buildForm()); } + deleteCompositeFieldFormGroup(compositeFildIndex: number) { + const firstMultiplicityItem = this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems').get('' + 0).get('fields').get('' + 0).value; + this.form.get('compositeFields').get('' + compositeFildIndex).get('fields').get('' + 0).patchValue(firstMultiplicityItem); + ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))).removeAt(0); + } + deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) { ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))).removeAt(fildIndex); } From 2008986daf5b81041d45242848e1215bcd769cdc Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Wed, 18 Sep 2019 16:16:14 +0300 Subject: [PATCH 003/161] Fixes bug on public dashboard counting non public entities. (Issue #157) --- .../logic/managers/DashBoardManager.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java index c1f7ac711..42746c11c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java @@ -8,6 +8,9 @@ import eu.eudat.data.dao.entities.DMPDao; import eu.eudat.data.dao.entities.DatasetDao; import eu.eudat.data.dao.entities.OrganisationDao; import eu.eudat.data.dao.entities.GrantDao; +import eu.eudat.data.entities.DMP; +import eu.eudat.data.entities.Dataset; +import eu.eudat.data.entities.Grant; import eu.eudat.data.entities.UserInfo; import eu.eudat.logic.builders.model.models.RecentActivityDataBuilder; import eu.eudat.logic.services.ApiContext; @@ -40,23 +43,26 @@ public class DashBoardManager { public DashBoardStatistics getStatistics() { DashBoardStatistics statistics = new DashBoardStatistics(); - DatasetCriteria datasetCriteria = new DatasetCriteria(); DataManagementPlanCriteria dataManagementPlanCriteria = new DataManagementPlanCriteria(); OrganisationCriteria organisationCriteria = new OrganisationCriteria(); - datasetCriteria.setAllVersions(false); dataManagementPlanCriteria.setAllVersions(false); - organisationCriteria.setPublic(false); + dataManagementPlanCriteria.setIsPublic(true); + organisationCriteria.setPublic(true); - CompletableFuture dmpFuture = databaseRepository.getDmpDao().getWithCriteria(dataManagementPlanCriteria).countAsync() - .whenComplete((dmpsStats, throwable) -> statistics.setTotalDataManagementPlanCount(dmpsStats)); - CompletableFuture datasetFuture = databaseRepository.getDatasetDao().getWithCriteria(datasetCriteria).countAsync() - .whenComplete((datasetsStats, throwable) -> statistics.setTotalDataSetCount(datasetsStats)); - CompletableFuture grantFuture = databaseRepository.getGrantDao().asQueryable().countAsync() - .whenComplete((grantsStats, throwable) -> statistics.setTotalGrantCount(grantsStats)); - CompletableFuture organisationFuture = databaseRepository.getOrganisationDao().getWithCriteria(organisationCriteria).countAsync() - .whenComplete((organisationStats, throwable) -> statistics.setTotalOrganisationCount(organisationStats)); + List dmps = databaseRepository.getDmpDao().getWithCriteria(dataManagementPlanCriteria).toList(); + long numberOfDatasets = 0; + LinkedList grants = new LinkedList<>(); + for (DMP dmp : dmps) { + numberOfDatasets = numberOfDatasets + dmp.getDataset().stream() + .filter(item -> item.getStatus() == Dataset.Status.FINALISED.getValue()).count(); + grants.add(dmp.getGrant()); + } + + statistics.setTotalDataManagementPlanCount((long) dmps.size()); + statistics.setTotalDataSetCount(numberOfDatasets); + statistics.setTotalGrantCount(grants.stream().distinct().count()); + statistics.setTotalOrganisationCount(databaseRepository.getOrganisationDao().getWithCriteria(organisationCriteria).count()); - CompletableFuture.allOf(dmpFuture, datasetFuture, grantFuture, organisationFuture).join(); return statistics; } From 0c27746465405a3b44d90891954e0f937a147dbd Mon Sep 17 00:00:00 2001 From: apapachristou Date: Thu, 19 Sep 2019 13:00:00 +0300 Subject: [PATCH 004/161] Changes color palette --- .../export-method-dialog.component.scss | 2 +- .../dataset-profile-listing.component.scss | 3 +- .../editor/dmp-profile-editor.component.scss | 3 +- .../dmp-profile-listing.component.scss | 3 +- .../user/listing/user-listing.component.scss | 3 +- .../dataset-info-counter.component.css | 6 +- .../dmp-info-counter.component.css | 3 +- .../recent-edited-activity.component.css | 9 +-- .../recent-visited-activity.component.css | 6 +- .../dataset-wizard.component.scss | 16 +++-- .../criteria/dataset-criteria.component.scss | 4 +- .../listing/dataset-listing.component.scss | 6 +- .../dataset-listing-item.component.scss | 6 +- .../app/ui/dmp/clone/dmp-clone.component.scss | 7 +- .../datasets-tab/datasets-tab.component.scss | 10 +-- .../ui/dmp/editor/dmp-editor.component.scss | 5 +- .../dmp-finalize-dialog.component.scss | 7 +- .../general-tab/general-tab.component.scss | 4 +- .../editor/grant-tab/grant-tab.component.scss | 5 +- .../people-tab/people-tab.component.scss | 3 +- .../criteria/dmp-criteria.component.scss | 16 ++--- .../dmp-listing-item.component.scss | 7 +- .../dmp/overview/dmp-overview.component.scss | 17 ++--- .../editor/dmp-wizard-editor.component.scss | 2 +- .../dmp-wizard-dataset-listing.component.scss | 29 ++++---- .../explore-dataset-filters.component.scss | 16 ++--- ...xplore-dataset-listing-item.component.scss | 3 +- .../explore-dmp-filters.component.scss | 16 ++--- .../explore-dmp-listing-item.component.scss | 8 ++- .../criteria/grant-criteria.component.scss | 16 ++--- .../misc/breadcrumb/breadcrumb.component.scss | 2 +- .../sidebar-footer.component.css | 2 +- dmp-frontend/src/assets/css/demo.css | 7 +- dmp-frontend/src/assets/scss/blue-theme.scss | 30 ++++---- .../assets/scss/core/variables/_brand.scss | 2 +- .../assets/scss/core/variables/_colors.scss | 28 ++++---- .../src/assets/scss/material-dashboard.scss | 70 +++++++++++-------- dmp-frontend/src/styles.scss | 34 +++++---- 38 files changed, 228 insertions(+), 188 deletions(-) diff --git a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.scss b/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.scss index 953b1843e..df9136d68 100644 --- a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.scss +++ b/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.scss @@ -10,7 +10,7 @@ button { // background-color: #aaaaaa; - background-color: #4687f0; + background-color: #00b29f; color: #ffffff; } } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.scss b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.scss index 6bf311012..2eb955561 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.scss +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.scss @@ -33,7 +33,8 @@ mat-row:hover { // } mat-row:nth-child(odd) { - background-color: #eef0fb; + background-color: #0c748914; + // background-color: #eef0fb; } ::ng-deep .mat-paginator-container { diff --git a/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.scss b/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.scss index 25d42604c..b0459dd25 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.scss +++ b/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.scss @@ -16,7 +16,8 @@ } ::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background, .mat-checkbox-indeterminate.mat-accent .mat-checkbox-background { - background-color: #0070c0; + background-color: #00b29f; + // background-color: #0070c0; } ::ng-deep .mat-checkbox-disabled.mat-checkbox-checked .mat-checkbox-background, .mat-checkbox-disabled.mat-checkbox-indeterminate .mat-checkbox-background { diff --git a/dmp-frontend/src/app/ui/admin/dmp-profile/listing/dmp-profile-listing.component.scss b/dmp-frontend/src/app/ui/admin/dmp-profile/listing/dmp-profile-listing.component.scss index 772182938..fe822c9c8 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-profile/listing/dmp-profile-listing.component.scss +++ b/dmp-frontend/src/app/ui/admin/dmp-profile/listing/dmp-profile-listing.component.scss @@ -16,7 +16,8 @@ } mat-row:nth-child(odd) { - background-color: #eef0fb; + background-color: #0c748914; + // background-color: #eef0fb; } .mat-fab-bottom-right { diff --git a/dmp-frontend/src/app/ui/admin/user/listing/user-listing.component.scss b/dmp-frontend/src/app/ui/admin/user/listing/user-listing.component.scss index ed359a1d6..4f28a0670 100644 --- a/dmp-frontend/src/app/ui/admin/user/listing/user-listing.component.scss +++ b/dmp-frontend/src/app/ui/admin/user/listing/user-listing.component.scss @@ -12,7 +12,8 @@ } mat-row:nth-child(odd) { - background-color: #eef0fb; + background-color: #0c748914; + // background-color: #eef0fb; } } diff --git a/dmp-frontend/src/app/ui/dashboard/dataset-info-counter/dataset-info-counter.component.css b/dmp-frontend/src/app/ui/dashboard/dataset-info-counter/dataset-info-counter.component.css index 69a97ae21..17d724e05 100644 --- a/dmp-frontend/src/app/ui/dashboard/dataset-info-counter/dataset-info-counter.component.css +++ b/dmp-frontend/src/app/ui/dashboard/dataset-info-counter/dataset-info-counter.component.css @@ -38,7 +38,8 @@ } .about-item .length { - color: rgb(70, 135, 240); + color: #00b29f; + /* color: #089dbb; */ } .about-item .title { @@ -53,7 +54,8 @@ } .icon { - color: #92d050; + color: #08bd63; + /* color: #92d050; */ } hr { diff --git a/dmp-frontend/src/app/ui/dashboard/dmp-info-counter/dmp-info-counter.component.css b/dmp-frontend/src/app/ui/dashboard/dmp-info-counter/dmp-info-counter.component.css index ee94cbfe9..23ba20a1a 100644 --- a/dmp-frontend/src/app/ui/dashboard/dmp-info-counter/dmp-info-counter.component.css +++ b/dmp-frontend/src/app/ui/dashboard/dmp-info-counter/dmp-info-counter.component.css @@ -4,7 +4,8 @@ .icon { /* color: rgb(112, 173, 71); */ - color: #92d050; + color: #08bd63; + /* color: #92d050; */ } .gray-container { diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.css b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.css index bb91d4d54..c08c9a9f6 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.css +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.css @@ -5,9 +5,9 @@ th { .is-public { padding-left: 5px; padding-right: 5px; - border: 1px solid rgb(197, 224, 180); - color: rgb(131, 184, 95); - background-color: rgb(240, 247, 236); + border: 1px solid #00b29f3b; + color: #00b29f; + background-color: #00b29f0f; border-radius: 10em; text-align: center; } @@ -31,7 +31,8 @@ th { margin-left: 2.5em; margin-right: 2.5em; border-radius: 10em; - background-color: rgba(0, 112, 192, 1); + background-color: #0d7489; + /* background-color: rgba(0, 112, 192, 1); */ /* background-color: #007bff; */ color: #fff; text-transform: uppercase; diff --git a/dmp-frontend/src/app/ui/dashboard/recent-visited-activity/recent-visited-activity.component.css b/dmp-frontend/src/app/ui/dashboard/recent-visited-activity/recent-visited-activity.component.css index 8402448b8..e79187de7 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-visited-activity/recent-visited-activity.component.css +++ b/dmp-frontend/src/app/ui/dashboard/recent-visited-activity/recent-visited-activity.component.css @@ -5,9 +5,9 @@ th { .is-public { padding-left: 5px; padding-right: 5px; - border: 1px solid rgb(197, 224, 180); - color: rgb(131, 184, 95); - background-color: rgb(240, 247, 236); + border: 1px solid #00b29f3b; + color: #00b29f; + background-color: #00b29f0f; border-radius: 10em; text-align: center; } diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.scss b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.scss index b2049965d..02de9b7fe 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.scss +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.scss @@ -9,7 +9,8 @@ .description-action-row { margin-top: 1em; } - .deleteButton, .reverseButton { + .deleteButton, + .reverseButton { margin-top: 15px; margin-bottom: 15px; margin-right: 15px; @@ -30,13 +31,13 @@ .saveAndFinalizeButton { margin-top: 15px; margin-bottom: 15px; - margin-right: 15px; + margin-right: 15px; } .finalizeButton { - margin-top: 15px; + margin-top: 15px; margin-bottom: 15px; - margin-right: 15px; - text-transform: uppercase; + margin-right: 15px; + text-transform: uppercase; } .downloadPDF { margin-top: 15px; @@ -76,7 +77,7 @@ } .more-icon :hover { - color: #4687e6; + color: #00b29f; } .new-dataset { @@ -97,5 +98,6 @@ } ::ng-deep .mat-ink-bar { - background-color: #0070c0 !important; + background-color: #00b29f !important; + // background-color: #0070c0 !important; } diff --git a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.scss b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.scss index f4822491e..28c634a3a 100644 --- a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.scss +++ b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.scss @@ -3,7 +3,7 @@ } .category-title { - color: #2e75b6; + color: #089dbb; margin-top: 8px; margin-bottom: 12px; } @@ -20,7 +20,7 @@ .filters-title { width: 90px; - color: #2e75b6; + color: #089dbb; background-color: white; padding: 0px 20px; margin-top: -10px; diff --git a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.scss b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.scss index d60d77eee..bcd3a0235 100644 --- a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.scss +++ b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.scss @@ -43,12 +43,12 @@ } ::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { - border-color: #2e75b6; + border-color: #00b29f; } ::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle { - color: #2e75b6; - background-color: #2e75b6; + color: #00b29f; + background-color: #00b29f; } .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element { diff --git a/dmp-frontend/src/app/ui/dataset/listing/listing-item/dataset-listing-item.component.scss b/dmp-frontend/src/app/ui/dataset/listing/listing-item/dataset-listing-item.component.scss index cdaa2558f..21a58f334 100644 --- a/dmp-frontend/src/app/ui/dataset/listing/listing-item/dataset-listing-item.component.scss +++ b/dmp-frontend/src/app/ui/dataset/listing/listing-item/dataset-listing-item.component.scss @@ -18,7 +18,7 @@ } .container-header :hover { - color: #4687e6; + color: #00b29f; } h4 { @@ -45,11 +45,11 @@ h4 > span { } .links :hover { - color: #4687e6; + color: #00b29f; } .about-item .length { - color: #4687f0; + color: #00b29f; } .about-item .title { diff --git a/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.scss b/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.scss index 0917e88e2..13ef5d884 100644 --- a/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.scss +++ b/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.scss @@ -14,7 +14,7 @@ .clone-mode { // line-height: 2em; text-transform: uppercase; - color: #4687e6; + color: #089dbb; font-weight: 400; align-self: center; } @@ -25,7 +25,7 @@ } .more-icon :hover { - color: #4687e6; + color: #00b29f; } ::ng-deep .mat-tab-labels { @@ -37,5 +37,6 @@ } ::ng-deep .mat-ink-bar { - background-color: #0070c0 !important; + background-color: #00b29f !important; + // background-color: #0070c0 !important; } diff --git a/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.scss b/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.scss index b6edcaa28..a7116bf01 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.scss +++ b/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.scss @@ -7,7 +7,8 @@ } .finalized-bookmark { - color: #92d050; + color: #08bd63; + // color: #92d050; display: inline; position: absolute; margin-top: 0.5em; @@ -38,7 +39,7 @@ .show-more { background-color: #ffffff00; - color: #4687f0; + color: #00b29f; font-weight: 700; justify-self: center; } @@ -50,7 +51,8 @@ margin-left: 2.5em; margin-right: 2.5em; border-radius: 10em; - background-color: #0070c0; + background-color: #0d7489; + // background-color: #0070c0; // background-color: rgb(70, 135, 230); color: #fff; text-transform: uppercase; @@ -71,7 +73,7 @@ } h4 span { - color: #619ce3; + color: #089dbb; font-weight: 600; text-transform: uppercase; } diff --git a/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.scss b/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.scss index c5aeb2373..ffe46cacf 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.scss +++ b/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.scss @@ -12,7 +12,7 @@ } .more-icon :hover { - color: #4687e6; + color: #00b29f; } ::ng-deep .mat-tab-labels { @@ -24,5 +24,6 @@ } ::ng-deep .mat-ink-bar { - background-color: #0070c0 !important; + background-color: #00b29f !important; + // background-color: #0070c0 !important; } diff --git a/dmp-frontend/src/app/ui/dmp/editor/dmp-finalize-dialog/dmp-finalize-dialog.component.scss b/dmp-frontend/src/app/ui/dmp/editor/dmp-finalize-dialog/dmp-finalize-dialog.component.scss index 8fdc4177f..59445cc23 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dmp-finalize-dialog/dmp-finalize-dialog.component.scss +++ b/dmp-frontend/src/app/ui/dmp/editor/dmp-finalize-dialog/dmp-finalize-dialog.component.scss @@ -49,7 +49,8 @@ } .finalized-bookmark { - color: #92d050; + color: #08bd63; + // color: #92d050; display: inline; padding: 0; } @@ -65,10 +66,10 @@ } .datasets span { - color: #4687f0; + color: #00b29f; } .emptyList { font-style: italic; - color:rgba(0, 0, 0, 0.26); + color: rgba(0, 0, 0, 0.26); } diff --git a/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.scss b/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.scss index 1a08fab65..05d8ae793 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.scss +++ b/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.scss @@ -6,7 +6,7 @@ } .input-btn :hover { - color: #4687f0 !important; + color: #00b29f !important; } // .icon-btn { @@ -31,7 +31,7 @@ } .version-menu mat-icon { - color: #4687f0; + color: #00b29f; } ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-wrapper { diff --git a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.scss b/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.scss index 0ee135a89..7c7d1acda 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.scss +++ b/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.scss @@ -5,7 +5,7 @@ align-self: center; padding-bottom: 1em; cursor: pointer; - color: #0070c0; + color: #00b29f; } .add-entity:after { @@ -16,7 +16,8 @@ height: 2px; left: 50%; position: absolute; - background: #0070c0; + background: #00b29f; + // background: #0070c0; transition: width 0.3s ease 0s, left 0.3s ease 0s; width: 0; } diff --git a/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.scss b/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.scss index 2e0aea0f9..35fc52eda 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.scss +++ b/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.scss @@ -1,6 +1,7 @@ .table-header { background-color: #eeeeee; - color: #0070c0; + color: #0c7489; + // color: #0070c0; height: 2em; } diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.scss b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.scss index 02e99ec24..18df2a5f4 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.scss +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.scss @@ -22,7 +22,7 @@ } .category-title { - color: #2e75b6; + color: #089dbb; margin-top: 8px; margin-bottom: 12px; } @@ -39,7 +39,7 @@ .filters-title { width: 90px; - color: #2e75b6; + color: #089dbb; background-color: white; padding: 0px 20px; margin-top: -10px; @@ -56,7 +56,7 @@ } ::ng-deep .mat-focused .mat-form-field-label { - color: #2e75b6 !important; + color: #00b29f !important; } ::ng-deep.mat-form-field-underline { @@ -64,7 +64,7 @@ } ::ng-deep.mat-form-field-ripple { - background-color: #2e75b6 !important; + background-color: #00b29f !important; } // ::ng-deep .mat-checkbox { @@ -81,7 +81,7 @@ .mat-accent .mat-pseudo-checkbox-indeterminate, .mat-pseudo-checkbox-checked, .mat-pseudo-checkbox-indeterminate { - background-color: #2e75b6; + background-color: #00b29f; } ::ng-deep .mat-ripple-element { @@ -98,12 +98,12 @@ } ::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { - border-color: #2e75b6; + border-color: #00b29f; } ::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle { - color: #2e75b6; - background-color: #2e75b6; + color: #00b29f; + background-color: #00b29f; } .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element { diff --git a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.scss b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.scss index 7b4733d6d..9a230fbba 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.scss +++ b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.scss @@ -17,7 +17,7 @@ } .container-header :hover { - color: #4687e6; + color: #00b29f; } h4 { @@ -44,7 +44,7 @@ h4 > span { } .datasets-counter :hover { - color: #4687e6 !important; + color: #089dbb !important; } .about-item .title { @@ -70,5 +70,6 @@ h4 > span { .published-icon { padding-top: 1px; - color: #92d050; + color: #08bd63;; + // color: #92d050; } diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.scss b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.scss index 324ddea63..f17cab739 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.scss +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.scss @@ -14,7 +14,7 @@ } .more-icon :hover { - color: #4687e6; + color: #00b29f; } .menu-item { @@ -54,7 +54,7 @@ .researchers-title { width: 120px; - color: #4687e6; + color: #089dbb; background-color: white; padding: 0px 10px; margin-top: -16px; @@ -78,7 +78,7 @@ } .container-header :hover { - color: #4687e6; + color: #00b29f; } .dataset-card { @@ -105,13 +105,13 @@ .show-more { background-color: #ffffff00; - color: #4687f0; + color: #00b29f; font-weight: 700; justify-self: center; } .visit-website { - background-color: #4687f0; + background-color: #00b29f; color: #ffffff; } @@ -132,7 +132,7 @@ } h4 span { - color: #619ce3; + color: #089dbb; font-weight: 600; text-transform: uppercase; } @@ -144,7 +144,8 @@ h4 span { margin-left: 2.5em; margin-right: 2.5em; border-radius: 10em; - background-color: rgba(0, 112, 192, 1); + background-color: #0d7489; + // background-color: rgba(0, 112, 192, 1); // background-color: rgb(70, 135, 230); color: #fff; text-transform: uppercase; @@ -173,7 +174,7 @@ h4 span { } .datasets-counter :hover { - color: #4687e6 !important; + color: #00b29f !important; } .total-info { diff --git a/dmp-frontend/src/app/ui/dmp/wizard/editor/dmp-wizard-editor.component.scss b/dmp-frontend/src/app/ui/dmp/wizard/editor/dmp-wizard-editor.component.scss index e8c0f3ca1..d7df7678d 100644 --- a/dmp-frontend/src/app/ui/dmp/wizard/editor/dmp-wizard-editor.component.scss +++ b/dmp-frontend/src/app/ui/dmp/wizard/editor/dmp-wizard-editor.component.scss @@ -14,7 +14,7 @@ } .input-btn :hover { - color: #4687f0 !important; + color: #00b29f !important; } .table-card .mat-grid-tile { diff --git a/dmp-frontend/src/app/ui/dmp/wizard/listing/dmp-wizard-dataset-listing.component.scss b/dmp-frontend/src/app/ui/dmp/wizard/listing/dmp-wizard-dataset-listing.component.scss index 9070df5a0..83bae944c 100644 --- a/dmp-frontend/src/app/ui/dmp/wizard/listing/dmp-wizard-dataset-listing.component.scss +++ b/dmp-frontend/src/app/ui/dmp/wizard/listing/dmp-wizard-dataset-listing.component.scss @@ -1,36 +1,37 @@ .mat-table { - margin: 24px; + margin: 24px; } .mat-fab-bottom-right { - // top: auto !important; - // right: 20px !important; - // bottom: 10px !important; - // left: auto !important; - // position: fixed !important; - float: right; + // top: auto !important; + // right: 20px !important; + // bottom: 10px !important; + // left: auto !important; + // position: fixed !important; + float: right; } .full-width { - width: 100%; + width: 100%; } .mat-card { - margin: 16px 0; + margin: 16px 0; } .mat-row { - cursor: pointer; + cursor: pointer; } mat-row:hover { - background-color: lightgray; + background-color: lightgray; } // mat-row:nth-child(even){ // background-color:red; // } -mat-row:nth-child(odd){ - background-color:#eef0fb; - } +mat-row:nth-child(odd) { + background-color: #0c748914; + // background-color:#eef0fb; +} diff --git a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.scss b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.scss index 7eb7d69a8..1bab477e4 100644 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.scss +++ b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.scss @@ -13,7 +13,7 @@ } .category-title { - color: #2e75b6; + color: #089dbb; margin-top: 8px; margin-bottom: 12px; } @@ -30,7 +30,7 @@ .filters-title { width: 90px; - color: #2e75b6; + color: #089dbb; background-color: white; padding: 0px 20px; margin-top: -10px; @@ -47,7 +47,7 @@ } ::ng-deep .mat-focused .mat-form-field-label { - color: #2e75b6 !important; + color: #00b29f !important; } ::ng-deep.mat-form-field-underline { @@ -55,7 +55,7 @@ } ::ng-deep.mat-form-field-ripple { - background-color: #2e75b6 !important; + background-color: #00b29f !important; } // ::ng-deep .mat-checkbox { @@ -72,7 +72,7 @@ .mat-accent .mat-pseudo-checkbox-indeterminate, .mat-pseudo-checkbox-checked, .mat-pseudo-checkbox-indeterminate { - background-color: #2e75b6; + background-color: #00b29f; } ::ng-deep .mat-ripple-element { @@ -89,12 +89,12 @@ } ::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { - border-color: #2e75b6; + border-color: #00b29f; } ::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle { - color: #2e75b6; - background-color: #2e75b6; + color: #00b29f; + background-color: #00b29f; } .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element { diff --git a/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.scss b/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.scss index ac562eae6..07ecdd307 100644 --- a/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.scss +++ b/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.scss @@ -33,7 +33,8 @@ h4 { } .about-item .length { - color: rgb(70, 135, 240); + color: #00b29f; + // color: #089dbb; } .about-item .title { diff --git a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.scss b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.scss index 7eb7d69a8..1bab477e4 100644 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.scss +++ b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.scss @@ -13,7 +13,7 @@ } .category-title { - color: #2e75b6; + color: #089dbb; margin-top: 8px; margin-bottom: 12px; } @@ -30,7 +30,7 @@ .filters-title { width: 90px; - color: #2e75b6; + color: #089dbb; background-color: white; padding: 0px 20px; margin-top: -10px; @@ -47,7 +47,7 @@ } ::ng-deep .mat-focused .mat-form-field-label { - color: #2e75b6 !important; + color: #00b29f !important; } ::ng-deep.mat-form-field-underline { @@ -55,7 +55,7 @@ } ::ng-deep.mat-form-field-ripple { - background-color: #2e75b6 !important; + background-color: #00b29f !important; } // ::ng-deep .mat-checkbox { @@ -72,7 +72,7 @@ .mat-accent .mat-pseudo-checkbox-indeterminate, .mat-pseudo-checkbox-checked, .mat-pseudo-checkbox-indeterminate { - background-color: #2e75b6; + background-color: #00b29f; } ::ng-deep .mat-ripple-element { @@ -89,12 +89,12 @@ } ::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { - border-color: #2e75b6; + border-color: #00b29f; } ::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle { - color: #2e75b6; - background-color: #2e75b6; + color: #00b29f; + background-color: #00b29f; } .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element { diff --git a/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.scss b/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.scss index 0476c1cea..0ee1f4e12 100644 --- a/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.scss +++ b/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.scss @@ -22,7 +22,8 @@ } .about-item .length { - color: rgb(70, 135, 240); + color: #00b29f; + // color: #089dbb; } .about-item .title { @@ -46,8 +47,9 @@ } .published-icon { - padding-top: 1px; - color: #92d050; + padding-top: 1px; + color: #08bd63; + // color: #92d050; } // .explore-dmp-listing-item { diff --git a/dmp-frontend/src/app/ui/grant/listing/criteria/grant-criteria.component.scss b/dmp-frontend/src/app/ui/grant/listing/criteria/grant-criteria.component.scss index eea90799c..c2156e6b9 100644 --- a/dmp-frontend/src/app/ui/grant/listing/criteria/grant-criteria.component.scss +++ b/dmp-frontend/src/app/ui/grant/listing/criteria/grant-criteria.component.scss @@ -27,7 +27,7 @@ } .category-title { - color: #2e75b6; + color: #089dbb; margin-top: 8px; margin-bottom: 12px; } @@ -44,7 +44,7 @@ .filters-title { width: 90px; - color: #2e75b6; + color: #089dbb; background-color: white; padding: 0px 20px; margin-top: -10px; @@ -61,7 +61,7 @@ } ::ng-deep .mat-focused .mat-form-field-label { - color: #2e75b6 !important; + color: #00b29f !important; } ::ng-deep.mat-form-field-underline { @@ -69,7 +69,7 @@ } ::ng-deep.mat-form-field-ripple { - background-color: #2e75b6 !important; + background-color: #00b29f !important; } // ::ng-deep .mat-checkbox { @@ -86,7 +86,7 @@ .mat-accent .mat-pseudo-checkbox-indeterminate, .mat-pseudo-checkbox-checked, .mat-pseudo-checkbox-indeterminate { - background-color: #2e75b6; + background-color: #00b29f; } ::ng-deep .mat-ripple-element { @@ -103,12 +103,12 @@ } ::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { - border-color: #2e75b6; + border-color: #00b29f; } ::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle { - color: #2e75b6; - background-color: #2e75b6; + color: #00b29f; + background-color: #00b29f; } .mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element { diff --git a/dmp-frontend/src/app/ui/misc/breadcrumb/breadcrumb.component.scss b/dmp-frontend/src/app/ui/misc/breadcrumb/breadcrumb.component.scss index c80112f1a..543dc4cc3 100644 --- a/dmp-frontend/src/app/ui/misc/breadcrumb/breadcrumb.component.scss +++ b/dmp-frontend/src/app/ui/misc/breadcrumb/breadcrumb.component.scss @@ -44,7 +44,7 @@ } .active { - color: #4687f0; + color: #00b29f; } .icon { diff --git a/dmp-frontend/src/app/ui/sidebar/sidebar-footer/sidebar-footer.component.css b/dmp-frontend/src/app/ui/sidebar/sidebar-footer/sidebar-footer.component.css index f1fb4aa11..faab6bfae 100644 --- a/dmp-frontend/src/app/ui/sidebar/sidebar-footer/sidebar-footer.component.css +++ b/dmp-frontend/src/app/ui/sidebar/sidebar-footer/sidebar-footer.component.css @@ -17,7 +17,7 @@ } .sidebar-footer :hover { - color: #4687e6; + color: #00b29f; } .sidebar-footer .vl { diff --git a/dmp-frontend/src/assets/css/demo.css b/dmp-frontend/src/assets/css/demo.css index 040ac2225..699bbba8f 100644 --- a/dmp-frontend/src/assets/css/demo.css +++ b/dmp-frontend/src/assets/css/demo.css @@ -78,7 +78,7 @@ h6 { } .sidebar[data-color="danger"] li.active>a { - background-color: #4687e6; + background-color: rgb(0, 178, 159); /* -webkit-box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(255, 255, 255, 0.4); */ /* box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(255, 255, 255, 0.4); */ box-shadow: none; @@ -174,7 +174,8 @@ h6 { } .card .card-header-blue .card-icon, .card .card-header-blue .card-text, .card .card-header-blue:not(.card-header-icon):not(.card-header-text), .card.bg-warning, .card.card-rotate.bg-warning .front, .card.card-rotate.bg-warning .back { - background: linear-gradient(60deg, rgb(0, 112, 192), rgb(0, 112, 192)); + /* background: linear-gradient(60deg, rgb(0, 112, 192), rgb(0, 112, 192)); */ + background: linear-gradient(60deg, rgb(12, 116, 137), rgb(12, 116, 137)); } .card .card-header-blue .card-icon, .card .card-header-blue:not(.card-header-icon):not(.card-header-text), .card .card-header-blue .card-text { @@ -347,5 +348,5 @@ table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, . } .attach-file :hover { - color: #667eff + color: #00b29f } diff --git a/dmp-frontend/src/assets/scss/blue-theme.scss b/dmp-frontend/src/assets/scss/blue-theme.scss index 9e72e7d71..d3a21dbd4 100644 --- a/dmp-frontend/src/assets/scss/blue-theme.scss +++ b/dmp-frontend/src/assets/scss/blue-theme.scss @@ -1,21 +1,21 @@ @import 'app/ui/misc/navigation/navigation.component.scss'; -@import '../node_modules/@angular/material/theming'; +@import '~@angular/material/theming'; // @import '../../../node_modules/@angular/material/theming'; $app-blue-theme-primary-palette: ( - 50: #e8eaf6, - 100: #c5cae9, - 200: #9fa8da, - 300: #7986cb, - 400: #5c6bc0, - 500: #3f51b5, - 600: #3949ab, - 700: #303f9f, - 800: #283593, - 900: #1a237e, - A100: #8c9eff, - A200: #536dfe, - A400: #3d5afe, - A700: #304ffe, + 50: #e2eef1, + 100: #b6d5dc, + 200: #86bac4, + 300: #559eac, + 400: #30899b, + 500: #0c7489, + 600: #0a6c81, + 700: #086176, + 800: #06576c, + 900: #034459, + A100: #8bddff, + A200: #58cfff, + A400: #25c0ff, + A700: #0bb9ff, contrast: ( 50: $black-87-opacity, 100: $black-87-opacity, diff --git a/dmp-frontend/src/assets/scss/core/variables/_brand.scss b/dmp-frontend/src/assets/scss/core/variables/_brand.scss index 4a9a39cfe..14113fb30 100644 --- a/dmp-frontend/src/assets/scss/core/variables/_brand.scss +++ b/dmp-frontend/src/assets/scss/core/variables/_brand.scss @@ -3,7 +3,7 @@ /* brand Colors */ -$brand-primary: $purple-500 !default; +$brand-primary: $indigo-500 !default; $brand-info: $cyan-500 !default; $brand-success: $green-500 !default; $brand-warning: $orange-500 !default; diff --git a/dmp-frontend/src/assets/scss/core/variables/_colors.scss b/dmp-frontend/src/assets/scss/core/variables/_colors.scss index db0c1986a..05404a310 100644 --- a/dmp-frontend/src/assets/scss/core/variables/_colors.scss +++ b/dmp-frontend/src/assets/scss/core/variables/_colors.scss @@ -62,20 +62,20 @@ $deep-purple-a400: #651fff !default; $deep-purple-a700: #6200ea !default; $deep-purple: $deep-purple-500 !default; -$indigo-50: #e8eaf6 !default; -$indigo-100: #c5cae9 !default; -$indigo-200: #9fa8da !default; -$indigo-300: #7986cb !default; -$indigo-400: #5c6bc0 !default; -$indigo-500: #3f51b5 !default; -$indigo-600: #3949ab !default; -$indigo-700: #303f9f !default; -$indigo-800: #283593 !default; -$indigo-900: #1a237e !default; -$indigo-a100: #8c9eff !default; -$indigo-a200: #536dfe !default; -$indigo-a400: #3d5afe !default; -$indigo-a700: #304ffe !default; +$indigo-50: #e2eef1 !default; +$indigo-100: #b6d5dc !default; +$indigo-200: #86bac4 !default; +$indigo-300: #559eac !default; +$indigo-400: #30899b !default; +$indigo-500: #0c7489 !default; +$indigo-600: #0a6c81 !default; +$indigo-700: #086176 !default; +$indigo-800: #06576c !default; +$indigo-900: #034459 !default; +$indigo-a100: #8bddff !default; +$indigo-a200: #58cfff !default; +$indigo-a400: #25c0ff !default; +$indigo-a700: #0bb9ff !default; $indigo: $indigo-500 !default; $blue-50: #e3f2fd !default; diff --git a/dmp-frontend/src/assets/scss/material-dashboard.scss b/dmp-frontend/src/assets/scss/material-dashboard.scss index 94856c0dd..03d5f6943 100644 --- a/dmp-frontend/src/assets/scss/material-dashboard.scss +++ b/dmp-frontend/src/assets/scss/material-dashboard.scss @@ -14,43 +14,53 @@ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. */ - @import "~@angular/material/prebuilt-themes/indigo-pink.css"; +@import "~@angular/material/prebuilt-themes/indigo-pink.css"; +@import "~@angular/material/theming"; // @import '../../../node_modules/@angular/material/theming'; +@import "./blue-theme.scss"; - @import "core/variables"; - @import "core/mixins"; - @import "~bootstrap/scss/bootstrap"; +@include mat-core(); +// Define a theme. +$custom-theme-primary: mat-palette($app-blue-theme-primary-palette, 900); +$custom-theme-accent: mat-palette($mat-pink, A200, A100, A400); +$custom-theme-warn: mat-palette($mat-red); +$custom-theme: mat-light-theme($custom-theme-primary, $custom-theme-accent, $custom-theme-warn); +@include angular-material-theme($custom-theme); - // Core Components - @import "core/buttons"; - @import "core/checkboxes"; - @import "core/radios"; - @import "core/forms"; - @import "core/input-group"; - @import "core/images"; - @import "core/navbar"; - @import "core/alerts"; - @import "core/type"; - @import "core/tabs"; - @import "core/tooltip"; - @import "core/popover"; - @import "core/dropdown"; - @import "core/togglebutton"; - @import "core/ripples"; - @import "core/footers"; - @import "core/sidebar-and-main-panel"; - @import "core/fixed-plugin"; - @import "core/tables"; - @import "core/misc"; +@import "core/variables"; +@import "core/mixins"; +@import "~bootstrap/scss/bootstrap"; + +// Core Components +@import "core/buttons"; +@import "core/checkboxes"; +@import "core/radios"; +@import "core/forms"; +@import "core/input-group"; +@import "core/images"; +@import "core/navbar"; +@import "core/alerts"; +@import "core/type"; +@import "core/tabs"; +@import "core/tooltip"; +@import "core/popover"; +@import "core/dropdown"; +@import "core/togglebutton"; +@import "core/ripples"; +@import "core/footers"; +@import "core/sidebar-and-main-panel"; +@import "core/fixed-plugin"; +@import "core/tables"; +@import "core/misc"; @import "core/cards"; @import "core/cards/card-stats"; @import "core/cards/card-profile"; @import "core/cards/card-plain"; - //plugin scss - @import "core/plugins/animate"; - @import "core/plugins/chartist"; - @import "core/plugins/perfect-scrollbar"; +//plugin scss +@import "core/plugins/animate"; +@import "core/plugins/chartist"; +@import "core/plugins/perfect-scrollbar"; - @import "core/responsive"; +@import "core/responsive"; diff --git a/dmp-frontend/src/styles.scss b/dmp-frontend/src/styles.scss index 107299ff2..6a8886290 100644 --- a/dmp-frontend/src/styles.scss +++ b/dmp-frontend/src/styles.scss @@ -1,18 +1,20 @@ +// @import "~@covalent/core/theming/all-theme"; +@import "~@angular/material/theming"; // @import '../node_modules/@angular/material/theming'; @import "~@angular/material/prebuilt-themes/indigo-pink.css"; +// Material-Bootstrap configuration @import "~bootstrap/scss/bootstrap"; -//Material-Bootstrap configuration -@import "assets/scss/bootstrap-material"; -@import "~@angular/material/theming"; -// @import "~@covalent/core/theming/all-theme"; -@include mat-core(); +// Custom Theme +// @import "./assets/scss/blue-theme.scss"; + // Define a theme. -$primary: mat-palette($mat-indigo); -$accent: mat-palette($mat-pink, A200, A100, A400); -$theme: mat-light-theme($primary, $accent); +// $primary: mat-palette($app-blue-theme-primary-palette); +// $accent: mat-palette($mat-pink, A200, A100, A400); +// $theme: mat-light-theme($primary, $accent); + // Include all theme styles for the components. -@include angular-material-theme($theme); +// @include angular-material-theme($theme); // @include covalent-theme($theme); .snackbar-warning { @@ -31,7 +33,8 @@ $theme: mat-light-theme($primary, $accent); } .lightblue-btn { - background-color: rgba(0, 112, 192, 1) !important; + background-color: rgb(0, 178, 159) !important; + // background-color: rgba(0, 112, 192, 1) !important; } .listing-item { @@ -55,7 +58,8 @@ $theme: mat-light-theme($primary, $accent); .chip { padding: 0.1em 1em; border-radius: 10em; - background-color: rgba(0, 112, 192, 1); + background-color: #0d7489; + // background-color: rgba(0, 112, 192, 1); color: #fff; text-transform: uppercase; font-weight: 500; @@ -70,7 +74,8 @@ $theme: mat-light-theme($primary, $accent); border: 0.1em solid rgb(218, 227, 243); border-radius: 10em; background-color: rgb(236, 241, 249); - color: rgba(0, 112, 192, 1); + color: rgb(0, 178, 159); + // color: rgba(0, 112, 192, 1); // color: rgb(68, 114, 196); text-transform: uppercase; font-weight: 500; @@ -125,14 +130,15 @@ $theme: mat-light-theme($primary, $accent); } .finalized-bookmark { - color: #92d050; + color: #08bd63;; + // color: #92d050; display: inline; position: absolute; padding-top: 3px; } h4 span { - color: #619ce3; + color: #089dbb; font-weight: 600; } } From 860801bb89a90646f3fbb2bfd2217b3c7701fb5b Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Thu, 19 Sep 2019 13:59:25 +0300 Subject: [PATCH 005/161] Fixes bug on Dataset Description creation caused by Data Repository External Reference. (Issue #160) --- .../eu/eudat/logic/managers/DatasetManager.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java index b361cb96a..1bc7bc3de 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java @@ -402,11 +402,8 @@ public class DatasetManager { } private void createDataRepositoriesIfTheyDontExist(DataRepositoryDao dataRepositoryDao, eu.eudat.data.entities.Dataset dataset) { - Set datasetDataRepositories = dataset.getDatasetDataRepositories(); - dataset.setDatasetDataRepositories(new HashSet<>()); - - if (datasetDataRepositories != null && !datasetDataRepositories.isEmpty()) { - for (eu.eudat.data.entities.DatasetDataRepository datasetDataRepository : datasetDataRepositories) { + if (dataset.getDatasetDataRepositories() != null && !dataset.getDatasetDataRepositories().isEmpty()) { + for (eu.eudat.data.entities.DatasetDataRepository datasetDataRepository : dataset.getDatasetDataRepositories()) { DataRepositoryCriteria criteria = new DataRepositoryCriteria(); criteria.setLike(datasetDataRepository.getDataRepository().getReference()); List entries = dataRepositoryDao.getWithCriteria(criteria).toList(); @@ -415,10 +412,8 @@ public class DatasetManager { datasetDataRepository.setDataset(dataset); dataset.getDatasetDataRepositories().add(datasetDataRepository); } else { - //datasetDataRepository.getDataRepository().setId(UUID.randomUUID()); - DataRepository dataRepository = dataRepositoryDao.createOrUpdate(datasetDataRepository.getDataRepository()); - datasetDataRepository.setDataRepository(dataRepository); - dataset.getDatasetDataRepositories().add(datasetDataRepository); + dataRepositoryDao.createOrUpdate(datasetDataRepository.getDataRepository()); + datasetDataRepository.setDataset(dataset); } } } From e853c8c44ac194163945e15fb29d04e7f81e02f6 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Thu, 19 Sep 2019 18:05:20 +0300 Subject: [PATCH 006/161] Adds clear autocomplete when you select value functionality at External References. (Issue #155) --- .../single/single-auto-complete-configuration.ts | 2 ++ .../auto-complete/single/single-auto-complete.component.ts | 7 +++++++ .../dataset-external-references-editor.component.ts | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts index d90d89a58..6628279f6 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts @@ -8,6 +8,8 @@ export interface SingleAutoCompleteConfiguration { minFilteringChars?: number; // Load and present items from start, without user query. Default: true. loadDataOnStart?: boolean; + // Remove item after selection. + removeAfterSelection?: boolean; // Static or initial items. initialItems?: (data?: any) => Observable; // Data retrieval function diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts index 1d740aefb..7acfe607f 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts @@ -153,6 +153,13 @@ export class SingleAutoCompleteComponent implements OnInit, MatFormFieldControl< //this._inputValue = " "; this.stateChanges.next(); this.optionSelected.emit(event.option.value); + if (this.configuration.removeAfterSelection) { + this.clearAutocomplete() + } + } + + private clearAutocomplete() { + this._setValue(null); } private _setValue(value: any) { diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts index d4894cf99..d68a70254 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts @@ -66,6 +66,7 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl this.dataRepositoriesAutoCompleteConfiguration = { filterFn: this.searchDatasetExternalDataRepositories.bind(this), + removeAfterSelection: true, initialItems: (type) => this.searchDatasetExternalDataRepositories('', type), displayFn: (item) => item ? item.name : null, titleFn: (item) => item ? item.name : null, @@ -74,6 +75,7 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl this.externalDatasetAutoCompleteConfiguration = { filterFn: this.searchDatasetExternalDatasets.bind(this), + removeAfterSelection: true, initialItems: (type) => this.searchDatasetExternalDatasets('', type),//.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1), displayFn: (item) => item ? item.label : null, titleFn: (item) => item ? item.label : null, @@ -82,6 +84,7 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl this.registriesAutoCompleteConfiguration = { filterFn: this.searchDatasetExternalRegistries.bind(this), + removeAfterSelection: true, initialItems: (type) => this.searchDatasetExternalRegistries('', type), displayFn: (item) => item ? item.label : null, titleFn: (item) => item ? item.label: null, @@ -90,6 +93,7 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl this.servicesAutoCompleteConfiguration = { filterFn: this.searchDatasetExternalServices.bind(this), + removeAfterSelection: true, initialItems: (type) => this.searchDatasetExternalServices('', type), displayFn: (item) => item ? item.label : null, titleFn: (item) => item ? item.label : null, @@ -98,6 +102,7 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl this.tagsAutoCompleteConfiguration = { filterFn: this.searchDatasetTags.bind(this), + removeAfterSelection: true, initialItems: (type) => this.searchDatasetTags('', type), displayFn: (item) => item ? item.name : null, titleFn: (item) => item ? item.name : null, From 302a22e20acfa7eebe2c4eecac1a0552a4021cf0 Mon Sep 17 00:00:00 2001 From: apapachristou Date: Fri, 20 Sep 2019 13:54:37 +0300 Subject: [PATCH 007/161] Fixes home page redirect bug and links of 'VIEW ALL' button - (Issue #161) --- .../app/ui/dashboard/dashboard.component.html | 35 ++++++------------- .../app/ui/dashboard/dashboard.component.ts | 6 +++- 2 files changed, 15 insertions(+), 26 deletions(-) diff --git a/dmp-frontend/src/app/ui/dashboard/dashboard.component.html b/dmp-frontend/src/app/ui/dashboard/dashboard.component.html index de1c123b3..7eec343f1 100644 --- a/dmp-frontend/src/app/ui/dashboard/dashboard.component.html +++ b/dmp-frontend/src/app/ui/dashboard/dashboard.component.html @@ -8,37 +8,27 @@
- +
- +
- +
- +
- +
- +
@@ -56,21 +46,16 @@
- +
- +
- +
- +
diff --git a/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts b/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts index c489236cf..7d7a429f4 100644 --- a/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts @@ -162,7 +162,11 @@ export class DashboardComponent extends BaseComponent implements OnInit, IBreadC } dmpClicked(dmp: DmpListingModel) { - this.router.navigate(['/plans/publicEdit/' + dmp.id]); + if (!this.isAuthenticated()) { + this.router.navigate(['../explore-plans/overview', dmp.id], { relativeTo: this.route }); + } else { + this.router.navigate(['/plans/publicEdit/' + dmp.id]); + } } datasetClicked(dataset: DatasetListingModel) { From 68cb9846bb6cdb70e566fd8b296709799d080cd0 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Fri, 20 Sep 2019 17:51:13 +0300 Subject: [PATCH 008/161] Fixes bug on External References not updating values. --- .../java/eu/eudat/data/entities/Dataset.java | 35 ++++++++----------- .../eudat/logic/managers/DatasetManager.java | 34 ++++++++---------- 2 files changed, 28 insertions(+), 41 deletions(-) diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java b/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java index 3763b6de6..fe38a22cb 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/entities/Dataset.java @@ -276,32 +276,25 @@ public class Dataset implements DataEntity { @Override public void update(Dataset entity) { - this.setRegistries(entity.getRegistries()); - if (this.getDatasetDataRepositories() == null) this.setDatasetDataRepositories(new HashSet<>()); - if (!this.getDatasetDataRepositories().containsAll(entity.getDatasetDataRepositories())) { - this.getDatasetDataRepositories().removeAll(this.getDatasetDataRepositories()); - this.getDatasetDataRepositories().addAll(entity.getDatasetDataRepositories().stream().map(item -> { - item.setDataset(this); - return item; - }).collect(Collectors.toList())); - } this.setUri(entity.getUri()); this.setDescription(entity.getDescription()); this.setLabel(entity.getLabel()); this.setProperties(entity.getProperties()); - if (this.getDatasetExternalDatasets() == null) this.setDatasetExternalDatasets(new HashSet<>()); - if (!this.getDatasetExternalDatasets().containsAll(entity.getDatasetExternalDatasets())) { - this.getDatasetExternalDatasets().removeAll(this.getDatasetExternalDatasets()); - this.getDatasetExternalDatasets().addAll(entity.getDatasetExternalDatasets().stream().map(item -> { - item.setDataset(this); - return item; - }).collect(Collectors.toList())); - } - if (this.getServices() == null) this.setServices(new HashSet<>()); - if(!this.getServices().containsAll(entity.getServices())) { - this.getServices().removeAll(this.getServices()); + + this.getDatasetDataRepositories().removeAll(this.getDatasetDataRepositories()); + if (entity.getDatasetDataRepositories() != null) + this.getDatasetDataRepositories().addAll(entity.getDatasetDataRepositories()); + + this.getDatasetExternalDatasets().removeAll(this.getDatasetExternalDatasets()); + if (entity.getDatasetExternalDatasets() != null) + this.getDatasetExternalDatasets().addAll(entity.getDatasetExternalDatasets()); + + this.setRegistries(entity.getRegistries()); + + this.getServices().removeAll(this.getServices()); + if (entity.getServices() != null) this.getServices().addAll(entity.getServices()); - } + this.setDmp(entity.getDmp()); this.setStatus(entity.getStatus()); this.setProfile(entity.getProfile()); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java index 1bc7bc3de..6ba300157 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java @@ -412,41 +412,35 @@ public class DatasetManager { datasetDataRepository.setDataset(dataset); dataset.getDatasetDataRepositories().add(datasetDataRepository); } else { - dataRepositoryDao.createOrUpdate(datasetDataRepository.getDataRepository()); + DataRepository dataRepository = dataRepositoryDao.createOrUpdate(datasetDataRepository.getDataRepository()); datasetDataRepository.setDataset(dataset); + datasetDataRepository.setDataRepository(dataRepository); + dataset.getDatasetDataRepositories().add(datasetDataRepository); } } } } private void createServicesIfTheyDontExist(eu.eudat.data.entities.Dataset dataset) { - Set services = dataset.getServices(); - dataset.setServices(new HashSet<>()); - if (services != null && !services.isEmpty()) { - for (eu.eudat.data.entities.DatasetService datasetService : services) { + if (dataset.getServices() != null && !dataset.getServices().isEmpty()) { + for (DatasetService service : dataset.getServices()) { ServiceCriteria criteria = new ServiceCriteria(); - criteria.setLike(datasetService.getService().getLabel()); + criteria.setLike(service.getService().getLabel()); List entries = databaseRepository.getServiceDao().getWithCriteria(criteria).toList(); - if (entries != null && !entries.isEmpty()) { - datasetService.getService().setId(entries.get(0).getId()); - datasetService.setDataset(dataset); - dataset.getServices().add(datasetService); - } else { - datasetService.getService().setCreated(new Date()); - Service service = databaseRepository.getServiceDao().createOrUpdate(datasetService.getService()); - datasetService.setService(service); - datasetService.setDataset(dataset); - dataset.getServices().add(datasetService); + if (entries != null && entries.isEmpty()) { + service.setDataset(dataset); + service.getService().setCreated(new Date()); + service.setService(service.getService()); + this.databaseRepository.getServiceDao().createOrUpdate(service.getService()); + dataset.getServices().add(service); } } } } private void createExternalDatasetsIfTheyDontExist(eu.eudat.data.entities.Dataset dataset) { - Set externalDatasets = dataset.getDatasetExternalDatasets(); - dataset.setDatasetExternalDatasets(new HashSet<>()); - if (externalDatasets != null && !externalDatasets.isEmpty()) { - for (eu.eudat.data.entities.DatasetExternalDataset datasetExternalDataset : externalDatasets) { + if (dataset.getDatasetExternalDatasets() != null && !dataset.getDatasetExternalDatasets().isEmpty()) { + for (eu.eudat.data.entities.DatasetExternalDataset datasetExternalDataset : dataset.getDatasetExternalDatasets()) { ExternalDatasetCriteria criteria = new ExternalDatasetCriteria(); criteria.setLike(datasetExternalDataset.getExternalDataset().getLabel()); List entries = databaseRepository.getExternalDatasetDao().getWithCriteria(criteria).toList(); From 0bf062292d7d781feac4dcd622a02f11ebaf927a Mon Sep 17 00:00:00 2001 From: apapachristou Date: Fri, 20 Sep 2019 18:27:54 +0300 Subject: [PATCH 009/161] Add confirmation dialogue on DMP's overview "Publish" button. - (Issue #158) --- .../dmp/overview/dmp-overview.component.html | 2 +- .../dmp/overview/dmp-overview.component.scss | 3 +- .../ui/dmp/overview/dmp-overview.component.ts | 47 ++++++++++++------- dmp-frontend/src/assets/i18n/en.json | 1 + dmp-frontend/src/styles.scss | 1 + 5 files changed, 34 insertions(+), 20 deletions(-) diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html index 26a71ecfd..53c8db754 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html @@ -44,7 +44,7 @@ -
+
+ {{'DATASET-EDITOR.FIELDS.EXTERNAL-DATASETS-DESCRIPTION' | translate}} +
diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index fa06a21eb..889bc55ef 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -729,7 +729,8 @@ "DATAREPOSITORIES": "Data Repositories", "REGISTRIES": "Registries", "SERVICES": "Services", - "EXTERNAL-DATASETS": "External Dataset", + "EXTERNAL-DATASETS": "External Datasets", + "EXTERNAL-DATASETS-DESCRIPTION": "Datasets related to the one being described in the DMP, either utilized for its production or being a derivative or byproduct of its utilization", "EXTERNAL-DATASET-TYPE": "External Dataset Type", "EXTERNAL-DATASET-INFO": "External Dataset Info", "DATAREPOSITORIES-INFO": "Data Repositories Info", From e6891861e5363253ed0af0a81242ff08f4b02782 Mon Sep 17 00:00:00 2001 From: Diamantis Tziotzios Date: Mon, 23 Sep 2019 11:17:03 +0300 Subject: [PATCH 011/161] angular update to version 8 --- dmp-frontend/browserslist | 12 ++ dmp-frontend/package.json | 117 +++++++++--------- dmp-frontend/src/app/app-routing.module.ts | 32 ++--- dmp-frontend/src/app/app.component.ts | 20 +-- dmp-frontend/src/app/app.module.ts | 2 +- .../common/date/moment-utc-date-adapter.ts | 2 +- .../response-payload.interceptor.ts | 2 +- .../interceptors/status-code.interceptor.ts | 6 +- .../app/common/material/material.module.ts | 64 +++++----- .../dmp-create-wizard-form.model.ts | 14 +-- .../app/core/services/auth/auth.service.ts | 46 +++---- .../dataset-wizard/dataset-wizard.service.ts | 13 +- .../src/app/core/services/dmp/dmp.service.ts | 17 ++- .../email-confirmation.service.ts | 6 +- .../help-content/help-content.service.ts | 78 ++++++------ .../core/services/http/base-http.service.ts | 8 +- .../multiple-auto-complete.component.ts | 8 +- .../single/single-auto-complete.component.ts | 3 +- .../confirmation-dialog.component.ts | 2 +- .../contact-dialog.component.ts | 2 +- .../export-method-dialog.component.ts | 2 +- .../notification/notification.component.ts | 3 +- .../popup/popup-notification.component.ts | 2 +- .../snack-bar-notification.component.ts | 2 +- .../dataset-profile-editor.component.ts | 12 +- .../criteria/dataset-profile.component.ts | 2 +- ...-confirmation-upload-profiles.component.ts | 2 +- .../dataset-profile-listing.component.ts | 35 +++--- .../dataset-profile-preview.component.ts | 2 +- .../editor/dmp-profile-editor.component.ts | 12 +- ...-confirmation-upload-profiles.component.ts | 2 +- .../dmp-profile-criteria.component.ts | 2 +- .../listing/dmp-profile-listing.component.ts | 34 ++--- .../user/listing/user-listing.component.ts | 39 +++--- .../app/ui/dashboard/dashboard.component.ts | 12 +- .../quick-wizard-create-add.component.ts | 2 +- .../recent-edited-activity.component.ts | 2 +- .../dataset-create-wizard.component.ts | 12 +- .../dataset-dmp-selector.component.ts | 42 +++---- .../dataset-copy-dialogue.component.ts | 12 +- .../dataset-wizard.component.ts | 40 +++--- ...et-external-references-editor.component.ts | 2 +- ...data-repository-dialog-editor.component.ts | 2 +- ...xternal-dataset-dialog-editor.component.ts | 2 +- ...ternal-registry-dialog-editor.component.ts | 2 +- ...xternal-service-dialog-editor.component.ts | 2 +- .../criteria/dataset-criteria.component.ts | 89 +++++++------ .../dataset-upload-dialogue.component.ts | 9 +- .../listing/dataset-listing.component.ts | 16 +-- .../app/ui/dmp/clone/dmp-clone.component.ts | 10 +- .../add-researcher.component.ts | 2 +- .../available-profiles.component.ts | 2 +- .../app/ui/dmp/editor/dmp-editor.component.ts | 23 ++-- .../dmp-finalize-dialog.component.ts | 2 +- .../general-tab/general-tab.component.ts | 13 +- .../editor/people-tab/people-tab.component.ts | 2 +- .../invitation/dmp-invitation.component.ts | 8 +- .../criteria/dmp-criteria.component.ts | 21 ++-- .../dmp-upload-dialogue.component.ts | 2 +- .../ui/dmp/listing/dmp-listing.component.ts | 17 +-- .../dmp-listing-item.component.ts | 2 +- .../ui/dmp/overview/dmp-overview.component.ts | 9 +- .../app/ui/dmp/wizard/dmp-wizard.component.ts | 12 +- .../editor/dmp-wizard-editor.component.ts | 11 +- .../dmp-wizard-dataset-listing.component.ts | 10 +- .../explore-dataset-listing.component.ts | 12 +- .../explore-dataset-filter-item.component.ts | 16 +-- .../explore-dataset-filters.component.ts | 44 +++---- .../explore-dmp-filter-item.component.ts | 16 +-- .../explore-dmp-filters.component.ts | 44 ++++--- .../explore-dmp-listing.component.ts | 12 +- .../ui/grant/editor/grant-editor.component.ts | 17 +-- .../criteria/grant-criteria.component.ts | 2 +- .../grant/listing/grant-listing.component.ts | 14 ++- .../misc/breadcrumb/breadcrumb.component.ts | 19 +-- .../breadcrumb/service/breadcrumb.service.ts | 9 +- .../form-field/form-field.component.ts | 7 +- .../dataset-description-form.component.ts | 6 +- .../help-content/help-content.component.ts | 10 +- .../misc/navigation/navigation.component.ts | 9 +- .../user-dialog/user-dialog.component.ts | 2 +- .../app/ui/misc/search/search.component.ts | 6 +- .../src/app/ui/navbar/navbar.component.ts | 2 +- .../dmp-editor/dmp-editor-wizard.component.ts | 9 +- .../grant-editor-wizard.component.ts | 9 +- .../quick-wizard-editor.component.ts | 15 ++- .../faq/faq-dialog.component.ts | 2 +- .../glossary/glossary-dialog.component.ts | 2 +- .../sidebar-footer.component.ts | 2 +- .../src/app/ui/sidebar/sidebar.component.ts | 2 +- .../ui/user-profile/user-profile.component.ts | 20 +-- dmp-frontend/src/polyfills.ts | 24 +--- dmp-frontend/src/tsconfig.spec.json | 2 - dmp-frontend/tsconfig.json | 6 +- dmp-frontend/tslint.json | 8 +- 95 files changed, 708 insertions(+), 637 deletions(-) create mode 100644 dmp-frontend/browserslist diff --git a/dmp-frontend/browserslist b/dmp-frontend/browserslist new file mode 100644 index 000000000..80848532e --- /dev/null +++ b/dmp-frontend/browserslist @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/dmp-frontend/package.json b/dmp-frontend/package.json index 8b88cd0a1..2a69526d8 100644 --- a/dmp-frontend/package.json +++ b/dmp-frontend/package.json @@ -1,63 +1,58 @@ { - "name": "dmp-frontend2", - "version": "0.0.0", - "license": "MIT", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build --prod", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e" - }, - "private": true, - "dependencies": { - "@angular/animations": "^6.1.7", - "@angular/common": "^6.1.7", - "@angular/compiler": "^6.1.7", - "@angular/core": "^6.1.7", - "@angular/flex-layout": "6.0.0-beta.18", - "@angular/forms": "^6.1.7", - "@angular/material-moment-adapter": "^6.4.7", - "@angular/platform-browser": "^6.1.7", - "@ngx-translate/core": "^10.0.2", - "@ngx-translate/http-loader": "^3.0.1", - "@swimlane/ngx-datatable": "^13.1.0", - "bootstrap": "^4.1.3", - "core-js": "^2.5.5", - "file-saver": "^2.0.0-rc.3", - "moment": "^2.22.2", - "moment-timezone": "^0.5.23", - "ngx-cookie-service": "^1.0.10", - "rxjs": "^6.3.2", - "rxjs-compat": "^6.3.2", - "web-animations-js": "^2.3.1", - "zone.js": "^0.8.26" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^0.8.5", - "@angular/cdk": "^6.3.0", - "@angular/material": "^6.4.7", - "@angular/cli": "6.2.5", - "@angular/compiler-cli": "^6.1.10", - "@angular/http": "^6.1.10", - "@angular/platform-browser-dynamic": "^6.1.10", - "@angular/router": "^6.1.10", - "@angular/language-service": "^6.1.10", - "@types/facebook-js-sdk": "^2.8.4", - "@types/file-saver": "^1.3.1", - "@types/gapi": "^0.0.36", - "@types/gapi.auth2": "^0.0.47", - "@types/jasmine": "~2.8.9", - "@types/jasminewd2": "~2.0.5", - "@types/moment-timezone": "^0.5.4", - "@types/node": "^10.11.7", - "codelyzer": "~4.5.0", - "jasmine-core": "^3.2.1", - "jasmine-spec-reporter": "^4.2.1", - "protractor": "~5.4.1", - "ts-node": "~7.0.1", - "tslint": "~5.11.0", - "typescript": "2.9.1" - } + "name": "dmp-frontend2", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --prod", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^8.2.7", + "@angular/common": "^8.2.7", + "@angular/compiler": "^8.2.7", + "@angular/core": "^8.2.7", + "@angular/forms": "^8.2.7", + "@angular/material-moment-adapter": "^8.2.0", + "@angular/platform-browser": "^8.2.7", + "@ngx-translate/core": "^11.0.1", + "@ngx-translate/http-loader": "^4.0.0", + "@swimlane/ngx-datatable": "^16.0.2", + "bootstrap": "^4.3.1", + "core-js": "^2.5.5", + "file-saver": "^2.0.2", + "moment": "^2.24.0", + "moment-timezone": "^0.5.26", + "ngx-cookie-service": "^2.2.0", + "rxjs": "^6.3.2", + "tslib": "^1.10.0", + "web-animations-js": "^2.3.2", + "zone.js": "~0.9.1" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.803.5", + "@angular/cdk": "^8.2.0", + "@angular/material": "^8.2.0", + "@angular/cli": "8.3.5", + "@angular/compiler-cli": "^8.2.7", + "@angular/platform-browser-dynamic": "^8.2.7", + "@angular/router": "^8.2.7", + "@angular/language-service": "^8.2.7", + "@types/facebook-js-sdk": "^3.3.0", + "@types/file-saver": "^2.0.1", + "@types/gapi": "^0.0.39", + "@types/gapi.auth2": "^0.0.50", + "@types/jasmine": "~3.4.0", + "@types/jasminewd2": "~2.0.6", + "@types/moment-timezone": "^0.5.12", + "@types/node": "^10.11.7", + "codelyzer": "^5.1.1", + "ts-node": "~8.4.1", + "tslint": "~5.20.0", + "typescript": "3.5.3" + } } diff --git a/dmp-frontend/src/app/app-routing.module.ts b/dmp-frontend/src/app/app-routing.module.ts index 6e0f16745..5a6f0109c 100644 --- a/dmp-frontend/src/app/app-routing.module.ts +++ b/dmp-frontend/src/app/app-routing.module.ts @@ -14,7 +14,7 @@ const appRoutes: Routes = [ }, { path: 'datasetcreatewizard', - loadChildren: './ui/dataset-create-wizard/dataset-create-wizard.module#DatasetCreateWizardModule', + loadChildren: () => import('./ui/dataset-create-wizard/dataset-create-wizard.module').then(m => m.DatasetCreateWizardModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.DATASETCREATEWIZARD' @@ -22,7 +22,7 @@ const appRoutes: Routes = [ }, { path: 'explore', - loadChildren: './ui/explore-dataset/explore-dataset.module#ExploreDatasetModule', + loadChildren: () => import('./ui/explore-dataset/explore-dataset.module').then(m => m.ExploreDatasetModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.EXPLORE' @@ -30,7 +30,7 @@ const appRoutes: Routes = [ }, { path: 'explore-plans', - loadChildren: './ui/explore-dmp/explore-dmp.module#ExploreDmpModule', + loadChildren: () => import('./ui/explore-dmp/explore-dmp.module').then(m => m.ExploreDmpModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.EXPLORE-PLANS' @@ -38,7 +38,7 @@ const appRoutes: Routes = [ }, { path: 'datasets', - loadChildren: './ui/dataset/dataset.module#DatasetModule', + loadChildren: () => import('./ui/dataset/dataset.module').then(m => m.DatasetModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.DATASETS' @@ -46,7 +46,7 @@ const appRoutes: Routes = [ }, { path: 'about', - loadChildren: './ui/about/about.module#AboutModule', + loadChildren: () => import('./ui/about/about.module').then(m => m.AboutModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.ABOUT' @@ -54,7 +54,7 @@ const appRoutes: Routes = [ }, { path: 'grants', - loadChildren: './ui/grant/grant.module#GrantModule', + loadChildren: () => import('./ui/grant/grant.module').then(m => m.GrantModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.GRANTS' @@ -62,7 +62,7 @@ const appRoutes: Routes = [ }, { path: 'plans', - loadChildren: './ui/dmp/dmp.module#DmpModule', + loadChildren: () => import('./ui/dmp/dmp.module').then(m => m.DmpModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.PLANS' @@ -70,7 +70,7 @@ const appRoutes: Routes = [ }, { path: 'dmp-profiles', - loadChildren: './ui/admin/dmp-profile/dmp-profile.module#DmpProfileModule', + loadChildren: () => import('./ui/admin/dmp-profile/dmp-profile.module').then(m => m.DmpProfileModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.DMP-PROFILES' @@ -78,7 +78,7 @@ const appRoutes: Routes = [ }, { path: 'quick-wizard', - loadChildren: './ui/quick-wizard/quick-wizard.module#OuickWizardModule', + loadChildren: () => import('./ui/quick-wizard/quick-wizard.module').then(m => m.OuickWizardModule), data: { breadcrumb: true, title: "GENERAL.TITLES.QUICK-WIZARD" @@ -86,7 +86,7 @@ const appRoutes: Routes = [ }, { path: 'dataset-profiles', - loadChildren: './ui/admin/dataset-profile/dataset-profile.module#DatasetProfileModule', + loadChildren: () => import('./ui/admin/dataset-profile/dataset-profile.module').then(m => m.DatasetProfileModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.DATASET-PROFILES' @@ -94,21 +94,21 @@ const appRoutes: Routes = [ }, { path: 'home', - loadChildren: './ui/dashboard/dashboard.module#DashboardModule', + loadChildren: () => import('./ui/dashboard/dashboard.module').then(m => m.DashboardModule), data: { breadcrumb: true } }, { path: 'unauthorized', - loadChildren: './ui/misc/unauthorized/unauthorized.module#UnauthorizedModule', + loadChildren: () => import('./ui/misc/unauthorized/unauthorized.module').then(m => m.UnauthorizedModule), data: { breadcrumb: true }, }, { path: 'users', - loadChildren: './ui/admin/user/user.module#UserModule', + loadChildren: () => import('./ui/admin/user/user.module').then(m => m.UserModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.USERS' @@ -116,7 +116,7 @@ const appRoutes: Routes = [ }, { path: 'profile', - loadChildren: './ui/user-profile/user-profile.module#UserProfileModule', + loadChildren: () => import('./ui/user-profile/user-profile.module').then(m => m.UserProfileModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.PROFILE' @@ -124,14 +124,14 @@ const appRoutes: Routes = [ }, { path: 'login/admin', - loadChildren: './ui/auth/admin-login/admin-login.module#AdminLoginModule', + loadChildren: () => import('./ui/auth/admin-login/admin-login.module').then(m => m.AdminLoginModule), data: { breadcrumb: true }, }, { path: 'login', - loadChildren: './ui/auth/login/login.module#LoginModule', + loadChildren: () => import('./ui/auth/login/login.module').then(m => m.LoginModule), data: { breadcrumb: true, title: 'GENERAL.TITLES.LOGIN' diff --git a/dmp-frontend/src/app/app.component.ts b/dmp-frontend/src/app/app.component.ts index 4c0a5ade9..170f52cde 100644 --- a/dmp-frontend/src/app/app.component.ts +++ b/dmp-frontend/src/app/app.component.ts @@ -1,12 +1,14 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {switchMap, filter, map } from 'rxjs/operators'; import { Component, OnInit } from '@angular/core'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; import { environment } from '../environments/environment'; import { AuthService } from './core/services/auth/auth.service'; import { CultureService } from './core/services/culture/culture-service'; import { BreadCrumbResolverService } from './ui/misc/breadcrumb/service/breadcrumb.service'; -import { filter, map } from 'rxjs/operators'; import { Title } from '@angular/platform-browser'; @@ -20,7 +22,7 @@ declare var $: any; }) export class AppComponent implements OnInit { - hasBreadCrumb = Observable.of(false); + hasBreadCrumb = observableOf(false); sideNavOpen = false; helpContentEnabled = environment.HelpService.Enabled; @@ -46,12 +48,12 @@ export class AppComponent implements OnInit { } ngOnInit() { - this.hasBreadCrumb = this.router.events - .filter(event => event instanceof NavigationEnd) - .map(() => this.route) - .map(route => route.firstChild) - .switchMap(route => route.data) - .map(data => data['breadcrumb']); + this.hasBreadCrumb = this.router.events.pipe( + filter(event => event instanceof NavigationEnd), + map(() => this.route), + map(route => route.firstChild), + switchMap(route => route.data), + map(data => data['breadcrumb']),); const appTitle = this.titleService.getTitle(); this.router diff --git a/dmp-frontend/src/app/app.module.ts b/dmp-frontend/src/app/app.module.ts index 7d4640e5e..aa65a7c4e 100644 --- a/dmp-frontend/src/app/app.module.ts +++ b/dmp-frontend/src/app/app.module.ts @@ -1,7 +1,7 @@ import { OverlayModule } from '@angular/cdk/overlay'; import { HttpClient, HttpClientModule } from '@angular/common/http'; import { LOCALE_ID, NgModule } from '@angular/core'; -import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material'; +import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core'; import { MatMomentDateModule, MAT_MOMENT_DATE_FORMATS } from '@angular/material-moment-adapter'; import { BrowserModule, Title } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; diff --git a/dmp-frontend/src/app/common/date/moment-utc-date-adapter.ts b/dmp-frontend/src/app/common/date/moment-utc-date-adapter.ts index 722f3ae2f..659926878 100644 --- a/dmp-frontend/src/app/common/date/moment-utc-date-adapter.ts +++ b/dmp-frontend/src/app/common/date/moment-utc-date-adapter.ts @@ -1,5 +1,5 @@ import { Inject, Injectable, Optional } from '@angular/core'; -import { MAT_DATE_LOCALE } from '@angular/material'; +import { MAT_DATE_LOCALE } from '@angular/material/core'; import { MomentDateAdapter } from '@angular/material-moment-adapter'; import * as moment from 'moment'; import { Moment } from 'moment'; diff --git a/dmp-frontend/src/app/common/http/interceptors/response-payload.interceptor.ts b/dmp-frontend/src/app/common/http/interceptors/response-payload.interceptor.ts index 125ac38ce..f34b273d4 100644 --- a/dmp-frontend/src/app/common/http/interceptors/response-payload.interceptor.ts +++ b/dmp-frontend/src/app/common/http/interceptors/response-payload.interceptor.ts @@ -1,6 +1,6 @@ import { HttpHandler, HttpHeaderResponse, HttpProgressEvent, HttpRequest, HttpResponse, HttpSentEvent, HttpUserEvent } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { MatSnackBar } from '@angular/material'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { BaseInterceptor } from './base.interceptor'; diff --git a/dmp-frontend/src/app/common/http/interceptors/status-code.interceptor.ts b/dmp-frontend/src/app/common/http/interceptors/status-code.interceptor.ts index 78a4aa331..867889a96 100644 --- a/dmp-frontend/src/app/common/http/interceptors/status-code.interceptor.ts +++ b/dmp-frontend/src/app/common/http/interceptors/status-code.interceptor.ts @@ -1,3 +1,5 @@ + +import {tap} from 'rxjs/operators'; import { Injectable } from "@angular/core"; import { BaseInterceptor } from "./base.interceptor"; import { InterceptorType } from "./interceptor-type"; @@ -10,11 +12,11 @@ export class StatusCodeInterceptor extends BaseInterceptor { type: InterceptorType; interceptRequest(req: HttpRequest, next: HttpHandler): Observable> { - return next.handle(req).do(event => { }, err => { + return next.handle(req).pipe(tap(event => { }, err => { if (err.status === 480) { this.router.navigate(['confirmation']); } - }); + })); } constructor( diff --git a/dmp-frontend/src/app/common/material/material.module.ts b/dmp-frontend/src/app/common/material/material.module.ts index 909d1ea8e..c450d3ea2 100644 --- a/dmp-frontend/src/app/common/material/material.module.ts +++ b/dmp-frontend/src/app/common/material/material.module.ts @@ -1,37 +1,35 @@ import { NgModule } from '@angular/core'; -import { - MatButtonModule, - MatToolbarModule, - MatIconModule, - MatCardModule, - MatGridListModule, - MatSnackBarModule, - MatSidenavModule, - MatListModule, - MatChipsModule, - MatFormFieldModule, - MatSelectModule, - MatOptionModule, - MatInputModule, - MatExpansionModule, - MatAutocompleteModule, - MatProgressSpinnerModule, - MatTabsModule, - MatDialogModule, - MatMenuModule, - MatRadioModule, - MatStepperModule, - MatTooltipModule, - MatProgressBarModule, - MatCheckboxModule, - MatDatepickerModule, - MatButtonToggleModule, - MatSliderModule, - MatSlideToggleModule, - MatTableModule, - MatPaginatorModule, - MatSortModule, -} from '@angular/material'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { MatButtonModule } from '@angular/material/button'; +import { MatButtonToggleModule } from '@angular/material/button-toggle'; +import { MatCardModule } from '@angular/material/card'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatChipsModule } from '@angular/material/chips'; +import { MatOptionModule } from '@angular/material/core'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatExpansionModule } from '@angular/material/expansion'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatGridListModule } from '@angular/material/grid-list'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatListModule } from '@angular/material/list'; +import { MatMenuModule } from '@angular/material/menu'; +import { MatPaginatorModule } from '@angular/material/paginator'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatSelectModule } from '@angular/material/select'; +import { MatSidenavModule } from '@angular/material/sidenav'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { MatSliderModule } from '@angular/material/slider'; +import { MatSnackBarModule } from '@angular/material/snack-bar'; +import { MatSortModule } from '@angular/material/sort'; +import { MatStepperModule } from '@angular/material/stepper'; +import { MatTableModule } from '@angular/material/table'; +import { MatTabsModule } from '@angular/material/tabs'; +import { MatToolbarModule } from '@angular/material/toolbar'; +import { MatTooltipModule } from '@angular/material/tooltip'; import { CdkTableModule } from '@angular/cdk/table'; @NgModule({ diff --git a/dmp-frontend/src/app/core/model/dmp/dmp-create-wizard/dmp-create-wizard-form.model.ts b/dmp-frontend/src/app/core/model/dmp/dmp-create-wizard/dmp-create-wizard-form.model.ts index f53ef7d9c..a3303ccac 100644 --- a/dmp-frontend/src/app/core/model/dmp/dmp-create-wizard/dmp-create-wizard-form.model.ts +++ b/dmp-frontend/src/app/core/model/dmp/dmp-create-wizard/dmp-create-wizard-form.model.ts @@ -1,10 +1,9 @@ -import { DmpModel } from "../dmp" -import { DatasetProfileModel } from "../../dataset/dataset-profile"; -import { FormGroup } from "@angular/forms/src/model"; -import { ValidationContext } from "../../../../common/forms/validation/validation-context"; -import { Validators, FormBuilder } from "@angular/forms"; +import { FormBuilder, FormGroup, Validators } from "@angular/forms"; import { BackendErrorValidator } from "../../../../common/forms/validation/custom-validator"; import { ValidationErrorModel } from "../../../../common/forms/validation/error-model/validation-error-model"; +import { ValidationContext } from "../../../../common/forms/validation/validation-context"; +import { DatasetProfileModel } from "../../dataset/dataset-profile"; +import { DmpModel } from "../dmp"; export class DmpCreateWizardFormModel { dmp: DmpModel; @@ -18,7 +17,7 @@ export class DmpCreateWizardFormModel { return this; } - buildForm(context: ValidationContext = null): FormGroup{ + buildForm(context: ValidationContext = null): FormGroup { if (context == null) { context = this.createValidationContext(); } const formBuilder = new FormBuilder(); const formGroup = formBuilder.group({ @@ -37,6 +36,3 @@ export class DmpCreateWizardFormModel { return baseContext; } } - - - diff --git a/dmp-frontend/src/app/core/services/auth/auth.service.ts b/dmp-frontend/src/app/core/services/auth/auth.service.ts index b08921e01..8f0ef3f5a 100644 --- a/dmp-frontend/src/app/core/services/auth/auth.service.ts +++ b/dmp-frontend/src/app/core/services/auth/auth.service.ts @@ -1,10 +1,12 @@ + +import {of as observableOf, throwError as observableThrowError, Observable } from 'rxjs'; + +import {map, catchError, takeUntil } from 'rxjs/operators'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { MatSnackBar } from '@angular/material'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { takeUntil } from 'rxjs/operators'; -import { Observable } from 'rxjs/Rx'; import { environment } from '../../../../environments/environment'; import { SnackBarNotificationComponent } from '../../../library/notification/snack-bar/snack-bar-notification.component'; import { BaseService } from '../../common/base/base.service'; @@ -67,31 +69,31 @@ export class AuthService extends BaseService { public login(loginInfo: LoginInfo): Observable { const url = this.actionUrl + 'externallogin'; - return this.http.post(url, loginInfo, { headers: this.headers }) - .map((res: any) => { + return this.http.post(url, loginInfo, { headers: this.headers }).pipe( + map((res: any) => { const principal = this.current(res.payload); //this.loginContextSubject.next(true); return principal; - }) - .catch((error: any) => { + }), + catchError((error: any) => { //this.loginContextSubject.next(false); - return Observable.throw(error); - }); + return observableThrowError(error); + }),); } public nativeLogin(credentials: Credential): Observable { const url = this.actionUrl + 'nativelogin'; - return this.http.post(url, credentials, { headers: this.headers }) - .map((res: any) => { + return this.http.post(url, credentials, { headers: this.headers }).pipe( + map((res: any) => { const principal = this.current(res.payload); //this.loginContextSubject.next(true); return principal; - }) - .catch((error: any) => { + }), + catchError((error: any) => { //this.loginContextSubject.next(false); - return Observable.throw(error); - }); + return observableThrowError(error); + }),); } @@ -116,22 +118,22 @@ export class AuthService extends BaseService { const principal = this.current(); if (!principal) { this.clear(); - return Observable.of(); + return observableOf(); } let headers = this.headers; headers = headers.set('AuthToken', principal.token); - return this.http.post(url, null, { headers: headers }) - .map((res: any) => { + return this.http.post(url, null, { headers: headers }).pipe( + map((res: any) => { const princ = this.current(res.payload); return princ; - }) - .catch((error: any) => { + }), + catchError((error: any) => { //console.warn('could not retrieve me info:\n', error); this.clear(); const princ = this.current(); this.router.navigate(['/login']); - return Observable.of(princ); - }); + return observableOf(princ); + }),); } public onLogOutSuccess(logoutMessage: any) { diff --git a/dmp-frontend/src/app/core/services/dataset-wizard/dataset-wizard.service.ts b/dmp-frontend/src/app/core/services/dataset-wizard/dataset-wizard.service.ts index b08009aad..e11802ccd 100644 --- a/dmp-frontend/src/app/core/services/dataset-wizard/dataset-wizard.service.ts +++ b/dmp-frontend/src/app/core/services/dataset-wizard/dataset-wizard.service.ts @@ -2,17 +2,14 @@ import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { environment } from '../../../../environments/environment'; -import { RequestItem } from '../../query/request-item'; +import { BaseHttpParams } from '../../../common/http/base-http-params'; +import { InterceptorType } from '../../../common/http/interceptors/interceptor-type'; import { DatasetProfileDefinitionModel } from '../../model/dataset-profile-definition/dataset-profile-definition'; import { DatasetProfileModel } from '../../model/dataset/dataset-profile'; import { DatasetWizardModel } from '../../model/dataset/dataset-wizard'; -import { DmpModel } from '../../model/dmp/dmp'; import { DatasetProfileCriteria } from '../../query/dataset-profile/dataset-profile-criteria'; -import { DmpCriteria } from '../../query/dmp/dmp-criteria'; +import { RequestItem } from '../../query/request-item'; import { BaseHttpService } from '../http/base-http.service'; -import { ContentType } from '@angular/http/src/enums'; -import { BaseHttpParams } from '../../../common/http/base-http-params'; -import { InterceptorType } from '../../../common/http/interceptors/interceptor-type'; @Injectable() export class DatasetWizardService { @@ -70,7 +67,7 @@ export class DatasetWizardService { return this.http.get(this.actionUrl + id + '/unlock', { headers: this.headers }); } - public uploadXml(fileList: FileList, datasetTitle: string, dmpId: string, datasetProfileId: string): Observable { + public uploadXml(fileList: FileList, datasetTitle: string, dmpId: string, datasetProfileId: string): Observable { const formData: FormData = new FormData(); if (fileList instanceof FileList) { for (let i = 0; i < fileList.length; i++) { @@ -90,6 +87,6 @@ export class DatasetWizardService { } public updateDatasetProfile(id: String): Observable { - return this.http.get(this.actionUrl + "profile/"+ id, { headers: this.headers }); + return this.http.get(this.actionUrl + "profile/" + id, { headers: this.headers }); } } diff --git a/dmp-frontend/src/app/core/services/dmp/dmp.service.ts b/dmp-frontend/src/app/core/services/dmp/dmp.service.ts index 4cb45c308..2df142252 100644 --- a/dmp-frontend/src/app/core/services/dmp/dmp.service.ts +++ b/dmp-frontend/src/app/core/services/dmp/dmp.service.ts @@ -2,23 +2,22 @@ import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { environment } from '../../../../environments/environment'; +import { BaseHttpParams } from '../../../common/http/base-http-params'; +import { InterceptorType } from '../../../common/http/interceptors/interceptor-type'; import { DynamicFieldGrantCriteria } from '../../../models/dynamic-field-grant/DynamicFieldGrantCriteria'; import { DataTableData } from '../../model/data-table/data-table-data'; import { DataTableRequest } from '../../model/data-table/data-table-request'; +import { DatasetListingModel } from '../../model/dataset/dataset-listing'; import { DatasetProfileModel } from '../../model/dataset/dataset-profile'; +import { DatasetsToBeFinalized } from '../../model/dataset/datasets-toBeFinalized'; import { DmpModel } from '../../model/dmp/dmp'; import { DmpListingModel } from '../../model/dmp/dmp-listing'; +import { DmpOverviewModel } from '../../model/dmp/dmp-overview'; import { DatasetProfileCriteria } from '../../query/dataset-profile/dataset-profile-criteria'; import { DmpCriteria } from '../../query/dmp/dmp-criteria'; +import { ExploreDmpCriteriaModel } from '../../query/explore-dmp/explore-dmp-criteria'; import { RequestItem } from '../../query/request-item'; import { BaseHttpService } from '../http/base-http.service'; -import { ContentType } from '@angular/http/src/enums'; -import { BaseHttpParams } from '../../../common/http/base-http-params'; -import { InterceptorType } from '../../../common/http/interceptors/interceptor-type'; -import { ExploreDmpCriteriaModel } from '../../query/explore-dmp/explore-dmp-criteria'; -import { DmpOverviewModel } from '../../model/dmp/dmp-overview'; -import { DatasetListingModel } from '../../model/dataset/dataset-listing'; -import { DatasetsToBeFinalized } from '../../model/dataset/datasets-toBeFinalized'; @Injectable() export class DmpService { @@ -93,7 +92,7 @@ export class DmpService { } getDoi(id: string): Observable { - return this.http.post(this.actionUrl + 'createZenodoDoi/' + id, {headers: this.headers}); + return this.http.post(this.actionUrl + 'createZenodoDoi/' + id, { headers: this.headers }); } getDynamicField(requestItem: RequestItem): any { @@ -119,7 +118,7 @@ export class DmpService { return this.httpClient.get(this.actionUrl + 'rda/' + id, { responseType: 'blob', observe: 'response' }); } - public uploadXml(fileList: FileList, dmpTitle: string): Observable { + public uploadXml(fileList: FileList, dmpTitle: string): Observable { const formData: FormData = new FormData(); if (fileList instanceof FileList) { for (let i = 0; i < fileList.length; i++) { diff --git a/dmp-frontend/src/app/core/services/email-confirmation/email-confirmation.service.ts b/dmp-frontend/src/app/core/services/email-confirmation/email-confirmation.service.ts index fc7673568..29433964f 100644 --- a/dmp-frontend/src/app/core/services/email-confirmation/email-confirmation.service.ts +++ b/dmp-frontend/src/app/core/services/email-confirmation/email-confirmation.service.ts @@ -1,7 +1,7 @@ +import { HttpHeaders } from '@angular/common/http'; import { Injectable } from "@angular/core"; -import { HttpHeaders } from "@angular/common/http/src/headers"; -import { BaseHttpService } from "../http/base-http.service"; import { environment } from "../../../../environments/environment"; +import { BaseHttpService } from "../http/base-http.service"; @Injectable() export class EmailConfirmationService { @@ -17,6 +17,6 @@ export class EmailConfirmationService { } public sendConfirmationEmail(email: string) { - return this.http.post(this.actioUrl, email, {headers: this.headers}); + return this.http.post(this.actioUrl, email, { headers: this.headers }); } } diff --git a/dmp-frontend/src/app/core/services/help-content/help-content.service.ts b/dmp-frontend/src/app/core/services/help-content/help-content.service.ts index 638e289c9..f0397b5b6 100644 --- a/dmp-frontend/src/app/core/services/help-content/help-content.service.ts +++ b/dmp-frontend/src/app/core/services/help-content/help-content.service.ts @@ -1,55 +1,57 @@ +import { HttpClient } from '@angular/common/http'; /** * Created by stefania on 7/17/17. */ import { Injectable } from '@angular/core'; -import { Http, Response } from '@angular/http'; -import { Observable } from 'rxjs/Rx'; +import { Observable, throwError as observableThrowError } from 'rxjs'; +import { catchError, map } from 'rxjs/operators'; import { environment } from '../../../../environments/environment'; import { PageHelpContent } from '../../model/help-content/page-help-content'; import { CachedContentItem } from './cached-content-item'; + @Injectable() export class HelpContentService { private _helpServiceUrl = environment.HelpService.Url; cache = new Map(); - constructor(private http: Http) { + constructor(private http: HttpClient) { } - getActivePageContent(route: string) { - if (!this.cache.get(route) || !this.isValidCachedItem(route)) { - return this.http.get(this._helpServiceUrl + '/page/route?q=' + route) - .map(res => { - this.cache.set(route, { timestamp: Date.now(), content: res.json() }); - return res.json(); - }) - .catch(this.handleError); - } - return Observable.create(observer => observer.next(this.cache.get(route).content)); - } - private extractData(res: Response) { - const body = res.json(); - return body.data || {}; - } - private handleError(error: Response | any) { - // In a real world app, we might use a remote logging infrastructure - // We'd also dig deeper into the error to get a better message - let errMsg = ''; - if (error instanceof Response) { - const body = error.text() || ''; - //const err = body.error || JSON.stringify(body); - errMsg = `${error.status} - ${error.statusText || ''} ${body}`; - } else { - errMsg = (error.message) ? error.message : - error.status ? `${error.status} - ${error.statusText}` : 'Server error'; - console.error(errMsg); // log to console instead - } - return Observable.throw(errMsg); - } + // getActivePageContent(route: string) { + // if (!this.cache.get(route) || !this.isValidCachedItem(route)) { + // return this.http.get(this._helpServiceUrl + '/page/route?q=' + route).pipe( + // map((res: Response) => { + // this.cache.set(route, { timestamp: Date.now(), content: res.json() as PageHelpContent }); + // return res.json(); + // }), + // catchError(this.handleError)); + // } + // return Observable.create(observer => observer.next(this.cache.get(route).content)); + // } + // private extractData(res: Response) { + // const body = res.json(); + // return body. || {}; + // } + // private handleError(error: Response | any) { + // // In a real world app, we might use a remote logging infrastructure + // // We'd also dig deeper into the error to get a better message + // let errMsg = ''; + // if (error instanceof Response) { + // const body = error.text() || ''; + // //const err = body.error || JSON.stringify(body); + // errMsg = `${error.status} - ${error.statusText || ''} ${body}`; + // } else { + // errMsg = (error.message) ? error.message : + // error.status ? `${error.status} - ${error.statusText}` : 'Server error'; + // console.error(errMsg); // log to console instead + // } + // return observableThrowError(errMsg); + // } - isValidCachedItem(route) { - const cachedTimestamp = this.cache.get(route).timestamp; - const currentTimestamp = Date.now(); - if (currentTimestamp - cachedTimestamp > 30000) { return false; } else { return true; } - } + // isValidCachedItem(route) { + // const cachedTimestamp = this.cache.get(route).timestamp; + // const currentTimestamp = Date.now(); + // if (currentTimestamp - cachedTimestamp > 30000) { return false; } else { return true; } + // } } diff --git a/dmp-frontend/src/app/core/services/http/base-http.service.ts b/dmp-frontend/src/app/core/services/http/base-http.service.ts index a3e0aca26..7fe8f473d 100644 --- a/dmp-frontend/src/app/core/services/http/base-http.service.ts +++ b/dmp-frontend/src/app/core/services/http/base-http.service.ts @@ -1,3 +1,5 @@ + +import {map} from 'rxjs/operators'; import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; @@ -39,7 +41,7 @@ export class BaseHttpService { } private interceptRepsonse(observable: Observable): Observable { - return observable + return observable.pipe( // .catch((errorResponse) => { // if (errorResponse.status === 401) { // this.snackBar.openFromComponent(SnackBarNotificationComponent, { @@ -69,7 +71,7 @@ export class BaseHttpService { // } // } // }) - .map(response => { + map(response => { if (response instanceof Blob) { return response; } if (response['statusCode'] === ApiMessageCode.SUCCESS_MESSAGE) { //throw new Error('Request failed'); @@ -83,6 +85,6 @@ export class BaseHttpService { } else { return response['payload']; } - }); + })); } } diff --git a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts index 73763d3e5..a19d1c55d 100644 --- a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts +++ b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts @@ -2,7 +2,9 @@ import { FocusMonitor } from '@angular/cdk/a11y'; import { COMMA, ENTER } from '@angular/cdk/keycodes'; import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Optional, Output, Self, ViewChild } from '@angular/core'; import { ControlValueAccessor, NgControl } from '@angular/forms'; -import { MatAutocompleteSelectedEvent, MatAutocompleteTrigger, MatChipInputEvent, MatFormFieldControl } from '@angular/material'; +import { MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete'; +import { MatChipInputEvent } from '@angular/material/chips'; +import { MatFormFieldControl } from '@angular/material/form-field'; import { Observable, of as observableOf, Subject } from 'rxjs'; import { debounceTime, distinctUntilChanged, map, mergeMap, startWith, tap } from 'rxjs/operators'; import { AutoCompleteGroup } from '../auto-complete-group'; @@ -87,8 +89,8 @@ export class MultipleAutoCompleteComponent implements OnInit, MatFormFieldContro } private _selectedValue; - @ViewChild('textInput') textInput: ElementRef; - @ViewChild(MatAutocompleteTrigger) autocomplete: MatAutocompleteTrigger; + @ViewChild('textInput', { static: true }) textInput: ElementRef; + @ViewChild(MatAutocompleteTrigger, { static: true }) autocomplete: MatAutocompleteTrigger; constructor( private fm: FocusMonitor, diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts index 7acfe607f..1a49d15c1 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts @@ -2,7 +2,8 @@ import { FocusMonitor } from '@angular/cdk/a11y'; import { COMMA, ENTER } from '@angular/cdk/keycodes'; import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Optional, Output, Self } from '@angular/core'; import { ControlValueAccessor, NgControl } from '@angular/forms'; -import { MatAutocompleteSelectedEvent, MatFormFieldControl } from '@angular/material'; +import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; +import { MatFormFieldControl } from '@angular/material/form-field'; import { Observable, of as observableOf, Subject } from 'rxjs'; import { debounceTime, distinctUntilChanged, map, mergeMap, startWith, tap } from 'rxjs/operators'; import { AutoCompleteGroup } from '../auto-complete-group'; diff --git a/dmp-frontend/src/app/library/confirmation-dialog/confirmation-dialog.component.ts b/dmp-frontend/src/app/library/confirmation-dialog/confirmation-dialog.component.ts index 26e1e63f3..55b8ddf8c 100644 --- a/dmp-frontend/src/app/library/confirmation-dialog/confirmation-dialog.component.ts +++ b/dmp-frontend/src/app/library/confirmation-dialog/confirmation-dialog.component.ts @@ -1,5 +1,5 @@ import { Component, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; @Component({ selector: 'app-confirmation-dialog', diff --git a/dmp-frontend/src/app/library/contact-dialog/contact-dialog.component.ts b/dmp-frontend/src/app/library/contact-dialog/contact-dialog.component.ts index c886ad48f..d3cbb2ef5 100644 --- a/dmp-frontend/src/app/library/contact-dialog/contact-dialog.component.ts +++ b/dmp-frontend/src/app/library/contact-dialog/contact-dialog.component.ts @@ -1,5 +1,5 @@ import { Component, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { FormGroup } from '@angular/forms'; @Component({ diff --git a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.ts b/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.ts index 2658b3ba7..37406942a 100644 --- a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.ts +++ b/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; @Component({ diff --git a/dmp-frontend/src/app/library/notification/notification.component.ts b/dmp-frontend/src/app/library/notification/notification.component.ts index a42d08a62..20527fe02 100644 --- a/dmp-frontend/src/app/library/notification/notification.component.ts +++ b/dmp-frontend/src/app/library/notification/notification.component.ts @@ -1,5 +1,6 @@ import { Component, OnInit } from '@angular/core'; -import { MatDialog, MatSnackBar } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../core/common/base/base.component'; import { UiNotificationService, UiNotificationType, PopupNotification, SnackBarNotification, SnackBarNotificationLevel } from '../../core/services/notification/ui-notification-service'; diff --git a/dmp-frontend/src/app/library/notification/popup/popup-notification.component.ts b/dmp-frontend/src/app/library/notification/popup/popup-notification.component.ts index 84a11666a..b672e34f6 100644 --- a/dmp-frontend/src/app/library/notification/popup/popup-notification.component.ts +++ b/dmp-frontend/src/app/library/notification/popup/popup-notification.component.ts @@ -1,5 +1,5 @@ import { Component, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { PopupNotification } from '../../../core/services/notification/ui-notification-service'; @Component({ diff --git a/dmp-frontend/src/app/library/notification/snack-bar/snack-bar-notification.component.ts b/dmp-frontend/src/app/library/notification/snack-bar/snack-bar-notification.component.ts index 2af227f3c..c3c4c97e6 100644 --- a/dmp-frontend/src/app/library/notification/snack-bar/snack-bar-notification.component.ts +++ b/dmp-frontend/src/app/library/notification/snack-bar/snack-bar-notification.component.ts @@ -1,5 +1,5 @@ import { Component, Inject } from '@angular/core'; -import { MAT_SNACK_BAR_DATA } from '@angular/material'; +import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar'; import { SnackBarNotification } from '../../../core/services/notification/ui-notification-service'; @Component({ diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts index 0f3b1ece8..00840c555 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.ts @@ -1,7 +1,10 @@ -import { HttpErrorResponse } from '@angular/common/http'; + +import {of as observableOf, Observable } from 'rxjs'; +import { HttpErrorResponse } from '@angular/common/http'; import { Component, OnInit, ViewChild } from '@angular/core'; import { FormArray, FormControl, FormGroup } from '@angular/forms'; -import { MatHorizontalStepper, MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; +import { MatHorizontalStepper } from '@angular/material/stepper'; import { ActivatedRoute, ParamMap, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import { map, takeUntil } from 'rxjs/operators'; @@ -18,7 +21,6 @@ import { ConfirmationDialogComponent } from '../../../../library/confirmation-di import { DatasetProfileEnum } from '../../../../core/common/enum/dataset-profile'; import * as FileSaver from 'file-saver'; import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-item'; -import { Observable } from 'rxjs'; import { DatasetStatus } from '../../../../core/common/enum/dataset-status'; //import * as data from 'src/assets/resources/skipDisable.json'; @@ -42,7 +44,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn newVersionId: string; dataWizardModel: DatasetWizardModel; breadCrumbs: Observable; - @ViewChild('stepper') stepper: MatHorizontalStepper; + @ViewChild('stepper', { static: false }) stepper: MatHorizontalStepper; viewOnly = false; constructor( @@ -88,7 +90,7 @@ export class DatasetProfileEditorComponent extends BaseComponent implements OnIn }, error => this.onCallbackError(error) ); - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: 'DatasetProfileListingComponent', label: this.language.instant('NAV-BAR.TEMPLATE'), url: '/dataset-profiles/' + this.datasetProfileId diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/criteria/dataset-profile.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/criteria/dataset-profile.component.ts index 645bbf351..162937600 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/criteria/dataset-profile.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/criteria/dataset-profile.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { TranslateService } from '@ngx-translate/core'; import { takeUntil } from 'rxjs/operators'; import { ValidationErrorModel } from '../../../../../common/forms/validation/error-model/validation-error-model'; diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component.ts index e72e64e55..8db9791c4 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component.ts @@ -1,4 +1,4 @@ -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { Inject, Component } from '@angular/core'; diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.ts index 5b6db04b5..b7c05c29f 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.ts @@ -1,9 +1,12 @@ + +import {merge as observableMerge, of as observableOf, Observable } from 'rxjs'; + +import {switchMap, startWith, map, takeUntil } from 'rxjs/operators'; import { DataSource } from '@angular/cdk/table'; import { Component, OnInit, ViewChild } from '@angular/core'; -import { MatPaginator, MatSort, PageEvent } from '@angular/material'; +import { MatPaginator, PageEvent } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; import { ActivatedRoute, Params, Router } from '@angular/router'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DataTableRequest } from '../../../../core/model/data-table/data-table-request'; import { DatasetListingModel } from '../../../../core/model/dataset/dataset-listing'; @@ -24,9 +27,9 @@ import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-i }) export class DatasetProfileListingComponent extends BaseComponent implements OnInit { - @ViewChild(MatPaginator) _paginator: MatPaginator; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(DatasetProfileCriteriaComponent) criteria: DatasetProfileCriteriaComponent; + @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; + @ViewChild(MatSort, { static: true }) sort: MatSort; + @ViewChild(DatasetProfileCriteriaComponent, { static: true }) criteria: DatasetProfileCriteriaComponent; breadCrumbs: Observable; dataSource: DatasetDataSource | null; @@ -70,7 +73,7 @@ export class DatasetProfileListingComponent extends BaseComponent implements OnI this.criteria.setCriteria(this.getDefaultCriteria()); this.refresh(); this.criteria.setRefreshCallback(() => this.refresh()); - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: null, label: this.language.instant('NAV-BAR.DATASET-TEMPLATES'), url: '/dataset-profiles' @@ -80,7 +83,7 @@ export class DatasetProfileListingComponent extends BaseComponent implements OnI } setDmpTitle(dmpId: String) { - this.dmpService.getSingle(dmpId).map(data => data as DmpModel) + this.dmpService.getSingle(dmpId).pipe(map(data => data as DmpModel)) .pipe(takeUntil(this._destroyed)) .subscribe(data => { this.titlePrefix = data.label; @@ -140,9 +143,9 @@ export class DatasetDataSource extends DataSource { //this._sort.matSortChange ]; - return Observable.merge(...displayDataChanges) - .startWith(null) - .switchMap(() => { + return observableMerge(...displayDataChanges).pipe( + startWith(null), + switchMap(() => { const startIndex = this._paginator.pageIndex * this._paginator.pageSize; let fields: Array = new Array(); if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; } @@ -153,7 +156,7 @@ export class DatasetDataSource extends DataSource { request.criteria.allVersions = true; } return this._service.getPaged(request); - }) + }), /*.catch((error: any) => { this._snackBar.openFromComponent(SnackBarNotificationComponent, { data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService }, @@ -163,14 +166,14 @@ export class DatasetDataSource extends DataSource { //this._criteria.criteria.onCallbackError(error); return Observable.of(null); })*/ - .map(result => { + map(result => { return result; - }) - .map(result => { + }), + map(result => { if (!result) { return []; } if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } return result.data; - }); + }),); } disconnect() { diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/preview/dataset-profile-preview.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/preview/dataset-profile-preview.component.ts index a8daf5820..97ea7d06d 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/preview/dataset-profile-preview.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/preview/dataset-profile-preview.component.ts @@ -1,6 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DatasetProfileService } from '../../../../core/services/dataset-profile/dataset-profile.service'; diff --git a/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.ts b/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.ts index 0254b95a0..f56b1843f 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.ts @@ -1,9 +1,12 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {map, takeUntil } from 'rxjs/operators'; import { AfterViewInit, Component, OnInit } from '@angular/core'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import * as FileSaver from 'file-saver'; -import { takeUntil } from 'rxjs/operators'; import { environment } from '../../../../../environments/environment'; import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model'; import { BaseComponent } from '../../../../core/common/base/base.component'; @@ -16,7 +19,6 @@ import { SnackBarNotificationLevel, UiNotificationService } from '../../../../co import { EnumUtils } from '../../../../core/services/utilities/enum-utils.service'; import { DmpProfileEditorModel, DmpProfileFieldEditorModel } from './dmp-profile-editor.model'; import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-item'; -import { Observable } from 'rxjs'; import { DmpProfileExternalAutoCompleteFieldDataEditorModel } from './external-autocomplete/dmp-profile-external-autocomplete-field-editor.model'; @Component({ @@ -53,7 +55,7 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie if (this.dmpProfileId != null) { this.isNew = false; - this.dmpProfileService.getSingle(this.dmpProfileId).map(data => data as DmpProfile) + this.dmpProfileService.getSingle(this.dmpProfileId).pipe(map(data => data as DmpProfile)) .pipe(takeUntil(this._destroyed)) .subscribe(data => { this.dmpProfileModel = new DmpProfileEditorModel().fromModel(data); @@ -62,7 +64,7 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie this.formGroup.disable(); this.viewOnly = true } - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: 'DmpProfileListingComponent', label: this.language.instant('NAV-BAR.TEMPLATE'), url: '/dmp-profiles/' + this.dmpProfileId @@ -74,7 +76,7 @@ export class DmpProfileEditorComponent extends BaseComponent implements AfterVie this.formGroup = this.dmpProfileModel.buildForm(); this.addField(); }); - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: 'DmpProfileListingComponent', label: this.language.instant('NAV-BAR.TEMPLATE'), url: '/dmp-profiles/' + this.dmpProfileId diff --git a/dmp-frontend/src/app/ui/admin/dmp-profile/listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component.ts b/dmp-frontend/src/app/ui/admin/dmp-profile/listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component.ts index 0846e2896..42a7dfa61 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-profile/listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component.ts +++ b/dmp-frontend/src/app/ui/admin/dmp-profile/listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component.ts @@ -1,4 +1,4 @@ -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { Inject, Component } from '@angular/core'; diff --git a/dmp-frontend/src/app/ui/admin/dmp-profile/listing/criteria/dmp-profile-criteria.component.ts b/dmp-frontend/src/app/ui/admin/dmp-profile/listing/criteria/dmp-profile-criteria.component.ts index 466097b9e..ee81e6432 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-profile/listing/criteria/dmp-profile-criteria.component.ts +++ b/dmp-frontend/src/app/ui/admin/dmp-profile/listing/criteria/dmp-profile-criteria.component.ts @@ -5,7 +5,7 @@ import { DmpCriteria } from '../../../../../core/query/dmp/dmp-criteria'; import { DmpProfileCriteria } from '../../../../../core/query/dmp/dmp-profile-criteria'; import { BaseCriteriaComponent } from '../../../../misc/criteria/base-criteria.component'; import { DialodConfirmationUploadDmpProfiles } from './dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { TranslateService } from '@ngx-translate/core'; import { takeUntil } from 'rxjs/operators'; import { DmpProfileService } from '../../../../../core/services/dmp/dmp-profile.service'; diff --git a/dmp-frontend/src/app/ui/admin/dmp-profile/listing/dmp-profile-listing.component.ts b/dmp-frontend/src/app/ui/admin/dmp-profile/listing/dmp-profile-listing.component.ts index 4353d5e7f..856548bc0 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-profile/listing/dmp-profile-listing.component.ts +++ b/dmp-frontend/src/app/ui/admin/dmp-profile/listing/dmp-profile-listing.component.ts @@ -1,10 +1,14 @@ + +import {merge as observableMerge, of as observableOf, Observable } from 'rxjs'; + +import {map, switchMap, startWith, takeUntil } from 'rxjs/operators'; import { DataSource } from '@angular/cdk/table'; import { Component, OnInit, ViewChild } from '@angular/core'; -import { MatPaginator, MatSnackBar, MatSort, PageEvent } from '@angular/material'; +import { MatPaginator, PageEvent } from '@angular/material/paginator'; +import { MatSnackBar } from '@angular/material/snack-bar'; +import { MatSort } from '@angular/material/sort'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DmpProfileListing } from '../../../../core/model/dmp-profile/dmp-profile-listing'; import { DmpProfileCriteria } from '../../../../core/query/dmp/dmp-profile-criteria'; @@ -20,9 +24,9 @@ import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-i }) export class DmpProfileListingComponent extends BaseComponent implements OnInit { - @ViewChild(MatPaginator) _paginator: MatPaginator; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(DmpProfileCriteriaComponent) criteria: DmpProfileCriteriaComponent; + @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; + @ViewChild(MatSort, { static: true }) sort: MatSort; + @ViewChild(DmpProfileCriteriaComponent, { static: true }) criteria: DmpProfileCriteriaComponent; dataSource: DatasetDataSource | null; displayedColumns: String[] = ['label', 'status', 'created']; @@ -54,7 +58,7 @@ export class DmpProfileListingComponent extends BaseComponent implements OnInit this.criteria.setCriteria(this.getDefaultCriteria()); this.refresh(); this.criteria.setRefreshCallback(() => this.refresh()); - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: null, label: this.languageService.instant('NAV-BAR.DMP-TEMPLATES'), url: '/dmp-profiles' @@ -101,16 +105,16 @@ export class DatasetDataSource extends DataSource { //this._sort.matSortChange ]; - return Observable.merge(...displayDataChanges) - .startWith(null) - .switchMap(() => { + return observableMerge(...displayDataChanges).pipe( + startWith(null), + switchMap(() => { const startIndex = this._paginator.pageIndex * this._paginator.pageSize; let fields: Array = new Array(); if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; } const request = new DataTableRequest(startIndex, this._paginator.pageSize, { fields: fields }); request.criteria = this._criteria.criteria; return this._service.getPaged(request); - }) + }), /*.catch((error: any) => { this._snackBar.openFromComponent(SnackBarNotificationComponent, { data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService }, @@ -120,14 +124,14 @@ export class DatasetDataSource extends DataSource { //this._criteria.criteria.onCallbackError(error); return Observable.of(null); })*/ - .map(result => { + map(result => { return result; - }) - .map(result => { + }), + map(result => { if (!result) { return []; } if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } return result.data; - }); + }),); } disconnect() { diff --git a/dmp-frontend/src/app/ui/admin/user/listing/user-listing.component.ts b/dmp-frontend/src/app/ui/admin/user/listing/user-listing.component.ts index 13b8e43bd..36e12bdad 100644 --- a/dmp-frontend/src/app/ui/admin/user/listing/user-listing.component.ts +++ b/dmp-frontend/src/app/ui/admin/user/listing/user-listing.component.ts @@ -1,8 +1,13 @@ + +import {of as observableOf, merge as observableMerge, Observable } from 'rxjs'; + +import {map, catchError, switchMap, startWith} from 'rxjs/operators'; import { DataSource } from '@angular/cdk/table'; import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core'; -import { MatPaginator, MatSnackBar, MatSort } from '@angular/material'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSnackBar } from '@angular/material/snack-bar'; +import { MatSort } from '@angular/material/sort'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; import { UserListingModel } from '../../../../core/model/user/user-listing'; import { UserCriteria } from '../../../../core/query/user/user-criteria'; import { UserService } from '../../../../core/services/user/user.service'; @@ -41,28 +46,28 @@ export class UsersDataSource extends DataSource { // this._paginator.pageIndex = 0; //}) - return Observable.merge(...displayDataChanges) - .startWith(null) - .switchMap(() => { + return observableMerge(...displayDataChanges).pipe( + startWith(null), + switchMap(() => { const startIndex = this._paginator.pageIndex * this._paginator.pageSize; let fields: Array = new Array(); if (this._sort.active) { fields = this._sort.direction === 'asc' ? ['+' + this._sort.active] : ['-' + this._sort.active]; } const request = new DataTableRequest(startIndex, this._paginator.pageSize, { fields: fields }); request.criteria = this._criteria.getFormData(); return this._service.getPaged(request); - }) - .catch((error: any) => { + }), + catchError((error: any) => { this._snackBar.openFromComponent(SnackBarNotificationComponent, { data: { message: 'GENERAL.SNACK-BAR.FORMS-BAD-REQUEST', language: this._languageService }, duration: 3000, }); this._criteria.onCallbackError(error); - return Observable.of(null); - }) - .map(result => { + return observableOf(null); + }), + map(result => { return result; - }) - .map(result => { + }), + map(result => { if (!result) { return []; } if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } //result.data.forEach((element: any) => { @@ -75,7 +80,7 @@ export class UsersDataSource extends DataSource { // element.roles = roles; //}); return result.data; - }); + }),); } disconnect() { @@ -90,9 +95,9 @@ export class UsersDataSource extends DataSource { }) export class UserListingComponent implements OnInit, AfterViewInit { - @ViewChild(MatPaginator) _paginator: MatPaginator; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(UserCriteriaComponent) criteria: UserCriteriaComponent; + @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; + @ViewChild(MatSort, { static: true }) sort: MatSort; + @ViewChild(UserCriteriaComponent, { static: true }) criteria: UserCriteriaComponent; breadCrumbs: Observable; dataSource: UsersDataSource | null; @@ -107,7 +112,7 @@ export class UserListingComponent implements OnInit, AfterViewInit { } ngOnInit() { - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: null, label: this.languageService.instant('NAV-BAR.USERS-BREADCRUMB'), url: "/users" diff --git a/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts b/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts index 7d7a429f4..a6d966ea7 100644 --- a/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts @@ -1,7 +1,10 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {mergeMap, takeUntil } from 'rxjs/operators'; import { Component, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { Router, ActivatedRoute, Params } from '@angular/router'; -import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../core/common/base/base.component'; import { RecentActivityType } from '../../core/common/enum/recent-activity-type'; import { DashboardStatisticsModel } from '../../core/model/dashboard/dashboard-statistics-model'; @@ -24,7 +27,6 @@ import { DatasetService } from '../../core/services/dataset/dataset.service'; import { ExploreDatasetCriteriaModel } from '../../core/query/explore-dataset/explore-dataset-criteria'; import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item'; import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent'; -import { Observable } from 'rxjs'; @Component({ selector: 'app-dashboard', @@ -90,7 +92,7 @@ export class DashboardComponent extends BaseComponent implements OnInit, IBreadC // }; const breadCrumbs = []; - this.breadCrumbs = Observable.of(breadCrumbs); + this.breadCrumbs = observableOf(breadCrumbs); if (!this.isAuthenticated()) { this.dashboardService.getStatistics() @@ -109,9 +111,9 @@ export class DashboardComponent extends BaseComponent implements OnInit, IBreadC }); } - this.filteredOptions = this.searchControl.valueChanges.flatMap(x => { + this.filteredOptions = this.searchControl.valueChanges.pipe(mergeMap(x => { return this.searchBarService.search(x); - }); + })); } public isAuthenticated(): boolean { diff --git a/dmp-frontend/src/app/ui/dashboard/quick-wizard-create-add/quick-wizard-create-add.component.ts b/dmp-frontend/src/app/ui/dashboard/quick-wizard-create-add/quick-wizard-create-add.component.ts index 74b8cde91..b0a82ffca 100644 --- a/dmp-frontend/src/app/ui/dashboard/quick-wizard-create-add/quick-wizard-create-add.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/quick-wizard-create-add/quick-wizard-create-add.component.ts @@ -2,7 +2,7 @@ import { BaseComponent } from "../../../core/common/base/base.component"; import { OnInit, Component } from "@angular/core"; import { Router, ActivatedRoute } from "@angular/router"; import { TranslateService } from "@ngx-translate/core"; -import { MatSnackBar } from "@angular/material"; +import { MatSnackBar } from "@angular/material/snack-bar"; @Component({ selector: 'app-quick-wizard-create-add-component', diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts index b0c2f0250..5ff771ebb 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts @@ -10,7 +10,7 @@ import { Router } from '@angular/router'; import { Principal } from '../../../core/model/auth/Principal'; import { TranslateService } from '@ngx-translate/core'; import { ConfirmationDialogComponent } from '../../../library/confirmation-dialog/confirmation-dialog.component'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { ExportMethodDialogComponent } from '../../../library/export-method-dialog/export-method-dialog.component'; import { BaseComponent } from '../../../core/common/base/base.component'; import { UiNotificationService, SnackBarNotificationLevel } from '../../../core/services/notification/ui-notification-service'; diff --git a/dmp-frontend/src/app/ui/dataset-create-wizard/dataset-create-wizard.component.ts b/dmp-frontend/src/app/ui/dataset-create-wizard/dataset-create-wizard.component.ts index f20537d92..573e0ef20 100644 --- a/dmp-frontend/src/app/ui/dataset-create-wizard/dataset-create-wizard.component.ts +++ b/dmp-frontend/src/app/ui/dataset-create-wizard/dataset-create-wizard.component.ts @@ -1,12 +1,14 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, OnInit, ViewChild } from '@angular/core'; import { FormBuilder, FormGroup, FormArray } from '@angular/forms'; -import { MatStepper, MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; +import { MatStepper } from '@angular/material/stepper'; import { Router } from '@angular/router'; import { BaseComponent } from '../../core/common/base/base.component'; import { QuickWizardService } from '../../core/services/quick-wizard/quick-wizard.service'; import { DatasetCreateWizardModel } from './dataset-create-wizard.model'; import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent'; -import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item'; import { SnackBarNotificationLevel, UiNotificationService } from '../../core/services/notification/ui-notification-service'; @@ -22,14 +24,14 @@ import { ConfirmationDialogComponent } from '../../library/confirmation-dialog/c }) export class DatasetCreateWizard extends BaseComponent implements OnInit, IBreadCrumbComponent { breadCrumbs: Observable; - @ViewChild(DatasetEditorWizardComponent) datasetEditorWizardComponent: DatasetEditorWizardComponent; + @ViewChild(DatasetEditorWizardComponent, { static: false }) datasetEditorWizardComponent: DatasetEditorWizardComponent; isLinear = false; isNew = true; formGroup: FormGroup; datasetCreateWizardModel: DatasetCreateWizardModel; - @ViewChild('stepper') stepper: MatStepper; + @ViewChild('stepper', { static: true }) stepper: MatStepper; constructor( private router: Router, @@ -46,7 +48,7 @@ export class DatasetCreateWizard extends BaseComponent implements OnInit, IBread this.datasetCreateWizardModel = new DatasetCreateWizardModel(); this.formGroup = this.datasetCreateWizardModel.buildForm(); this.language.get('NAV-BAR.DATASET-DESCRIPTION-WIZARD').pipe(takeUntil(this._destroyed)).subscribe(x => { - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: 'Dashboard', label: x, diff --git a/dmp-frontend/src/app/ui/dataset-create-wizard/dmp-selector/dataset-dmp-selector.component.ts b/dmp-frontend/src/app/ui/dataset-create-wizard/dmp-selector/dataset-dmp-selector.component.ts index 9736f9d4b..5cd431fe7 100644 --- a/dmp-frontend/src/app/ui/dataset-create-wizard/dmp-selector/dataset-dmp-selector.component.ts +++ b/dmp-frontend/src/app/ui/dataset-create-wizard/dmp-selector/dataset-dmp-selector.component.ts @@ -1,25 +1,23 @@ -import { Component, OnInit, ViewChild, Input } from '@angular/core'; -import { BaseComponent } from '../../../core/common/base/base.component'; -import { IBreadCrumbComponent } from '../../misc/breadcrumb/definition/IBreadCrumbComponent'; + +import { Component, Input, OnInit } from '@angular/core'; +import { FormArray, FormControl, FormGroup } from '@angular/forms'; +import { MatStepper } from '@angular/material/stepper'; +import { ActivatedRoute, Router } from '@angular/router'; import { Observable } from 'rxjs'; -import { BreadcrumbItem } from '../../misc/breadcrumb/definition/breadcrumb-item'; -import { MatStepper, MatSnackBar } from '@angular/material'; -import { FormGroup, FormArray } from '@angular/forms'; -import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile'; -import { takeUntil } from 'rxjs/operators'; -import { RequestItem } from '../../../core/query/request-item'; -import { DmpCriteria } from '../../../core/query/dmp/dmp-criteria'; -import { Params, ActivatedRoute, Router } from '@angular/router'; -import { DatasetProfileCriteria } from '../../../core/query/dataset-profile/dataset-profile-criteria'; -import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; -import { DmpListingModel } from '../../../core/model/dmp/dmp-listing'; -import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; -import { SingleAutoCompleteConfiguration } from '../../../library/auto-complete/single/single-auto-complete-configuration'; -import { DatasetWizardService } from '../../../core/services/dataset-wizard/dataset-wizard.service'; -import { TranslateService } from '@ngx-translate/core'; -import { DmpService } from '../../../core/services/dmp/dmp.service'; -import { FormControl } from '@angular/forms/src/model'; +import { map, takeUntil } from 'rxjs/operators'; +import { BaseComponent } from '../../../core/common/base/base.component'; import { DmpStatus } from '../../../core/common/enum/dmp-status'; +import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; +import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile'; +import { DmpListingModel } from '../../../core/model/dmp/dmp-listing'; +import { DatasetProfileCriteria } from '../../../core/query/dataset-profile/dataset-profile-criteria'; +import { DmpCriteria } from '../../../core/query/dmp/dmp-criteria'; +import { RequestItem } from '../../../core/query/request-item'; +import { DatasetWizardService } from '../../../core/services/dataset-wizard/dataset-wizard.service'; +import { DmpService } from '../../../core/services/dmp/dmp.service'; +import { SingleAutoCompleteConfiguration } from '../../../library/auto-complete/single/single-auto-complete-configuration'; +import { BreadcrumbItem } from '../../misc/breadcrumb/definition/breadcrumb-item'; +import { IBreadCrumbComponent } from '../../misc/breadcrumb/definition/IBreadCrumbComponent'; @Component({ selector: 'dataset-dmp-selector-component', @@ -79,8 +77,8 @@ export class DatasetDmpSelector extends BaseComponent implements OnInit, IBreadC dmpDataTableRequest.criteria.status = DmpStatus.Draft; dmpDataTableRequest.criteria.like = query; - return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete") - .map(y => y.data); + return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe( + map(y => y.data)); } loadDatasetProfiles() { diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.ts index 6ac820ac8..8457cd3e6 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-copy-dialogue/dataset-copy-dialogue.component.ts @@ -1,5 +1,7 @@ + +import {map} from 'rxjs/operators'; import { Component } from "@angular/core"; -import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material"; +import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material/dialog"; import { SingleAutoCompleteConfiguration } from "../../../../library/auto-complete/single/single-auto-complete-configuration"; import { Observable } from "rxjs"; import { DataTableRequest } from "../../../../core/model/data-table/data-table-request"; @@ -57,19 +59,19 @@ export class DatasetCopyDialogueComponent { const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); dmpDataTableRequest.criteria = new DmpCriteria(); dmpDataTableRequest.criteria.like = query; - return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").map(x => x.data); + return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(map(x => x.data)); } datasetProfileValidate() { - return this.dmpService.getSingle(this.data.formControl.value.id).map(result => result as DmpModel) - .map(result => { + return this.dmpService.getSingle(this.data.formControl.value.id).pipe(map(result => result as DmpModel), + map(result => { this.dmpModel = result this.dmpModel.profiles.forEach((element) => { if (element.id == this.data.datasetProfileId) { this.data.datasetProfileExist = true; } }) - }); + }),); } getErrorMessage() { diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts index 8653f846d..4d0433a42 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts @@ -1,11 +1,15 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {map, catchError, takeUntil } from 'rxjs/operators'; import { Component, OnInit, ViewChild } from '@angular/core'; import { FormControl, FormGroup } from '@angular/forms'; -import { MatDialog, MatSnackBar, MatStepper } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSnackBar } from '@angular/material/snack-bar'; +import { MatStepper } from '@angular/material/stepper'; import { ActivatedRoute, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import * as FileSaver from 'file-saver'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { BaseComponent } from '../../../core/common/base/base.component'; import { DatasetStatus } from '../../../core/common/enum/dataset-status'; @@ -40,7 +44,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr breadCrumbs: Observable; viewOnly = false; - @ViewChild('stepper') stepper: MatStepper; + @ViewChild('stepper', { static: false }) stepper: MatStepper; editMode = false; publicMode = false; @@ -109,7 +113,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr .subscribe(data => { this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data); this.needsUpdate(); - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: null, label: this.datasetWizardModel.label, @@ -140,11 +144,11 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr error => { this.uiNotificationService.snackBarNotification(this.language.instant('DATASET-WIZARD.MESSAGES.DATAESET-NOT-FOUND'), SnackBarNotificationLevel.Error); this.router.navigate(['/plans']); - return Observable.of(null); + return observableOf(null); }); } else if (dmpId != null) { this.isNew = true; - this.dmpService.getSingle(dmpId).map(data => data as DmpModel) + this.dmpService.getSingle(dmpId).pipe(map(data => data as DmpModel)) .pipe(takeUntil(this._destroyed)) .subscribe(data => { this.datasetWizardModel = new DatasetWizardEditorModel(); @@ -158,7 +162,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr this.registerFormListeners(); // this.availableProfiles = data.profiles; - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'), @@ -186,7 +190,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data); this.formGroup = this.datasetWizardModel.buildForm(); this.formGroup.get('id').setValue(null); - this.dmpService.getSingle(newDmpId).map(data => data as DmpModel) + this.dmpService.getSingle(newDmpId).pipe(map(data => data as DmpModel)) .pipe(takeUntil(this._destroyed)) .subscribe(data => { setTimeout(() => { @@ -194,7 +198,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr this.formGroup.get('dmp').setValue(this.datasetWizardModel.dmp); this.loadDatasetProfiles(); - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'), @@ -226,12 +230,12 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr } else if (this.publicId != null) { // For Finalized -> Public Datasets this.isNew = false; this.datasetWizardService.getSinglePublic(this.publicId) - .pipe(takeUntil(this._destroyed)) - .catch((error: any) => { + .pipe(takeUntil(this._destroyed)).pipe( + catchError((error: any) => { this.uiNotificationService.snackBarNotification(error.error.message, SnackBarNotificationLevel.Error); this.router.navigate(['/explore']); - return Observable.of(null); - }) + return observableOf(null); + })) .subscribe(data => { if (data) { this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data); @@ -246,7 +250,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr const breadcrumbs = []; breadcrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.PUBLIC DATASETS'), url: '/explore' }); breadcrumbs.push({ parentComponentName: null, label: this.datasetWizardModel.label, url: '/datasets/publicEdit/' + this.datasetWizardModel.id }); - this.breadCrumbs = Observable.of(breadcrumbs); + this.breadCrumbs = observableOf(breadcrumbs); } }); this.publicMode = true; @@ -256,7 +260,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr .subscribe(data => { this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data); this.needsUpdate(); - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'), @@ -294,7 +298,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr //if (this.viewOnly) { this.formGroup.disable(); } // For future use, to make Dataset edit like DMP. this.registerFormListeners(); this.dmpValueChanged(null); - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: null, label: this.language.instant('DATASET-LISTING.ACTIONS.CREATE-NEW').toUpperCase(), @@ -349,7 +353,7 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); dmpDataTableRequest.criteria = new DmpCriteria(); dmpDataTableRequest.criteria.like = query; - return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").map(x => x.data); + return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(map(x => x.data)); } loadDatasetProfiles() { diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts index d68a70254..a3c3f31c9 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts @@ -1,6 +1,6 @@ import { Component, Input, OnInit } from '@angular/core'; import { FormArray, FormGroup } from '@angular/forms'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { Router } from '@angular/router'; import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/data-repository/dataset-external-data-repository-dialog-editor.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/data-repository/dataset-external-data-repository-dialog-editor.component.ts index 450c3fb39..dc1f802b1 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/data-repository/dataset-external-data-repository-dialog-editor.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/data-repository/dataset-external-data-repository-dialog-editor.component.ts @@ -1,6 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../../../core/common/base/base.component'; import { ExternalDataRepositoryService } from '../../../../../../core/services/external-sources/data-repository/extternal-data-repository.service'; diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/external-dataset/dataset-external-dataset-dialog-editor.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/external-dataset/dataset-external-dataset-dialog-editor.component.ts index 2f9a97d9e..7d91c8498 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/external-dataset/dataset-external-dataset-dialog-editor.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/external-dataset/dataset-external-dataset-dialog-editor.component.ts @@ -1,6 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../../../core/common/base/base.component'; import { ExternalDatasetService } from '../../../../../../core/services/external-sources/dataset/external-dataset.service'; diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/registry/dataset-external-registry-dialog-editor.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/registry/dataset-external-registry-dialog-editor.component.ts index bfdb4e797..32341d400 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/registry/dataset-external-registry-dialog-editor.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/registry/dataset-external-registry-dialog-editor.component.ts @@ -1,6 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../../../core/common/base/base.component'; import { ExternalRegistryService } from '../../../../../../core/services/external-sources/registry/external-registry.service'; diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/service/dataset-external-service-dialog-editor.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/service/dataset-external-service-dialog-editor.component.ts index ac12d5369..7f9d22ace 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/service/dataset-external-service-dialog-editor.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/editors/service/dataset-external-service-dialog-editor.component.ts @@ -1,6 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../../../core/common/base/base.component'; import { ExternalServiceService } from '../../../../../../core/services/external-sources/service/external-service.service'; diff --git a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.ts b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.ts index c25d3a896..cfcee2add 100644 --- a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.ts +++ b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-criteria.component.ts @@ -1,39 +1,38 @@ -import { Component, OnInit } from '@angular/core'; -import { Observable } from 'rxjs'; -import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model'; -import { DatasetStatus } from '../../../../core/common/enum/dataset-status'; -import { ExternalSourceItemModel } from '../../../../core/model/external-sources/external-source-item'; -import { DatasetCriteria } from '../../../../core/query/dataset/dataset-criteria'; -import { TagCriteria } from '../../../../core/query/tag/tag-criteria'; -import { ExternalSourcesService } from '../../../../core/services/external-sources/external-sources.service'; -import { EnumUtils } from '../../../../core/services/utilities/enum-utils.service'; -import { RequestItem } from '../../../../core/query/request-item'; -import { BaseCriteriaComponent } from '../../../misc/criteria/base-criteria.component'; -import { DmpCriteria } from '../../../../core/query/dmp/dmp-criteria'; -import { DmpService } from '../../../../core/services/dmp/dmp.service'; -import { DataTableRequest } from '../../../../core/model/data-table/data-table-request'; -import { DataTableData } from '../../../../core/model/data-table/data-table-data'; -import { DmpListingModel } from '../../../../core/model/dmp/dmp-listing'; -import { Input } from '@angular/core'; -import { MatDialog, MatSnackBar } from '@angular/material'; -import { DatasetUploadDialogue } from './dataset-upload-dialogue/dataset-upload-dialogue.component'; -import { takeUntil } from 'rxjs/operators'; -import { reserveSlots } from '@angular/core/src/render3/instructions'; -import { DatasetWizardService } from '../../../../core/services/dataset-wizard/dataset-wizard.service'; -import { ViewChild } from '@angular/core'; -import { UiNotificationService, SnackBarNotificationLevel } from '../../../../core/services/notification/ui-notification-service'; + +import { Component, Input, OnInit } from '@angular/core'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { FormGroup, FormBuilder, FormControl } from '@angular/forms'; -import { MultipleAutoCompleteConfiguration } from '../../../../library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { OrganisationCriteria } from '../../../../core/query/organisation/organisation-criteria'; -import { OrganisationService } from '../../../../core/services/organisation/organisation.service'; -import { GrantCriteria } from '../../../../core/query/grant/grant-criteria'; -import { GrantService } from '../../../../core/services/grant/grant.service'; -import { UserCriteria } from '../../../../core/query/user/user-criteria'; -import { UserService } from '../../../../core/services/user/user.service'; +import { Observable } from 'rxjs'; +import { map, takeUntil } from 'rxjs/operators'; +import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model'; +import { DatasetStatus } from '../../../../core/common/enum/dataset-status'; +import { DataTableData } from '../../../../core/model/data-table/data-table-data'; +import { DataTableRequest } from '../../../../core/model/data-table/data-table-request'; +import { DmpListingModel } from '../../../../core/model/dmp/dmp-listing'; +import { ExternalSourceItemModel } from '../../../../core/model/external-sources/external-source-item'; import { DatasetProfileCriteria } from '../../../../core/query/dataset-profile/dataset-profile-criteria'; +import { DatasetCriteria } from '../../../../core/query/dataset/dataset-criteria'; +import { DmpCriteria } from '../../../../core/query/dmp/dmp-criteria'; +import { GrantCriteria } from '../../../../core/query/grant/grant-criteria'; +import { OrganisationCriteria } from '../../../../core/query/organisation/organisation-criteria'; +import { RequestItem } from '../../../../core/query/request-item'; +import { TagCriteria } from '../../../../core/query/tag/tag-criteria'; +import { UserCriteria } from '../../../../core/query/user/user-criteria'; +import { DatasetWizardService } from '../../../../core/services/dataset-wizard/dataset-wizard.service'; import { DatasetService } from '../../../../core/services/dataset/dataset.service'; +import { DmpService } from '../../../../core/services/dmp/dmp.service'; +import { ExternalSourcesService } from '../../../../core/services/external-sources/external-sources.service'; +import { GrantService } from '../../../../core/services/grant/grant.service'; +import { SnackBarNotificationLevel, UiNotificationService } from '../../../../core/services/notification/ui-notification-service'; +import { OrganisationService } from '../../../../core/services/organisation/organisation.service'; +import { UserService } from '../../../../core/services/user/user.service'; +import { EnumUtils } from '../../../../core/services/utilities/enum-utils.service'; +import { MultipleAutoCompleteConfiguration } from '../../../../library/auto-complete/multiple/multiple-auto-complete-configuration'; +import { BaseCriteriaComponent } from '../../../misc/criteria/base-criteria.component'; +import { DatasetUploadDialogue } from './dataset-upload-dialogue/dataset-upload-dialogue.component'; @Component({ selector: 'app-dataset-criteria-component', @@ -65,43 +64,43 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O tagsAutoCompleteConfiguration = { filterFn: this.filterTags.bind(this), - initialItems: (excludedItems: any[]) => this.filterTags('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterTags('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] }; datasetTemplateAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterDatasetTemplate.bind(this), - initialItems: (excludedItems: any[]) => this.filterDatasetTemplate('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterDatasetTemplate('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'], subtitleFn: (item) => item['description'] }; dmpAutoCompleteConfiguration = { - filterFn: (x, excluded) => this.filterDmps(x).map(x => x.data), - initialItems: (extraData) => this.filterDmps('').map(x => x.data), + filterFn: (x, excluded) => this.filterDmps(x).pipe(map(x => x.data)), + initialItems: (extraData) => this.filterDmps('').pipe(map(x => x.data)), displayFn: (item) => item['label'], titleFn: (item) => item['label'] }; collaboratorsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterCollaborators.bind(this), - initialItems: (excludedItems: any[]) => this.filterCollaborators('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterCollaborators('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] }; grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterGrant.bind(this), - initialItems: (excludedItems: any[]) => this.filterGrant('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterGrant('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'] }; organisationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterOrganisations.bind(this), - initialItems: (excludedItems: any[]) => this.filterOrganisations('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterOrganisations('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] } @@ -200,7 +199,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O const datasetTemplateRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); datasetTemplateRequestItem.criteria = new DatasetProfileCriteria(); datasetTemplateRequestItem.criteria.like = query; - return this.datasetService.getDatasetProfilesUsedPaged(datasetTemplateRequestItem).map(x => x.data); + return this.datasetService.getDatasetProfilesUsedPaged(datasetTemplateRequestItem).pipe(map(x => x.data)); } filterDmps(value: string): Observable> { @@ -218,7 +217,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O const grantRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); grantRequestItem.criteria = new GrantCriteria(); grantRequestItem.criteria.like = query; - return this.grantService.getPaged(grantRequestItem, "autocomplete").map(x => x.data); + return this.grantService.getPaged(grantRequestItem, "autocomplete").pipe(map(x => x.data)); } filterOrganisations(value: string) { @@ -227,7 +226,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria.labelLike = value; - return this.organisationService.searchInternalOrganisations(dataTableRequest).map(x => x.data); + return this.organisationService.searchInternalOrganisations(dataTableRequest).pipe(map(x => x.data)); } filterCollaborators(query: string) { @@ -236,7 +235,7 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O const collaboratorsRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); collaboratorsRequestItem.criteria = new UserCriteria(); collaboratorsRequestItem.criteria.collaboratorLike = query; - return this.userService.getCollaboratorsPaged(collaboratorsRequestItem).map(x => x.data); + return this.userService.getCollaboratorsPaged(collaboratorsRequestItem).pipe(map(x => x.data)); } fileImport(event) { @@ -256,8 +255,8 @@ export class DatasetCriteriaComponent extends BaseCriteriaComponent implements O this.datasetWizardService.uploadXml(result.fileList, result.datasetTitle, result.dmpId, result.datasetProfileId) .pipe(takeUntil(this._destroyed)) .subscribe( - complete => this.onCallbackSuccess(), - error => this.onCallbackError(error) + complete => this.onCallbackSuccess(), + error => this.onCallbackError(error) ); } }) diff --git a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-upload-dialogue/dataset-upload-dialogue.component.ts b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-upload-dialogue/dataset-upload-dialogue.component.ts index eb3d34ed1..d4aeef786 100644 --- a/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-upload-dialogue/dataset-upload-dialogue.component.ts +++ b/dmp-frontend/src/app/ui/dataset/listing/criteria/dataset-upload-dialogue/dataset-upload-dialogue.component.ts @@ -1,5 +1,7 @@ + +import {map, takeUntil } from 'rxjs/operators'; import { Component, Inject, OnInit } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { Observable } from 'rxjs'; import { DataTableData } from '../../../../../core/model/data-table/data-table-data'; import { DmpListingModel } from '../../../../../core/model/dmp/dmp-listing'; @@ -10,7 +12,6 @@ import { ValidationErrorModel } from '../../../../../common/forms/validation/err import { BaseCriteriaComponent } from '../../../../misc/criteria/base-criteria.component'; import { DmpModel } from '../../../../../core/model/dmp/dmp'; import { DatasetProfileModel } from '../../../../../core/model/dataset/dataset-profile'; -import { takeUntil } from 'rxjs/operators'; import { DatasetWizardService } from '../../../../../core/services/dataset-wizard/dataset-wizard.service'; import { RequestItem } from '../../../../../core/query/request-item'; import { DatasetProfileCriteria } from '../../../../../core/query/dataset-profile/dataset-profile-criteria'; @@ -31,8 +32,8 @@ export class DatasetUploadDialogue extends BaseCriteriaComponent implements OnIn availableProfiles: DatasetProfileModel[] = []; dmpAutoCompleteConfiguration = { - filterFn: (x, excluded) => this.filterDmps(x).map(x => x.data), - initialItems: (extraData) => this.filterDmps('').map(x => x.data), + filterFn: (x, excluded) => this.filterDmps(x).pipe(map(x => x.data)), + initialItems: (extraData) => this.filterDmps('').pipe(map(x => x.data)), displayFn: (item) => item['label'], titleFn: (item) => item['label'] }; diff --git a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts index 0cd581f27..2092b99ae 100644 --- a/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts +++ b/dmp-frontend/src/app/ui/dataset/listing/dataset-listing.component.ts @@ -1,7 +1,9 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, OnInit, ViewChild } from '@angular/core'; -import { MatPaginator, MatSort, PageEvent } from '@angular/material'; +import { MatPaginator, PageEvent } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; import { ActivatedRoute, Params, Router } from '@angular/router'; -import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../core/common/base/base.component'; import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; @@ -22,9 +24,9 @@ import { DatasetStatus } from '../../../core/common/enum/dataset-status'; }) export class DatasetListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { - @ViewChild(MatPaginator) _paginator: MatPaginator; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(DatasetCriteriaComponent) criteria: DatasetCriteriaComponent; + @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; + @ViewChild(MatSort, { static: false }) sort: MatSort; + @ViewChild(DatasetCriteriaComponent, { static: true }) criteria: DatasetCriteriaComponent; breadCrumbs: Observable; @@ -60,7 +62,7 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB this.criteria.setCriteria(this.getDefaultCriteria(dmp)); this.refresh(); this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: 'DmpEditorComponent', label: dmp.label, url: '/plans/edit/' + this.dmpId @@ -72,7 +74,7 @@ export class DatasetListingComponent extends BaseComponent implements OnInit, IB this.criteria.setCriteria(this.getDefaultCriteria()); this.refresh(); this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DATASET-DESCRIPTIONS'), url: "/datasets" diff --git a/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.ts b/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.ts index 4629561db..f9c8bd81d 100644 --- a/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.ts +++ b/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.ts @@ -1,13 +1,15 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {map, takeUntil } from 'rxjs/operators'; import { Component, OnInit } from '@angular/core'; import { DmpWizardEditorModel } from '../wizard/dmp-wizard-editor.model'; import { FormGroup } from '@angular/forms'; -import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../core/common/base/base.component'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { DmpModel } from '../../../core/model/dmp/dmp'; import { TranslateService } from '@ngx-translate/core'; import { DmpService } from '../../../core/services/dmp/dmp.service'; -import { Observable } from 'rxjs'; import { BreadcrumbItem } from '../../misc/breadcrumb/definition/breadcrumb-item'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { UiNotificationService, SnackBarNotificationLevel } from '../../../core/services/notification/ui-notification-service'; @@ -48,7 +50,7 @@ export class DmpCloneComponent extends BaseComponent implements OnInit { .pipe(takeUntil(this._destroyed)) .subscribe((params: Params) => { this.itemId = params['id']; - this.dmpService.getSingle(this.itemId).map(data => data as DmpModel) + this.dmpService.getSingle(this.itemId).pipe(map(data => data as DmpModel)) .pipe(takeUntil(this._destroyed)) .subscribe(data => { this.dmp = new DmpWizardEditorModel(); @@ -72,7 +74,7 @@ export class DmpCloneComponent extends BaseComponent implements OnInit { const breadCrumbs = []; breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DMPS'), url: "/plans" }); breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/clone/' + this.dmp.id }); - this.breadCrumbs = Observable.of(breadCrumbs); + this.breadCrumbs = observableOf(breadCrumbs); }); }); } diff --git a/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.ts b/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.ts index 1647a569d..08d3940aa 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.ts @@ -1,6 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { ExternalResearcherService } from '../../../../core/services/external-sources/researcher/external-researcher.service'; diff --git a/dmp-frontend/src/app/ui/dmp/editor/available-profiles/available-profiles.component.ts b/dmp-frontend/src/app/ui/dmp/editor/available-profiles/available-profiles.component.ts index bb653a32d..98272ef85 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/available-profiles/available-profiles.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/available-profiles/available-profiles.component.ts @@ -1,6 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile'; diff --git a/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.ts b/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.ts index f0b415685..cf0edf5d4 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/dmp-editor.component.ts @@ -1,11 +1,14 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {map, takeUntil } from 'rxjs/operators'; import { Component, OnInit, ViewContainerRef } from '@angular/core'; import { FormGroup, FormControl, FormArray, AbstractControl } from '@angular/forms'; -import { MatDialog, MatSnackBar } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import * as FileSaver from 'file-saver'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { BaseComponent } from '../../../core/common/base/base.component'; import { DmpStatus } from '../../../core/common/enum/dmp-status'; @@ -102,7 +105,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC if (itemId != null) { this.isNew = false; if (tabToNav == "datasetDescriptions") this.selectedTab = 2 - this.dmpService.getSingle(itemId).map(data => data as DmpModel) + this.dmpService.getSingle(itemId).pipe(map(data => data as DmpModel)) .pipe(takeUntil(this._destroyed)) .subscribe(async data => { this.dmp = new DmpEditorModel(); @@ -131,7 +134,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC // notFoundResolver: [await this.grantService.getSingle(this.dmp.grant.id).map(x => ({ label: x.label, url: '/grants/edit/' + x.id }) as BreadcrumbItem).toPromise()] } ); - this.breadCrumbs = Observable.of(breadCrumbs); + this.breadCrumbs = observableOf(breadCrumbs); } this.associatedUsers = data.associatedUsers; this.people = data.users; @@ -139,7 +142,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC } else if (publicId != null) { this.isNew = false; this.isPublic = true; - this.dmpService.getSinglePublic(publicId).map(data => data as DmpModel) + this.dmpService.getSinglePublic(publicId).pipe(map(data => data as DmpModel)) .pipe(takeUntil(this._destroyed)) .subscribe(async data => { this.dmp = new DmpEditorModel(); @@ -154,7 +157,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC const breadcrumbs = []; breadcrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.PUBLIC-DMPS').toUpperCase(), url: '/plans' }); breadcrumbs.push({ parentComponentName: null, label: this.dmp.label, url: '/plans/publicEdit/' + this.dmp.id }); - this.breadCrumbs = Observable.of(breadcrumbs); + this.breadCrumbs = observableOf(breadcrumbs); // this.breadCrumbs = Observable.of([ // { // parentComponentName: 'DmpListingComponent', @@ -175,7 +178,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC this.registerFormEventsForNewItem(); if (this.isAuthenticated) { this.language.get('NAV-BAR.MY-DMPS').pipe(takeUntil(this._destroyed)).subscribe(x => { - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: null, label: x, @@ -205,7 +208,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC } registerFormEventsForNewItem() { - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: 'DmpListingComponent', label: this.language.instant('NAV-BAR.MY-DMPS'), @@ -218,7 +221,7 @@ export class DmpEditorComponent extends BaseComponent implements OnInit, IBreadC let fields: Array = new Array(); var request = new DataTableRequest(0, 10, { fields: fields }); request.criteria = new DmpProfileCriteria(); - return this.dmpProfileService.getPaged(request).map(x => x.data); + return this.dmpProfileService.getPaged(request).pipe(map(x => x.data)); } // searchGrant(query: string) { diff --git a/dmp-frontend/src/app/ui/dmp/editor/dmp-finalize-dialog/dmp-finalize-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/editor/dmp-finalize-dialog/dmp-finalize-dialog.component.ts index 1e52540cd..9708fff9a 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dmp-finalize-dialog/dmp-finalize-dialog.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/dmp-finalize-dialog/dmp-finalize-dialog.component.ts @@ -1,5 +1,5 @@ import { Component, Inject, OnInit } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { Router } from '@angular/router'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DatasetStatus } from '../../../../core/common/enum/dataset-status'; diff --git a/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.ts b/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.ts index d5dcb8a95..dff382cfd 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/general-tab/general-tab.component.ts @@ -1,8 +1,9 @@ + +import {map, takeUntil } from 'rxjs/operators'; import { Component, Input, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DataTableRequest } from '../../../../core/model/data-table/data-table-request'; import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile'; @@ -72,7 +73,7 @@ export class GeneralTabComponent extends BaseComponent implements OnInit { this.profilesAutoCompleteConfiguration = { filterFn: this.filterProfiles.bind(this), - initialItems: (excludedItems: any[]) => this.filterProfiles('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterProfiles('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'], subtitleFn: (item) => item['description'] @@ -80,7 +81,7 @@ export class GeneralTabComponent extends BaseComponent implements OnInit { this.organisationsAutoCompleteConfiguration = { filterFn: this.filterOrganisations.bind(this), - initialItems: (excludedItems: any[]) => this.filterOrganisations('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterOrganisations('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'], subtitleFn: (item) => item ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') @@ -88,7 +89,7 @@ export class GeneralTabComponent extends BaseComponent implements OnInit { this.researchersAutoCompleteConfiguration = { filterFn: this.filterResearchers.bind(this), - initialItems: (excludedItems: any[]) => this.filterResearchers('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterResearchers('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'], subtitleFn: (item) => item ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') @@ -118,7 +119,7 @@ export class GeneralTabComponent extends BaseComponent implements OnInit { let fields: Array = new Array(); var request = new DataTableRequest(0, 10, { fields: fields }); request.criteria = new DmpProfileCriteria(); - return this.dmpProfileService.getPaged(request).map(x => x.data); + return this.dmpProfileService.getPaged(request).pipe(map(x => x.data)); } // onCallbackSuccess(): void { diff --git a/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.ts b/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.ts index 941bb915d..33678428f 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.ts @@ -1,6 +1,6 @@ import { Component, Input, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { TranslateService } from '@ngx-translate/core'; import { Principal } from '../../../../core/model/auth/Principal'; import { UserInfoListingModel } from '../../../../core/model/user/user-info-listing'; diff --git a/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation.component.ts b/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation.component.ts index 1f72b3798..ed144faf8 100644 --- a/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation.component.ts +++ b/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation.component.ts @@ -1,10 +1,12 @@ + +import {map, takeUntil } from 'rxjs/operators'; import { COMMA, ENTER } from '@angular/cdk/keycodes'; import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatChipInputEvent, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatChipInputEvent } from '@angular/material/chips'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../core/common/base/base.component'; import { DmpInvitation } from '../../../core/model/dmp/invitation/dmp-invitation'; import { DmpInvitationUser } from '../../../core/model/dmp/invitation/dmp-invitation-user'; @@ -36,7 +38,7 @@ export class DmpInvitationDialogComponent extends BaseComponent implements OnIni usersAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterUsers.bind(this), - initialItems: (excludedItems: any[]) => this.filterUsers('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterUsers('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item.name, titleFn: (item) => item.name }; diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts index 482edba58..88b4a0940 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria.component.ts @@ -1,8 +1,9 @@ + +import {map, takeUntil } from 'rxjs/operators'; import { Component, Input, OnInit } from '@angular/core'; import { FormBuilder, FormControl } from '@angular/forms'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { TranslateService } from '@ngx-translate/core'; -import { takeUntil } from 'rxjs/operators'; import { ValidationErrorModel } from '../../../../common/forms/validation/error-model/validation-error-model'; import { DataTableRequest } from '../../../../core/model/data-table/data-table-request'; import { GrantListingModel } from '../../../../core/model/grant/grant-listing'; @@ -46,14 +47,14 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni collaboratorsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterCollaborators.bind(this), - initialItems: (excludedItems: any[]) => this.filterCollaborators('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterCollaborators('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] }; datasetTemplateAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterDatasetTemplate.bind(this), - initialItems: (excludedItems: any[]) => this.filterDatasetTemplate('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterDatasetTemplate('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'], subtitleFn: (item) => item['description'] @@ -61,14 +62,14 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterGrant.bind(this), - initialItems: (excludedItems: any[]) => this.filterGrant('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterGrant('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'] }; organisationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterOrganisations.bind(this), - initialItems: (excludedItems: any[]) => this.filterOrganisations('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterOrganisations('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] } @@ -140,7 +141,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni const grantRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); grantRequestItem.criteria = new GrantCriteria(); grantRequestItem.criteria.like = query; - return this.grantService.getPaged(grantRequestItem, "autocomplete").map(x => x.data); + return this.grantService.getPaged(grantRequestItem, "autocomplete").pipe(map(x => x.data)); } filterOrganisations(value: string) { @@ -151,7 +152,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria.labelLike = value; - return this.organisationService.searchInternalOrganisations(dataTableRequest).map(x => x.data); + return this.organisationService.searchInternalOrganisations(dataTableRequest).pipe(map(x => x.data)); } filterCollaborators(query: string) { @@ -160,7 +161,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni const collaboratorsRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); collaboratorsRequestItem.criteria = new UserCriteria(); collaboratorsRequestItem.criteria.collaboratorLike = query; - return this.userService.getCollaboratorsPaged(collaboratorsRequestItem).map(x => x.data); + return this.userService.getCollaboratorsPaged(collaboratorsRequestItem).pipe(map(x => x.data)); } filterDatasetTemplate(query: string) { @@ -169,7 +170,7 @@ export class DmpCriteriaComponent extends BaseCriteriaComponent implements OnIni const datasetTemplateRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); datasetTemplateRequestItem.criteria = new DatasetProfileCriteria(); datasetTemplateRequestItem.criteria.like = query; - return this.dmpService.getDatasetProfilesUsedPaged(datasetTemplateRequestItem).map(x => x.data); + return this.dmpService.getDatasetProfilesUsedPaged(datasetTemplateRequestItem).pipe(map(x => x.data)); } fileSave(event) { diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/upload-dialogue/dmp-upload-dialogue.component.ts b/dmp-frontend/src/app/ui/dmp/listing/criteria/upload-dialogue/dmp-upload-dialogue.component.ts index 6e6101276..9a9dd31ad 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/upload-dialogue/dmp-upload-dialogue.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/upload-dialogue/dmp-upload-dialogue.component.ts @@ -1,5 +1,5 @@ import { Component, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { DmpService } from '../../../../../core/services/dmp/dmp.service'; @Component({ diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts index 8ab68e0a3..c12a22c0d 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.ts @@ -1,7 +1,10 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, OnInit, ViewChild } from '@angular/core'; -import { MatDialog, MatPaginator, MatSort } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; import { ActivatedRoute, Router } from '@angular/router'; -import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../core/common/base/base.component'; import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; @@ -23,11 +26,11 @@ import { TranslateService } from '@ngx-translate/core'; }) export class DmpListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { - @ViewChild(MatPaginator) _paginator: MatPaginator; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(DmpCriteriaComponent) criteria: DmpCriteriaComponent; + @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; + @ViewChild(MatSort, { static: false }) sort: MatSort; + @ViewChild(DmpCriteriaComponent, { static: true }) criteria: DmpCriteriaComponent; - breadCrumbs: Observable = Observable.of([{ parentComponentName: null, label: 'DMPs', url: "/plans" }]); + breadCrumbs: Observable = observableOf([{ parentComponentName: null, label: 'DMPs', url: "/plans" }]); itemId: string; grantId: string; showGrant: boolean; @@ -78,7 +81,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit, IBread // else this.language.get('NAV-BAR.MY-DMPS').pipe(takeUntil(this._destroyed)).subscribe(x => { - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: null, label: x, diff --git a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.ts b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.ts index e1069718b..d0bd76246 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.ts @@ -1,6 +1,6 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { DmpListingModel } from '../../../../core/model/dmp/dmp-listing'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { DmpInvitationDialogComponent } from '../../invitation/dmp-invitation.component'; import { Router, ActivatedRoute } from '@angular/router'; import { GrantListingModel } from '../../../../core/model/grant/grant-listing'; diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts index 9e0f1d821..ff15a9094 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.ts @@ -1,9 +1,10 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import * as FileSaver from 'file-saver'; -import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../core/common/base/base.component'; import { DatasetStatus } from '../../../core/common/enum/dataset-status'; @@ -33,7 +34,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { isFinalized = false; isPublicView = true; hasPublishButton: boolean = true; - breadCrumbs: Observable = Observable.of(); + breadCrumbs: Observable = observableOf(); constructor( private route: ActivatedRoute, @@ -65,7 +66,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { const breadCrumbs = []; breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DMPS'), url: "/plans" }); breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/overview/' + this.dmp.id }); - this.breadCrumbs = Observable.of(breadCrumbs); + this.breadCrumbs = observableOf(breadCrumbs); }) } else if (publicId != null) { @@ -79,7 +80,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { const breadCrumbs = []; breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.PUBLIC-DMPS'), url: "/explore-plans" }); breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/publicOverview/' + this.dmp.id }); - this.breadCrumbs = Observable.of(breadCrumbs); + this.breadCrumbs = observableOf(breadCrumbs); }); } }); diff --git a/dmp-frontend/src/app/ui/dmp/wizard/dmp-wizard.component.ts b/dmp-frontend/src/app/ui/dmp/wizard/dmp-wizard.component.ts index edef9da14..10d9901b8 100644 --- a/dmp-frontend/src/app/ui/dmp/wizard/dmp-wizard.component.ts +++ b/dmp-frontend/src/app/ui/dmp/wizard/dmp-wizard.component.ts @@ -1,10 +1,12 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {map, takeUntil } from 'rxjs/operators'; import { Component, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatSnackBar } from '@angular/material'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { BaseComponent } from '../../../core/common/base/base.component'; import { DmpModel } from '../../../core/model/dmp/dmp'; @@ -46,7 +48,7 @@ export class DmpWizardComponent extends BaseComponent implements OnInit, IBreadC .pipe(takeUntil(this._destroyed)) .subscribe((params: Params) => { this.itemId = params['id']; - this.dmpService.getSingle(this.itemId).map(data => data as DmpModel) + this.dmpService.getSingle(this.itemId).pipe(map(data => data as DmpModel)) .pipe(takeUntil(this._destroyed)) .subscribe(data => { this.dmp = new DmpWizardEditorModel(); @@ -68,7 +70,7 @@ export class DmpWizardComponent extends BaseComponent implements OnInit, IBreadC const breadCrumbs = []; breadCrumbs.push({ parentComponentName: null, label: this.language.instant('NAV-BAR.MY-DMPS'), url: "/plans" }); breadCrumbs.push({ parentComponentName: 'DmpListingComponent', label: this.dmp.label, url: '/plans/clone/' + this.dmp.id }); - this.breadCrumbs = Observable.of(breadCrumbs); + this.breadCrumbs = observableOf(breadCrumbs); }); }); } diff --git a/dmp-frontend/src/app/ui/dmp/wizard/editor/dmp-wizard-editor.component.ts b/dmp-frontend/src/app/ui/dmp/wizard/editor/dmp-wizard-editor.component.ts index 550487887..f62972f4e 100644 --- a/dmp-frontend/src/app/ui/dmp/wizard/editor/dmp-wizard-editor.component.ts +++ b/dmp-frontend/src/app/ui/dmp/wizard/editor/dmp-wizard-editor.component.ts @@ -1,10 +1,11 @@ + +import {map, takeUntil } from 'rxjs/operators'; import { Component, Input, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatSnackBar } from '@angular/material'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRoute, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile'; import { ExternalSourceItemModel } from '../../../../core/model/external-sources/external-source-item'; @@ -72,21 +73,21 @@ export class DmpWizardEditorComponent extends BaseComponent implements OnInit { this.profilesAutoCompleteConfiguration = { filterFn: this.filterProfiles.bind(this), - initialItems: (excludedItems: any[]) => this.filterProfiles('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterProfiles('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'] }; this.organisationsAutoCompleteConfiguration = { filterFn: this.filterOrganisations.bind(this), - initialItems: (excludedItems: any[]) => this.filterOrganisations('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterOrganisations('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] }; this.researchersAutoCompleteConfiguration = { filterFn: this.filterResearchers.bind(this), - initialItems: (excludedItems: any[]) => this.filterResearchers('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterResearchers('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] }; diff --git a/dmp-frontend/src/app/ui/dmp/wizard/listing/dmp-wizard-dataset-listing.component.ts b/dmp-frontend/src/app/ui/dmp/wizard/listing/dmp-wizard-dataset-listing.component.ts index 196132600..5d1d7c131 100644 --- a/dmp-frontend/src/app/ui/dmp/wizard/listing/dmp-wizard-dataset-listing.component.ts +++ b/dmp-frontend/src/app/ui/dmp/wizard/listing/dmp-wizard-dataset-listing.component.ts @@ -1,7 +1,9 @@ import { SelectionModel } from '@angular/cdk/collections'; import { Component, Input, OnInit, ViewChild } from '@angular/core'; import { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms'; -import { MatPaginator, MatSnackBar, MatSort } from '@angular/material'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSnackBar } from '@angular/material/snack-bar'; +import { MatSort } from '@angular/material/sort'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import { takeUntil } from 'rxjs/operators'; @@ -20,9 +22,9 @@ import { DatasetCriteriaComponent } from '../../../dataset/listing/criteria/data }) export class DmpWizardDatasetListingComponent extends BaseComponent implements OnInit { - @ViewChild(MatPaginator) _paginator: MatPaginator; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(DatasetCriteriaComponent) criteria: DatasetCriteriaComponent; + @ViewChild(MatPaginator, { static: false }) _paginator: MatPaginator; + @ViewChild(MatSort, { static: false }) sort: MatSort; + @ViewChild(DatasetCriteriaComponent, { static: false }) criteria: DatasetCriteriaComponent; titlePrefix: String; diff --git a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.ts b/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.ts index 07cf35a9f..8dd78e956 100644 --- a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.ts +++ b/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.ts @@ -1,5 +1,8 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, OnInit, ViewChild, ɵConsole } from '@angular/core'; -import { MatPaginator, MatSort } from '@angular/material'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; import { Router, ActivatedRoute, Params } from '@angular/router'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../core/common/base/base.component'; @@ -9,7 +12,6 @@ import { ExploreDatasetCriteriaModel } from '../../core/query/explore-dataset/ex import { DatasetService } from '../../core/services/dataset/dataset.service'; import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent'; import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item'; -import { Observable } from 'rxjs'; import { TranslateService } from '@ngx-translate/core'; import { DmpService } from '../../core/services/dmp/dmp.service'; import { DatasetCriteriaComponent } from '../dataset/listing/criteria/dataset-criteria.component'; @@ -24,8 +26,8 @@ import { DatasetCriteria } from '../../core/query/dataset/dataset-criteria'; }) export class ExploreDatasetListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { - @ViewChild(MatPaginator) _paginator: MatPaginator; - @ViewChild(MatSort) sort: MatSort; + @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; + @ViewChild(MatSort, { static: false }) sort: MatSort; totalCount: number; listingItems: DatasetListingModel[] = []; @@ -78,7 +80,7 @@ export class ExploreDatasetListingComponent extends BaseComponent implements OnI label: this.language.instant('NAV-BAR.PUBLIC DATASETS'), url: "/explore" }) - this.breadCrumbs = Observable.of(breadCrumbs); + this.breadCrumbs = observableOf(breadCrumbs); } refresh(resetPages = false) { diff --git a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.ts b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.ts index d50a69234..718f7baea 100644 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.ts +++ b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.ts @@ -1,9 +1,11 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {distinctUntilChanged, debounceTime, takeUntil } from 'rxjs/operators'; import { SelectionModel } from '@angular/cdk/collections'; import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; import { FormControl } from '@angular/forms'; -import { MatListOption, MatSelectionList } from '@angular/material'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { MatListOption, MatSelectionList } from '@angular/material/list'; import { BaseComponent } from '../../../../core/common/base/base.component'; @Component({ @@ -26,7 +28,7 @@ export class ExploreDatasetFilterItemComponent extends BaseComponent implements filterOptions: (value) => Observable; @Input() - options: Observable = Observable.of([]); + options: Observable = observableOf([]); @Input() displayTitleFunc: (value) => string; @@ -44,14 +46,14 @@ export class ExploreDatasetFilterItemComponent extends BaseComponent implements private selectedOptions: any[] = []; - @ViewChild('optionsList') selectionList: MatSelectionList; + @ViewChild('optionsList', { static: true }) selectionList: MatSelectionList; constructor() { super(); } ngOnInit(): void { if (!this.multipleSelect) { this.selectionList.selectedOptions = new SelectionModel(this.multipleSelect); } - this.optionSearchControl.valueChanges.debounceTime(this.requestDelay) - .distinctUntilChanged() + this.optionSearchControl.valueChanges.pipe(debounceTime(this.requestDelay), + distinctUntilChanged(),) .pipe(takeUntil(this._destroyed)) .subscribe(x => { if (this.filterOptions) { this.options = this.filterOptions(x); } }); } diff --git a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts index 0b167651b..3b4115f32 100644 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts +++ b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts @@ -1,8 +1,11 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {map, takeUntil } from 'rxjs/operators'; import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; -import { MatAccordion } from '@angular/material'; +import { MatAccordion } from '@angular/material/expansion'; import { ActivatedRoute, Params } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; import { BaseComponent } from '../../../core/common/base/base.component'; import { GrantStateType } from '../../../core/common/enum/grant-state-type'; import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile'; @@ -28,7 +31,6 @@ import { ExploreDmpCriteriaModel } from '../../../core/query/explore-dmp/explore import { DmpModel } from '../../../core/model/dmp/dmp'; import { BaseCriteriaComponent } from '../../misc/criteria/base-criteria.component'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; -import { takeUntil } from 'rxjs/operators'; @Component({ selector: 'app-explore-dataset-filters-component', @@ -49,7 +51,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI grantOptions: Observable; grantStateOptions: Observable; filteringOrganisationsAsync = false; - @ViewChild('facetAccordion') accordion: MatAccordion; + @ViewChild('facetAccordion', { static: false }) accordion: MatAccordion; displayGrantStateValue = (option) => option['value']; displayGrantStateLabel = (option) => option['label']; @@ -65,14 +67,14 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI tagsAutoCompleteConfiguration = { filterFn: this.filterTags.bind(this), - initialItems: (excludedItems: any[]) => this.filterTags('').map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + initialItems: (excludedItems: any[]) => this.filterTags('').pipe(map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] }; dmpAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: (x, excluded) => this.filterDmps(x).map(x => x.data), - initialItems: (extraData) => this.filterDmps('').map(x => x.data), + filterFn: (x, excluded) => this.filterDmps(x).pipe(map(x => x.data)), + initialItems: (extraData) => this.filterDmps('').pipe(map(x => x.data)), displayFn: (item) => item['label'], titleFn: (item) => item['label'] }; @@ -80,8 +82,8 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterGrant.bind(this), initialItems: (excludedItems: any[]) => - this.filterGrant('') - .map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + this.filterGrant('').pipe( + map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'] } @@ -89,8 +91,8 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterProfile.bind(this), initialItems: (excludedItems: any[]) => - this.getProfiles() - .map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + this.getProfiles().pipe( + map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'] }; @@ -98,8 +100,8 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI organizationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterOrganisation.bind(this), initialItems: (excludedItems: any[]) => - this.getOrganisations() - .map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + this.getOrganisations().pipe( + map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] } @@ -117,7 +119,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI ngOnInit() { setTimeout(x => { - this.grantStateOptions = Observable.of( + this.grantStateOptions = observableOf( [ { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.INACTIVE'), value: GrantStateType.Finished }, { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE'), value: GrantStateType.OnGoing }, @@ -135,7 +137,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI this.facetCriteria.grantStatus = event.value; if (event.value === 'null') { this.facetCriteria.grantStatus = null; - this.grants = Observable.of([]); + this.grants = observableOf([]); this.facetCriteria.grants = []; } // if (event.option.selected) { @@ -151,7 +153,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI dataTableRequest.criteria.grantStateType = this.facetCriteria.grantStatus; dataTableRequest.criteria['length'] = 10; - this.grants = this.grantService.getPublicPaged(dataTableRequest).map(x => x.data); + this.grants = this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data)); this.facetCriteria.grants = []; } this.facetCriteriaChange.emit(this.facetCriteria); @@ -199,7 +201,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria.labelLike = ''; - return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); + return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); } public dmpOrganisationChanged(event: any) { @@ -226,7 +228,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI dataTableRequest.criteria = grantCriteria; //const dataTableRequest: RequestItem = { criteria: grantCriteria }; //return this.grantService.getPaged(dataTableRequest, "autocomplete").map(x => x.data); - return this.grantService.getPublicPaged(dataTableRequest).map(x => x.data); + return this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data)); } public dmpOrganisationSearch(value: string): Observable { @@ -331,7 +333,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI const grantRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); grantRequestItem.criteria = new GrantCriteria(); grantRequestItem.criteria.like = query; - return this.grantService.getPublicPaged(grantRequestItem).map(x => x.data); + return this.grantService.getPublicPaged(grantRequestItem).pipe(map(x => x.data)); } filterProfile(query: string) { @@ -341,7 +343,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI profileRequestItem.criteria = new ExploreDatasetCriteriaModel(); profileRequestItem.criteria.like = query; - return this.dmpService.getPublicPaged(profileRequestItem, "listing").map(x => x.data); + return this.dmpService.getPublicPaged(profileRequestItem, "listing").pipe(map(x => x.data)); } filterOrganisation(value: string) { @@ -352,6 +354,6 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria.labelLike = value; - return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); + return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); } } diff --git a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.ts b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.ts index 505b5bd24..5be70ac9f 100644 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.ts +++ b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.ts @@ -1,9 +1,11 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {distinctUntilChanged, debounceTime, takeUntil } from 'rxjs/operators'; import { SelectionModel } from '@angular/cdk/collections'; import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; import { FormControl } from '@angular/forms'; -import { MatListOption, MatSelectionList } from '@angular/material'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { MatListOption, MatSelectionList } from '@angular/material/list'; import { BaseComponent } from '../../../../core/common/base/base.component'; @Component({ @@ -21,7 +23,7 @@ export class ExploreDmpFilterItemComponent extends BaseComponent implements OnIn @Input() filterOptions: (value) => Observable; @Input() - options: Observable = Observable.of([]); + options: Observable = observableOf([]); @Input() displayTitleFunc: (value) => string; @Input() @@ -35,14 +37,14 @@ export class ExploreDmpFilterItemComponent extends BaseComponent implements OnIn optionSearchControl = new FormControl(''); private selectedOptions: any[] = []; - @ViewChild('optionsList') selectionList: MatSelectionList; + @ViewChild('optionsList', { static: true }) selectionList: MatSelectionList; constructor() { super(); } ngOnInit(): void { if (!this.multipleSelect) { this.selectionList.selectedOptions = new SelectionModel(this.multipleSelect); } - this.optionSearchControl.valueChanges.debounceTime(this.requestDelay) - .distinctUntilChanged() + this.optionSearchControl.valueChanges.pipe(debounceTime(this.requestDelay), + distinctUntilChanged(),) .pipe(takeUntil(this._destroyed)) .subscribe(x => { if (this.filterOptions) { this.options = this.filterOptions(x); } }); } diff --git a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts index 657872315..fa7b3abfa 100644 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts +++ b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts @@ -1,10 +1,14 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {map, takeUntil } from 'rxjs/operators'; import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core"; import { FormBuilder, FormControl, FormGroup } from "@angular/forms"; -import { MatAccordion, fadeInItems, MatGridTileHeaderCssMatStyler } from "@angular/material"; +import { MatAccordion } from "@angular/material/expansion"; +import { MatGridTileHeaderCssMatStyler } from "@angular/material/grid-list"; +import { fadeInItems } from "@angular/material/menu"; import { ActivatedRoute } from "@angular/router"; import { TranslateService } from "@ngx-translate/core"; -import { Observable } from "rxjs"; -import { takeUntil } from "rxjs/operators"; import { ValidationErrorModel } from "../../../common/forms/validation/error-model/validation-error-model"; import { GrantStateType } from '../../../core/common/enum/grant-state-type'; import { DataTableRequest } from "../../../core/model/data-table/data-table-request"; @@ -50,7 +54,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements Active: string; Inactive: string; - @ViewChild('facetAccordion') accordion: MatAccordion; + @ViewChild('facetAccordion', { static: false }) accordion: MatAccordion; displayGrantStateValue = (option) => option['value']; displayGrantStateLabel = (option) => option['label']; @@ -67,8 +71,8 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterProfile.bind(this), initialItems: (excludedItems: any[]) => - this.getProfiles() - .map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + this.getProfiles().pipe( + map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'] }; @@ -76,8 +80,8 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements organizationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterOrganisation.bind(this), initialItems: (excludedItems: any[]) => - this.getOrganisations() - .map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + this.getOrganisations().pipe( + map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['name'], titleFn: (item) => item['name'] } @@ -85,8 +89,8 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterGrant.bind(this), initialItems: (excludedItems: any[]) => - this.filterGrant('') - .map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1)), + this.filterGrant('').pipe( + map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'] } @@ -111,7 +115,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements ngOnInit() { setTimeout(x => { - this.grantStateOptions = Observable.of( + this.grantStateOptions = observableOf( [ { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.INACTIVE'), value: GrantStateType.Finished }, { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE'), value: GrantStateType.OnGoing }, @@ -120,7 +124,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements this.profiles = this.datasetProfileService.getDatasetProfiles(); const fields: Array = new Array(); fields.push('asc'); - this.dmpOrganisations = this.organisationService.searchPublicOrganisations(new DataTableRequest(0, null, { fields: fields })).map(x => x.data); + this.dmpOrganisations = this.organisationService.searchPublicOrganisations(new DataTableRequest(0, null, { fields: fields })).pipe(map(x => x.data)); } ngAfterViewInit(): void { @@ -150,7 +154,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); dataTableRequest.criteria = grantCriteria; - return this.grantService.getPublicPaged(dataTableRequest).map(x => x.data); + return this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data)); } grantStatusChanged(event) { @@ -160,7 +164,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements // if (!event.source.checked) { if (event.value === 'null') { this.facetCriteria.grantStatus = null; - this.grants = Observable.of([]); + this.grants = observableOf([]); this.facetCriteria.grants = []; } // if (event.checked) { @@ -174,7 +178,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements dataTableRequest.criteria.grantStateType = this.facetCriteria.grantStatus; dataTableRequest.criteria['length'] = 10; - this.grants = this.grantService.getPublicPaged(dataTableRequest).map(x => x.data); + this.grants = this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data)); this.facetCriteria.grants = []; } this.facetCriteriaChange.emit(this.facetCriteria); @@ -274,7 +278,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria.labelLike = value; - return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); + return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); } removeOrganisation(organisation) { @@ -292,7 +296,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria.labelLike = ''; - return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); + return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); } filterGrant(query: string) { @@ -301,7 +305,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements const grantRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); grantRequestItem.criteria = new GrantCriteria(); grantRequestItem.criteria.like = query; - return this.grantService.getPublicPaged(grantRequestItem).map(x => x.data); + return this.grantService.getPublicPaged(grantRequestItem).pipe(map(x => x.data)); } filterProfile(query: string) { @@ -311,7 +315,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements profileRequestItem.criteria = new ExploreDatasetCriteriaModel(); profileRequestItem.criteria.like = query; - return this.dmpService.getPublicPaged(profileRequestItem, "listing").map(x => x.data); + return this.dmpService.getPublicPaged(profileRequestItem, "listing").pipe(map(x => x.data)); } filterOrganisation(value: string) { @@ -322,7 +326,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements dataTableRequest.criteria = new OrganisationCriteria(); dataTableRequest.criteria.labelLike = value; - return this.organisationService.searchPublicOrganisations(dataTableRequest).map(x => x.data); + return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); } displayLabel(value) { diff --git a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts b/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts index 1e32b2e17..6a3068e67 100644 --- a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts +++ b/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts @@ -1,5 +1,8 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, OnInit, ViewChild } from "@angular/core"; -import { MatPaginator, MatSort } from "@angular/material"; +import { MatPaginator } from "@angular/material/paginator"; +import { MatSort } from "@angular/material/sort"; import { Router, ActivatedRoute } from "@angular/router"; import { takeUntil } from "rxjs/operators"; import { BaseComponent } from "../../core/common/base/base.component"; @@ -7,7 +10,6 @@ import { DataTableRequest } from "../../core/model/data-table/data-table-request import { DmpListingModel } from "../../core/model/dmp/dmp-listing"; import { ExploreDmpCriteriaModel } from "../../core/query/explore-dmp/explore-dmp-criteria"; import { DmpService } from "../../core/services/dmp/dmp.service"; -import { Observable } from "rxjs"; import { IBreadCrumbComponent } from "../misc/breadcrumb/definition/IBreadCrumbComponent"; import { BreadcrumbItem } from "../misc/breadcrumb/definition/breadcrumb-item"; import { TranslateService } from "@ngx-translate/core"; @@ -19,8 +21,8 @@ import { TranslateService } from "@ngx-translate/core"; }) export class ExploreDmpListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { - @ViewChild(MatPaginator) _paginator: MatPaginator; - @ViewChild(MatSort) sort: MatSort; + @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; + @ViewChild(MatSort, { static: false }) sort: MatSort; exploreDmpCriteriaModel: ExploreDmpCriteriaModel; titlePrefix: string; @@ -46,7 +48,7 @@ export class ExploreDmpListingComponent extends BaseComponent implements OnInit, label: this.language.instant('NAV-BAR.PUBLIC-DMPS'), url: "/explore-plans" }) - this.breadCrumbs = Observable.of(breadCrumbs); + this.breadCrumbs = observableOf(breadCrumbs); } refresh() { diff --git a/dmp-frontend/src/app/ui/grant/editor/grant-editor.component.ts b/dmp-frontend/src/app/ui/grant/editor/grant-editor.component.ts index a893eb3d7..04358f8b7 100644 --- a/dmp-frontend/src/app/ui/grant/editor/grant-editor.component.ts +++ b/dmp-frontend/src/app/ui/grant/editor/grant-editor.component.ts @@ -1,10 +1,13 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {map, takeUntil } from 'rxjs/operators'; import { Component, OnInit } from '@angular/core'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; -import { MatDialog, MatSnackBar } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { environment } from '../../../../environments/environment'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { BaseComponent } from '../../../core/common/base/base.component'; @@ -26,7 +29,7 @@ import { SnackBarNotificationLevel, UiNotificationService } from '../../../core/ }) export class GrantEditorComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { - breadCrumbs: Observable = Observable.of([]); + breadCrumbs: Observable = observableOf([]); isNew = true; grant: GrantEditorModel; formGroup: FormGroup = null; @@ -55,7 +58,7 @@ export class GrantEditorComponent extends BaseComponent implements OnInit, IBrea if (itemId != null) { this.isNew = false; - this.grantService.getSingle(itemId).map(data => data as GrantListingModel) + this.grantService.getSingle(itemId).pipe(map(data => data as GrantListingModel)) .pipe(takeUntil(this._destroyed)) .subscribe(data => { this.grant = new GrantEditorModel().fromModel(data); @@ -71,11 +74,11 @@ export class GrantEditorComponent extends BaseComponent implements OnInit, IBrea label: this.grant.label, url: '/grants/edit/' + this.grant.id }); - this.breadCrumbs = Observable.of(breadCrumbs); + this.breadCrumbs = observableOf(breadCrumbs); }); } else { this.language.get('QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.CREATE-NEW-GRANT').pipe(takeUntil(this._destroyed)).subscribe(x => { - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: null, label: this.language.instant('NAV-BAR.GRANTS').toUpperCase(), diff --git a/dmp-frontend/src/app/ui/grant/listing/criteria/grant-criteria.component.ts b/dmp-frontend/src/app/ui/grant/listing/criteria/grant-criteria.component.ts index 2e6906705..7f960926a 100644 --- a/dmp-frontend/src/app/ui/grant/listing/criteria/grant-criteria.component.ts +++ b/dmp-frontend/src/app/ui/grant/listing/criteria/grant-criteria.component.ts @@ -5,7 +5,7 @@ import { ValidationErrorModel } from '../../../../common/forms/validation/error- import { GrantStateType } from '../../../../core/common/enum/grant-state-type'; import { GrantCriteria } from '../../../../core/query/grant/grant-criteria'; import { BaseCriteriaComponent } from '../../../misc/criteria/base-criteria.component'; -import { ErrorStateMatcher } from '@angular/material'; +import { ErrorStateMatcher } from '@angular/material/core'; @Component({ selector: 'app-grant-criteria-component', diff --git a/dmp-frontend/src/app/ui/grant/listing/grant-listing.component.ts b/dmp-frontend/src/app/ui/grant/listing/grant-listing.component.ts index 966bbb642..75716efba 100644 --- a/dmp-frontend/src/app/ui/grant/listing/grant-listing.component.ts +++ b/dmp-frontend/src/app/ui/grant/listing/grant-listing.component.ts @@ -1,7 +1,9 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, OnInit, ViewChild } from '@angular/core'; -import { MatPaginator, MatSort } from '@angular/material'; +import { MatPaginator } from '@angular/material/paginator'; +import { MatSort } from '@angular/material/sort'; import { Router, ActivatedRoute, Params } from '@angular/router'; -import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../core/common/base/base.component'; import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; @@ -20,9 +22,9 @@ import { TranslateService } from '@ngx-translate/core'; }) export class GrantListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { - @ViewChild(MatPaginator) _paginator: MatPaginator; - @ViewChild(MatSort) sort: MatSort; - @ViewChild(GrantCriteriaComponent) criteria: GrantCriteriaComponent; + @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; + @ViewChild(MatSort, { static: false }) sort: MatSort; + @ViewChild(GrantCriteriaComponent, { static: true }) criteria: GrantCriteriaComponent; breadCrumbs: Observable; totalCount: number; @@ -43,7 +45,7 @@ export class GrantListingComponent extends BaseComponent implements OnInit, IBre this.refresh(); this.criteria.setRefreshCallback((resetPages) => this.refresh(resetPages)); - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: null, label: this.language.instant('NAV-BAR.GRANTS').toUpperCase(), url: '/grants' diff --git a/dmp-frontend/src/app/ui/misc/breadcrumb/breadcrumb.component.ts b/dmp-frontend/src/app/ui/misc/breadcrumb/breadcrumb.component.ts index c0cff89a4..b84757738 100644 --- a/dmp-frontend/src/app/ui/misc/breadcrumb/breadcrumb.component.ts +++ b/dmp-frontend/src/app/ui/misc/breadcrumb/breadcrumb.component.ts @@ -1,6 +1,9 @@ + +import {of as observableOf, Observable } from 'rxjs'; + +import {filter, mergeMap, distinctUntilChanged, map} from 'rxjs/operators'; import { Component, OnInit } from '@angular/core'; import { ActivatedRoute, NavigationEnd, Router } from '@angular/router'; -import { Observable } from 'rxjs'; import { BreadcrumbItem } from './definition/breadcrumb-item'; import { BreadCrumbResolverService } from './service/breadcrumb.service'; import { TranslateService } from '@ngx-translate/core'; @@ -11,10 +14,10 @@ import { TranslateService } from '@ngx-translate/core'; styleUrls: ['./breadcrumb.component.scss'] }) export class BreadcrumbComponent implements OnInit { - breadcrumbs$ = this.router.events - .filter(event => event instanceof NavigationEnd) - .distinctUntilChanged() - .flatMap(event => this.buildBreadCrumb(this.activatedRoute.root)); + breadcrumbs$ = this.router.events.pipe( + filter(event => event instanceof NavigationEnd), + distinctUntilChanged(), + mergeMap(event => this.buildBreadCrumb(this.activatedRoute.root)),); constructor( @@ -30,15 +33,15 @@ export class BreadcrumbComponent implements OnInit { buildBreadCrumb(route: ActivatedRoute): Observable { if (this.breadCrumbService.resolve(route)) { - return this.breadCrumbService.resolve(route).map(x => { + return this.breadCrumbService.resolve(route).pipe(map(x => { x.unshift({ label: this.language.instant('NAV-BAR.HOME'), url: '/home', icon: 'dashboard' }); return x; - }); + })); } - return Observable.of([]); + return observableOf([]); } navigate(url, params) { diff --git a/dmp-frontend/src/app/ui/misc/breadcrumb/service/breadcrumb.service.ts b/dmp-frontend/src/app/ui/misc/breadcrumb/service/breadcrumb.service.ts index ed6071b93..184a50a6a 100644 --- a/dmp-frontend/src/app/ui/misc/breadcrumb/service/breadcrumb.service.ts +++ b/dmp-frontend/src/app/ui/misc/breadcrumb/service/breadcrumb.service.ts @@ -1,6 +1,7 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Injectable, NgZone } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; -import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { BaseService } from '../../../../core/common/base/base.service'; import { BreadcrumbItem } from '../definition/breadcrumb-item'; @@ -11,7 +12,7 @@ export class BreadCrumbResolverService extends BaseService { private activeComponents = []; private parentComponents = []; - private breadCrumbs: Observable = Observable.of([]); + private breadCrumbs: Observable = observableOf([]); constructor( private router: Router, private zone: NgZone @@ -25,7 +26,7 @@ export class BreadCrumbResolverService extends BaseService { public clear() { this.activeComponents.length = 0; - this.breadCrumbs = Observable.of([]); + this.breadCrumbs = observableOf([]); } public resolve(activatedRoute: ActivatedRoute): Observable { @@ -34,7 +35,7 @@ export class BreadCrumbResolverService extends BaseService { this.activeComponents.filter(x => routeComponents.indexOf(x.constructor.name) !== -1).forEach(x => { if (x.hasOwnProperty('breadCrumbs')) { const componentItems = this.resolveDependentComponents((x).breadCrumbs, []); - this.breadCrumbs = Observable.of(componentItems); + this.breadCrumbs = observableOf(componentItems); } }); return this.breadCrumbs; diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts index 160955cb6..95c618d6a 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts @@ -1,6 +1,7 @@ + +import {map, takeUntil } from 'rxjs/operators'; import { Component, Input, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../../core/common/base/base.component'; import { DatasetProfileComboBoxType } from '../../../../../core/common/enum/dataset-profile-combo-box-type'; import { DatasetProfileFieldViewStyle } from '../../../../../core/common/enum/dataset-profile-field-view-style'; @@ -137,7 +138,7 @@ export class FormFieldComponent extends BaseComponent implements OnInit { const datasetsAutocompleteRequestItem: DataTableRequest = new DataTableRequest(0, 25, { fields: fields }); datasetsAutocompleteRequestItem.criteria = new DatasetCriteria(); datasetsAutocompleteRequestItem.criteria.like = query; - return this.datasetService.getPaged(datasetsAutocompleteRequestItem).map(item => item.data); + return this.datasetService.getPaged(datasetsAutocompleteRequestItem).pipe(map(item => item.data)); } searchDmps(query: string) { @@ -145,7 +146,7 @@ export class FormFieldComponent extends BaseComponent implements OnInit { const dmpsAutocompleteRequestItem: DataTableRequest = new DataTableRequest(0, 25, { fields: fields }); dmpsAutocompleteRequestItem.criteria = new DmpCriteria(); dmpsAutocompleteRequestItem.criteria.like = query; - return this.dmpService.getPaged(dmpsAutocompleteRequestItem).map(item => item.data); + return this.dmpService.getPaged(dmpsAutocompleteRequestItem).pipe(map(item => item.data)); } makeAutocompleteConfiguration(myfunc: Function, title: string, subtitle?: string): void { diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts index 0b873b888..771943929 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts @@ -1,8 +1,8 @@ -import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core'; +import { AfterViewInit, Component, Input, OnInit, ViewChild } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatStepper } from '@angular/material'; +import { MatStepper } from '@angular/material/stepper'; import { ActivatedRoute, Router } from '@angular/router'; -import 'rxjs/add/operator/switchMap'; + import { takeUntil } from 'rxjs/operators'; import { Pair } from '../../../common/types/pair'; import { BaseComponent } from '../../../core/common/base/base.component'; diff --git a/dmp-frontend/src/app/ui/misc/help-content/help-content.component.ts b/dmp-frontend/src/app/ui/misc/help-content/help-content.component.ts index bb566812a..fa4aa9f41 100644 --- a/dmp-frontend/src/app/ui/misc/help-content/help-content.component.ts +++ b/dmp-frontend/src/app/ui/misc/help-content/help-content.component.ts @@ -32,11 +32,11 @@ export class HelpContentComponent extends BaseComponent implements OnInit { .pipe(takeUntil(this._destroyed)) .subscribe(event => { if (event instanceof NavigationStart) { - this._helpContentService.getActivePageContent(event['url']) - .pipe(takeUntil(this._destroyed)) - .subscribe( - pageContent => this.shiftThroughContent(pageContent), - error => this.handleError(error)); + // this._helpContentService.getActivePageContent(event['url']) + // .pipe(takeUntil(this._destroyed)) + // .subscribe( + // pageContent => this.shiftThroughContent(pageContent), + // error => this.handleError(error)); } }); } diff --git a/dmp-frontend/src/app/ui/misc/navigation/navigation.component.ts b/dmp-frontend/src/app/ui/misc/navigation/navigation.component.ts index 50799203a..f3a288b66 100644 --- a/dmp-frontend/src/app/ui/misc/navigation/navigation.component.ts +++ b/dmp-frontend/src/app/ui/misc/navigation/navigation.component.ts @@ -1,9 +1,10 @@ + +import {mergeMap, distinctUntilChanged, debounceTime, takeUntil } from 'rxjs/operators'; import { Component, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { Router } from '@angular/router'; import { Observable } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../core/common/base/base.component'; import { AppRole } from '../../../core/common/enum/app-role'; import { SearchBarItem } from '../../../core/model/dashboard/search-bar-item'; @@ -59,9 +60,9 @@ export class NavigationComponent extends BaseComponent implements OnInit { titleFn: (item) => item['label'] }; - this.filteredOptions = this.searchControl.valueChanges.debounceTime(500).distinctUntilChanged().flatMap(x => { + this.filteredOptions = this.searchControl.valueChanges.pipe(debounceTime(500),distinctUntilChanged(),mergeMap(x => { return this.searchBarService.search(x); - }); + }),); } searchGrant(query: string) { diff --git a/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.ts b/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.ts index cef11698d..1486663fa 100644 --- a/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.ts +++ b/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.ts @@ -1,6 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { Router } from '@angular/router'; import { Principal } from '../../../../core/model/auth/Principal'; import { AuthService } from '../../../../core/services/auth/auth.service'; diff --git a/dmp-frontend/src/app/ui/misc/search/search.component.ts b/dmp-frontend/src/app/ui/misc/search/search.component.ts index 137eaf4d0..f12184af2 100644 --- a/dmp-frontend/src/app/ui/misc/search/search.component.ts +++ b/dmp-frontend/src/app/ui/misc/search/search.component.ts @@ -1,3 +1,5 @@ + +import {mergeMap, distinctUntilChanged, debounceTime} from 'rxjs/operators'; import { Component, OnInit } from "@angular/core"; import { AuthService } from '../../../core/services/auth/auth.service'; import { FormControl } from "@angular/forms"; @@ -25,9 +27,9 @@ export class SearchComponent implements OnInit { constructor(private authentication: AuthService, private router: Router, private searchBarService: SearchBarService) {} ngOnInit() { - this.filteredOptions = this.searchControl.valueChanges.debounceTime(500).distinctUntilChanged().flatMap(x => { + this.filteredOptions = this.searchControl.valueChanges.pipe(debounceTime(500),distinctUntilChanged(),mergeMap(x => { return this.searchBarService.search(x); - }); + }),); } public isAuthenticated(): boolean { diff --git a/dmp-frontend/src/app/ui/navbar/navbar.component.ts b/dmp-frontend/src/app/ui/navbar/navbar.component.ts index 7a746226c..4bb6d9652 100644 --- a/dmp-frontend/src/app/ui/navbar/navbar.component.ts +++ b/dmp-frontend/src/app/ui/navbar/navbar.component.ts @@ -4,7 +4,7 @@ import { GENERAL_ROUTES, DMP_ROUTES, DATASETS_ROUTES } from '../sidebar/sidebar. import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common'; import { Router } from '@angular/router'; import { AuthService } from '../../core/services/auth/auth.service'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { UserDialogComponent } from '../misc/navigation/user-dialog/user-dialog.component'; import { AppRole } from '../../core/common/enum/app-role'; import { ProgressIndicationService } from '../../core/services/progress-indication/progress-indication-service'; diff --git a/dmp-frontend/src/app/ui/quick-wizard/dmp-editor/dmp-editor-wizard.component.ts b/dmp-frontend/src/app/ui/quick-wizard/dmp-editor/dmp-editor-wizard.component.ts index 244c44097..7f4fbea97 100644 --- a/dmp-frontend/src/app/ui/quick-wizard/dmp-editor/dmp-editor-wizard.component.ts +++ b/dmp-frontend/src/app/ui/quick-wizard/dmp-editor/dmp-editor-wizard.component.ts @@ -1,9 +1,10 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, Input, OnInit } from '@angular/core'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; -import { MatSnackBar } from '@angular/material'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRoute, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { BaseComponent } from "../../../core/common/base/base.component"; import { DatasetProfileModel } from '../../../core/model/dataset/dataset-profile'; @@ -24,7 +25,7 @@ import { DmpEditorWizardModel } from './dmp-editor-wizard-model'; }) export class DmpEditorWizardComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { - breadCrumbs: Observable = Observable.of([]); + breadCrumbs: Observable = observableOf([]); isNew = true; dmp: DmpEditorWizardModel; @@ -65,7 +66,7 @@ export class DmpEditorWizardComponent extends BaseComponent implements OnInit, I this.formGroup.get('label').setValue(this.language.instant('QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.SECOND-STEP.DMP-NAME') + this.dmpLabel); this.formGroup.get('label').setValue(this.language.instant('QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.SECOND-STEP.DMP-NAME') + this.dmpLabel); - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: 'grant', label: this.language.instant('NAV-BAR.DMP'), url: '/quick-wizard/dmp' diff --git a/dmp-frontend/src/app/ui/quick-wizard/grant-editor/grant-editor-wizard.component.ts b/dmp-frontend/src/app/ui/quick-wizard/grant-editor/grant-editor-wizard.component.ts index 338a5b98e..cdfa6e73b 100644 --- a/dmp-frontend/src/app/ui/quick-wizard/grant-editor/grant-editor-wizard.component.ts +++ b/dmp-frontend/src/app/ui/quick-wizard/grant-editor/grant-editor-wizard.component.ts @@ -1,9 +1,10 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, Input, OnInit } from '@angular/core'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; -import { MatSnackBar } from '@angular/material'; +import { MatSnackBar } from '@angular/material/snack-bar'; import { ActivatedRoute, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { BaseComponent } from "../../../core/common/base/base.component"; import { GrantCriteria } from '../../../core/query/grant/grant-criteria'; @@ -21,7 +22,7 @@ import { GrantEditorWizardModel } from './grant-editor-wizard-model'; styleUrls: ['./grant-editor-wizard.component.scss'] }) export class GrantEditorWizardComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { - breadCrumbs: Observable = Observable.of([]); + breadCrumbs: Observable = observableOf([]); isNew = false; grant: GrantEditorWizardModel; @@ -42,7 +43,7 @@ export class GrantEditorWizardComponent extends BaseComponent implements OnInit, } ngOnInit() { - this.breadCrumbs = Observable.of([{ + this.breadCrumbs = observableOf([{ parentComponentName: 'QuickCreate', label: this.language.instant('NAV-BAR.GRANT'), url: '/quick-wizard/grant' diff --git a/dmp-frontend/src/app/ui/quick-wizard/quick-wizard-editor/quick-wizard-editor.component.ts b/dmp-frontend/src/app/ui/quick-wizard/quick-wizard-editor/quick-wizard-editor.component.ts index fcaddc47f..2edef3209 100644 --- a/dmp-frontend/src/app/ui/quick-wizard/quick-wizard-editor/quick-wizard-editor.component.ts +++ b/dmp-frontend/src/app/ui/quick-wizard/quick-wizard-editor/quick-wizard-editor.component.ts @@ -1,9 +1,12 @@ + +import {of as observableOf, Observable } from 'rxjs'; import { Component, OnInit, ViewChild } from '@angular/core'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; -import { MatDialog, MatSnackBar, MatStepper } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; +import { MatSnackBar } from '@angular/material/snack-bar'; +import { MatStepper } from '@angular/material/stepper'; import { ActivatedRoute, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { Observable } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; import { BaseComponent } from "../../../core/common/base/base.component"; @@ -29,9 +32,9 @@ import { ProjectFormModel } from '../../dmp/editor/grant-tab/project-form-model' }) export class QuickWizardEditorComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { - breadCrumbs: Observable = Observable.of([]); - @ViewChild('stepper') stepper: MatStepper; - @ViewChild(DatasetEditorWizardComponent) datasetEditorWizardComponent: DatasetEditorWizardComponent; + breadCrumbs: Observable = observableOf([]); + @ViewChild('stepper', { static: true }) stepper: MatStepper; + @ViewChild(DatasetEditorWizardComponent, { static: false }) datasetEditorWizardComponent: DatasetEditorWizardComponent; isNew = true; quickWizard: QuickWizardEditorWizardModel; allDatasets: DmpFinalizeDialogDataset[] = []; @@ -57,7 +60,7 @@ export class QuickWizardEditorComponent extends BaseComponent implements OnInit, this.quickWizard.project = new ProjectFormModel(); this.formGroup = this.quickWizard.buildForm(); this.language.get('NAV-BAR.DMP-WIZARD').pipe(takeUntil(this._destroyed)).subscribe(x => { - this.breadCrumbs = Observable.of([ + this.breadCrumbs = observableOf([ { parentComponentName: 'Dashboard', label: x, diff --git a/dmp-frontend/src/app/ui/sidebar/sidebar-footer/faq/faq-dialog.component.ts b/dmp-frontend/src/app/ui/sidebar/sidebar-footer/faq/faq-dialog.component.ts index 8b680044f..4a0795f26 100644 --- a/dmp-frontend/src/app/ui/sidebar/sidebar-footer/faq/faq-dialog.component.ts +++ b/dmp-frontend/src/app/ui/sidebar/sidebar-footer/faq/faq-dialog.component.ts @@ -1,6 +1,6 @@ import { Component, Inject } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; @Component({ selector: 'app-faq-dialog', diff --git a/dmp-frontend/src/app/ui/sidebar/sidebar-footer/glossary/glossary-dialog.component.ts b/dmp-frontend/src/app/ui/sidebar/sidebar-footer/glossary/glossary-dialog.component.ts index b2d7c36e1..cdd4c3967 100644 --- a/dmp-frontend/src/app/ui/sidebar/sidebar-footer/glossary/glossary-dialog.component.ts +++ b/dmp-frontend/src/app/ui/sidebar/sidebar-footer/glossary/glossary-dialog.component.ts @@ -1,6 +1,6 @@ import { Component, Inject } from '@angular/core'; import { FormGroup } from '@angular/forms'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; +import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; @Component({ selector: 'app-glossary-dialog', diff --git a/dmp-frontend/src/app/ui/sidebar/sidebar-footer/sidebar-footer.component.ts b/dmp-frontend/src/app/ui/sidebar/sidebar-footer/sidebar-footer.component.ts index b3e69608a..ecc9546cf 100644 --- a/dmp-frontend/src/app/ui/sidebar/sidebar-footer/sidebar-footer.component.ts +++ b/dmp-frontend/src/app/ui/sidebar/sidebar-footer/sidebar-footer.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { AbstractControl, FormArray, FormControl, FormGroup } from '@angular/forms'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { TranslateService } from '@ngx-translate/core'; import { takeUntil } from 'rxjs/operators'; import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; diff --git a/dmp-frontend/src/app/ui/sidebar/sidebar.component.ts b/dmp-frontend/src/app/ui/sidebar/sidebar.component.ts index bc45ba34f..4b7e6c281 100644 --- a/dmp-frontend/src/app/ui/sidebar/sidebar.component.ts +++ b/dmp-frontend/src/app/ui/sidebar/sidebar.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; -import { MatDialog } from '@angular/material'; +import { MatDialog } from '@angular/material/dialog'; import { TranslateService } from '@ngx-translate/core'; import { AuthService } from '../../core/services/auth/auth.service'; import { UserDialogComponent } from '../misc/navigation/user-dialog/user-dialog.component'; diff --git a/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts b/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts index a25e82b14..a5e847417 100644 --- a/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts +++ b/dmp-frontend/src/app/ui/user-profile/user-profile.component.ts @@ -3,15 +3,15 @@ import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms' import { ActivatedRoute, Params, Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import * as moment from 'moment-timezone'; -import { takeUntil } from 'rxjs/operators'; -import { Observable } from 'rxjs/Rx'; +import { Observable, of } from 'rxjs'; +import { map, takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../core/common/base/base.component'; import { CultureInfo } from '../../core/model/culture-info'; +import { DmpModel } from '../../core/model/dmp/dmp'; import { UserListingModel } from '../../core/model/user/user-listing'; import { AuthService } from '../../core/services/auth/auth.service'; import { CultureService } from '../../core/services/culture/culture-service'; import { UserService } from '../../core/services/user/user.service'; -import { DmpModel } from '../../core/model/dmp/dmp'; const availableLanguages: any[] = require('../../../assets/resources/language.json'); @@ -47,7 +47,7 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes .subscribe((params: Params) => { this.currentUserId = this.authService.current().id; const userId = !params['id'] ? 'me' : params['id']; - this.user = this.userService.getUser(userId).map(result => { + this.user = this.userService.getUser(userId).pipe(map(result => { result['additionalinfo'] = JSON.parse(result['additionalinfo']); this.formGroup = new FormBuilder().group({ language: new FormControl(result['additionalinfo']['language'] ? availableLanguages.filter(x => x.value === result['additionalinfo']['language']['value']).pop() : '', [Validators.required]), @@ -63,7 +63,7 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes .subscribe(x => { if (x) { this.cultures = this._filterCulture(x); } }); this.formGroup.disable(); return result; - }); + })); }); } @@ -91,18 +91,18 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes private _filterTimezone(value: string): Observable { if (value && typeof value === 'string') { const filterValue = value.toLowerCase(); - return Observable.of(moment.tz.names().filter(option => option.toLowerCase().includes(filterValue))); + return of(moment.tz.names().filter(option => option.toLowerCase().includes(filterValue))); } else { - return Observable.of(moment.tz.names()); + return of(moment.tz.names()); } } private _filterCulture(value: string): Observable { if (value && typeof value === 'string') { const filterValue = value.toLowerCase(); - return Observable.of(this.cultureService.getCultureValues().filter(option => option.displayName.toLowerCase().includes(filterValue))); + return of(this.cultureService.getCultureValues().filter(option => option.displayName.toLowerCase().includes(filterValue))); } else { - return Observable.of(this.cultureService.getCultureValues()); + return of(this.cultureService.getCultureValues()); } } @@ -132,7 +132,7 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes this.authService.me() .pipe(takeUntil(this._destroyed)) .subscribe(result => this.router.navigate(['/profile'])); - // .subscribe(result => window.location.reload()); + // .subscribe(result => window.location.reload()); }, error => { console.log(error); diff --git a/dmp-frontend/src/polyfills.ts b/dmp-frontend/src/polyfills.ts index 1c0925f52..fa3cd0117 100644 --- a/dmp-frontend/src/polyfills.ts +++ b/dmp-frontend/src/polyfills.ts @@ -11,36 +11,20 @@ * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. * - * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + * Learn more in https://angular.io/guide/browser-support */ /*************************************************************************************************** - * BROWSER POLYFILLS - */ +* BROWSER POLYFILLS +*/ -/** IE9, IE10 and IE11 requires all of the following polyfills. **/ -import 'core-js/es6/symbol'; -import 'core-js/es6/object'; -import 'core-js/es6/function'; -import 'core-js/es6/parse-int'; -import 'core-js/es6/parse-float'; -import 'core-js/es6/number'; -import 'core-js/es6/math'; -import 'core-js/es6/string'; -import 'core-js/es6/date'; -import 'core-js/es6/array'; -import 'core-js/es7/array'; //for array.includes -import 'core-js/es6/regexp'; -import 'core-js/es6/map'; -import 'core-js/es6/weak-map'; -import 'core-js/es6/set'; +import 'core-js/es7/array'; /** IE10 and IE11 requires the following for NgClass support on SVG elements */ //import 'classlist.js'; // Run `npm install --save classlist.js`. /** Evergreen browsers require these. **/ import 'core-js/es6/reflect'; -import 'core-js/es7/reflect'; /** diff --git a/dmp-frontend/src/tsconfig.spec.json b/dmp-frontend/src/tsconfig.spec.json index 18bad40ed..c89454bef 100644 --- a/dmp-frontend/src/tsconfig.spec.json +++ b/dmp-frontend/src/tsconfig.spec.json @@ -3,8 +3,6 @@ "compilerOptions": { "outDir": "../out-tsc/spec", "baseUrl": "./", - "module": "commonjs", - "target": "es5", "types": [ "jasmine", "node" diff --git a/dmp-frontend/tsconfig.json b/dmp-frontend/tsconfig.json index c670a34f6..bfd2e9604 100644 --- a/dmp-frontend/tsconfig.json +++ b/dmp-frontend/tsconfig.json @@ -1,7 +1,9 @@ { "compilerOptions": { - "target": "es5", - "module": "commonjs", + "downlevelIteration": true, + "importHelpers": true, + "target": "es2015", + "module": "esnext", "moduleResolution": "node", "sourceMap": true, "emitDecoratorMetadata": true, diff --git a/dmp-frontend/tslint.json b/dmp-frontend/tslint.json index 4d352749b..b82bc955a 100644 --- a/dmp-frontend/tslint.json +++ b/dmp-frontend/tslint.json @@ -136,12 +136,12 @@ "app", "kebab-case" ], - "use-input-property-decorator": true, - "use-output-property-decorator": true, - "use-host-property-decorator": true, + "no-inputs-metadata-property": true, + "no-outputs-metadata-property": true, + "no-host-metadata-property": true, "no-input-rename": true, "no-output-rename": true, - "use-life-cycle-interface": true, + "use-lifecycle-interface": true, "use-pipe-transform-interface": true, "component-class-suffix": true, "directive-class-suffix": true From 47f939af8146df3db722d1accf8331ad29d875fc Mon Sep 17 00:00:00 2001 From: Diamantis Tziotzios Date: Mon, 23 Sep 2019 11:22:27 +0300 Subject: [PATCH 012/161] minor fix --- .../listing/dataset-profile-listing.component.ts | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.ts index b7c05c29f..ffa8c646b 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/listing/dataset-profile-listing.component.ts @@ -1,12 +1,11 @@ - -import {merge as observableMerge, of as observableOf, Observable } from 'rxjs'; - -import {switchMap, startWith, map, takeUntil } from 'rxjs/operators'; import { DataSource } from '@angular/cdk/table'; import { Component, OnInit, ViewChild } from '@angular/core'; import { MatPaginator, PageEvent } from '@angular/material/paginator'; import { MatSort } from '@angular/material/sort'; import { ActivatedRoute, Params, Router } from '@angular/router'; +import { TranslateService } from '@ngx-translate/core'; +import { merge as observableMerge, Observable, of as observableOf } from 'rxjs'; +import { map, startWith, switchMap, takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DataTableRequest } from '../../../../core/model/data-table/data-table-request'; import { DatasetListingModel } from '../../../../core/model/dataset/dataset-listing'; @@ -14,11 +13,9 @@ import { DmpModel } from '../../../../core/model/dmp/dmp'; import { DatasetProfileCriteria } from '../../../../core/query/dataset-profile/dataset-profile-criteria'; import { DatasetProfileService } from '../../../../core/services/dataset-profile/dataset-profile.service'; import { DmpService } from '../../../../core/services/dmp/dmp.service'; -import { DatasetProfileCriteriaComponent } from './criteria/dataset-profile.component'; -import { error } from 'selenium-webdriver'; -import { UiNotificationService, SnackBarNotificationLevel } from '../../../../core/services/notification/ui-notification-service'; -import { TranslateService } from '@ngx-translate/core'; +import { UiNotificationService } from '../../../../core/services/notification/ui-notification-service'; import { BreadcrumbItem } from '../../../misc/breadcrumb/definition/breadcrumb-item'; +import { DatasetProfileCriteriaComponent } from './criteria/dataset-profile.component'; @Component({ selector: 'app-dataset-profile-listing-component', @@ -173,7 +170,7 @@ export class DatasetDataSource extends DataSource { if (!result) { return []; } if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } return result.data; - }),); + })); } disconnect() { From d0c464cb311b5e1c0530752f0c6460c65fa885b0 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Mon, 23 Sep 2019 12:11:00 +0300 Subject: [PATCH 013/161] Fixes various code missteps. --- .../eudat/data/dao/entities/DMPDaoImpl.java | 4 +- .../data/dao/entities/DatasetDaoImpl.java | 6 +-- .../dataset-wizard.component.ts | 40 +++++++++---------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DMPDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DMPDaoImpl.java index 9684373a5..5e527ebf7 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DMPDaoImpl.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DMPDaoImpl.java @@ -70,14 +70,14 @@ public class DMPDaoImpl extends DatabaseAccess implements DMPDao { query.where((builder, root) -> root.join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id").in(criteria.getCollaborators())); } if (criteria.getDatasetTemplates() != null && !criteria.getDatasetTemplates().isEmpty()) { - query.where(((builder, root) -> root.join("associatedDmps", JoinType.LEFT).get("id").in(criteria.getDatasetTemplates()))); + query.where((builder, root) -> root.join("associatedDmps", JoinType.LEFT).get("id").in(criteria.getDatasetTemplates())); } query.where((builder, root) -> builder.notEqual(root.get("status"), DMP.DMPStatus.DELETED.getValue())); return query; } public QueryableList getAuthenticated(QueryableList query, UUID principal) { - query.where((builder, root) -> builder.equal(root.join("users", JoinType.LEFT).join("user").get("id"), principal)); + query.where((builder, root) -> builder.equal(root.join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id"), principal)); return query; } diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetDaoImpl.java index fec0ab7cb..4d1fde4e6 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetDaoImpl.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetDaoImpl.java @@ -52,9 +52,9 @@ public class DatasetDaoImpl extends DatabaseAccess implements DatasetDa if (criteria.getCollaborators() != null && !criteria.getCollaborators().isEmpty()) query.where((builder, root) -> root.join("dmp", JoinType.LEFT).join("users", JoinType.LEFT).join("user", JoinType.LEFT).get("id").in(criteria.getCollaborators())); if (criteria.getDatasetTemplates() != null && !criteria.getDatasetTemplates().isEmpty()) - query.where(((builder, root) -> root.get("profile").get("id").in(criteria.getDatasetTemplates()))); - query.where(((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue()))); - query.where(((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.CANCELED.getValue()))); + query.where((builder, root) -> root.get("profile").get("id").in(criteria.getDatasetTemplates())); + query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.DELETED.getValue())); + query.where((builder, root) -> builder.notEqual(root.get("status"), Dataset.Status.CANCELED.getValue())); return query; } diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts index 4d0433a42..08ca18cc3 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts @@ -1,7 +1,7 @@ -import {of as observableOf, Observable } from 'rxjs'; +import { of as observableOf, Observable } from 'rxjs'; -import {map, catchError, takeUntil } from 'rxjs/operators'; +import { map, catchError, takeUntil } from 'rxjs/operators'; import { Component, OnInit, ViewChild } from '@angular/core'; import { FormControl, FormGroup } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; @@ -231,11 +231,11 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr this.isNew = false; this.datasetWizardService.getSinglePublic(this.publicId) .pipe(takeUntil(this._destroyed)).pipe( - catchError((error: any) => { - this.uiNotificationService.snackBarNotification(error.error.message, SnackBarNotificationLevel.Error); - this.router.navigate(['/explore']); - return observableOf(null); - })) + catchError((error: any) => { + this.uiNotificationService.snackBarNotification(error.error.message, SnackBarNotificationLevel.Error); + this.router.navigate(['/explore']); + return observableOf(null); + })) .subscribe(data => { if (data) { this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(data); @@ -407,17 +407,17 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr this.datasetWizardService.createDataset(this.formGroup.value) .pipe(takeUntil(this._destroyed)) .subscribe( - complete => { - this.datasetWizardService.getSingle(complete.id) - .pipe(takeUntil(this._destroyed)) - .subscribe( - result => { - this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(result); - } - ); - this.onCallbackSuccess(); - }, - error => this.onCallbackError(error) + complete => { + this.datasetWizardService.getSingle(complete.id) + .pipe(takeUntil(this._destroyed)) + .subscribe( + result => { + this.datasetWizardModel = new DatasetWizardEditorModel().fromModel(result); + } + ); + this.onCallbackSuccess(); + }, + error => this.onCallbackError(error) ); } @@ -600,8 +600,8 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr this.datasetWizardService.delete(id) .pipe(takeUntil(this._destroyed)) .subscribe( - complete => { this.onCallbackSuccess(); this.router.navigateByUrl('/datasets') }, - error => this.onCallbackError(error) + complete => { this.onCallbackSuccess(); this.router.navigateByUrl('/datasets') }, + error => this.onCallbackError(error) ); } }); From 74ae77edbc9fd15e588a7d1458c1b7346f64f746 Mon Sep 17 00:00:00 2001 From: apapachristou Date: Mon, 23 Sep 2019 14:06:58 +0300 Subject: [PATCH 014/161] Fixes bug on External References undo finalize. (Issue #162) --- .../single-auto-complete-configuration.ts | 2 + .../single-auto-complete.component.html | 1 + .../single/single-auto-complete.component.ts | 5 +++ .../dataset-wizard.component.html | 41 ++++++------------ .../dataset-wizard.component.ts | 25 ++++++----- .../dmp-listing-item.component.html | 2 +- dmp-frontend/src/assets/i18n/en.json | 1 + dmp-frontend/src/assets/scss/blue-theme.scss | 42 ++++++++++++------- .../src/assets/scss/material-dashboard.scss | 3 +- 9 files changed, 67 insertions(+), 55 deletions(-) diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts index 6628279f6..b893bfe9b 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete-configuration.ts @@ -22,6 +22,8 @@ export interface SingleAutoCompleteConfiguration { titleFn?: (item: any) => string; // Property formating for dropdown subtitleFn?: (item: any) => string; + // Property formating for icon on chip + iconFn?: (item: any) => string; //Extra data passed to query function extraData?: any; // Callback to intercept value assignment based on item selection diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html index 46fd53fe5..fb886bd5f 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html @@ -1,6 +1,7 @@
+ {{_iconFn(value)}} {{_displayFn(value)}} cancel diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts index 1a49d15c1..0650c290f 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts @@ -137,6 +137,11 @@ export class SingleAutoCompleteComponent implements OnInit, MatFormFieldControl< return null; } + _iconFn(item: any): string { + if (this.configuration.iconFn && item) { return this.configuration.iconFn(item); } + return null; + } + _requestDelay(): number { return this.configuration.requestDelay || this.requestDelay; } diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.html b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.html index e402503ab..92394f152 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.html +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.html @@ -12,27 +12,22 @@
- - - + -
@@ -47,14 +42,11 @@
- + - + {{profile.label}} @@ -71,8 +63,7 @@ {{'DATASET-PROFILE-EDITOR.STEPS.PAGES.EXTERNAL-REFERENCES' | translate}} - + @@ -82,27 +73,21 @@ {{'DATASET-PROFILE-EDITOR.STEPS.PAGES.DESCRIPTION' | translate}} - +
+ info_outlined +
{{'DATASET-WIZARD.ACTIONS.INFO' | translate}}
- - + +
- +
diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts index 4d0433a42..635f0bed9 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard.component.ts @@ -1,7 +1,5 @@ - -import {of as observableOf, Observable } from 'rxjs'; - -import {map, catchError, takeUntil } from 'rxjs/operators'; +import { of as observableOf, Observable } from 'rxjs'; +import { map, catchError, takeUntil } from 'rxjs/operators'; import { Component, OnInit, ViewChild } from '@angular/core'; import { FormControl, FormGroup } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; @@ -63,7 +61,6 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr profileUpdateId: string; downloadDocumentId: string; isLinear = false; - hasReversableStatus: boolean = false; constructor( private datasetWizardService: DatasetWizardService, @@ -92,8 +89,9 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr this.dmpAutoCompleteConfiguration = { filterFn: this.searchDmp.bind(this), initialItems: (extraData) => this.searchDmp(''), - displayFn: (item) => item['label'], - titleFn: (item) => item['label'] + displayFn: (item) => (item['status'] ? this.language.instant('TYPES.DATASET-STATUS.FINALISED').toUpperCase() : this.language.instant('TYPES.DATASET-STATUS.DRAFT').toUpperCase()) + ': ' + item['label'], + titleFn: (item) => item['label'], + iconFn: (item) => item['status'] ? 'lock' : 'lock_open' }; const params = this.route.snapshot.params; @@ -137,9 +135,6 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr this.registerFormListeners(); // this.availableProfiles = this.datasetWizardModel.dmp.profiles; - if (this.formGroup.get('dmp').value.status == DmpStatus.Draft && this.formGroup.get('status').value == DatasetStatus.Finalized) { - this.hasReversableStatus = true; - } }, error => { this.uiNotificationService.snackBarNotification(this.language.instant('DATASET-WIZARD.MESSAGES.DATAESET-NOT-FOUND'), SnackBarNotificationLevel.Error); @@ -433,8 +428,16 @@ export class DatasetWizardComponent extends BaseComponent implements OnInit, IBr this.submit(); } + hasReversableStatus(): boolean { + return (this.formGroup.get('dmp').value.status == DmpStatus.Draft && this.formGroup.get('status').value == DatasetStatus.Finalized); + } + + hasNotReversableStatus(): boolean { + return (this.formGroup.get('dmp').value.status == DmpStatus.Finalized && this.formGroup.get('status').value == DatasetStatus.Finalized); + } + reverse() { - this.hasReversableStatus = false; + this.viewOnly = false; this.datasetWizardModel.status = DatasetStatus.Draft; setTimeout(x => { this.formGroup = null; }); setTimeout(x => { diff --git a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html index 2bdffd51c..e0ff36982 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/listing-item/dmp-listing-item.component.html @@ -29,7 +29,7 @@
- lock + lock_open lock diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index 889bc55ef..4125c87d7 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -415,6 +415,7 @@ "SAVE-AND-FINALISE": "Save and Finalize", "FINALIZE": "Finalize", "REVERSE": "Undo Finalization", + "INFO": "Datasets of finalized DMPs can't revert to unfinalized", "DOWNLOAD-PDF": "Download PDF", "DOWNLOAD-XML": "Download XML", "DOWNLOAD-DOCX": "Download DOCX", diff --git a/dmp-frontend/src/assets/scss/blue-theme.scss b/dmp-frontend/src/assets/scss/blue-theme.scss index d3a21dbd4..52e4e8d81 100644 --- a/dmp-frontend/src/assets/scss/blue-theme.scss +++ b/dmp-frontend/src/assets/scss/blue-theme.scss @@ -35,20 +35,34 @@ $app-blue-theme-primary-palette: ( ); $app-blue-theme-accent-palette: ( - 50: #fce4ec, - 100: #f8bbd0, - 200: #f48fb1, - 300: #f06292, - 400: #ec407a, - 500: #e91e63, - 600: #d81b60, - 700: #c2185b, - 800: #ad1457, - 900: #880e4f, - A100: #ff80ab, - A200: #ff4081, - A400: #f50057, - A700: #c51162, + 50 : #e0f6f3, + 100 : #b3e8e2, + 200 : #80d9cf, + 300 : #4dc9bc, + 400 : #26bead, + 500 : #00b29f, + 600 : #00ab97, + 700 : #00a28d, + 800 : #009983, + 900 : #008a72, + A100 : #b6fff0, + A200 : #83ffe6, + A400 : #50ffdc, + A700 : #36ffd7, + // 50: #fce4ec, + // 100: #f8bbd0, + // 200: #f48fb1, + // 300: #f06292, + // 400: #ec407a, + // 500: #e91e63, + // 600: #d81b60, + // 700: #c2185b, + // 800: #ad1457, + // 900: #880e4f, + // A100: #ff80ab, + // A200: #ff4081, + // A400: #f50057, + // A700: #c51162, contrast: ( 50: $black-87-opacity, 100: $black-87-opacity, diff --git a/dmp-frontend/src/assets/scss/material-dashboard.scss b/dmp-frontend/src/assets/scss/material-dashboard.scss index 03d5f6943..3ca0d9f37 100644 --- a/dmp-frontend/src/assets/scss/material-dashboard.scss +++ b/dmp-frontend/src/assets/scss/material-dashboard.scss @@ -22,7 +22,8 @@ // Define a theme. $custom-theme-primary: mat-palette($app-blue-theme-primary-palette, 900); -$custom-theme-accent: mat-palette($mat-pink, A200, A100, A400); +$custom-theme-accent: mat-palette($app-blue-theme-accent-palette); +// $custom-theme-accent: mat-palette($mat-pink, A200, A100, A400); $custom-theme-warn: mat-palette($mat-red); $custom-theme: mat-light-theme($custom-theme-primary, $custom-theme-accent, $custom-theme-warn); @include angular-material-theme($custom-theme); From 8a653ec198b34a03b97e0860754ed776bda3c846 Mon Sep 17 00:00:00 2001 From: apapachristou Date: Mon, 23 Sep 2019 16:39:13 +0300 Subject: [PATCH 015/161] Fixes Dashboard bug on column status. (Issue #164) --- .../recent-edited-activity.component.html | 24 ++++++++++--------- .../recent-edited-activity.component.ts | 16 ++++++------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html index fbadad74e..d509a1c6e 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.html @@ -24,30 +24,32 @@ - + {{ activity.label }} -
- {{ dmpProfileDisplay(activity.profile) }} +
+ {{ activity.profile }}
+
--
{{ activity.grant }} - {{roleDisplay(activity.users)}} + {{ roleDisplay(activity.users)}} {{ activity.organisations }} - +
- {{ enumUtils.toDmpStatusString(activity.status) }} + {{'TYPES.DMP-VISIBILITY.PUBLIC' | translate}}
- + {{ enumUtils.toDmpStatusString(activity.status) }} - {{ activity.modifiedTime | date: "shortDate" }} + + {{ enumUtils.toDmpStatusString(activity.status) }} + + {{ activity.modifiedTime | date: "shortDate" }} - diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts index 5ff771ebb..7599cb273 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-activity/recent-edited-activity.component.ts @@ -164,14 +164,14 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn } } - dmpProfileDisplay(value: any) { - if (value != null) { - return value; - } - else { - return "--"; - } - } + // dmpProfileDisplay(value: any) { + // if (value != null) { + // return value; + // } + // else { + // return "--"; + // } + // } downloadXml(id: string) { this.dmpService.downloadXML(id) From 3f117d4a0f7173ecdd2d19ef40f7d3efb876fb0e Mon Sep 17 00:00:00 2001 From: apapachristou Date: Mon, 23 Sep 2019 17:17:31 +0300 Subject: [PATCH 016/161] Fixes dmp overview bug: makes clone and add new version and list all versions available when DMP in Finalized or Published state. (Issue #165) --- .../dmp/overview/dmp-overview.component.html | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html index 53c8db754..22230de4e 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.component.html @@ -9,35 +9,31 @@
- - - - - - - - - + + From 26f28bca5509f93080b03e2993413554841dc290 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Mon, 23 Sep 2019 18:11:29 +0300 Subject: [PATCH 017/161] Adds descending ordering and sorting by finalized date where published DMP is requested. --- dmp-frontend/src/app/ui/dashboard/dashboard.component.ts | 2 +- .../filters/explore-dataset-filters.component.ts | 2 +- .../src/app/ui/explore-dmp/explore-dmp-listing.component.ts | 4 +++- .../listing-item/explore-dmp-listing-item.component.html | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts b/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts index a6d966ea7..545171545 100644 --- a/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/dashboard.component.ts @@ -148,7 +148,7 @@ export class DashboardComponent extends BaseComponent implements OnInit, IBreadC getPublicDmps() { const dmpCriteria = new ExploreDmpCriteriaModel(); const fields: Array = new Array(); - fields.push('asc'); + fields.push('-finalizedAt'); const dataTableRequest: DataTableRequest = new DataTableRequest(0, 2, { fields: fields }); dataTableRequest.criteria = dmpCriteria; return this.dmpService.getPublicPaged(dataTableRequest, "listing").pipe(takeUntil(this._destroyed)).subscribe(result => { this.dmpListingItems = result.data; }); diff --git a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts index 3b4115f32..bbf1867c4 100644 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts +++ b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts @@ -306,7 +306,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI filterDmps(value: string): Observable> { const fields: Array = new Array(); - fields.push('asc'); + fields.push('-finalizedAt'); const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); dmpDataTableRequest.criteria = new ExploreDatasetCriteriaModel(); dmpDataTableRequest.criteria.like = value; diff --git a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts b/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts index 6a3068e67..1b1637f43 100644 --- a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts +++ b/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts @@ -22,7 +22,7 @@ import { TranslateService } from "@ngx-translate/core"; export class ExploreDmpListingComponent extends BaseComponent implements OnInit, IBreadCrumbComponent { @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; - @ViewChild(MatSort, { static: false }) sort: MatSort; + sort = new MatSort(); exploreDmpCriteriaModel: ExploreDmpCriteriaModel; titlePrefix: string; @@ -37,6 +37,8 @@ export class ExploreDmpListingComponent extends BaseComponent implements OnInit, private language: TranslateService, ) { super(); + this.sort.direction = 'desc'; + this.sort.active = "publishedAt"; } ngOnInit() { diff --git a/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.html b/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.html index 09001a03f..905d71de2 100644 --- a/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.html +++ b/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.html @@ -28,7 +28,7 @@
{{profile.label}}
-

{{'DMP-PROFILE-LISTING.COLUMNS.PUBLISHED' | translate}} {{dmp.creationTime | date: "shortDate"}}

+

{{'DMP-PROFILE-LISTING.COLUMNS.PUBLISHED' | translate}} {{dmp.finalizedAt | date: "shortDate"}}

From 812891fed127a7db3ce91ace82bbae868a230b4b Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Tue, 24 Sep 2019 11:25:16 +0300 Subject: [PATCH 018/161] Fixes bug of Published DMP and Published Dataet Descriptions on filter "Dataset Specification" not searching properly. --- .../DataManagmentPlanPublicTableRequest.java | 8 ++-- .../eu/eudat/controllers/DatasetProfiles.java | 12 ++---- .../logic/managers/DatasetProfileManager.java | 5 +-- .../core/services/dataset/dataset.service.ts | 4 +- .../available-profiles.component.ts | 10 ++++- .../explore-dataset-filters.component.ts | 37 +++++++++---------- .../explore-dmp-filters.component.ts | 32 +++++++--------- 7 files changed, 51 insertions(+), 57 deletions(-) diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/query/items/table/dmp/DataManagmentPlanPublicTableRequest.java b/dmp-backend/data/src/main/java/eu/eudat/data/query/items/table/dmp/DataManagmentPlanPublicTableRequest.java index bb2d08333..5e6a82bc8 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/query/items/table/dmp/DataManagmentPlanPublicTableRequest.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/query/items/table/dmp/DataManagmentPlanPublicTableRequest.java @@ -29,10 +29,10 @@ public class DataManagmentPlanPublicTableRequest extends TableQuery root.get("profile").get("id").in(this.getCriteria().datasetProfile))); - if (this.getCriteria().getDmpOrganisations() != null && !this.getCriteria().getDmpOrganisations().isEmpty()) query - .where(((builder, root) -> root.join("organisations").get("reference").in(this.getCriteria().getDmpOrganisations()))); + if (this.getCriteria().datasetProfile != null && !this.getCriteria().datasetProfile.isEmpty()) + query.where(((builder, root) -> root.get("profile").get("id").in(this.getCriteria().datasetProfile))); + if (this.getCriteria().getDmpOrganisations() != null && !this.getCriteria().getDmpOrganisations().isEmpty()) + query.where(((builder, root) -> root.join("organisations").get("reference").in(this.getCriteria().getDmpOrganisations()))); return query; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfiles.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfiles.java index 35375e148..372ad6b1d 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfiles.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfiles.java @@ -1,25 +1,19 @@ package eu.eudat.controllers; -import eu.eudat.data.entities.DMP; import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileAutocompleteRequest; import eu.eudat.data.query.items.table.datasetprofile.DatasetProfileTableRequestItem; -import eu.eudat.exceptions.datamanagementplan.DMPWithDatasetsDeleteException; import eu.eudat.logic.managers.DatasetProfileManager; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.datasetprofile.DatasetProfileAutocompleteItem; import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel; -import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.helpers.responses.ResponseItem; -import eu.eudat.models.data.security.Principal; import eu.eudat.types.ApiMessageCode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.UUID; @RestController @@ -42,10 +36,10 @@ public class DatasetProfiles extends BaseController { return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileAutocompleteItems)); } - @RequestMapping(method = RequestMethod.GET, value = {"/datasetprofiles/getAll"}, produces = "application/json") + @RequestMapping(method = RequestMethod.POST, value = {"/datasetprofiles/getAll"}, produces = "application/json") public @ResponseBody - ResponseEntity>> getAll() throws InstantiationException, IllegalAccessException { - List datasetProfileTableData = this.datasetProfileManager.getAll(); + ResponseEntity>> getAll(@RequestBody DatasetProfileTableRequestItem tableRequestItem) throws InstantiationException, IllegalAccessException { + List datasetProfileTableData = this.datasetProfileManager.getAll(tableRequestItem); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(datasetProfileTableData)); } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java index 32888ab1e..4d79f00c5 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java @@ -81,9 +81,8 @@ public class DatasetProfileManager { return apiContext.getOperationsContext().getBuilderFactory().getBuilder(DataTableDataBuilder.class).data(datasetProfiles).totalCount(items.count()).build(); } - public List getAll() throws IllegalAccessException, InstantiationException { - DatasetProfileCriteria criteria = new DatasetProfileCriteria(); - QueryableList items = databaseRepository.getDatasetProfileDao().getWithCriteria(criteria); + public List getAll(DatasetProfileTableRequestItem tableRequestItem) throws IllegalAccessException, InstantiationException { + QueryableList items = databaseRepository.getDatasetProfileDao().getWithCriteria(tableRequestItem.getCriteria()); List datasetProfiles = items.select(item -> new DatasetProfileListingModel().fromDataModel(item)); return datasetProfiles; } diff --git a/dmp-frontend/src/app/core/services/dataset/dataset.service.ts b/dmp-frontend/src/app/core/services/dataset/dataset.service.ts index 920b644ba..d1b59d588 100644 --- a/dmp-frontend/src/app/core/services/dataset/dataset.service.ts +++ b/dmp-frontend/src/app/core/services/dataset/dataset.service.ts @@ -31,8 +31,8 @@ export class DatasetService { return this.http.get(this.actionUrl + 'makepublic/' + id); } - getDatasetProfiles(): Observable { - return this.http.get(environment.Server + 'datasetprofiles/getAll'); + getDatasetProfiles(dataTableRequest: DataTableRequest): Observable { + return this.http.post(environment.Server + 'datasetprofiles/getAll', dataTableRequest); } getDatasetProfilesUsedPaged(dataTableRequest: DataTableRequest) { diff --git a/dmp-frontend/src/app/ui/dmp/editor/available-profiles/available-profiles.component.ts b/dmp-frontend/src/app/ui/dmp/editor/available-profiles/available-profiles.component.ts index 98272ef85..8045b1195 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/available-profiles/available-profiles.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/available-profiles/available-profiles.component.ts @@ -5,6 +5,8 @@ import { takeUntil } from 'rxjs/operators'; import { BaseComponent } from '../../../../core/common/base/base.component'; import { DatasetProfileModel } from '../../../../core/model/dataset/dataset-profile'; import { DatasetService } from '../../../../core/services/dataset/dataset.service'; +import { DataTableRequest } from "../../../../core/model/data-table/data-table-request"; +import { DatasetProfileCriteria } from "../../../../core/query/dataset-profile/dataset-profile-criteria"; @Component({ selector: 'app-available-profiles-component', @@ -24,7 +26,13 @@ export class AvailableProfilesComponent extends BaseComponent implements OnInit ngOnInit(): void { this.formGroup = this.data['profiles']; - this.datasetService.getDatasetProfiles() + const fields: Array = new Array(); + fields.push('asc'); + const profileRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); + profileRequestItem.criteria = new DatasetProfileCriteria(); + profileRequestItem.criteria.like = ''; + + this.datasetService.getDatasetProfiles(profileRequestItem) .pipe(takeUntil(this._destroyed)) .subscribe(data => { this.profiles = data; diff --git a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts index bbf1867c4..210461e33 100644 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts +++ b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts @@ -1,10 +1,10 @@ -import {of as observableOf, Observable } from 'rxjs'; +import { of as observableOf, Observable } from 'rxjs'; -import {map, takeUntil } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; import { MatAccordion } from '@angular/material/expansion'; -import { ActivatedRoute, Params } from '@angular/router'; +import { ActivatedRoute } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import { BaseComponent } from '../../../core/common/base/base.component'; import { GrantStateType } from '../../../core/common/enum/grant-state-type'; @@ -19,7 +19,6 @@ import { ExternalSourcesService } from '../../../core/services/external-sources/ import { GrantService } from '../../../core/services/grant/grant.service'; import { RequestItem } from '../../../core/query/request-item'; import { DataTableRequest } from '../../../core/model/data-table/data-table-request'; -import { AuthService } from '../../../core/services/auth/auth.service'; import { MultipleAutoCompleteConfiguration } from '../../../library/auto-complete/multiple/multiple-auto-complete-configuration'; import { DmpService } from '../../../core/services/dmp/dmp.service'; import { OrganisationCriteria } from '../../../core/query/organisation/organisation-criteria'; @@ -28,9 +27,7 @@ import { OrganizationModel } from '../../../core/model/organisation/organization import { DataTableData } from '../../../core/model/data-table/data-table-data'; import { DmpListingModel } from '../../../core/model/dmp/dmp-listing'; import { ExploreDmpCriteriaModel } from '../../../core/query/explore-dmp/explore-dmp-criteria'; -import { DmpModel } from '../../../core/model/dmp/dmp'; -import { BaseCriteriaComponent } from '../../misc/criteria/base-criteria.component'; -import { ValidationErrorModel } from '../../../common/forms/validation/error-model/validation-error-model'; +import { DatasetProfileCriteria } from "../../../core/query/dataset-profile/dataset-profile-criteria"; @Component({ selector: 'app-explore-dataset-filters-component', @@ -91,7 +88,7 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterProfile.bind(this), initialItems: (excludedItems: any[]) => - this.getProfiles().pipe( + this.filterProfile('').pipe( map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'] @@ -114,18 +111,17 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI public languageService: TranslateService, public datasetProfileService: DatasetService, public externalSourcesService: ExternalSourcesService, - private authentication: AuthService, ) { super(); } ngOnInit() { - setTimeout(x => { + setTimeout(() => { this.grantStateOptions = observableOf( [ { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.INACTIVE'), value: GrantStateType.Finished }, { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE'), value: GrantStateType.OnGoing }, ]); }); - this.profiles = this.datasetProfileService.getDatasetProfiles(); + // this.profiles = this.datasetProfileService.getDatasetProfiles(); this.dmpOrganisations = this.externalSourcesService.searchDMPOrganizations(''); } @@ -186,9 +182,9 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI this.facetCriteriaChange.emit(this.facetCriteria); } - getProfiles() { - return this.datasetProfileService.getDatasetProfiles(); - } + // getProfiles() { + // return this.datasetProfileService.getDatasetProfiles(); + // } removeProfile(profile) { this.facetCriteria.datasetProfile.splice(this.facetCriteria.datasetProfile.indexOf(profile), 1); @@ -240,9 +236,9 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI this.facetCriteriaChange.emit(this.facetCriteria); } - public profileSearch(value: string) { - return this.datasetProfileService.getDatasetProfiles(); - } + // public profileSearch(value: string) { + // return this.datasetProfileService.getDatasetProfiles(); + // } public controlModified() { this.facetCriteriaChange.emit(this.facetCriteria); @@ -339,11 +335,12 @@ export class ExploreDatasetFiltersComponent extends BaseComponent implements OnI filterProfile(query: string) { const fields: Array = new Array(); fields.push('asc'); - const profileRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - profileRequestItem.criteria = new ExploreDatasetCriteriaModel(); + const profileRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); + profileRequestItem.criteria = new DatasetProfileCriteria(); profileRequestItem.criteria.like = query; - return this.dmpService.getPublicPaged(profileRequestItem, "listing").pipe(map(x => x.data)); + return this.datasetProfileService.getDatasetProfiles(profileRequestItem); + // this.dmpService.getPublicPaged(profileRequestItem, "listing").pipe(map(x => x.data)); } filterOrganisation(value: string) { diff --git a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts index fa7b3abfa..791beda34 100644 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts +++ b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts @@ -1,21 +1,16 @@ -import {of as observableOf, Observable } from 'rxjs'; +import { of as observableOf, Observable } from 'rxjs'; -import {map, takeUntil } from 'rxjs/operators'; +import { map } from 'rxjs/operators'; import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core"; -import { FormBuilder, FormControl, FormGroup } from "@angular/forms"; import { MatAccordion } from "@angular/material/expansion"; -import { MatGridTileHeaderCssMatStyler } from "@angular/material/grid-list"; -import { fadeInItems } from "@angular/material/menu"; import { ActivatedRoute } from "@angular/router"; import { TranslateService } from "@ngx-translate/core"; import { ValidationErrorModel } from "../../../common/forms/validation/error-model/validation-error-model"; import { GrantStateType } from '../../../core/common/enum/grant-state-type'; import { DataTableRequest } from "../../../core/model/data-table/data-table-request"; import { DatasetProfileModel } from "../../../core/model/dataset/dataset-profile"; -import { ExternalSourceItemModel } from "../../../core/model/external-sources/external-source-item"; import { GrantListingModel } from "../../../core/model/grant/grant-listing"; -import { ExploreDatasetCriteriaModel } from "../../../core/query/explore-dataset/explore-dataset-criteria"; import { ExploreDmpCriteriaModel } from "../../../core/query/explore-dmp/explore-dmp-criteria"; import { GrantCriteria } from "../../../core/query/grant/grant-criteria"; import { DatasetService } from "../../../core/services/dataset/dataset.service"; @@ -27,6 +22,7 @@ import { BaseCriteriaComponent } from "../../misc/criteria/base-criteria.compone import { OrganizationModel } from "../../../core/model/organisation/organization"; import { OrganisationCriteria } from "../../../core/query/organisation/organisation-criteria"; import { OrganisationService } from "../../../core/services/organisation/organisation.service"; +import { DatasetProfileCriteria } from "../../../core/query/dataset-profile/dataset-profile-criteria"; @Component({ selector: 'app-explore-dmp-filters-component', @@ -71,7 +67,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterProfile.bind(this), initialItems: (excludedItems: any[]) => - this.getProfiles().pipe( + this.filterProfile('').pipe( map(result => result.filter(resultItem => excludedItems.map(x => x.id).indexOf(resultItem.id) === -1))), displayFn: (item) => item['label'], titleFn: (item) => item['label'] @@ -121,7 +117,7 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements { label: this.languageService.instant('FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE'), value: GrantStateType.OnGoing }, ]); }); - this.profiles = this.datasetProfileService.getDatasetProfiles(); + //this.profiles = this.datasetProfileService.getDatasetProfiles(); const fields: Array = new Array(); fields.push('asc'); this.dmpOrganisations = this.organisationService.searchPublicOrganisations(new DataTableRequest(0, null, { fields: fields })).pipe(map(x => x.data)); @@ -268,9 +264,9 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements this.facetCriteriaChange.emit(this.facetCriteria); } - profileSearch(value: string) { - return this.datasetProfileService.getDatasetProfiles(); - } + // profileSearch(value: string) { + // return this.datasetProfileService.getDatasetProfiles(); + // } dmpOrganisationSearch(value: string): Observable { const fields: Array = new Array(); @@ -286,9 +282,9 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements this.facetCriteriaChange.emit(this.facetCriteria); } - getProfiles() { - return this.datasetProfileService.getDatasetProfiles(); - } + // getProfiles() { + // return this.datasetProfileService.getDatasetProfiles(); + // } getOrganisations() { const fields: Array = new Array(); @@ -311,11 +307,11 @@ export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements filterProfile(query: string) { const fields: Array = new Array(); fields.push('asc'); - const profileRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - profileRequestItem.criteria = new ExploreDatasetCriteriaModel(); + const profileRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); + profileRequestItem.criteria = new DatasetProfileCriteria(); profileRequestItem.criteria.like = query; - return this.dmpService.getPublicPaged(profileRequestItem, "listing").pipe(map(x => x.data)); + return this.datasetProfileService.getDatasetProfiles(profileRequestItem); } filterOrganisation(value: string) { From f93b6103e98eb7fbb73060b110bde6b3bc8031c4 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Tue, 24 Sep 2019 12:28:13 +0300 Subject: [PATCH 019/161] Adds ordering on Published Dataset Descriptions listing (descending by published date). (Issue #174) --- .../java/eu/eudat/logic/managers/DatasetManager.java | 3 +++ .../models/data/listingmodels/DatasetListingModel.java | 9 +++++++++ .../src/app/core/model/dataset/dataset-listing.ts | 1 + .../explore-dataset-listing-item.component.html | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java index 6ba300157..ab7ff1f5e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java @@ -141,6 +141,9 @@ public class DatasetManager { } else items.where((builder, root) -> root.get("id").in(new UUID[]{UUID.randomUUID()})); } + String[] strings = new String[1]; + strings[0] = "-dmp:publishedAt|join|"; + datasetTableRequest.getOrderings().setFields(strings); QueryableList pagedItems = PaginationManager.applyPaging(items, datasetTableRequest); DataTableData dataTable = new DataTableData<>(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DatasetListingModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DatasetListingModel.java index 6aac4b997..d1cd16647 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DatasetListingModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/listingmodels/DatasetListingModel.java @@ -27,6 +27,7 @@ public class DatasetListingModel implements DataModel new DataRepository().fromDataModel(item.getDataRepository())).collect(Collectors.toList())); this.services = LabelBuilder.getLabel(entity.getServices().stream().map(item -> new Service().fromDataModel(item.getService())).collect(Collectors.toList())); this.finalizedAt = entity.getFinalizedAt(); + this.dmpPublishedAt = entity.getDmp().getPublishedAt(); return this; } diff --git a/dmp-frontend/src/app/core/model/dataset/dataset-listing.ts b/dmp-frontend/src/app/core/model/dataset/dataset-listing.ts index 80e0f931e..1776ab9be 100644 --- a/dmp-frontend/src/app/core/model/dataset/dataset-listing.ts +++ b/dmp-frontend/src/app/core/model/dataset/dataset-listing.ts @@ -15,4 +15,5 @@ export interface DatasetListingModel { created: Date; modified: Date; finalizedAt: Date; + dmpPublishedAt?: Date; } diff --git a/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.html b/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.html index 1c8b1ac04..4be537f20 100644 --- a/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.html +++ b/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.html @@ -32,7 +32,7 @@
{{ dataset.profile }}
-

{{'DATASET-LISTING.COLUMNS.PUBLISHED' | translate}} {{dataset.created | date: "shortDate"}}

+

{{'DATASET-LISTING.COLUMNS.PUBLISHED' | translate}} {{dataset.dmpPublishedAt | date: "shortDate"}}

- - +