From 7b28f499a842d0151816c3476e68ad77741e8ce5 Mon Sep 17 00:00:00 2001 From: Diamantis Tziotzios Date: Fri, 29 Dec 2023 17:04:16 +0200 Subject: [PATCH] frontend cleanup --- .../java/eu/eudat/audit/AuditableAction.java | 4 + .../controllers/v2/DescriptionController.java | 6 - .../eudat/controllers/v2/DmpController.java | 5 - .../v2/FileTransformerController.java | 50 ++ dmp-frontend/src/app/app-routing.module.ts | 2 +- dmp-frontend/src/app/app.module.ts | 4 - .../app/core/common/enum/api-message-code.ts | 8 - .../src/app/core/common/enum/auth-provider.ts | 12 - .../common/enum/configurable-provider-type.ts | 4 - .../enum/dataset-profile-combo-box-type.ts | 4 - .../enum/dataset-profile-field-view-style.ts | 28 - ...aset-profile-internal-dmp-entities-type.ts | 5 - .../app/core/common/enum/dataset-profile.ts | 5 - .../app/core/common/enum/dataset-status.ts | 6 - .../common/enum/external-dataset-type-enum.ts | 5 - .../core/common/enum/external-dataset-type.ts | 4 - .../app/core/common/enum/grant-state-type.ts | 4 - .../src/app/core/common/enum/grant-type.ts | 4 - .../src/app/core/common/enum/project-type.ts | 4 - .../core/common/enum/recent-activity-order.ts | 11 +- dmp-frontend/src/app/core/common/enum/role.ts | 4 - .../src/app/core/common/enum/save-type.ts | 5 - .../src/app/core/common/enum/status.ts | 4 - .../app/core/common/enum/validation-type.ts | 1 + .../src/app/core/core-service.module.ts | 67 +- .../admin/dataset-profile/dataset-profile.ts | 89 -- .../src/app/core/model/auth/principal.ts | 4 +- .../src/app/core/model/base-form-model.ts | 4 - .../core/model/dashboard/search-bar-item.ts | 8 - .../model/data-repository/data-repository.ts | 9 - .../core/model/data-table/column-ordering.ts | 3 - .../core/model/data-table/data-table-data.ts | 4 - .../model/data-table/data-table-request.ts | 28 - .../auth-type.enum.ts | 3 - .../composite-field.ts | 17 - .../dataset-profile-definition.ts | 8 - .../default-value.ts | 4 - .../field-data/field-data.ts | 150 ---- .../dataset-profile-definition/field-group.ts | 51 -- .../model/dataset-profile-definition/field.ts | 26 - .../html-method.enum.ts | 6 - .../multiplicity.ts | 9 - .../model/dataset-profile-definition/page.ts | 7 - .../dataset-profile-definition/section.ts | 13 - .../dataset-profile-definition/view-style.ts | 4 - .../core/model/dataset/dataset-id.model.ts | 34 - .../app/core/model/dataset/dataset-listing.ts | 25 - .../core/model/dataset/dataset-overview.ts | 17 - .../app/core/model/dataset/dataset-profile.ts | 34 - .../core/model/dataset/dataset-url-listing.ts | 4 - .../app/core/model/dataset/dataset-wizard.ts | 27 - .../src/app/core/model/dataset/dataset.ts | 73 -- .../model/dataset/datasets-toBeFinalized.ts | 3 - .../src/app/core/model/dataset/prefilling.ts | 7 - .../model/deposit/deposit-configuration.ts | 2 +- .../app/core/model/deposit/deposit-request.ts | 8 +- .../app/core/model/description/description.ts | 4 +- .../core/model/dmp-blueprint/dmp-blueprint.ts | 4 +- dmp-frontend/src/app/core/model/dmp/cost.ts | 9 - .../dmp-create-wizard-form.model.ts | 38 - ...dmp-dataset-profile-sections-form.model.ts | 28 - .../dmp-dataset-profile.ts | 8 - .../model/dmp/dmp-dynamic-field-dependency.ts | 4 - .../app/core/model/dmp/dmp-dynamic-field.ts | 10 - .../src/app/core/model/dmp/dmp-extra-field.ts | 4 - .../src/app/core/model/dmp/dmp-listing.ts | 22 - .../src/app/core/model/dmp/dmp-overview.ts | 29 - .../src/app/core/model/dmp/dmp-reference.ts | 5 +- dmp-frontend/src/app/core/model/dmp/dmp.ts | 65 +- .../dmp/invitation/dmp-invitation-user.ts | 25 - .../model/dmp/invitation/dmp-invitation.ts | 19 - dmp-frontend/src/app/core/model/doi/doi.ts | 7 - .../external-dataset/external-dataset.ts | 11 - .../external-sources/external-source-item.ts | 5 - .../external-sources/external-source-url.ts | 4 - .../external-sources-configuration.ts | 9 - .../src/app/core/model/funder/funder.ts | 12 - .../src/app/core/model/grant/grant-listing.ts | 26 - .../app/core/model/grant/grant-overview.ts | 9 - .../help-content/active-topic-questions.ts | 10 - .../model/help-content/page-help-content.ts | 24 - .../src/app/core/model/help-content/page.ts | 13 - .../app/core/model/help-content/question.ts | 26 - .../src/app/core/model/help-content/topic.ts | 16 - .../src/app/core/model/license/license.ts | 9 - .../model/local-fetch/local-fetch.model.ts | 4 - .../src/app/core/model/lock/lock.model.ts | 29 +- .../core/model/merge/user-merge-request.ts | 5 - .../core/model/organisation/organization.ts | 10 - .../src/app/core/model/project/project.ts | 24 - .../app/core/model/publication/publication.ts | 9 - .../src/app/core/model/reference/reference.ts | 5 +- .../src/app/core/model/registry/registry.ts | 11 - .../app/core/model/researcher/researcher.ts | 8 - .../src/app/core/model/service/service.ts | 10 - .../supportive-material.ts | 16 +- dmp-frontend/src/app/core/model/tag/tag.ts | 5 - .../src/app/core/model/taxonomy/taxonomy.ts | 9 - .../model/unlink-account/unlink-account.ts | 5 - .../app/core/model/user/user-credential.ts | 6 - .../app/core/model/user/user-info-listing.ts | 6 - .../src/app/core/model/user/user-listing.ts | 17 - dmp-frontend/src/app/core/model/user/user.ts | 11 +- .../model/version/version-listing.model.ts | 5 - .../src/app/core/pipes/field-value.pipe.ts | 63 +- .../data-repository-criteria.ts | 5 - .../dataset-profile-criteria.ts | 9 - .../daatset-external-autocomplete-criteria.ts | 11 - .../core/query/dataset/dataset-criteria.ts | 17 - .../core/query/dmp/dmp-blueprint-criteria.ts | 6 - .../src/app/core/query/dmp/dmp-criteria.ts | 17 - .../query/dmp/dmp-invitation-user-criteria.ts | 5 - .../core/query/dmp/dmp-profile-criteria.ts | 5 - ...-profile-external-autocomplete-criteria.ts | 6 - .../explore-dataset-criteria.ts | 13 - .../query/explore-dmp/explore-dmp-criteria.ts | 13 - .../external-dataset-criteria.ts | 5 - .../app/core/query/funder/funder-criteria.ts | 5 - .../app/core/query/grant/grant-criteria.ts | 10 - .../core/query/license/license-criteria.ts | 5 - .../organisation/organisation-criteria.ts | 6 - .../core/query/project/project-criteria.ts | 5 - .../query/publication/publication-criteria.ts | 4 - .../core/query/registry/registry-criteria.ts | 5 - .../query/researcher/researcher-criteria.ts | 6 - .../core/query/service/service-criteria.ts | 5 - .../src/app/core/query/tag/tag-criteria.ts | 5 - .../core/query/taxonomy/taxonomy-criteria.ts | 5 - .../src/app/core/query/user/user-criteria.ts | 8 - .../app/core/services/auth/auth.service.ts | 2 +- .../contact-support.service.ts | 8 +- .../services/currency/currency.service.ts | 21 - .../deposit-repositories.service.ts | 43 - .../core/services/deposit/deposit.service.ts | 48 ++ .../description-template.service.ts | 3 +- .../description/description.service.ts | 4 - .../services/dmp/dmp-blueprint.service.ts | 3 +- .../services/dmp/dmp-invitation.service.ts | 33 - .../src/app/core/services/dmp/dmp.service.ts | 195 +---- .../email-confirmation.service.ts | 23 - .../currency/currency.service.ts | 19 - .../extternal-data-repository.service.ts | 20 - .../dataset/external-dataset.service.ts | 23 - .../external-sources-configuration.service.ts | 23 - .../external-sources.service.ts | 110 --- .../registry/external-registry.service.ts | 19 - .../researcher/external-researcher.service.ts | 20 - .../service/external-service.service.ts | 20 - .../file-transformer.http.service.ts | 39 + .../file-transformer.service.ts | 37 + .../app/core/services/file/file.service.ts | 68 -- .../core/services/funder/funder.service.ts | 23 - .../grant/grant-file-upload.service.ts | 27 - .../app/core/services/grant/grant.service.ts | 53 -- .../help-content/cached-content-item.ts | 6 - .../help-content/help-content.service.ts | 59 -- .../core/services/http/base-http.service.ts | 90 -- .../core/services/http/principal.service.ts | 8 +- .../language/language.http.service.ts | 1 - .../core/services/language/server.loader.ts | 9 +- .../app/core/services/lock/lock.service.ts | 21 +- .../core/services/logging/logging-service.ts | 1 - .../maintenance-tasks.service.ts | 24 - .../maintenance/maintenance.service.ts | 40 +- .../merge-email-confirmation.service.ts | 23 - .../organisation/organisation.service.ts | 39 - .../app/core/services/prefilling.service.ts | 32 +- .../core/services/project/project.service.ts | 24 - .../reference-type/reference-type.service.ts | 20 +- .../services/search-bar/search-bar.service.ts | 23 - .../supportive-material.service.ts | 19 +- .../core/services/tenant/tenant.service.ts | 1 - ...link-account-email-confirmation.service.ts | 23 - .../user-settings-http.service.ts | 6 +- .../core/services/user/user.service-old.ts | 64 -- .../app/core/services/user/user.service.ts | 3 +- .../services/utilities/enum-utils.service.ts | 139 +--- .../export-method-dialog.component.html | 18 - .../export-method-dialog.component.scss | 16 - .../export-method-dialog.component.ts | 43 - .../export-method-dialog.module.ts | 12 - .../DynamicFieldGrantCriteria.ts | 9 - .../src/app/models/language/Language.ts | 4 - ...mplate-editor-composite-field.component.ts | 8 +- .../final-preview/final-preview.component.ts | 20 +- .../description-template-editor.component.ts | 15 +- .../editor/dmp-blueprint-editor.component.ts | 37 +- .../index-managment.component.ts | 1 - .../maintenance-tasks.component.html | 4 +- .../maintenance-tasks.component.ts | 104 +-- .../maintenance-tasks.module.ts | 2 - .../email-confirmation.component.html | 22 - .../email-confirmation.component.scss | 5 - .../email-confirmation.component.ts | 73 -- .../src/app/ui/auth/login/login.component.ts | 6 - .../src/app/ui/auth/login/login.module.ts | 5 +- .../src/app/ui/auth/login/login.routing.ts | 3 - .../merge-email-confirmation.component.ts | 34 +- .../unlink-email-confirmation.component.ts | 15 +- .../login/utilities/merge-login.service.ts | 16 - .../src/app/ui/dashboard/dashboard.module.ts | 2 - .../ui/dashboard/drafts/drafts.component.html | 4 +- .../ui/dashboard/drafts/drafts.component.ts | 19 +- .../recent-edited-activity.component.html | 2 +- .../recent-edited-activity.component.ts | 20 +- ...t-edited-description-activity.component.ts | 10 +- .../recent-edited-dmp-activity.component.html | 2 +- .../recent-edited-dmp-activity.component.ts | 29 +- .../description-copy-dialog.component.ts | 4 +- .../editor/description-editor.component.ts | 4 +- .../form-field/form-field.component.ts | 207 ++--- .../description-form.component.ts | 5 +- .../description-form.module.ts | 3 - .../visibility-rules/models}/rule.ts | 0 .../models/visibility-rules-context.ts | 2 +- .../visibility-rules.service.ts | 3 +- .../criteria/dataset-criteria.component.ts | 40 +- .../dataset-upload-dialogue.component.html | 42 - .../dataset-upload-dialogue.component.scss | 21 - .../dataset-upload-dialogue.component.ts | 157 ---- .../description-listing.component.html | 2 +- .../listing/description-listing.component.ts | 11 +- .../description-listing-item.component.html | 22 +- .../description-listing-item.component.ts | 28 +- .../description-overview.component.html | 25 +- .../description-overview.component.ts | 19 +- .../overview/description-overview.module.ts | 2 - .../start-new-description-dialog.component.ts | 22 +- .../dmp-clone-dialog.component.html | 55 ++ .../dmp-clone-dialog.component.scss} | 4 +- .../dmp-clone-dialog.component.ts | 64 ++ .../dmp-clone-dialog.editor.model.ts | 50 ++ .../dmp-clone-dialog.module.ts} | 8 +- .../clone-dialog/clone-dialog.component.html | 77 -- .../clone-dialog/clone-dialog.component.ts | 109 --- .../app/ui/dmp/clone/dmp-clone.component.html | 175 ---- .../app/ui/dmp/clone/dmp-clone.component.scss | 421 ---------- .../app/ui/dmp/clone/dmp-clone.component.ts | 382 --------- .../dmp-editor.component.ts | 6 +- .../dmp-editor.resolver.ts | 4 +- dmp-frontend/src/app/ui/dmp/dmp.module.ts | 1 - .../add-organization.component.html | 28 - .../add-organization.component.ts | 84 -- .../add-organization.model.ts | 37 - .../add-researcher.component.html | 27 - .../add-researcher.component.ts | 89 -- .../add-researcher/add-researcher.model.ts | 44 - .../available-profiles.component.ts | 4 - .../add-cost/add-cost.component.html | 28 - .../add-cost/add-cost.component.ts | 60 -- .../cost-editor/add-cost/add-cost.model.ts | 44 - .../cost-listing/cost-listing.component.html | 42 - .../cost-listing/cost-listing.component.scss | 10 - .../cost-listing/cost-listing.component.ts | 63 -- .../dataset-editor-details.component.ts | 11 - .../dataset-editor-details.module.ts | 11 - .../dataset-info/dataset-info.component.ts | 10 +- .../datasets-tab/datasets-tab.component.html | 30 - .../datasets-tab/datasets-tab.component.scss | 85 -- .../datasets-tab/datasets-tab.component.ts | 42 - .../dmp-deposit-dropdown.component.ts | 74 +- .../dmp-finalize-dialog.component.ts | 2 - .../dynamic-field-grant.component.html | 3 - .../dynamic-field-grant.component.scss | 0 .../dynamic-field-grant.component.ts | 83 -- .../dynamic-fields-grant.component.html | 7 - .../dynamic-fields-grant.component.scss | 0 .../dynamic-fields-grant.component.ts | 32 - .../funding-info/funding-info.component.html | 171 ---- .../funding-info/funding-info.component.scss | 112 --- .../funding-info/funding-info.component.ts | 471 ----------- .../extra-properties-form.model.ts | 67 -- .../dmp/editor/grant-tab/funder-form-model.ts | 46 -- .../dmp/editor/grant-tab/grant-tab-model.ts | 55 -- .../editor/grant-tab/grant-tab.component.html | 125 --- .../editor/grant-tab/grant-tab.component.scss | 36 - .../editor/grant-tab/grant-tab.component.ts | 241 ------ .../editor/grant-tab/project-form-model.ts | 49 -- .../license-info/license-info.component.html | 74 -- .../license-info/license-info.component.scss | 105 --- .../license-info/license-info.component.ts | 97 --- .../editor/main-info/main-info.component.html | 131 --- .../editor/main-info/main-info.component.scss | 147 ---- .../editor/main-info/main-info.component.ts | 209 ----- .../people-tab/people-tab.component.html | 39 - .../people-tab/people-tab.component.scss | 55 -- .../editor/people-tab/people-tab.component.ts | 90 -- .../dmp-invitation-dialog.component.ts | 97 +-- .../criteria/dmp-criteria-dialog.component.ts | 1 - .../criteria/dmp-criteria.component.ts | 16 +- .../ui/dmp/listing/dmp-listing.component.html | 2 +- .../ui/dmp/listing/dmp-listing.component.ts | 23 +- .../app/ui/dmp/listing/dmp-listing.module.ts | 4 + .../dmp-listing-item.component.html | 37 +- .../dmp-listing-item.component.ts | 169 +--- .../dmp-new-version-dialog.component.html | 67 ++ .../dmp-new-version-dialog.component.scss | 60 ++ .../dmp-new-version-dialog.component.ts | 66 ++ .../dmp-new-version-dialog.editor.model.ts | 54 ++ .../dmp-new-version-dialog.module.ts | 15 + .../start-new-dmp-dialog.component.ts | 37 +- .../dmp-upload-dialog.component.ts | 20 +- .../dmp/overview/dmp-overview.component.html | 31 +- .../ui/dmp/overview/dmp-overview.component.ts | 24 +- .../ui/dmp/overview/dmp-overview.module.ts | 4 - .../explore-dataset-listing.component.html | 82 -- .../explore-dataset-listing.component.scss | 78 -- .../explore-dataset-listing.component.ts | 117 --- .../explore-dataset/explore-dataset.module.ts | 29 - .../explore-dataset.routing.ts | 28 - ...explore-dataset-filter-item.component.html | 20 - ...explore-dataset-filter-item.component.scss | 14 - .../explore-dataset-filter-item.component.ts | 94 --- .../explore-dataset-filters.component.html | 129 --- .../explore-dataset-filters.component.scss | 107 --- .../explore-dataset-filters.component.ts | 366 --------- ...xplore-dataset-listing-item.component.html | 72 -- ...xplore-dataset-listing-item.component.scss | 99 --- .../explore-dataset-listing-item.component.ts | 29 - .../explore-dmp-filter-item.component.html | 20 - .../explore-dmp-filter-item.component.scss | 14 - .../explore-dmp-filter-item.component.ts | 84 -- .../explore-dmp-filters.component.html | 122 --- .../explore-dmp-filters.component.scss | 107 --- .../explore-dmp-filters.component.ts | 347 -------- .../explore-dmp-listing.component.html | 39 - .../explore-dmp-listing.component.scss | 86 -- .../explore-dmp-listing.component.ts | 198 ----- .../app/ui/explore-dmp/explore-dmp.module.ts | 27 - .../app/ui/explore-dmp/explore-dmp.routing.ts | 35 - .../explore-dmp-listing-item.component.html | 88 -- .../explore-dmp-listing-item.component.scss | 142 ---- .../explore-dmp-listing-item.component.ts | 53 -- .../language-content/language.component.ts | 9 +- ...form-composite-field-dialog.component.html | 15 - .../form-composite-field-dialog.component.ts | 31 - .../form-composite-field.component.html | 74 -- .../form-composite-field.component.scss | 17 - .../form-composite-field.component.ts | 125 --- .../form-composite-title.component.html | 27 - .../form-composite-title.component.scss | 31 - .../form-composite-title.component.ts | 26 - .../form-field/form-field.component.html | 484 ----------- .../form-field/form-field.component.scss | 105 --- .../form-field/form-field.component.ts | 766 ------------------ .../form-progress-indication.component.html | 5 - .../form-progress-indication.component.scss | 16 - .../form-progress-indication.component.ts | 211 ----- .../form-progress-indication.module.ts | 18 - .../form-section-inner.component.html | 80 -- .../form-section-inner.component.scss | 49 -- .../form-section-inner.component.ts | 106 --- .../form-section/form-section.component.html | 188 ----- .../form-section/form-section.component.scss | 46 -- .../form-section/form-section.component.ts | 276 ------- .../dataset-description-form.component.html | 25 - .../dataset-description-form.component.scss | 31 - .../dataset-description-form.component.ts | 48 -- .../dataset-description-form.model.ts | 375 --------- .../dataset-description-form.module.ts | 68 -- .../dataset-description.component.html | 56 -- .../dataset-description.component.scss | 47 -- .../dataset-description.component.ts | 418 ---------- .../form-focus/form-focus.service.ts | 36 - ...m-pending-questions-display.component.html | 4 - ...m-pending-questions-display.component.scss | 0 ...orm-pending-questions-display.component.ts | 45 - .../mark-for-consideration.service.ts | 22 - .../base-table-of-content.component.ts | 10 - .../table-of-content-field.component.html | 1 - .../table-of-content-field.component.ts | 19 - .../table-of-content-fieldset.component.html | 1 - .../table-of-content-fieldset.component.ts | 19 - .../table-of-content-group.component.html | 0 .../table-of-content-group.component.ts | 24 - .../table-of-content-section.component.html | 10 - .../table-of-content-section.component.ts | 23 - .../table-of-contents.component.html | 7 - .../table-of-contents.component.ts | 19 - .../tableOfContents/toc.component.css | 10 - .../table-of-contents-internal.html | 49 -- .../table-of-contents-internal.scss | 33 - .../table-of-contents-internal.ts | 165 ---- .../table-of-contents.html | 40 - .../table-of-contents.module.ts | 15 - .../table-of-contents.scss | 80 -- .../table-of-contents.ts | 512 ------------ .../models/visibility-rule-source.ts | 4 - .../models/visibility-rule.ts | 6 - .../models/visibility-rules-context.ts | 47 -- .../visibility-rules.service.ts | 407 ---------- .../help-content/help-content.component.ts | 66 -- .../misc/help-content/help-content.module.ts | 14 - .../misc/navigation/navigation.component.html | 36 - .../misc/navigation/navigation.component.scss | 45 - .../misc/navigation/navigation.component.ts | 126 --- .../ui/misc/navigation/navigation.module.ts | 20 - .../user-dialog/user-dialog.component.html | 48 -- .../app/ui/misc/search/search.component.css | 28 - .../app/ui/misc/search/search.component.html | 14 - .../ui/misc/search/search.component.spec.ts | 26 - .../app/ui/misc/search/search.component.ts | 81 -- .../src/app/ui/navbar/navbar.component.ts | 13 +- .../src/app/ui/navbar/navbar.module.ts | 4 +- .../user-dialog/user-dialog.component.html | 16 + .../user-dialog/user-dialog.component.scss | 0 .../user-dialog/user-dialog.component.ts | 2 +- ...ta-repository-dialog-editor.component.html | 28 - ...ta-repository-dialog-editor.component.scss | 3 - ...data-repository-dialog-editor.component.ts | 42 - ...ernal-dataset-dialog-editor.component.html | 24 - ...ernal-dataset-dialog-editor.component.scss | 3 - ...xternal-dataset-dialog-editor.component.ts | 42 - ...rnal-registry-dialog-editor.component.html | 28 - ...rnal-registry-dialog-editor.component.scss | 3 - ...ternal-registry-dialog-editor.component.ts | 42 - ...ernal-service-dialog-editor.component.html | 28 - ...ernal-service-dialog-editor.component.scss | 3 - ...xternal-service-dialog-editor.component.ts | 42 - .../src/app/ui/sidebar/sidebar.component.ts | 2 +- .../add-account-dialog.component.ts | 31 +- .../user-profile/user-profile-editor.model.ts | 21 +- .../user-profile/user-profile.component.html | 146 +--- .../ui/user-profile/user-profile.component.ts | 249 +++--- dmp-frontend/src/assets/i18n/en.json | 34 + dmp-frontend/src/assets/scss/blue-theme.scss | 2 - dmp-frontend/src/assets/scss/green-theme.scss | 2 - 427 files changed, 1526 insertions(+), 17717 deletions(-) create mode 100644 dmp-backend/web/src/main/java/eu/eudat/controllers/v2/FileTransformerController.java delete mode 100644 dmp-frontend/src/app/core/common/enum/api-message-code.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/auth-provider.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/configurable-provider-type.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/dataset-profile-combo-box-type.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/dataset-profile-field-view-style.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/dataset-profile-internal-dmp-entities-type.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/dataset-profile.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/dataset-status.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/external-dataset-type-enum.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/external-dataset-type.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/grant-state-type.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/grant-type.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/project-type.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/role.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/save-type.ts delete mode 100644 dmp-frontend/src/app/core/common/enum/status.ts delete mode 100644 dmp-frontend/src/app/core/model/admin/dataset-profile/dataset-profile.ts delete mode 100644 dmp-frontend/src/app/core/model/base-form-model.ts delete mode 100644 dmp-frontend/src/app/core/model/dashboard/search-bar-item.ts delete mode 100644 dmp-frontend/src/app/core/model/data-repository/data-repository.ts delete mode 100644 dmp-frontend/src/app/core/model/data-table/column-ordering.ts delete mode 100644 dmp-frontend/src/app/core/model/data-table/data-table-data.ts delete mode 100644 dmp-frontend/src/app/core/model/data-table/data-table-request.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/auth-type.enum.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/composite-field.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/dataset-profile-definition.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/default-value.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/field-group.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/field.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/html-method.enum.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/multiplicity.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/page.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/section.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset-profile-definition/view-style.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset/dataset-id.model.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset/dataset-listing.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset/dataset-overview.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset/dataset-profile.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset/dataset-url-listing.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset/dataset-wizard.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset/dataset.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset/datasets-toBeFinalized.ts delete mode 100644 dmp-frontend/src/app/core/model/dataset/prefilling.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/cost.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/dmp-create-wizard/dmp-create-wizard-form.model.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/dmp-dataset-profile/dmp-dataset-profile-sections-form.model.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/dmp-dataset-profile/dmp-dataset-profile.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/dmp-dynamic-field-dependency.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/dmp-dynamic-field.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/dmp-extra-field.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/dmp-listing.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/dmp-overview.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/invitation/dmp-invitation-user.ts delete mode 100644 dmp-frontend/src/app/core/model/dmp/invitation/dmp-invitation.ts delete mode 100644 dmp-frontend/src/app/core/model/doi/doi.ts delete mode 100644 dmp-frontend/src/app/core/model/external-dataset/external-dataset.ts delete mode 100644 dmp-frontend/src/app/core/model/external-sources/external-source-item.ts delete mode 100644 dmp-frontend/src/app/core/model/external-sources/external-source-url.ts delete mode 100644 dmp-frontend/src/app/core/model/external-sources/external-sources-configuration.ts delete mode 100644 dmp-frontend/src/app/core/model/funder/funder.ts delete mode 100644 dmp-frontend/src/app/core/model/grant/grant-listing.ts delete mode 100644 dmp-frontend/src/app/core/model/grant/grant-overview.ts delete mode 100644 dmp-frontend/src/app/core/model/help-content/active-topic-questions.ts delete mode 100644 dmp-frontend/src/app/core/model/help-content/page-help-content.ts delete mode 100644 dmp-frontend/src/app/core/model/help-content/page.ts delete mode 100644 dmp-frontend/src/app/core/model/help-content/question.ts delete mode 100644 dmp-frontend/src/app/core/model/help-content/topic.ts delete mode 100644 dmp-frontend/src/app/core/model/license/license.ts delete mode 100644 dmp-frontend/src/app/core/model/local-fetch/local-fetch.model.ts delete mode 100644 dmp-frontend/src/app/core/model/merge/user-merge-request.ts delete mode 100644 dmp-frontend/src/app/core/model/organisation/organization.ts delete mode 100644 dmp-frontend/src/app/core/model/project/project.ts delete mode 100644 dmp-frontend/src/app/core/model/publication/publication.ts delete mode 100644 dmp-frontend/src/app/core/model/registry/registry.ts delete mode 100644 dmp-frontend/src/app/core/model/researcher/researcher.ts delete mode 100644 dmp-frontend/src/app/core/model/service/service.ts delete mode 100644 dmp-frontend/src/app/core/model/taxonomy/taxonomy.ts delete mode 100644 dmp-frontend/src/app/core/model/unlink-account/unlink-account.ts delete mode 100644 dmp-frontend/src/app/core/model/user/user-credential.ts delete mode 100644 dmp-frontend/src/app/core/model/user/user-info-listing.ts delete mode 100644 dmp-frontend/src/app/core/model/user/user-listing.ts delete mode 100644 dmp-frontend/src/app/core/model/version/version-listing.model.ts delete mode 100644 dmp-frontend/src/app/core/query/data-repository/data-repository-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/dataset-profile/dataset-profile-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/dataset/daatset-external-autocomplete-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/dataset/dataset-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/dmp/dmp-blueprint-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/dmp/dmp-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/dmp/dmp-invitation-user-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/dmp/dmp-profile-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/dmp/dmp-profile-external-autocomplete-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/explore-dataset/explore-dataset-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/explore-dmp/explore-dmp-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/external-dataset/external-dataset-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/funder/funder-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/grant/grant-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/license/license-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/organisation/organisation-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/project/project-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/publication/publication-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/registry/registry-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/researcher/researcher-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/service/service-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/tag/tag-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/taxonomy/taxonomy-criteria.ts delete mode 100644 dmp-frontend/src/app/core/query/user/user-criteria.ts delete mode 100644 dmp-frontend/src/app/core/services/currency/currency.service.ts delete mode 100644 dmp-frontend/src/app/core/services/deposit-repositories/deposit-repositories.service.ts create mode 100644 dmp-frontend/src/app/core/services/deposit/deposit.service.ts delete mode 100644 dmp-frontend/src/app/core/services/dmp/dmp-invitation.service.ts delete mode 100644 dmp-frontend/src/app/core/services/email-confirmation/email-confirmation.service.ts delete mode 100644 dmp-frontend/src/app/core/services/external-sources/currency/currency.service.ts delete mode 100644 dmp-frontend/src/app/core/services/external-sources/data-repository/extternal-data-repository.service.ts delete mode 100644 dmp-frontend/src/app/core/services/external-sources/dataset/external-dataset.service.ts delete mode 100644 dmp-frontend/src/app/core/services/external-sources/external-sources-configuration.service.ts delete mode 100644 dmp-frontend/src/app/core/services/external-sources/external-sources.service.ts delete mode 100644 dmp-frontend/src/app/core/services/external-sources/registry/external-registry.service.ts delete mode 100644 dmp-frontend/src/app/core/services/external-sources/researcher/external-researcher.service.ts delete mode 100644 dmp-frontend/src/app/core/services/external-sources/service/external-service.service.ts create mode 100644 dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts create mode 100644 dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts delete mode 100644 dmp-frontend/src/app/core/services/file/file.service.ts delete mode 100644 dmp-frontend/src/app/core/services/funder/funder.service.ts delete mode 100644 dmp-frontend/src/app/core/services/grant/grant-file-upload.service.ts delete mode 100644 dmp-frontend/src/app/core/services/grant/grant.service.ts delete mode 100644 dmp-frontend/src/app/core/services/help-content/cached-content-item.ts delete mode 100644 dmp-frontend/src/app/core/services/help-content/help-content.service.ts delete mode 100644 dmp-frontend/src/app/core/services/http/base-http.service.ts delete mode 100644 dmp-frontend/src/app/core/services/maintenance-tasks/maintenance-tasks.service.ts delete mode 100644 dmp-frontend/src/app/core/services/merge-email-confirmation/merge-email-confirmation.service.ts delete mode 100644 dmp-frontend/src/app/core/services/organisation/organisation.service.ts delete mode 100644 dmp-frontend/src/app/core/services/project/project.service.ts delete mode 100644 dmp-frontend/src/app/core/services/search-bar/search-bar.service.ts delete mode 100644 dmp-frontend/src/app/core/services/unlink-account-email-confirmation/unlink-account-email-confirmation.service.ts delete mode 100644 dmp-frontend/src/app/core/services/user/user.service-old.ts delete mode 100644 dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.html delete mode 100644 dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.scss delete mode 100644 dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.ts delete mode 100644 dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.module.ts delete mode 100644 dmp-frontend/src/app/models/dynamic-field-grant/DynamicFieldGrantCriteria.ts delete mode 100644 dmp-frontend/src/app/models/language/Language.ts delete mode 100644 dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.html delete mode 100644 dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.scss delete mode 100644 dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.ts delete mode 100644 dmp-frontend/src/app/ui/auth/login/utilities/merge-login.service.ts rename dmp-frontend/src/app/{core/model/dataset-profile-definition => ui/description/editor/description-form/visibility-rules/models}/rule.ts (100%) delete mode 100644 dmp-frontend/src/app/ui/description/listing/criteria/dataset-upload-dialogue/dataset-upload-dialogue.component.html delete mode 100644 dmp-frontend/src/app/ui/description/listing/criteria/dataset-upload-dialogue/dataset-upload-dialogue.component.scss delete mode 100644 dmp-frontend/src/app/ui/description/listing/criteria/dataset-upload-dialogue/dataset-upload-dialogue.component.ts create mode 100644 dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.html rename dmp-frontend/src/app/ui/dmp/{clone/clone-dialog/clone-dialog.component.scss => clone-dialog/dmp-clone-dialog.component.scss} (96%) create mode 100644 dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.ts create mode 100644 dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.editor.model.ts rename dmp-frontend/src/app/ui/dmp/{clone/clone-dialog/clone-dialog.module.ts => clone-dialog/dmp-clone-dialog.module.ts} (71%) delete mode 100644 dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.model.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.model.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.model.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/general-tab/extra-properties-form.model.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/grant-tab/funder-form-model.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab-model.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/grant-tab/project-form-model.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.ts delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.html delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.scss delete mode 100644 dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.ts create mode 100644 dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.html create mode 100644 dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.scss create mode 100644 dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.ts create mode 100644 dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.editor.model.ts create mode 100644 dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.module.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.html delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.scss delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/explore-dataset.module.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/explore-dataset.routing.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.html delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.scss delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.html delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.scss delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.html delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.scss delete mode 100644 dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.html delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.scss delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.html delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.scss delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.html delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.scss delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/explore-dmp.module.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/explore-dmp.routing.ts delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.html delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.scss delete mode 100644 dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.module.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.model.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.module.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/form-focus/form-focus.service.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/mark-for-consideration/mark-for-consideration.service.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/base-table-of-content.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-field/table-of-content-field.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-field/table-of-content-field.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-group/table-of-content-group.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-group/table-of-content-group.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-section/table-of-content-section.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-section/table-of-content-section.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-contents.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-contents.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/toc.component.css delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.html delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.module.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.scss delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rule-source.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rule.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rules-context.ts delete mode 100644 dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service.ts delete mode 100644 dmp-frontend/src/app/ui/misc/help-content/help-content.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/help-content/help-content.module.ts delete mode 100644 dmp-frontend/src/app/ui/misc/navigation/navigation.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/navigation/navigation.component.scss delete mode 100644 dmp-frontend/src/app/ui/misc/navigation/navigation.component.ts delete mode 100644 dmp-frontend/src/app/ui/misc/navigation/navigation.module.ts delete mode 100644 dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/search/search.component.css delete mode 100644 dmp-frontend/src/app/ui/misc/search/search.component.html delete mode 100644 dmp-frontend/src/app/ui/misc/search/search.component.spec.ts delete mode 100644 dmp-frontend/src/app/ui/misc/search/search.component.ts create mode 100644 dmp-frontend/src/app/ui/navbar/user-dialog/user-dialog.component.html rename dmp-frontend/src/app/ui/{misc/navigation => navbar}/user-dialog/user-dialog.component.scss (100%) rename dmp-frontend/src/app/ui/{misc/navigation => navbar}/user-dialog/user-dialog.component.ts (95%) delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.html delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.scss delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.ts delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.html delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.scss delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.ts delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.html delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.scss delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.ts delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.html delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.scss delete mode 100644 dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.ts diff --git a/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java b/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java index 74bb495ae..00e8e4829 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java +++ b/dmp-backend/core/src/main/java/eu/eudat/audit/AuditableAction.java @@ -119,4 +119,8 @@ public class AuditableAction { public static final EventId Tag_Lookup = new EventId(19001, "Tag_Lookup"); public static final EventId Tag_Persist = new EventId(19002, "Tag_Persist"); public static final EventId Tag_Delete = new EventId(19003, "Tag_Delete"); + + public static final EventId FileTransformer_GetAvailableConfigurations = new EventId(20000, "FileTransformer_GetAvailableConfigurations"); + + } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DescriptionController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DescriptionController.java index 434374a42..f30bfef5f 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DescriptionController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DescriptionController.java @@ -198,10 +198,4 @@ public class DescriptionController { return this.descriptionService.export(id, exportType); } - - @GetMapping("/export/formats") - public List getAvailableExportFormats() { - return this.fileTransformerService.getAvailableConfigurations(); - } - } diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DmpController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DmpController.java index 316cd4678..3d2d360c2 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DmpController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/DmpController.java @@ -213,11 +213,6 @@ public class DmpController { return this.dmpService.export(id, exportType); } - @GetMapping("/export/formats") - public List getAvailableExportFormats() { - return this.fileTransformerService.getAvailableConfigurations(); - } - @PostMapping("{id}/invite-users") @Transactional public ResponseEntity inviteUsers(@PathVariable("id") UUID id, @MyValidate @RequestBody DmpUserInvitePersist model) throws InvalidApplicationException, JAXBException { diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/FileTransformerController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/FileTransformerController.java new file mode 100644 index 000000000..2352cd94d --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/FileTransformerController.java @@ -0,0 +1,50 @@ +package eu.eudat.controllers.v2; + +import eu.eudat.audit.AuditableAction; +import eu.eudat.controllers.BaseController; +import eu.eudat.file.transformer.model.file.FileFormat; +import eu.eudat.logic.services.ApiContext; +import eu.eudat.service.transformer.FileTransformerService; +import gr.cite.commons.web.authz.service.AuthorizationService; +import gr.cite.tools.auditing.AuditService; +import gr.cite.tools.data.censor.CensorFactory; +import gr.cite.tools.logging.LoggerService; +import gr.cite.tools.logging.MapLogEntry; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@CrossOrigin +@RequestMapping(value = {"/api/file-transformer/"}) +public class FileTransformerController extends BaseController { + private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(FileTransformerController.class)); + + + private final AuthorizationService authorizationService; + private final FileTransformerService depositService; + private final CensorFactory censorFactory; + private final AuditService auditService; + + @Autowired + public FileTransformerController(ApiContext apiContext, AuthorizationService authorizationService, FileTransformerService depositService, CensorFactory censorFactory, AuditService auditService){ + super(apiContext); + this.authorizationService = authorizationService; + this.depositService = depositService; + this.censorFactory = censorFactory; + this.auditService = auditService; + } + + @GetMapping("/available") + public List getAvailableConfigurations() { + logger.debug(new MapLogEntry("getAvailableConfigurations")); + + List model = this.depositService.getAvailableConfigurations(); + this.auditService.track(AuditableAction.FileTransformer_GetAvailableConfigurations); + //this.auditService.trackIdentity(AuditableAction.IdentityTracking_Action); + + return model; + } +} diff --git a/dmp-frontend/src/app/app-routing.module.ts b/dmp-frontend/src/app/app-routing.module.ts index 99e963b29..9857bb448 100644 --- a/dmp-frontend/src/app/app-routing.module.ts +++ b/dmp-frontend/src/app/app-routing.module.ts @@ -1,10 +1,10 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { ReloadHelperComponent } from '@app/ui/misc/reload-helper/reload-helper.component'; import { Oauth2DialogComponent } from './ui/misc/oauth2-dialog/oauth2-dialog.component'; import { AppComponent } from './app.component'; import { AppPermission } from './core/common/enum/permission.enum'; import { BreadcrumbService } from './ui/misc/breadcrumb/breadcrumb.service'; +import { ReloadHelperComponent } from './ui/misc/reload-helper/reload-helper.component'; const appRoutes: Routes = [ { diff --git a/dmp-frontend/src/app/app.module.ts b/dmp-frontend/src/app/app.module.ts index fe62ce072..ab4bfef83 100644 --- a/dmp-frontend/src/app/app.module.ts +++ b/dmp-frontend/src/app/app.module.ts @@ -13,8 +13,6 @@ import { CoreServiceModule } from '@app/core/core-service.module'; import { NotificationModule } from '@app/library/notification/notification.module'; import { LoginModule } from '@app/ui/auth/login/login.module'; // import { BreadcrumbModule } from '@app/ui/misc/breadcrumb/breadcrumb.module'; -import { HelpContentModule } from '@app/ui/misc/help-content/help-content.module'; -import { NavigationModule } from '@app/ui/misc/navigation/navigation.module'; import { ReloadHelperComponent } from '@app/ui/misc/reload-helper/reload-helper.component'; import { NavbarModule } from '@app/ui/navbar/navbar.module'; import { SidebarModule } from '@app/ui/sidebar/sidebar.module'; @@ -137,9 +135,7 @@ export function InstallationConfigurationFactory(appConfig: ConfigurationService LoginModule, //Ui NotificationModule, - NavigationModule, // BreadcrumbModule, - HelpContentModule, ReactiveFormsModule, FormsModule, NavbarModule, diff --git a/dmp-frontend/src/app/core/common/enum/api-message-code.ts b/dmp-frontend/src/app/core/common/enum/api-message-code.ts deleted file mode 100644 index 1d8c31779..000000000 --- a/dmp-frontend/src/app/core/common/enum/api-message-code.ts +++ /dev/null @@ -1,8 +0,0 @@ -export enum ApiMessageCode { - NO_MESSAGE = 0, - SUCCESS_MESSAGE = 200, - WARN_MESSAGE = 300, - ERROR_MESSAGE = 400, - DEFAULT_ERROR_MESSAGE = 444, - VALIDATION_MESSAGE = 445 -} diff --git a/dmp-frontend/src/app/core/common/enum/auth-provider.ts b/dmp-frontend/src/app/core/common/enum/auth-provider.ts deleted file mode 100644 index 11c36b2a9..000000000 --- a/dmp-frontend/src/app/core/common/enum/auth-provider.ts +++ /dev/null @@ -1,12 +0,0 @@ -export enum AuthProvider { - Google = 1, - Facebook = 2, - Twitter = 3, - LinkedIn = 4, - //NativeLogin=5, - B2Access = 6, - ORCID = 7, - OpenAire = 8, - Configurable = 9, - Zenodo = 10 -} diff --git a/dmp-frontend/src/app/core/common/enum/configurable-provider-type.ts b/dmp-frontend/src/app/core/common/enum/configurable-provider-type.ts deleted file mode 100644 index 8f1a01e8b..000000000 --- a/dmp-frontend/src/app/core/common/enum/configurable-provider-type.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum ConfigurableProviderType { - Oauth2 = "oauth2", - Saml2 = "saml2" -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/common/enum/dataset-profile-combo-box-type.ts b/dmp-frontend/src/app/core/common/enum/dataset-profile-combo-box-type.ts deleted file mode 100644 index ba4b9afe2..000000000 --- a/dmp-frontend/src/app/core/common/enum/dataset-profile-combo-box-type.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum DatasetProfileComboBoxType { - Autocomplete = "autocomplete", - WordList = "wordlist" -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/common/enum/dataset-profile-field-view-style.ts b/dmp-frontend/src/app/core/common/enum/dataset-profile-field-view-style.ts deleted file mode 100644 index f0ed4c47f..000000000 --- a/dmp-frontend/src/app/core/common/enum/dataset-profile-field-view-style.ts +++ /dev/null @@ -1,28 +0,0 @@ -export enum DatasetProfileFieldViewStyle { - TextArea = "textarea", - RichTextArea = "richTextarea", - Table = "table", - Upload = "upload", - BooleanDecision = "booleanDecision", - ComboBox = "combobox", - CheckBox = "checkBox", - FreeText = "freetext", - RadioBox = "radiobox", - DatePicker = "datePicker", - InternalDmpEntities = "internalDmpEntities", - ExternalDatasets = "externalDatasets", - DataRepositories = "dataRepositories", - PubRepositories = "pubRepositories", - JournalRepositories = "journalRepositories", - Taxonomies = "taxonomies", - Licenses = "licenses", - Publications = "publications", - Registries = "registries", - Services = "services", - Tags = "tags", - Researchers = "researchers", - Organizations = "organizations", - DatasetIdentifier = "datasetIdentifier", - Currency = "currency", - Validation = 'validation' -} diff --git a/dmp-frontend/src/app/core/common/enum/dataset-profile-internal-dmp-entities-type.ts b/dmp-frontend/src/app/core/common/enum/dataset-profile-internal-dmp-entities-type.ts deleted file mode 100644 index 22fa64ca5..000000000 --- a/dmp-frontend/src/app/core/common/enum/dataset-profile-internal-dmp-entities-type.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum DatasetProfileInternalDmpEntitiesType { - Researchers = "researchers", - Dmps = "dmps", - Datasets = "datasets" -} diff --git a/dmp-frontend/src/app/core/common/enum/dataset-profile.ts b/dmp-frontend/src/app/core/common/enum/dataset-profile.ts deleted file mode 100644 index fcf5d9224..000000000 --- a/dmp-frontend/src/app/core/common/enum/dataset-profile.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum DatasetProfileEnum { - SAVED = 0, - FINALIZED = 1, - DELETED = 99 -} diff --git a/dmp-frontend/src/app/core/common/enum/dataset-status.ts b/dmp-frontend/src/app/core/common/enum/dataset-status.ts deleted file mode 100644 index adb9461bf..000000000 --- a/dmp-frontend/src/app/core/common/enum/dataset-status.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum DatasetStatus { - Draft = 0, - Finalized = 1, - Canceled = 2, - Deleted = 99 -} diff --git a/dmp-frontend/src/app/core/common/enum/external-dataset-type-enum.ts b/dmp-frontend/src/app/core/common/enum/external-dataset-type-enum.ts deleted file mode 100644 index 241b00ab1..000000000 --- a/dmp-frontend/src/app/core/common/enum/external-dataset-type-enum.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum ExternalDatasetTypeEnum{ - ReusedDataset = "reused_dataset", - ProducedDataset = "produced_dataset", - Other = "other" -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/common/enum/external-dataset-type.ts b/dmp-frontend/src/app/core/common/enum/external-dataset-type.ts deleted file mode 100644 index 5d990dda2..000000000 --- a/dmp-frontend/src/app/core/common/enum/external-dataset-type.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum ExternalDatasetType { - Source = 0, - Output = 1 -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/common/enum/grant-state-type.ts b/dmp-frontend/src/app/core/common/enum/grant-state-type.ts deleted file mode 100644 index 0f2a392f7..000000000 --- a/dmp-frontend/src/app/core/common/enum/grant-state-type.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum GrantStateType { - OnGoing = 0, - Finished = 1 -} diff --git a/dmp-frontend/src/app/core/common/enum/grant-type.ts b/dmp-frontend/src/app/core/common/enum/grant-type.ts deleted file mode 100644 index a61bb1d61..000000000 --- a/dmp-frontend/src/app/core/common/enum/grant-type.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum GrantType { - External = 0, - Internal = 1 -} diff --git a/dmp-frontend/src/app/core/common/enum/project-type.ts b/dmp-frontend/src/app/core/common/enum/project-type.ts deleted file mode 100644 index 3355f80ed..000000000 --- a/dmp-frontend/src/app/core/common/enum/project-type.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum ProjectType { - External = 0, - Internal = 1 -} diff --git a/dmp-frontend/src/app/core/common/enum/recent-activity-order.ts b/dmp-frontend/src/app/core/common/enum/recent-activity-order.ts index 7956e8ee5..461d88ae2 100644 --- a/dmp-frontend/src/app/core/common/enum/recent-activity-order.ts +++ b/dmp-frontend/src/app/core/common/enum/recent-activity-order.ts @@ -1,14 +1,5 @@ export enum RecentActivityOrder { UpdatedAt = 0, Label = 1, - Status = 2, - - //TODO: delete them since these are from the prerefactor model - LABEL = "label", - CREATED = "created", - MODIFIED = "modified", - FINALIZED = "finalizedAt", - PUBLISHED = "publishedAt", - DATASETPUBLISHED = "dmp:publishedAt|join|", - STATUS = "status" + Status = 2 } diff --git a/dmp-frontend/src/app/core/common/enum/role.ts b/dmp-frontend/src/app/core/common/enum/role.ts deleted file mode 100644 index a11abaf81..000000000 --- a/dmp-frontend/src/app/core/common/enum/role.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum Role { - Owner = 0, - Member = 1 -} diff --git a/dmp-frontend/src/app/core/common/enum/save-type.ts b/dmp-frontend/src/app/core/common/enum/save-type.ts deleted file mode 100644 index 855a3109a..000000000 --- a/dmp-frontend/src/app/core/common/enum/save-type.ts +++ /dev/null @@ -1,5 +0,0 @@ -export enum SaveType { - close = 0, - addNew = 1, - finalize = 2 -} diff --git a/dmp-frontend/src/app/core/common/enum/status.ts b/dmp-frontend/src/app/core/common/enum/status.ts deleted file mode 100644 index 536a52ec8..000000000 --- a/dmp-frontend/src/app/core/common/enum/status.ts +++ /dev/null @@ -1,4 +0,0 @@ -export enum Status { - Active = 0, - Inactive = 1 -} diff --git a/dmp-frontend/src/app/core/common/enum/validation-type.ts b/dmp-frontend/src/app/core/common/enum/validation-type.ts index d6a206e28..68429b707 100644 --- a/dmp-frontend/src/app/core/common/enum/validation-type.ts +++ b/dmp-frontend/src/app/core/common/enum/validation-type.ts @@ -6,6 +6,7 @@ export enum ValidationType { URL = 2 } +//TODO: move this export class ValidatorURL { public static regex = 'https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.' + diff --git a/dmp-frontend/src/app/core/core-service.module.ts b/dmp-frontend/src/app/core/core-service.module.ts index f769c318e..ae5601e81 100644 --- a/dmp-frontend/src/app/core/core-service.module.ts +++ b/dmp-frontend/src/app/core/core-service.module.ts @@ -7,61 +7,43 @@ import { AuthService } from './services/auth/auth.service'; import { ContactSupportService } from './services/contact-support/contact-support.service'; import { CultureService } from './services/culture/culture-service'; import { LanguageInfoService } from './services/culture/language-info-service'; -import { CurrencyService } from './services/currency/currency.service'; import { DashboardService } from './services/dashboard/dashboard.service'; -import { DepositRepositoriesService } from './services/deposit-repositories/deposit-repositories.service'; +import { DepositService } from './services/deposit/deposit.service'; import { DescriptionTemplateTypeService } from './services/description-template-type/description-template-type.service'; import { DmpBlueprintService } from './services/dmp/dmp-blueprint.service'; -import { DmpInvitationService } from './services/dmp/dmp-invitation.service'; -import { DmpService, DmpServiceNew } from './services/dmp/dmp.service'; -import { EmailConfirmationService } from './services/email-confirmation/email-confirmation.service'; -import { ExternalDataRepositoryService } from './services/external-sources/data-repository/extternal-data-repository.service'; -import { ExternalDatasetService } from './services/external-sources/dataset/external-dataset.service'; -import { ExternalSourcesConfigurationService } from './services/external-sources/external-sources-configuration.service'; -import { ExternalSourcesService } from './services/external-sources/external-sources.service'; -import { ExternalRegistryService } from './services/external-sources/registry/external-registry.service'; -import { ExternalResearcherService } from './services/external-sources/researcher/external-researcher.service'; -import { ExternalServiceService } from './services/external-sources/service/external-service.service'; -import { FunderService } from './services/funder/funder.service'; -import { GrantFileUploadService } from './services/grant/grant-file-upload.service'; -import { GrantService } from './services/grant/grant.service'; +import { DmpService } from './services/dmp/dmp.service'; import { BaseHttpV2Service } from './services/http/base-http-v2.service'; -import { BaseHttpService } from './services/http/base-http.service'; import { LanguageService } from './services/language/language.service'; import { LockService } from './services/lock/lock.service'; import { LoggingService } from './services/logging/logging-service'; -import { MergeEmailConfirmationService } from './services/merge-email-confirmation/merge-email-confirmation.service'; import { UiNotificationService } from './services/notification/ui-notification-service'; -import { OrganisationService } from './services/organisation/organisation.service'; import { ProgressIndicationService } from './services/progress-indication/progress-indication-service'; -import { ProjectService } from './services/project/project.service'; -import { SearchBarService } from './services/search-bar/search-bar.service'; import { TimezoneService } from './services/timezone/timezone-service'; -import { UnlinkAccountEmailConfirmationService } from './services/unlink-account-email-confirmation/unlink-account-email-confirmation.service'; -import { UserServiceOld } from './services/user/user.service-old'; import { CollectionUtils } from './services/utilities/collection-utils.service'; import { TypeUtils } from './services/utilities/type-utils.service'; import { SpecialAuthGuard } from './special-auth-guard.service'; //import { KeycloakService } from 'keycloak-angular'; +import { CanDeactivateGuard } from '@app/library/deactivate/can-deactivate.guard'; import { HttpErrorHandlingService } from '@common/modules/errors/error-handling/http-error-handling.service'; import { FilterService } from '@common/modules/text-filter/filter-service'; import { DescriptionTemplateService } from './services/description-template/description-template.service'; +import { DescriptionService } from './services/description/description.service'; +import { FileTransformerService } from './services/file-transformer/file-transformer.service'; import { PrincipalService } from './services/http/principal.service'; +import { LanguageHttpService } from './services/language/language.http.service'; +import { MaintenanceService } from './services/maintenance/maintenance.service'; +import { NotificationTemplateService } from './services/notification-template/notification-template.service'; import { ReferenceTypeService } from './services/reference-type/reference-type.service'; import { ReferenceService } from './services/reference/reference.service'; import { SupportiveMaterialService } from './services/supportive-material/supportive-material.service'; +import { TagService } from './services/tag/tag.service'; import { TenantService } from './services/tenant/tenant.service'; import { UserSettingsHttpService } from './services/user-settings/user-settings-http.service'; import { UserSettingsService } from './services/user-settings/user-settings.service'; import { UserService } from './services/user/user.service'; import { FileUtils } from './services/utilities/file-utils.service'; import { QueryParamsService } from './services/utilities/query-params.service'; -import { LanguageHttpService } from './services/language/language.http.service'; -import { DescriptionService } from './services/description/description.service'; -import { MaintenanceService } from './services/maintenance/maintenance.service'; -import { NotificationTemplateService } from './services/notification-template/notification-template.service'; -import { TagService } from './services/tag/tag.service'; -import { CanDeactivateGuard } from '@app/library/deactivate/can-deactivate.guard'; +import { FileTransformerHttpService } from './services/file-transformer/file-transformer.http.service'; // // // This is shared module that provides all the services. Its imported only once on the AppModule. @@ -83,7 +65,6 @@ export class CoreServiceModule { providers: [ AuthService, CookieService, - BaseHttpService, BaseHttpV2Service, AdminAuthGuard, SpecialAuthGuard, @@ -95,34 +76,14 @@ export class CoreServiceModule { UiNotificationService, ProgressIndicationService, LoggingService, - SearchBarService, DashboardService, - GrantService, - ProjectService, - FunderService, - GrantFileUploadService, - DmpService, - DepositRepositoriesService, + DepositService, DmpBlueprintService, - ExternalSourcesService, - ExternalSourcesConfigurationService, - ExternalDatasetService, - ExternalDataRepositoryService, - ExternalRegistryService, - ExternalResearcherService, - ExternalServiceService, - UserServiceOld, - DmpInvitationService, - OrganisationService, - EmailConfirmationService, ContactSupportService, LanguageService, LockService, PrincipalService, SupportiveMaterialService, - CurrencyService, - MergeEmailConfirmationService, - UnlinkAccountEmailConfirmationService, LanguageInfoService, PrefillingService, DescriptionTemplateTypeService, @@ -138,12 +99,14 @@ export class CoreServiceModule { TenantService, UserService, LanguageHttpService, - DmpServiceNew, + DmpService, DescriptionService, MaintenanceService, NotificationTemplateService, TagService, - CanDeactivateGuard + CanDeactivateGuard, + FileTransformerService, + FileTransformerHttpService ], }; } diff --git a/dmp-frontend/src/app/core/model/admin/dataset-profile/dataset-profile.ts b/dmp-frontend/src/app/core/model/admin/dataset-profile/dataset-profile.ts deleted file mode 100644 index 68b0d64db..000000000 --- a/dmp-frontend/src/app/core/model/admin/dataset-profile/dataset-profile.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { ValidationType } from "../../../common/enum/validation-type"; -import { UserInfoListingModel } from "../../user/user-info-listing"; - -export interface DatasetProfile { - label: string; - type: string; - sections: Section[]; - pages: Page[]; - status: number; - version: number; - description: string; - language: string; - users: UserInfoListingModel[]; -} - -export interface Page { - id: string; - ordinal: number; - title: string; -} - -export interface Section { - sections: Section[]; - fieldSets: FieldSet[]; - defaultVisibility: boolean; - page: string; - ordinal: number; - id: string; - title: string; - description: string; -} - -export interface FieldSet { - id: string; - ordinal: number; - multiplicity: Multiplicity; - title: string; - description: string; - extendedDescription: string; - additionalInformation:string; - hasCommentField: boolean; - fields: Field[]; -} - -export interface Multiplicity { - min: number; - max: number; - placeholder: string; - tableView: boolean; -} - -export interface Field { - id: string; - ordinal: number; - value: string; - viewStyle: ViewStyle; - datatype: string; - page: number; - defaultValue: DefaultValue; - data: any; - visible: Visibility; - validations: ValidationType[]; - schematics: string[]; - export: boolean; -} - -export interface ViewStyle { - renderStyle: string; - cssClass: string; -} - -export interface DefaultValue { - type: string; - value: string; -} - - -export interface Visibility { - rules: Rule[]; - style: string; -} - -export interface Rule { - ruleType: string; - target: string; - ruleStyle: string; - value: string; - valueType: string; -} diff --git a/dmp-frontend/src/app/core/model/auth/principal.ts b/dmp-frontend/src/app/core/model/auth/principal.ts index 27609c091..380b8d68c 100644 --- a/dmp-frontend/src/app/core/model/auth/principal.ts +++ b/dmp-frontend/src/app/core/model/auth/principal.ts @@ -4,14 +4,13 @@ import { Guid } from "@common/types/guid"; export interface AppAccount { isAuthenticated: boolean; - // permissions: AppPermission[]; roles: AppRole[]; permissions: AppPermission[]; principal: AppPrincipalInfo; profile: UserProfileInfo; } -export interface AppPrincipalInfo{ +export interface AppPrincipalInfo { subject: Guid; name: string; scope: string[]; @@ -22,6 +21,7 @@ export interface AppPrincipalInfo{ userId: Guid; more: Record } + export interface UserProfileInfo { culture: string; language: string; diff --git a/dmp-frontend/src/app/core/model/base-form-model.ts b/dmp-frontend/src/app/core/model/base-form-model.ts deleted file mode 100644 index d16130d72..000000000 --- a/dmp-frontend/src/app/core/model/base-form-model.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { UntypedFormBuilder } from '@angular/forms'; -export abstract class BaseFormModel { - public formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); -} diff --git a/dmp-frontend/src/app/core/model/dashboard/search-bar-item.ts b/dmp-frontend/src/app/core/model/dashboard/search-bar-item.ts deleted file mode 100644 index 7ee083226..000000000 --- a/dmp-frontend/src/app/core/model/dashboard/search-bar-item.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { SearchBarType } from "../../../ui/misc/navigation/navigation.component"; - -export interface SearchBarItem { - id: string; - label: string; - type: SearchBarType; - isPublished: boolean; -} diff --git a/dmp-frontend/src/app/core/model/data-repository/data-repository.ts b/dmp-frontend/src/app/core/model/data-repository/data-repository.ts deleted file mode 100644 index 08c8582c2..000000000 --- a/dmp-frontend/src/app/core/model/data-repository/data-repository.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface DataRepositoryModel { - id: string; - name: string; - abbreviation: string; - uri: string; - pid: string; - info: string; - source: string; -} diff --git a/dmp-frontend/src/app/core/model/data-table/column-ordering.ts b/dmp-frontend/src/app/core/model/data-table/column-ordering.ts deleted file mode 100644 index 3d86f8fd2..000000000 --- a/dmp-frontend/src/app/core/model/data-table/column-ordering.ts +++ /dev/null @@ -1,3 +0,0 @@ -export class ColumnOrdering { - public fields: Array = new Array(); -} diff --git a/dmp-frontend/src/app/core/model/data-table/data-table-data.ts b/dmp-frontend/src/app/core/model/data-table/data-table-data.ts deleted file mode 100644 index f5a1e78d8..000000000 --- a/dmp-frontend/src/app/core/model/data-table/data-table-data.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class DataTableData { - data = new Array(); - totalCount = 0; -} diff --git a/dmp-frontend/src/app/core/model/data-table/data-table-request.ts b/dmp-frontend/src/app/core/model/data-table/data-table-request.ts deleted file mode 100644 index 51d2a4b69..000000000 --- a/dmp-frontend/src/app/core/model/data-table/data-table-request.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { RequestItem } from '../../query/request-item'; -import { ColumnOrdering } from './column-ordering'; - -export class DataTableRequest extends RequestItem { - offset = 0; - length = 0; - public orderings: ColumnOrdering; - constructor(offset: number, length: number, orderings: ColumnOrdering) { - super(); - this.length = length; - this.offset = offset; - this.orderings = orderings; - } -} - -export class DataTableMultiTypeRequest extends RequestItem { - dmpOffset = 0; - datasetOffset = 0; - length = 0; - public orderings: ColumnOrdering; - constructor(dmpOffset: number, datasetOffset: number, length: number, orderings: ColumnOrdering) { - super(); - this.length = length; - this.dmpOffset = dmpOffset; - this.datasetOffset = datasetOffset; - this.orderings = orderings; - } -} diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/auth-type.enum.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/auth-type.enum.ts deleted file mode 100644 index 9f26507c7..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/auth-type.enum.ts +++ /dev/null @@ -1,3 +0,0 @@ -export enum AuthType { - BEARER = 'Bearer' -} diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/composite-field.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/composite-field.ts deleted file mode 100644 index 019d1818b..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/composite-field.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Field } from './field'; -import { Multiplicity } from './multiplicity'; - -export interface CompositeField { - fields: Array; - ordinal: number; - id: string; - numbering: string; - multiplicity: Multiplicity; - multiplicityItems: Array; - title: string; - description: string; - extendedDescription: string; - additionalInformation:string; - hasCommentField: boolean; - commentFieldValue: string; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/dataset-profile-definition.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/dataset-profile-definition.ts deleted file mode 100644 index 00edec7bb..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/dataset-profile-definition.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Page } from "./page"; -import { Rule } from "./rule"; - -export interface DatasetProfileDefinitionModel { - status: number; - pages: Page[]; - rules: Rule[]; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/default-value.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/default-value.ts deleted file mode 100644 index de586f657..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/default-value.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DefaultValue { - type: string; - value: string; -} diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts deleted file mode 100644 index 6225f46bc..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts +++ /dev/null @@ -1,150 +0,0 @@ -import { ExternalDatasetTypeEnum } from "@app/core/common/enum/external-dataset-type-enum"; -import { DatasetProfileComboBoxType } from "../../../common/enum/dataset-profile-combo-box-type"; -import { DatasetProfileInternalDmpEntitiesType } from "../../../common/enum/dataset-profile-internal-dmp-entities-type"; - -export interface FieldData { - label: string; -} - -export interface AutoCompleteFieldData extends FieldData { - type: DatasetProfileComboBoxType; - autoCompleteSingleDataList: AutoCompleteSingleData[]; - multiAutoComplete: boolean; -} - -export interface AuthAutoCompleteData extends FieldData { - url: string; - method: string; - body: string; - path: string; - type: string; -} - -export interface AutoCompleteSingleData extends FieldData { - url: string; - optionsRoot: string; - autoCompleteOptions: FieldDataOption; - autocompleteType: number; - hasAuth: boolean; - method: string; - auth: AuthAutoCompleteData; -} - -export interface CheckBoxFieldData extends FieldData { - -} - -export interface BooleanDecisionFieldData extends FieldData { - -} - -export interface FreeTextFieldData extends FieldData { - -} - -export interface RadioBoxFieldData extends FieldData { - options: Array; -} - -export interface TextAreaFieldData extends FieldData { - -} - -export interface RichTextAreaFieldData extends FieldData { - -} - -// export interface TableFieldData extends FieldData { -// headers: string[]; -// rows: Array; -// } - -export interface UploadFieldData extends FieldData { - types: Array; - maxFileSizeInMB: number; -} - -export interface WordListFieldData extends FieldData { - type: DatasetProfileComboBoxType; - options: Array; - multiList: boolean; -} - -export interface FieldDataOption extends FieldData { - label: string; - value: string; - source: string; -} - -export interface DatePickerFieldData extends FieldData { - -} - -export interface ResearchersAutoCompleteFieldData extends FieldData { - type: DatasetProfileInternalDmpEntitiesType; - multiAutoComplete: boolean; -} - -export interface DatasetsAutoCompleteFieldData extends FieldData { - type: DatasetProfileInternalDmpEntitiesType; - multiAutoComplete: boolean; - autoCompleteType: number; -} - -export interface DmpsAutoCompleteFieldData extends FieldData { - type: DatasetProfileInternalDmpEntitiesType; - multiAutoComplete: boolean; -} - -export interface ExternalDatasetsFieldData extends FieldData { - multiAutoComplete: boolean; - type?: ExternalDatasetTypeEnum; -} - -export interface DataRepositoriesFieldData extends FieldData { - multiAutoComplete: boolean; -} - -export interface TaxonomiesFieldData extends FieldData { - multiAutoComplete: boolean; -} - -export interface LicensesFieldData extends FieldData { - multiAutoComplete: boolean; -} - -export interface PublicationsFieldData extends FieldData { - multiAutoComplete: boolean; -} - -export interface RegistriesFieldData extends FieldData { - multiAutoComplete: boolean; -} - -export interface ServicesFieldData extends FieldData { - multiAutoComplete: boolean; -} - -export interface TagsFieldData extends FieldData { - -} - -export interface ResearchersFieldData extends FieldData { - multiAutoComplete: boolean; -} - -export interface OrganizationsFieldData extends AutoCompleteFieldData { - -} - -export interface DatasetIdentifierFieldData extends FieldData { - -} - -export interface CurrencyFieldData extends FieldData { - -} - -export interface ValidationFieldData extends FieldData { - -} diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-group.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/field-group.ts deleted file mode 100644 index a4ac67cf2..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-group.ts +++ /dev/null @@ -1,51 +0,0 @@ -// import { FormGroup } from "@angular/forms"; -// import { JsonSerializer } from "../../../common/types/json/json-serializer"; -// import { Serializable } from "../../../common/types/json/serializable"; -// import { BaseModel } from "../../../models/BaseModel"; -// import { CompositeField } from "./composite-field"; - -// export class FieldGroup extends BaseModel implements Serializable { -// public id: string; -// public title: string; -// public section: string; -// public value: string; -// public description: string; -// public extendedDescription: string; -// public defaultVisibility: boolean; -// public page: number; -// public compositeFields: Array = new Array(); - -// fromJSONObject(item: any): FieldGroup { -// this.id = item.id; -// this.title = item.title; -// this.value = item.value; -// this.description = item.description; -// this.extendedDescription = item.extendedDescription; -// this.defaultVisibility = item.defaultVisibility; -// this.page = item.page; -// this.compositeFields = new JsonSerializer(CompositeField).fromJSONArray(item.compositeFields); -// return this; -// } - -// buildForm(): FormGroup { -// const formGroup: FormGroup = this.formBuilder.group({ -// /* id: [this.id], -// title: [this.title], -// value: [this.value], -// description: [this.description], -// extendedDescription: [this.extendedDescription], -// defaultVisibility: [this.defaultVisibility], -// page: [this.page] */ -// }); -// const compositeFieldsFormArray = new Array(); -// if (this.compositeFields) { -// this.compositeFields.forEach(item => { -// const form: FormGroup = item.buildForm(); -// compositeFieldsFormArray.push(form); -// }); -// } -// formGroup.addControl('compositeFields', this.formBuilder.array(compositeFieldsFormArray)); - -// return formGroup; -// } -// } diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/field.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/field.ts deleted file mode 100644 index d3168db86..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/field.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ValidationType } from "../../common/enum/validation-type"; -import { DefaultValue } from "./default-value"; -import { Multiplicity } from "./multiplicity"; -import { ViewStyle } from "./view-style"; - -export interface Field { - - id: string; - title: string; - value: any; - defaultValue: DefaultValue; - description: string; - numbering: string; - extendedDescription: string; - additionalInformation: string; - viewStyle: ViewStyle; - defaultVisibility: boolean; - page: number; - multiplicity: Multiplicity; - multiplicityItems: Array; - data: any; - validations: Array; - validationRequired; - validationURL; - ordinal: number; -} diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/html-method.enum.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/html-method.enum.ts deleted file mode 100644 index ed63f9540..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/html-method.enum.ts +++ /dev/null @@ -1,6 +0,0 @@ -export enum HtmlMethod { - GET = 'GET', - POST = 'POST', - PUT = 'PUT', - PATCH = 'PATCH' -} diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/multiplicity.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/multiplicity.ts deleted file mode 100644 index 65af94550..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/multiplicity.ts +++ /dev/null @@ -1,9 +0,0 @@ - - -export interface Multiplicity { - min: number; - max: number; - placeholder: string; - tableView: boolean; -} - diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/page.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/page.ts deleted file mode 100644 index b8c05a808..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/page.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Section } from "./section"; - -export interface Page { - ordinal: number; - title: string; - sections: Array
; -} diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/section.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/section.ts deleted file mode 100644 index 8c52b1c4f..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/section.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { CompositeField } from "./composite-field"; - -export interface Section { - sections: Array
; - defaultVisibility: boolean; - page: number; - numbering: string; - ordinal: number; - id: string; - title: string; - description: string; - compositeFields: Array; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/view-style.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/view-style.ts deleted file mode 100644 index daaba384c..000000000 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/view-style.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface ViewStyle { - cssClass: string; - renderStyle: string; -} diff --git a/dmp-frontend/src/app/core/model/dataset/dataset-id.model.ts b/dmp-frontend/src/app/core/model/dataset/dataset-id.model.ts deleted file mode 100644 index 3396be391..000000000 --- a/dmp-frontend/src/app/core/model/dataset/dataset-id.model.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { UntypedFormGroup, UntypedFormBuilder } from '@angular/forms'; -import { isNullOrUndefined } from '@app/utilities/enhancers/utils'; - -export class DatasetIdModel { - identifier: string; - type: string; - - constructor(data: any) { - try{ - const parsed = JSON.parse(data); - if (!isNullOrUndefined(parsed)) { - if(typeof parsed !== 'string'){ - this.identifier = parsed.identifier; - this.type = parsed.type; - } - else{ - const parsedObjectFromString = JSON.parse(parsed); - this.identifier = parsedObjectFromString.identifier; - this.type = parsedObjectFromString.type; - } - } - } - catch(error){ - console.warn('Could not parse DatasetIdModel'); - } - } - - buildForm(): UntypedFormGroup { - return new UntypedFormBuilder().group({ - identifier: [this.identifier], - type: [this.type] - }); - } -} diff --git a/dmp-frontend/src/app/core/model/dataset/dataset-listing.ts b/dmp-frontend/src/app/core/model/dataset/dataset-listing.ts deleted file mode 100644 index 377c8a2bf..000000000 --- a/dmp-frontend/src/app/core/model/dataset/dataset-listing.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { DatasetProfileModel } from './dataset-profile'; - -export interface DatasetListingModel { - id: string; - label: string; - dmp: String; - dmpId: String; - grant: String; - grantId: String; - grantAbbreviation: String; - profile: DatasetProfileModel; - dataRepositories: String; - registries: String; - services: String; - description: String; - status: number; - created: Date; - modified: Date; - finalizedAt: Date; - dmpPublishedAt?: Date; - version: number; - users: any[]; - public: boolean; - isProfileLatestVersion: boolean; -} diff --git a/dmp-frontend/src/app/core/model/dataset/dataset-overview.ts b/dmp-frontend/src/app/core/model/dataset/dataset-overview.ts deleted file mode 100644 index 3c4cdbb6d..000000000 --- a/dmp-frontend/src/app/core/model/dataset/dataset-overview.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { DatasetProfileModel } from "./dataset-profile"; -import { GrantOverviewModel } from '../grant/grant-overview'; -import { DmpOverviewModel } from '../dmp/dmp-overview'; - -export interface DatasetOverviewModel { - id: string; - label: string; - status: number; - datasetTemplate: DatasetProfileModel; - - users: any[]; - dmp: DmpOverviewModel; - grant: GrantOverviewModel; - description: String; - public: boolean; - modified: Date; -} diff --git a/dmp-frontend/src/app/core/model/dataset/dataset-profile.ts b/dmp-frontend/src/app/core/model/dataset/dataset-profile.ts deleted file mode 100644 index d67dce6b0..000000000 --- a/dmp-frontend/src/app/core/model/dataset/dataset-profile.ts +++ /dev/null @@ -1,34 +0,0 @@ - -export interface DatasetProfileModel { - id: string; - label: string; - description: string; -} - -// export class DatasetProfileModel implements Serializable { -// public id: String; -// public label: String; - -// fromJSONObject(item: any): DatasetProfileModel { -// this.id = item.id; -// this.label = item.label; - -// return this; -// } - -// buildForm(context: ValidationContext = null, disabled: boolean = false): FormGroup { -// if (context == null) { context = this.createValidationContext(); } - -// const formGroup = new FormBuilder().group({ -// id: [{ value: this.id, disabled: disabled }], -// }); - -// return formGroup; -// } - -// createValidationContext(): ValidationContext { -// const baseContext: ValidationContext = new ValidationContext(); -// //baseContext.validation.push({ key: 'id', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'id')] }); -// return baseContext; -// } -// } diff --git a/dmp-frontend/src/app/core/model/dataset/dataset-url-listing.ts b/dmp-frontend/src/app/core/model/dataset/dataset-url-listing.ts deleted file mode 100644 index fd2c53dee..000000000 --- a/dmp-frontend/src/app/core/model/dataset/dataset-url-listing.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DatasetUrlListing { - label: String; - url: String; -} diff --git a/dmp-frontend/src/app/core/model/dataset/dataset-wizard.ts b/dmp-frontend/src/app/core/model/dataset/dataset-wizard.ts deleted file mode 100644 index ccbe8d43c..000000000 --- a/dmp-frontend/src/app/core/model/dataset/dataset-wizard.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { DataRepositoryModel } from "../data-repository/data-repository"; -import { DatasetProfileDefinitionModel } from "../dataset-profile-definition/dataset-profile-definition"; -import { DmpModel } from "../dmp/dmp"; -import { ExternalDatasetModel } from "../external-dataset/external-dataset"; -import { RegistryModel } from "../registry/registry"; -import { ServiceModel } from "../service/service"; -import { TagModel } from "../tag/tag"; -import { DatasetProfileModel } from "./dataset-profile"; - -export interface DatasetWizardModel { - id?: string; - label?: string; - uri?: String; - description?: String; - status?: number; - dmp?: DmpModel; - dmpSectionIndex?: number; - datasetProfileDefinition?: DatasetProfileDefinitionModel; - registries?: RegistryModel[]; - services?: ServiceModel[]; - dataRepositories?: DataRepositoryModel[]; - tags?: TagModel[]; - externalDatasets?: ExternalDatasetModel[]; - profile?: DatasetProfileModel; - isProfileLatestVersion?: Boolean; - modified?: Date; -} diff --git a/dmp-frontend/src/app/core/model/dataset/dataset.ts b/dmp-frontend/src/app/core/model/dataset/dataset.ts deleted file mode 100644 index 91214d136..000000000 --- a/dmp-frontend/src/app/core/model/dataset/dataset.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { DataRepositoryModel } from '../data-repository/data-repository'; -import { RegistryModel } from '../registry/registry'; -import { ServiceModel } from '../service/service'; - -export interface DatasetModel { - id: String; - label: String; - profile: String; - uri: String; - status: String; - description: String; - services: ServiceModel[]; - registries: RegistryModel[]; - dataRepositories: DataRepositoryModel[]; -} -// export class DatasetModel implements Serializable { -// public id: String; -// public label: String; -// public profile: String; -// public uri: String; -// public status: String; -// public description: String; -// public services: ServiceModel[] = []; -// public registries: RegistryModel[] = []; -// public dataRepositories: DataRepositoryModel[] = []; - -// public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - -// fromJSONObject(item: any): DatasetModel { -// this.id = item.id; -// this.label = item.label; -// this.profile = item.profile; -// this.uri = item.uri; -// this.status = item.status; -// this.description = item.description; -// this.services = new JsonSerializer(ServiceModel).fromJSONArray(item.services); -// this.registries = new JsonSerializer(RegistryModel).fromJSONArray(item.registries); -// this.dataRepositories = new JsonSerializer(DataRepositoryModel).fromJSONArray(item.dataRepositories); - -// return this; -// } - -// buildForm(context: ValidationContext = null, disabled: boolean = false): FormGroup { -// if (context == null) { context = this.createValidationContext(); } - -// const formGroup = new FormBuilder().group({ -// label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], -// profile: [{ value: this.profile, disabled: disabled }, context.getValidation('profile').validators], -// uri: [{ value: this.uri, disabled: disabled }, context.getValidation('uri').validators], -// status: [{ value: this.status, disabled: disabled }, context.getValidation('status').validators], -// description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], -// services: [{ value: this.services, disabled: disabled }, context.getValidation('services').validators], -// registries: [{ value: this.registries, disabled: disabled }, context.getValidation('registries').validators], -// dataRepositories: [{ value: this.dataRepositories, disabled: disabled }, context.getValidation('dataRepositories').validators] -// }); - -// return formGroup; -// } - -// createValidationContext(): ValidationContext { -// const baseContext: ValidationContext = new ValidationContext(); -// baseContext.validation.push({ key: 'label', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'label')] }); -// baseContext.validation.push({ key: 'profile', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'profile')] }); -// baseContext.validation.push({ key: 'uri', validators: [BackendErrorValidator(this.validationErrorModel, 'uri')] }); -// baseContext.validation.push({ key: 'status', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'status')] }); -// baseContext.validation.push({ key: 'description', validators: [BackendErrorValidator(this.validationErrorModel, 'description')] }); -// baseContext.validation.push({ key: 'services', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'services')] }); -// baseContext.validation.push({ key: 'registries', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'registries')] }); -// baseContext.validation.push({ key: 'dataRepositories', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'dataRepositories')] }); - -// return baseContext; -// } -// } diff --git a/dmp-frontend/src/app/core/model/dataset/datasets-toBeFinalized.ts b/dmp-frontend/src/app/core/model/dataset/datasets-toBeFinalized.ts deleted file mode 100644 index 01abafb22..000000000 --- a/dmp-frontend/src/app/core/model/dataset/datasets-toBeFinalized.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface DatasetsToBeFinalized { - uuids: string[]; -} diff --git a/dmp-frontend/src/app/core/model/dataset/prefilling.ts b/dmp-frontend/src/app/core/model/dataset/prefilling.ts deleted file mode 100644 index 978dfe1eb..000000000 --- a/dmp-frontend/src/app/core/model/dataset/prefilling.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface Prefilling { - pid: string; - name: string; - data: any; - key: string; - tag: string; -} diff --git a/dmp-frontend/src/app/core/model/deposit/deposit-configuration.ts b/dmp-frontend/src/app/core/model/deposit/deposit-configuration.ts index fe92ddd5b..73438e6cf 100644 --- a/dmp-frontend/src/app/core/model/deposit/deposit-configuration.ts +++ b/dmp-frontend/src/app/core/model/deposit/deposit-configuration.ts @@ -1,6 +1,6 @@ import { DepositConfigurationStatus } from "@app/core/common/enum/deposit-configuration-status"; -export class DepositConfigurationModel { +export class DepositConfiguration { depositType: DepositConfigurationStatus; repositoryId: string; repositoryAuthorizationUrl: string; diff --git a/dmp-frontend/src/app/core/model/deposit/deposit-request.ts b/dmp-frontend/src/app/core/model/deposit/deposit-request.ts index 10ee13980..156b6460a 100644 --- a/dmp-frontend/src/app/core/model/deposit/deposit-request.ts +++ b/dmp-frontend/src/app/core/model/deposit/deposit-request.ts @@ -1,10 +1,12 @@ +import { Guid } from "@common/types/guid"; + export class DepositRequest { repositoryId: string; - dmpId: string; - accessToken: string; + dmpId: Guid; + accessToken: String; } -export class DepositCode { +export class DepositAuthenticateRequest { repositoryId: string; code: string; } \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/description/description.ts b/dmp-frontend/src/app/core/model/description/description.ts index 3c10d2226..1dc6a8b6f 100644 --- a/dmp-frontend/src/app/core/model/description/description.ts +++ b/dmp-frontend/src/app/core/model/description/description.ts @@ -2,13 +2,11 @@ import { DescriptionStatus } from "@app/core/common/enum/description-status"; import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model"; import { Guid } from "@common/types/guid"; import { DescriptionTemplate } from "../description-template/description-template"; -import { Dmp, DmpDescriptionTemplate, DmpDescriptionTemplatePersist } from "../dmp/dmp"; +import { Dmp, DmpDescriptionTemplate } from "../dmp/dmp"; import { Reference, ReferencePersist } from "../reference/reference"; import { Tag } from "../tag/tag"; import { User } from "../user/user"; - - export interface Description extends BaseEntity { label: string; properties: PropertyDefinition; diff --git a/dmp-frontend/src/app/core/model/dmp-blueprint/dmp-blueprint.ts b/dmp-frontend/src/app/core/model/dmp-blueprint/dmp-blueprint.ts index 8d09fc90f..85d0c1d20 100644 --- a/dmp-frontend/src/app/core/model/dmp-blueprint/dmp-blueprint.ts +++ b/dmp-frontend/src/app/core/model/dmp-blueprint/dmp-blueprint.ts @@ -1,9 +1,9 @@ +import { DmpBlueprintExtraFieldDataType } from "@app/core/common/enum/dmp-blueprint-field-type"; import { DmpBlueprintSectionFieldCategory } from "@app/core/common/enum/dmp-blueprint-section-field-category"; import { DmpBlueprintStatus } from "@app/core/common/enum/dmp-blueprint-status"; +import { DmpBlueprintSystemFieldType } from "@app/core/common/enum/dmp-blueprint-system-field-type"; import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model"; import { Guid } from "@common/types/guid"; -import { DmpBlueprintExtraFieldDataType } from "@app/core/common/enum/dmp-blueprint-field-type"; -import { DmpBlueprintSystemFieldType } from "@app/core/common/enum/dmp-blueprint-system-field-type"; export interface DmpBlueprint extends BaseEntity { diff --git a/dmp-frontend/src/app/core/model/dmp/cost.ts b/dmp-frontend/src/app/core/model/dmp/cost.ts deleted file mode 100644 index ab432f02b..000000000 --- a/dmp-frontend/src/app/core/model/dmp/cost.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { FormGroup, FormBuilder, Validators } from '@angular/forms'; -import { ValidationContext } from '@common/forms/validation/validation-context'; - -export interface CostModel { - code: string; - description: string; - title: string; - value: number; -} 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 deleted file mode 100644 index 22e5dcba0..000000000 --- a/dmp-frontend/src/app/core/model/dmp/dmp-create-wizard/dmp-create-wizard-form.model.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms"; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; -import { DmpModel } from '@app/core/model/dmp/dmp'; -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'; - -export class DmpCreateWizardFormModel { - dmp: DmpModel; - datasetProfile: DatasetProfileModel; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - - fromModel(item: DmpCreateWizardFormModel): DmpCreateWizardFormModel { - this.dmp = item.dmp; - this.datasetProfile = item.datasetProfile; - - return this; - } - - buildForm(context: ValidationContext = null): UntypedFormGroup { - if (context == null) { context = this.createValidationContext(); } - const formBuilder = new UntypedFormBuilder(); - const formGroup = formBuilder.group({ - dmp: [this.dmp, context.getValidation('dmp').validators], - datasetProfile: [this.datasetProfile, context.getValidation('datasetProfile').validators], - }); - - return formGroup; - } - - createValidationContext(): ValidationContext { - const baseContext: ValidationContext = new ValidationContext(); - baseContext.validation.push({ key: 'datasetProfile', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'datasetProfile')] }); - baseContext.validation.push({ key: 'dmp', validators: [BackendErrorValidator(this.validationErrorModel, 'dmp')] }); - - return baseContext; - } -} diff --git a/dmp-frontend/src/app/core/model/dmp/dmp-dataset-profile/dmp-dataset-profile-sections-form.model.ts b/dmp-frontend/src/app/core/model/dmp/dmp-dataset-profile/dmp-dataset-profile-sections-form.model.ts deleted file mode 100644 index 9e5f9a355..000000000 --- a/dmp-frontend/src/app/core/model/dmp/dmp-dataset-profile/dmp-dataset-profile-sections-form.model.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { UntypedFormGroup, UntypedFormBuilder } 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"; - -export class DmpDatasetProfileSectionsFormModel { - public dmpSectionIndex: number[] = []; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - - fromModel(item: any): DmpDatasetProfileSectionsFormModel { - this.dmpSectionIndex = item.dmpSectionIndex; - return this; - } - - buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { - if (context == null) { context = this.createValidationContext(); } - const formGroup = new UntypedFormBuilder().group({ - language: [{ value: this.dmpSectionIndex, disabled: disabled }, context.getValidation('dmpSectionIndex').validators], - }); - return formGroup; - } - - createValidationContext(): ValidationContext { - const baseContext: ValidationContext = new ValidationContext(); - baseContext.validation.push({ key: 'dmpSectionIndex', validators: [BackendErrorValidator(this.validationErrorModel, 'dmpSectionIndex')] }); - return baseContext; - } -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/dmp/dmp-dataset-profile/dmp-dataset-profile.ts b/dmp-frontend/src/app/core/model/dmp/dmp-dataset-profile/dmp-dataset-profile.ts deleted file mode 100644 index 043f4d525..000000000 --- a/dmp-frontend/src/app/core/model/dmp/dmp-dataset-profile/dmp-dataset-profile.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { DmpDatasetProfileSectionsFormModel } from "./dmp-dataset-profile-sections-form.model"; - -export interface DmpDatasetProfile { - id: string; - descriptionTemplateId: string; - label: string; - data: DmpDatasetProfileSectionsFormModel; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/dmp/dmp-dynamic-field-dependency.ts b/dmp-frontend/src/app/core/model/dmp/dmp-dynamic-field-dependency.ts deleted file mode 100644 index 36ec05572..000000000 --- a/dmp-frontend/src/app/core/model/dmp/dmp-dynamic-field-dependency.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DmpDynamicFieldDependency { - id: string; - queryProperty: string; -} diff --git a/dmp-frontend/src/app/core/model/dmp/dmp-dynamic-field.ts b/dmp-frontend/src/app/core/model/dmp/dmp-dynamic-field.ts deleted file mode 100644 index 08f932d7e..000000000 --- a/dmp-frontend/src/app/core/model/dmp/dmp-dynamic-field.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DmpDynamicFieldDependency } from "./dmp-dynamic-field-dependency"; - -export interface DmpDynamicField { - id: string; - name: string; - required: boolean; - queryProperty; - value: string; - dependencies: Array; -} diff --git a/dmp-frontend/src/app/core/model/dmp/dmp-extra-field.ts b/dmp-frontend/src/app/core/model/dmp/dmp-extra-field.ts deleted file mode 100644 index 4d789e64d..000000000 --- a/dmp-frontend/src/app/core/model/dmp/dmp-extra-field.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DmpExtraField { - id: string; - value: string; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/dmp/dmp-listing.ts b/dmp-frontend/src/app/core/model/dmp/dmp-listing.ts deleted file mode 100644 index b7423fa67..000000000 --- a/dmp-frontend/src/app/core/model/dmp/dmp-listing.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { DmpStatus } from "../../common/enum/dmp-status"; - -export interface DmpListingModel { - id: string; - label: string; - description: String; - status: DmpStatus; - grant: String; - grantId: String; - grantAbbreviation: String; - profile: String; - creationTime: string; - modifiedTime: string; - publishedAt: Date; - finalizedAt: Date; - organisations: String; - groupId: string; - version: number; - datasets: any[]; - users: any[]; - public: boolean; -} diff --git a/dmp-frontend/src/app/core/model/dmp/dmp-overview.ts b/dmp-frontend/src/app/core/model/dmp/dmp-overview.ts deleted file mode 100644 index 9dfff2490..000000000 --- a/dmp-frontend/src/app/core/model/dmp/dmp-overview.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { OrganizationModel } from "../organisation/organization"; -import { UserInfoListingModel } from "../user/user-info-listing"; -import { ResearcherModel } from "../researcher/researcher"; -import { GrantOverviewModel } from "../grant/grant-overview"; -import { DatasetOverviewModel } from "../dataset/dataset-overview"; -import { DoiModel } from "../doi/doi"; - -export interface DmpOverviewModel { - id: string; - label: string; - profile: string; - creationTime: string; - modifiedTime: string; - version: number; - status: number; - isPublic: boolean; - groupId: string; - description: string; - grant: GrantOverviewModel; - users: UserInfoListingModel[]; - organisations: OrganizationModel[]; - datasets: DatasetOverviewModel[]; - datasetsToBeFinalized: string[]; - researchers: ResearcherModel[]; - finalizedAt: Date; - publishedAt: Date; - doi: string; - dois: DoiModel[]; -} diff --git a/dmp-frontend/src/app/core/model/dmp/dmp-reference.ts b/dmp-frontend/src/app/core/model/dmp/dmp-reference.ts index bbe9edd8f..df308ce03 100644 --- a/dmp-frontend/src/app/core/model/dmp/dmp-reference.ts +++ b/dmp-frontend/src/app/core/model/dmp/dmp-reference.ts @@ -1,10 +1,7 @@ -import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model"; -import { Guid } from "@common/types/guid"; +import { BaseEntity } from "@common/base/base-entity.model"; import { Reference } from "../reference/reference"; import { Dmp } from "./dmp"; - - export interface DmpReference extends BaseEntity { dmp?: Dmp; reference?: Reference; diff --git a/dmp-frontend/src/app/core/model/dmp/dmp.ts b/dmp-frontend/src/app/core/model/dmp/dmp.ts index a90ca5e45..764d103a7 100644 --- a/dmp-frontend/src/app/core/model/dmp/dmp.ts +++ b/dmp-frontend/src/app/core/model/dmp/dmp.ts @@ -4,51 +4,14 @@ import { DmpUserRole } from '@app/core/common/enum/dmp-user-role'; import { DmpVersionStatus } from '@app/core/common/enum/dmp-version-status'; import { BaseEntity, BaseEntityPersist } from '@common/base/base-entity.model'; import { Guid } from '@common/types/guid'; -import { DatasetWizardModel } from '../dataset/dataset-wizard'; import { DescriptionTemplate } from '../description-template/description-template'; import { Description } from '../description/description'; -import { EntityDoi } from '../entity-doi/entity-doi'; -import { FunderModel } from "../funder/funder"; -import { GrantListingModel } from "../grant/grant-listing"; -import { OrganizationModel } from "../organisation/organization"; -import { ProjectModel } from "../project/project"; -import { ReferencePersist } from '../reference/reference'; -import { ResearcherModel } from "../researcher/researcher"; -import { User, UserModel } from "../user/user"; -import { UserInfoListingModel } from "../user/user-info-listing"; -import { DmpDatasetProfile } from "./dmp-dataset-profile/dmp-dataset-profile"; -import { DmpDynamicField } from "./dmp-dynamic-field"; -import { DmpExtraField } from "./dmp-extra-field"; import { DmpBlueprint } from '../dmp-blueprint/dmp-blueprint'; +import { EntityDoi } from '../entity-doi/entity-doi'; +import { ReferencePersist } from '../reference/reference'; +import { User } from "../user/user"; import { DmpReference } from './dmp-reference'; -export interface DmpModel { //TODO: Delete - id: string; - label: string; - groupId: String; - profile: DmpBlueprint; - version: number; - status: DmpStatus; - lockable: boolean; - description: String; - grant: GrantListingModel; - project: ProjectModel; - funder: FunderModel; - datasets: DatasetWizardModel[]; - datasetsToBeFinalized: string[]; - profiles: DmpDatasetProfile[]; - organisations: OrganizationModel[]; - researchers: ResearcherModel[]; - associatedUsers: UserModel[]; - users: UserInfoListingModel[]; - creator: UserModel; - extraFields: Array; - dynamicFields: Array; - modified: Date; - extraProperties: Map; - language: String; -} - export interface Dmp extends BaseEntity { label: string; version: number; @@ -69,28 +32,6 @@ export interface Dmp extends BaseEntity { descriptions: Description[]; dmpDescriptionTemplates: DmpDescriptionTemplate[]; entityDois: EntityDoi[]; - - - // TODO: delete - // grant: GrantListingModel; - // project: ProjectModel; - // funder: FunderModel; - // organisations: OrganizationModel[]; - // researchers: ResearcherModel[]; - - // datasets: DatasetWizardModel[]; - // datasetsToBeFinalized: string[]; - // profiles: DmpDatasetProfile[]; - - - - // associatedUsers: UserModel[]; - // users: UserInfoListingModel[]; - // creator: UserModel; - // extraFields: Array; - // dynamicFields: Array; - // extraProperties: Map; - // language: String; } export interface DmpUser extends BaseEntity { diff --git a/dmp-frontend/src/app/core/model/dmp/invitation/dmp-invitation-user.ts b/dmp-frontend/src/app/core/model/dmp/invitation/dmp-invitation-user.ts deleted file mode 100644 index 8a261b428..000000000 --- a/dmp-frontend/src/app/core/model/dmp/invitation/dmp-invitation-user.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; -import { Serializable } from '@common/types/json/serializable'; - -export class DmpInvitationUser implements Serializable { - - public id: string; - public email: string; - public name: string; - - fromJSONObject(item: any): DmpInvitationUser { - this.id = item.id; - this.email = item.email; - this.name = item.name; - return this; - } - - buildForm(): UntypedFormGroup { - return new UntypedFormBuilder().group({ - id: [this.id], - email: [this.email], - name: [this.name] - }); - } - -} diff --git a/dmp-frontend/src/app/core/model/dmp/invitation/dmp-invitation.ts b/dmp-frontend/src/app/core/model/dmp/invitation/dmp-invitation.ts deleted file mode 100644 index 02bda1e75..000000000 --- a/dmp-frontend/src/app/core/model/dmp/invitation/dmp-invitation.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; -import { DmpInvitationUser } from './dmp-invitation-user'; - -export class DmpInvitation { - - public dataManagementPlan: string; - public users = new Array(); - public role: number; - - buildForm(): UntypedFormGroup { - const formGroup = new UntypedFormBuilder().group({ - dataManagementPlan: [this.dataManagementPlan], - users: [this.users], - role: [this.role] - }); - - return formGroup; - } -} diff --git a/dmp-frontend/src/app/core/model/doi/doi.ts b/dmp-frontend/src/app/core/model/doi/doi.ts deleted file mode 100644 index c72ba0023..000000000 --- a/dmp-frontend/src/app/core/model/doi/doi.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface DoiModel { - id: string; - repositoryId: string; - doi: string; - createdAt: Date; - updatedAt: Date; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/external-dataset/external-dataset.ts b/dmp-frontend/src/app/core/model/external-dataset/external-dataset.ts deleted file mode 100644 index 40d841e5e..000000000 --- a/dmp-frontend/src/app/core/model/external-dataset/external-dataset.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ExternalDatasetType } from '../../common/enum/external-dataset-type'; - -export interface ExternalDatasetModel { - abbreviation: String; - id: String; - name: String; - reference: String; - type: ExternalDatasetType; - info: String; - source: String; -} diff --git a/dmp-frontend/src/app/core/model/external-sources/external-source-item.ts b/dmp-frontend/src/app/core/model/external-sources/external-source-item.ts deleted file mode 100644 index 2e703911a..000000000 --- a/dmp-frontend/src/app/core/model/external-sources/external-source-item.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface ExternalSourceItemModel { - id: String; - name: String; - description: String; -} diff --git a/dmp-frontend/src/app/core/model/external-sources/external-source-url.ts b/dmp-frontend/src/app/core/model/external-sources/external-source-url.ts deleted file mode 100644 index 3965eb618..000000000 --- a/dmp-frontend/src/app/core/model/external-sources/external-source-url.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class ExternalSourceUrlModel { - public key: String; - public label: String; -} diff --git a/dmp-frontend/src/app/core/model/external-sources/external-sources-configuration.ts b/dmp-frontend/src/app/core/model/external-sources/external-sources-configuration.ts deleted file mode 100644 index 7ca3e955d..000000000 --- a/dmp-frontend/src/app/core/model/external-sources/external-sources-configuration.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ExternalSourceUrlModel } from "./external-source-url"; - -export class ExternalSourcesConfiguration { - public registries: Array; - public dataRepositories: Array; - public services: Array; - public externalDatasets: Array; - public tags: Array; -} diff --git a/dmp-frontend/src/app/core/model/funder/funder.ts b/dmp-frontend/src/app/core/model/funder/funder.ts deleted file mode 100644 index a266d90ea..000000000 --- a/dmp-frontend/src/app/core/model/funder/funder.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Status } from "../../common/enum/status"; - -export class FunderModel { - id: string; - label: string; - reference: string; - definition: string; - status: Status; - created: Date; - modified: Date; - type: number; -} diff --git a/dmp-frontend/src/app/core/model/grant/grant-listing.ts b/dmp-frontend/src/app/core/model/grant/grant-listing.ts deleted file mode 100644 index 6c5e0ef86..000000000 --- a/dmp-frontend/src/app/core/model/grant/grant-listing.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { GrantType } from '../../common/enum/grant-type'; -import { Status } from '../../common/enum/status'; - -export interface GrantListingModel { - id?: string; - label?: string; - abbreviation?: string; - reference?: string; - type?: GrantType; - uri?: String; - status?: Status; - startDate?: Date; - endDate?: Date; - description?: String; - contentUrl?: string; - funderId?: string; - files?: ContentFile[]; - source?: string; -} - -export interface ContentFile { - filename?: string; - id?: string; - location?: string; - type?: string; -} diff --git a/dmp-frontend/src/app/core/model/grant/grant-overview.ts b/dmp-frontend/src/app/core/model/grant/grant-overview.ts deleted file mode 100644 index 94b507aa2..000000000 --- a/dmp-frontend/src/app/core/model/grant/grant-overview.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface GrantOverviewModel { - id: String; - label: String; - uri: String; - abbreviation: String; - description: String; - startDate: Date; - endDate: Date; -} diff --git a/dmp-frontend/src/app/core/model/help-content/active-topic-questions.ts b/dmp-frontend/src/app/core/model/help-content/active-topic-questions.ts deleted file mode 100644 index f5f78806f..000000000 --- a/dmp-frontend/src/app/core/model/help-content/active-topic-questions.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Created by stefania on 4/26/17. - */ -import { Topic } from './topic'; -import { Question } from './question'; - -export interface ActiveTopicQuestions { - topic: Topic; - questionList: Question[]; -} diff --git a/dmp-frontend/src/app/core/model/help-content/page-help-content.ts b/dmp-frontend/src/app/core/model/help-content/page-help-content.ts deleted file mode 100644 index 1adb534bd..000000000 --- a/dmp-frontend/src/app/core/model/help-content/page-help-content.ts +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Created by stefania on 7/13/17. - */ -import { Page } from './page'; - -export interface PageHelpContent { - _id: string; - page: Page | string; - placement: string; - order: number; - content: string; - isActive: boolean; -} - -export interface CheckPageHelpContent { - pageHelpContent: PageHelpContent; - checked: boolean; -} - -export interface PageHelpContentFilterOptions { - id: string; - active: Boolean; - text: RegExp; -} diff --git a/dmp-frontend/src/app/core/model/help-content/page.ts b/dmp-frontend/src/app/core/model/help-content/page.ts deleted file mode 100644 index 7d204e02b..000000000 --- a/dmp-frontend/src/app/core/model/help-content/page.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Created by stefania on 7/13/17. - */ -export interface Page { - _id: string; - route: string; - name: string; -} - -export interface CheckPage { - page: Page; - checked: boolean; -} diff --git a/dmp-frontend/src/app/core/model/help-content/question.ts b/dmp-frontend/src/app/core/model/help-content/question.ts deleted file mode 100644 index caf9eec73..000000000 --- a/dmp-frontend/src/app/core/model/help-content/question.ts +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Created by stefania on 4/26/17. - */ -import { Topic } from './topic'; - -export interface Question { - _id: string; - question: string; - answer: string; - date: Date; - isActive: boolean; - weight: number; - hitCount: number; - topics: Topic[] | string[]; -} - -export interface CheckQuestion { - question: Question; - checked: boolean; -} - -export interface QuestionFilterOptions { - id: string; - active: Boolean; - text: RegExp; -} diff --git a/dmp-frontend/src/app/core/model/help-content/topic.ts b/dmp-frontend/src/app/core/model/help-content/topic.ts deleted file mode 100644 index 4fb5c3a95..000000000 --- a/dmp-frontend/src/app/core/model/help-content/topic.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Created by stefania on 4/26/17. - */ -export interface Topic { - _id: string; - name: string; - description: string; - date: Date; - weight: number; - questionOrder: string; -} - -export interface CheckTopic { - topic: Topic; - checked: boolean; -} diff --git a/dmp-frontend/src/app/core/model/license/license.ts b/dmp-frontend/src/app/core/model/license/license.ts deleted file mode 100644 index 9ac8d7ad5..000000000 --- a/dmp-frontend/src/app/core/model/license/license.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface LicenseModel { - id: string; - name: string; - abbreviation: string; - uri: string; - pid: string; - info: string; - source: string; -} diff --git a/dmp-frontend/src/app/core/model/local-fetch/local-fetch.model.ts b/dmp-frontend/src/app/core/model/local-fetch/local-fetch.model.ts deleted file mode 100644 index 4ca43879a..000000000 --- a/dmp-frontend/src/app/core/model/local-fetch/local-fetch.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class LocalFetchModel { - name: string; - value: string; -} diff --git a/dmp-frontend/src/app/core/model/lock/lock.model.ts b/dmp-frontend/src/app/core/model/lock/lock.model.ts index 27c9904ae..062a1b669 100644 --- a/dmp-frontend/src/app/core/model/lock/lock.model.ts +++ b/dmp-frontend/src/app/core/model/lock/lock.model.ts @@ -1,31 +1,12 @@ -import { Guid } from '@common/types/guid'; -import { UserInfoListingModel } from '../user/user-info-listing'; import { LockTargetType } from '@app/core/common/enum/lock-target-type'; +import { Guid } from '@common/types/guid'; import { User } from '../user/user'; -// old model -export class LockModel { - id: Guid; - target: Guid; - lockedBy: UserInfoListingModel; - lockedAt: Date; - touchedAt: Date; - - constructor(targetId: string, lockedBy: any) { - this.lockedAt = new Date(); - this.touchedAt = new Date(); - this.target = Guid.parse(targetId); - this.lockedBy = lockedBy; - - } -} - - -export interface Lock{ +export interface Lock { id: Guid; target: Guid; targetType: LockTargetType; - lockedBy: User; + lockedBy: User; lockedAt: Date; touchedAt: Date; hash: String; @@ -33,10 +14,10 @@ export interface Lock{ // Persist -export interface LockPersist{ +export interface LockPersist { id: Guid; target: Guid; targetType: LockTargetType; - lockedBy: User; + lockedBy: User; hash: String; } diff --git a/dmp-frontend/src/app/core/model/merge/user-merge-request.ts b/dmp-frontend/src/app/core/model/merge/user-merge-request.ts deleted file mode 100644 index 471463abb..000000000 --- a/dmp-frontend/src/app/core/model/merge/user-merge-request.ts +++ /dev/null @@ -1,5 +0,0 @@ -export class UserMergeRequestModel { - userId: String; - email: String; - provider: number; -} diff --git a/dmp-frontend/src/app/core/model/organisation/organization.ts b/dmp-frontend/src/app/core/model/organisation/organization.ts deleted file mode 100644 index 7cc4afa30..000000000 --- a/dmp-frontend/src/app/core/model/organisation/organization.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Status } from "../../common/enum/status"; - -export interface OrganizationModel { - id: string; - name: string; - label: string; - status: Status; - tag: string; - reference?: string; -} diff --git a/dmp-frontend/src/app/core/model/project/project.ts b/dmp-frontend/src/app/core/model/project/project.ts deleted file mode 100644 index fb30e3490..000000000 --- a/dmp-frontend/src/app/core/model/project/project.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Status } from "../../common/enum/status"; -import { ProjectType } from "../../common/enum/project-type"; - -export class ProjectModel { - id?: string; - label?: string; - abbreviation?: string; - reference?: string; - type?: ProjectType; - uri?: String; - status?: Status; - startDate?: Date; - endDate?: Date; - description?: String; - contentUrl?: string; - files?: ContentFile[]; -} - -export interface ContentFile { - filename?: string; - id?: string; - location?: string; - type?: string; -} diff --git a/dmp-frontend/src/app/core/model/publication/publication.ts b/dmp-frontend/src/app/core/model/publication/publication.ts deleted file mode 100644 index 5f4954ddb..000000000 --- a/dmp-frontend/src/app/core/model/publication/publication.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface PublicationModel { - id: string; - name: string; - abbreviation: string; - uri: string; - pid: string; - info: string; - source: string; -} diff --git a/dmp-frontend/src/app/core/model/reference/reference.ts b/dmp-frontend/src/app/core/model/reference/reference.ts index 9f7ab1730..e5a19a695 100644 --- a/dmp-frontend/src/app/core/model/reference/reference.ts +++ b/dmp-frontend/src/app/core/model/reference/reference.ts @@ -1,11 +1,9 @@ import { ReferenceFieldDataType } from "@app/core/common/enum/reference-field-data-type"; import { ReferenceSourceType } from "@app/core/common/enum/reference-source-type"; import { ReferenceType } from "@app/core/common/enum/reference-type"; -import { UUID } from "crypto"; -import { DmpModel } from "../dmp/dmp"; import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model"; -export interface Reference extends BaseEntity{ +export interface Reference extends BaseEntity { label: string; type: ReferenceType; description: string; @@ -14,7 +12,6 @@ export interface Reference extends BaseEntity{ abbreviation: string; source: string; sourceType: ReferenceSourceType; - // dmpReferences: DmpReference[]; } export interface Definition { diff --git a/dmp-frontend/src/app/core/model/registry/registry.ts b/dmp-frontend/src/app/core/model/registry/registry.ts deleted file mode 100644 index 6658e9b57..000000000 --- a/dmp-frontend/src/app/core/model/registry/registry.ts +++ /dev/null @@ -1,11 +0,0 @@ - -export interface RegistryModel { - abbreviation: String; - definition: String; - id: String; - pid: String; - label: String; - reference: String; - uri: String; - source: String; -} diff --git a/dmp-frontend/src/app/core/model/researcher/researcher.ts b/dmp-frontend/src/app/core/model/researcher/researcher.ts deleted file mode 100644 index 9d23a8403..000000000 --- a/dmp-frontend/src/app/core/model/researcher/researcher.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface ResearcherModel { - id: string; - name: String; - reference: String; - lastName: String; - uri: String; - email: String; -} diff --git a/dmp-frontend/src/app/core/model/service/service.ts b/dmp-frontend/src/app/core/model/service/service.ts deleted file mode 100644 index 699a1c613..000000000 --- a/dmp-frontend/src/app/core/model/service/service.ts +++ /dev/null @@ -1,10 +0,0 @@ -export interface ServiceModel { - id: String; - abbreviation: String; - definition: String; - uri: String; - label: String; - reference: String; - source: String; -} - diff --git a/dmp-frontend/src/app/core/model/supportive-material/supportive-material.ts b/dmp-frontend/src/app/core/model/supportive-material/supportive-material.ts index adfca35ff..64e63c599 100644 --- a/dmp-frontend/src/app/core/model/supportive-material/supportive-material.ts +++ b/dmp-frontend/src/app/core/model/supportive-material/supportive-material.ts @@ -1,15 +1,15 @@ import { SupportiveMaterialFieldType } from "@app/core/common/enum/supportive-material-field-type"; import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model"; -export interface SupportiveMaterial extends BaseEntity{ - type: SupportiveMaterialFieldType; - languageCode: string; - payload: string; +export interface SupportiveMaterial extends BaseEntity { + type: SupportiveMaterialFieldType; + languageCode: string; + payload: string; } -export interface SupportiveMaterialPersist extends BaseEntityPersist{ - type: SupportiveMaterialFieldType; - languageCode: string; - payload: string; +export interface SupportiveMaterialPersist extends BaseEntityPersist { + type: SupportiveMaterialFieldType; + languageCode: string; + payload: string; } \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/tag/tag.ts b/dmp-frontend/src/app/core/model/tag/tag.ts index 577dbb76f..757216fa6 100644 --- a/dmp-frontend/src/app/core/model/tag/tag.ts +++ b/dmp-frontend/src/app/core/model/tag/tag.ts @@ -1,11 +1,6 @@ import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model"; import { User } from "../user/user"; -export interface TagModel { //TODO: old entity, delete - id: string; - name: string; -} - export interface Tag extends BaseEntity { label?: string; createdBy?: User; diff --git a/dmp-frontend/src/app/core/model/taxonomy/taxonomy.ts b/dmp-frontend/src/app/core/model/taxonomy/taxonomy.ts deleted file mode 100644 index b8be84ca4..000000000 --- a/dmp-frontend/src/app/core/model/taxonomy/taxonomy.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface TaxonomyModel { - id: string; - name: string; - abbreviation: string; - uri: string; - pid: string; - info: string; - source: string; -} diff --git a/dmp-frontend/src/app/core/model/unlink-account/unlink-account.ts b/dmp-frontend/src/app/core/model/unlink-account/unlink-account.ts deleted file mode 100644 index 89c6aa33a..000000000 --- a/dmp-frontend/src/app/core/model/unlink-account/unlink-account.ts +++ /dev/null @@ -1,5 +0,0 @@ -export class UnlinkAccountRequestModel { - userId: String; - email: String; - provider: number; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/user/user-credential.ts b/dmp-frontend/src/app/core/model/user/user-credential.ts deleted file mode 100644 index fe716aea0..000000000 --- a/dmp-frontend/src/app/core/model/user/user-credential.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { AuthProvider } from '@app/core/common/enum/auth-provider'; - -export class UserCredentialModel { - email: string; - provider: AuthProvider; -} diff --git a/dmp-frontend/src/app/core/model/user/user-info-listing.ts b/dmp-frontend/src/app/core/model/user/user-info-listing.ts deleted file mode 100644 index 9da6b457f..000000000 --- a/dmp-frontend/src/app/core/model/user/user-info-listing.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface UserInfoListingModel { - id: String; - name: String; - role: number; - email: String; -} diff --git a/dmp-frontend/src/app/core/model/user/user-listing.ts b/dmp-frontend/src/app/core/model/user/user-listing.ts deleted file mode 100644 index 3c79e8664..000000000 --- a/dmp-frontend/src/app/core/model/user/user-listing.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { RoleOrganizationType } from '@app/core/common/enum/role-organization-type'; -import { AppRole } from "../../common/enum/app-role"; -import { OrganizationModel } from '../organisation/organization'; - -export interface UserListingModel { - id: String; - name: String; - email: string; - appRoles: AppRole[]; - associatedDmps: any[]; - language: any; - culture: any; - timezone: String; - avatarUrl: String; - organization: OrganizationModel; - roleOrganization: RoleOrganizationType; -} diff --git a/dmp-frontend/src/app/core/model/user/user.ts b/dmp-frontend/src/app/core/model/user/user.ts index f253d72c0..8e95be828 100644 --- a/dmp-frontend/src/app/core/model/user/user.ts +++ b/dmp-frontend/src/app/core/model/user/user.ts @@ -1,16 +1,9 @@ import { ContactInfoType } from "@app/core/common/enum/contact-info-type"; +import { RoleOrganizationType } from "@app/core/common/enum/role-organization-type"; import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model"; import { Guid } from "@common/types/guid"; -import { AppRole } from "../../common/enum/app-role"; import { Reference } from "../reference/reference"; -export interface UserModel { //TODO: Delete after refactor, since its old model. - id: String; - name: String; - appRoles: AppRole[]; - email: String; -} - export interface User extends BaseEntity { name: string; additionalInfo: UserAdditionalInfo; @@ -38,7 +31,7 @@ export interface UserAdditionalInfo { timezone: String; culture: String; language: String; - roleOrganization: String; + roleOrganization: RoleOrganizationType; organization: Reference; } diff --git a/dmp-frontend/src/app/core/model/version/version-listing.model.ts b/dmp-frontend/src/app/core/model/version/version-listing.model.ts deleted file mode 100644 index 571f2d361..000000000 --- a/dmp-frontend/src/app/core/model/version/version-listing.model.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface VersionListingModel { - id: string; - groupId: string; - version: number; -} diff --git a/dmp-frontend/src/app/core/pipes/field-value.pipe.ts b/dmp-frontend/src/app/core/pipes/field-value.pipe.ts index 360b8e87e..0e14cb8b5 100644 --- a/dmp-frontend/src/app/core/pipes/field-value.pipe.ts +++ b/dmp-frontend/src/app/core/pipes/field-value.pipe.ts @@ -1,6 +1,6 @@ -import {Pipe, PipeTransform} from "@angular/core"; -import {DatePipe} from "@angular/common"; -import {DatasetProfileFieldViewStyle} from "@app/core/common/enum/dataset-profile-field-view-style"; +import { DatePipe } from "@angular/common"; +import { Pipe, PipeTransform } from "@angular/core"; +import { DescriptionTemplateFieldType } from "../common/enum/description-template-field-type"; @Pipe({ name: 'fieldValue' @@ -15,56 +15,59 @@ export class FieldValuePipe implements PipeTransform { let renderStyle = controlValue.viewStyle?.renderStyle; if (renderStyle && value) { switch (renderStyle) { - case DatasetProfileFieldViewStyle.Currency: + case DescriptionTemplateFieldType.CURRENCY: if (value) { return JSON.parse(value).name; } break; - case DatasetProfileFieldViewStyle.BooleanDecision: + case DescriptionTemplateFieldType.BOOLEAN_DECISION: return value == 'true' ? 'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.DEFAULT-VALUES.BOOLEAN-DECISION.YES' : 'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.DEFAULT-VALUES.BOOLEAN-DECISION.NO'; - case DatasetProfileFieldViewStyle.CheckBox: + case DescriptionTemplateFieldType.CHECK_BOX: return value ? 'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.DEFAULT-VALUES.BOOLEAN-DECISION.YES' : 'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.DEFAULT-VALUES.BOOLEAN-DECISION.NO'; - case DatasetProfileFieldViewStyle.RadioBox: + case DescriptionTemplateFieldType.RADIO_BOX: if (value && controlValue.data.options) { return controlValue.data.options.find(option => option.value === value).label; } break; - case DatasetProfileFieldViewStyle.DatePicker: + case DescriptionTemplateFieldType.DATE_PICKER: return this.date.transform(controlValue.value, 'dd/MM/yyyy'); - case DatasetProfileFieldViewStyle.FreeText: + case DescriptionTemplateFieldType.FREE_TEXT: return value; - case DatasetProfileFieldViewStyle.ComboBox: + case DescriptionTemplateFieldType.AUTO_COMPLETE: + case DescriptionTemplateFieldType.WORD_LIST: if (value && controlValue.data.options && !controlValue.data.multiList) { return controlValue.data.options.find(option => value == option.value).label; } else if (value && controlValue.data.options && controlValue.data.multiList) { return controlValue.data.options.filter(option => value.includes(option.value)).map(option => option.label).join(','); } break; - case DatasetProfileFieldViewStyle.RichTextArea: - if(value) { + case DescriptionTemplateFieldType.RICH_TEXT_AREA: + if (value) { return value.replace(/ /g, ' ').replace(/(\r\n|\n|\r| +(?= ))|\s\s+/gm, " ").replace(/<[^>]*>/g, ''); } break; - case DatasetProfileFieldViewStyle.TextArea: + case DescriptionTemplateFieldType.TEXT_AREA: return value; - case DatasetProfileFieldViewStyle.Registries: - case DatasetProfileFieldViewStyle.Services: - case DatasetProfileFieldViewStyle.Researchers: - case DatasetProfileFieldViewStyle.Organizations: - case DatasetProfileFieldViewStyle.ExternalDatasets: - case DatasetProfileFieldViewStyle.DataRepositories: - case DatasetProfileFieldViewStyle.PubRepositories: - case DatasetProfileFieldViewStyle.JournalRepositories: - case DatasetProfileFieldViewStyle.Taxonomies: - case DatasetProfileFieldViewStyle.Licenses: - case DatasetProfileFieldViewStyle.Publications: - case DatasetProfileFieldViewStyle.Tags: + case DescriptionTemplateFieldType.REGISTRIES: + case DescriptionTemplateFieldType.SERVICES: + case DescriptionTemplateFieldType.RESEARCHERS: + case DescriptionTemplateFieldType.ORGANIZATIONS: + case DescriptionTemplateFieldType.EXTERNAL_DATASETS: + case DescriptionTemplateFieldType.DATA_REPOSITORIES: + case DescriptionTemplateFieldType.PUB_REPOSITORIES: + case DescriptionTemplateFieldType.JOURNAL_REPOSITORIES: + case DescriptionTemplateFieldType.TAXONOMIES: + case DescriptionTemplateFieldType.LICENSES: + case DescriptionTemplateFieldType.PUBLICATIONS: + case DescriptionTemplateFieldType.TAGS: return this.parseJson(value); - case DatasetProfileFieldViewStyle.InternalDmpEntities: + case DescriptionTemplateFieldType.INTERNAL_DMP_ENTRIES_RESEARCHERS: + case DescriptionTemplateFieldType.INTERNAL_DMP_ENTRIES_DMPS: + case DescriptionTemplateFieldType.INTERNAL_DMP_ENTRIES_DATASETS: return this.parseJson(value, 'label'); - case DatasetProfileFieldViewStyle.DatasetIdentifier: - case DatasetProfileFieldViewStyle.Validation: - if(value && value.identifier) { + case DescriptionTemplateFieldType.DATASET_IDENTIFIER: + case DescriptionTemplateFieldType.VALIDATION: + if (value && value.identifier) { return value.identifier; } break; @@ -76,7 +79,7 @@ export class FieldValuePipe implements PipeTransform { } public parseJson(value: any, field: string = 'name') { - if(Array.isArray(value)) { + if (Array.isArray(value)) { return value.map(element => JSON.parse(element)[field]).join(','); } else { return JSON.parse(value)[field]; diff --git a/dmp-frontend/src/app/core/query/data-repository/data-repository-criteria.ts b/dmp-frontend/src/app/core/query/data-repository/data-repository-criteria.ts deleted file mode 100644 index c4f286878..000000000 --- a/dmp-frontend/src/app/core/query/data-repository/data-repository-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class DataRepositoryCriteria extends BaseCriteria { - public type: string; -} diff --git a/dmp-frontend/src/app/core/query/dataset-profile/dataset-profile-criteria.ts b/dmp-frontend/src/app/core/query/dataset-profile/dataset-profile-criteria.ts deleted file mode 100644 index b9bbd9b5e..000000000 --- a/dmp-frontend/src/app/core/query/dataset-profile/dataset-profile-criteria.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class DatasetProfileCriteria extends BaseCriteria { - public id: String; - public groupIds: string[]; - public allVersions: boolean; - public finalized: boolean = true; - public status: number; -} diff --git a/dmp-frontend/src/app/core/query/dataset/daatset-external-autocomplete-criteria.ts b/dmp-frontend/src/app/core/query/dataset/daatset-external-autocomplete-criteria.ts deleted file mode 100644 index f32a40cd6..000000000 --- a/dmp-frontend/src/app/core/query/dataset/daatset-external-autocomplete-criteria.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { AutoCompleteSingleData } from "@app/core/model/dataset-profile-definition/field-data/field-data"; -import { BaseCriteria } from "../base-criteria"; - -export class DatasetExternalAutocompleteCriteria extends BaseCriteria { - public profileID: String; - public fieldID: String; -} - -export class DatasetExternalAutocompleteOptionsCriteria extends BaseCriteria { - public autoCompleteSingleDataList: AutoCompleteSingleData[]; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/query/dataset/dataset-criteria.ts b/dmp-frontend/src/app/core/query/dataset/dataset-criteria.ts deleted file mode 100644 index 8ec8a8edb..000000000 --- a/dmp-frontend/src/app/core/query/dataset/dataset-criteria.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { ExternalSourceItemModel } from "../../model/external-sources/external-source-item"; -import { BaseCriteria } from "../base-criteria"; - -export class DatasetCriteria extends BaseCriteria { - public grants?: string[] = []; - public status?: Number; - public dmpIds?: string[] = []; - public tags?: ExternalSourceItemModel[] = []; - public allVersions?: boolean = false; - public role?: number; - public organisations?: string[] = []; - public collaborators?: string[] = []; - public datasetTemplates?: string[] = []; - public groupIds?: string[] = []; - public isPublic?: boolean = false; - public grantStatus?: number; -} diff --git a/dmp-frontend/src/app/core/query/dmp/dmp-blueprint-criteria.ts b/dmp-frontend/src/app/core/query/dmp/dmp-blueprint-criteria.ts deleted file mode 100644 index f3e1a430a..000000000 --- a/dmp-frontend/src/app/core/query/dmp/dmp-blueprint-criteria.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { DmpBlueprintStatus } from "@app/core/common/enum/dmp-blueprint-status"; -import { BaseCriteria } from "../base-criteria"; - -export class DmpBlueprintCriteria extends BaseCriteria { - public status?: DmpBlueprintStatus; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/query/dmp/dmp-criteria.ts b/dmp-frontend/src/app/core/query/dmp/dmp-criteria.ts deleted file mode 100644 index 5e024c1d3..000000000 --- a/dmp-frontend/src/app/core/query/dmp/dmp-criteria.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { GrantListingModel } from "../../model/grant/grant-listing"; -import { BaseCriteria } from "../base-criteria"; -import { OrganizationModel } from "../../model/organisation/organization"; - -export class DmpCriteria extends BaseCriteria { - public organisations?: string[] = []; - public grants?: GrantListingModel[] = []; - public groupIds?: string[]; - public allVersions?: boolean; - public status?: number; - public role?: number; - public collaborators?: string[] = []; - public datasetTemplates?: string[] = []; - public isPublic?: boolean; - public onlyPublic?: boolean; - public grantStatus?: boolean; -} diff --git a/dmp-frontend/src/app/core/query/dmp/dmp-invitation-user-criteria.ts b/dmp-frontend/src/app/core/query/dmp/dmp-invitation-user-criteria.ts deleted file mode 100644 index 32c0b6653..000000000 --- a/dmp-frontend/src/app/core/query/dmp/dmp-invitation-user-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class DmpInvitationUserCriteria extends BaseCriteria { - -} diff --git a/dmp-frontend/src/app/core/query/dmp/dmp-profile-criteria.ts b/dmp-frontend/src/app/core/query/dmp/dmp-profile-criteria.ts deleted file mode 100644 index 71f660eae..000000000 --- a/dmp-frontend/src/app/core/query/dmp/dmp-profile-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class DmpBlueprintCriteria extends BaseCriteria { - -} diff --git a/dmp-frontend/src/app/core/query/dmp/dmp-profile-external-autocomplete-criteria.ts b/dmp-frontend/src/app/core/query/dmp/dmp-profile-external-autocomplete-criteria.ts deleted file mode 100644 index 1e57f9192..000000000 --- a/dmp-frontend/src/app/core/query/dmp/dmp-profile-external-autocomplete-criteria.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class DmpBlueprintExternalAutocompleteCriteria extends BaseCriteria { - public profileID: String; - public fieldID: String; -} diff --git a/dmp-frontend/src/app/core/query/explore-dataset/explore-dataset-criteria.ts b/dmp-frontend/src/app/core/query/explore-dataset/explore-dataset-criteria.ts deleted file mode 100644 index 7c10b2bf0..000000000 --- a/dmp-frontend/src/app/core/query/explore-dataset/explore-dataset-criteria.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { GrantStateType } from "../../common/enum/grant-state-type"; -import { BaseCriteria } from "../base-criteria"; -import { Role } from '../../common/enum/role'; - -export class ExploreDatasetCriteriaModel extends BaseCriteria { - public grantStatus: GrantStateType; - public role: Role; - public dmpIds: string[] = []; - public grants: string[] = []; - public datasetProfile: string[] = []; - public dmpOrganisations: string[] = []; - public tags = []; -} diff --git a/dmp-frontend/src/app/core/query/explore-dmp/explore-dmp-criteria.ts b/dmp-frontend/src/app/core/query/explore-dmp/explore-dmp-criteria.ts deleted file mode 100644 index 376d14196..000000000 --- a/dmp-frontend/src/app/core/query/explore-dmp/explore-dmp-criteria.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; -import { GrantStateType } from "../../common/enum/grant-state-type"; -import { Role } from '../../common/enum/role'; - -export class ExploreDmpCriteriaModel extends BaseCriteria { - public grantStatus: GrantStateType; - public role: Role; - public grants: string[] = []; - public datasetProfile: string[] = []; - public dmpOrganisations: string[] = []; - public allVersions: boolean; - public groupIds: string[] = []; -} diff --git a/dmp-frontend/src/app/core/query/external-dataset/external-dataset-criteria.ts b/dmp-frontend/src/app/core/query/external-dataset/external-dataset-criteria.ts deleted file mode 100644 index dec991910..000000000 --- a/dmp-frontend/src/app/core/query/external-dataset/external-dataset-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class ExternalDatasetCriteria extends BaseCriteria { - public type: string; -} diff --git a/dmp-frontend/src/app/core/query/funder/funder-criteria.ts b/dmp-frontend/src/app/core/query/funder/funder-criteria.ts deleted file mode 100644 index 6c37051b8..000000000 --- a/dmp-frontend/src/app/core/query/funder/funder-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class FunderCriteria extends BaseCriteria { - exactReference:string; - } diff --git a/dmp-frontend/src/app/core/query/grant/grant-criteria.ts b/dmp-frontend/src/app/core/query/grant/grant-criteria.ts deleted file mode 100644 index da457031c..000000000 --- a/dmp-frontend/src/app/core/query/grant/grant-criteria.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { GrantStateType } from "../../common/enum/grant-state-type"; -import { BaseCriteria } from "../base-criteria"; - -export class GrantCriteria extends BaseCriteria { - public periodStart: Date; - public periodEnd: Date; - public funderReference: String; - public grantStateType: GrantStateType; - public exactReference: string; -} diff --git a/dmp-frontend/src/app/core/query/license/license-criteria.ts b/dmp-frontend/src/app/core/query/license/license-criteria.ts deleted file mode 100644 index ea2c3138a..000000000 --- a/dmp-frontend/src/app/core/query/license/license-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class LicenseCriteria extends BaseCriteria { - public type: string; -} diff --git a/dmp-frontend/src/app/core/query/organisation/organisation-criteria.ts b/dmp-frontend/src/app/core/query/organisation/organisation-criteria.ts deleted file mode 100644 index 2012bf40a..000000000 --- a/dmp-frontend/src/app/core/query/organisation/organisation-criteria.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class OrganisationCriteria extends BaseCriteria { - public labelLike: string; - public like?: string; -} diff --git a/dmp-frontend/src/app/core/query/project/project-criteria.ts b/dmp-frontend/src/app/core/query/project/project-criteria.ts deleted file mode 100644 index 47a0d88b9..000000000 --- a/dmp-frontend/src/app/core/query/project/project-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class ProjectCriteria extends BaseCriteria { - exactReference: string; - } diff --git a/dmp-frontend/src/app/core/query/publication/publication-criteria.ts b/dmp-frontend/src/app/core/query/publication/publication-criteria.ts deleted file mode 100644 index c7d7d6b27..000000000 --- a/dmp-frontend/src/app/core/query/publication/publication-criteria.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; -export class PublicationCriteria extends BaseCriteria { - public type: string; -} diff --git a/dmp-frontend/src/app/core/query/registry/registry-criteria.ts b/dmp-frontend/src/app/core/query/registry/registry-criteria.ts deleted file mode 100644 index be7d0da31..000000000 --- a/dmp-frontend/src/app/core/query/registry/registry-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class RegistryCriteria extends BaseCriteria { - public type: string; -} diff --git a/dmp-frontend/src/app/core/query/researcher/researcher-criteria.ts b/dmp-frontend/src/app/core/query/researcher/researcher-criteria.ts deleted file mode 100644 index fd529c381..000000000 --- a/dmp-frontend/src/app/core/query/researcher/researcher-criteria.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class ResearcherCriteria extends BaseCriteria { - public name: String; - public reference?: string; -} diff --git a/dmp-frontend/src/app/core/query/service/service-criteria.ts b/dmp-frontend/src/app/core/query/service/service-criteria.ts deleted file mode 100644 index 8c397cf4d..000000000 --- a/dmp-frontend/src/app/core/query/service/service-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class ServiceCriteria extends BaseCriteria { - public type: string; -} diff --git a/dmp-frontend/src/app/core/query/tag/tag-criteria.ts b/dmp-frontend/src/app/core/query/tag/tag-criteria.ts deleted file mode 100644 index e78ed43c6..000000000 --- a/dmp-frontend/src/app/core/query/tag/tag-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class TagCriteria extends BaseCriteria { - public type: string; -} diff --git a/dmp-frontend/src/app/core/query/taxonomy/taxonomy-criteria.ts b/dmp-frontend/src/app/core/query/taxonomy/taxonomy-criteria.ts deleted file mode 100644 index 0d94bc701..000000000 --- a/dmp-frontend/src/app/core/query/taxonomy/taxonomy-criteria.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { BaseCriteria } from "../base-criteria"; - -export class TaxonomyCriteria extends BaseCriteria { - public type: string; -} diff --git a/dmp-frontend/src/app/core/query/user/user-criteria.ts b/dmp-frontend/src/app/core/query/user/user-criteria.ts deleted file mode 100644 index 17c986c48..000000000 --- a/dmp-frontend/src/app/core/query/user/user-criteria.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { AppRole } from "../../common/enum/app-role"; -import { BaseCriteria } from "../base-criteria"; - -export class UserCriteria extends BaseCriteria { - public label: String; - public appRoles: AppRole[]; - public collaboratorLike: string; -} 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 be4e7ebfc..72eaee247 100644 --- a/dmp-frontend/src/app/core/services/auth/auth.service.ts +++ b/dmp-frontend/src/app/core/services/auth/auth.service.ts @@ -143,7 +143,7 @@ export class AuthService extends BaseService { this.accessToken ? this.principalService.me(httpParams) : of(null) ])), map((item) => { - this.currentAccount(item[0]); + this.currentAccount(item[0]?.payload); return true; }) ); diff --git a/dmp-frontend/src/app/core/services/contact-support/contact-support.service.ts b/dmp-frontend/src/app/core/services/contact-support/contact-support.service.ts index 3d2610eb5..9105f77b4 100644 --- a/dmp-frontend/src/app/core/services/contact-support/contact-support.service.ts +++ b/dmp-frontend/src/app/core/services/contact-support/contact-support.service.ts @@ -1,17 +1,15 @@ -import { BaseHttpService } from "../../../core/services/http/base-http.service"; -import { HttpHeaders } from "@angular/common/http"; -import { environment } from "../../../../environments/environment"; import { Injectable } from "@angular/core"; -import { ContactEmail } from "../../model/contact/contact-email-form-model"; import { Observable } from "rxjs"; +import { ContactEmail } from "../../model/contact/contact-email-form-model"; import { ConfigurationService } from '../configuration/configuration.service'; +import { BaseHttpV2Service } from "../http/base-http-v2.service"; @Injectable() export class ContactSupportService { private actionUrl: string; - constructor(private http: BaseHttpService, + constructor(private http: BaseHttpV2Service, private configurationService: ConfigurationService) { this.actionUrl = configurationService.server + 'contactEmail/'; } diff --git a/dmp-frontend/src/app/core/services/currency/currency.service.ts b/dmp-frontend/src/app/core/services/currency/currency.service.ts deleted file mode 100644 index 77fcf084c..000000000 --- a/dmp-frontend/src/app/core/services/currency/currency.service.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { ConfigurationService } from '../configuration/configuration.service'; -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { LocalFetchModel } from '@app/core/model/local-fetch/local-fetch.model'; -import { BaseHttpService } from '../http/base-http.service'; - - - -@Injectable() -export class CurrencyService { - - private actionUrl: string; - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'currency'; - } - - get(query: string): Observable { - return this.http.get(`${this.actionUrl}?query=${query}`); - } - -} diff --git a/dmp-frontend/src/app/core/services/deposit-repositories/deposit-repositories.service.ts b/dmp-frontend/src/app/core/services/deposit-repositories/deposit-repositories.service.ts deleted file mode 100644 index c40347075..000000000 --- a/dmp-frontend/src/app/core/services/deposit-repositories/deposit-repositories.service.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { HttpClient, HttpHeaders } from '@angular/common/http'; -import { Injectable } from '@angular/core'; -import { DepositConfigurationModel } from '@app/core/model/deposit/deposit-configuration'; -import { DepositCode, DepositRequest } from '@app/core/model/deposit/deposit-request'; -import { DoiModel } from '@app/core/model/doi/doi'; -import { Observable } from 'rxjs'; -import { ConfigurationService } from '../configuration/configuration.service'; -import { BaseHttpService } from '../http/base-http.service'; - -@Injectable() -export class DepositRepositoriesService { - - private actionUrl: string; - private headers = new HttpHeaders(); - - constructor(private http: BaseHttpService, private httpClient: HttpClient, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'deposit/'; - } - - getAvailableRepos(): Observable { - return this.http.get(this.actionUrl + 'repos', { headers: this.headers }); - } - - getAccessToken(repositoryId: string, code: string): Observable { - const depositCode = new DepositCode(); - depositCode.repositoryId = repositoryId; - depositCode.code = code; - return this.http.post(this.actionUrl + 'getAccessToken', depositCode, { headers: this.headers }); - } - - createDoi(repositoryId: string, dmpId: string, accessToken: string | null): Observable { - const depositRequest = new DepositRequest(); - depositRequest.repositoryId = repositoryId; - depositRequest.dmpId = dmpId; - depositRequest.accessToken = accessToken; - return this.http.post(this.actionUrl + 'createDoi', depositRequest, { headers: this.headers }); - } - - getLogo(repositoryId: string): Observable { - return this.http.get(this.actionUrl + 'logo/' + repositoryId, { headers: this.headers }); - } - -} diff --git a/dmp-frontend/src/app/core/services/deposit/deposit.service.ts b/dmp-frontend/src/app/core/services/deposit/deposit.service.ts new file mode 100644 index 000000000..4c8cf1803 --- /dev/null +++ b/dmp-frontend/src/app/core/services/deposit/deposit.service.ts @@ -0,0 +1,48 @@ +import { HttpHeaders } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { DepositConfiguration } from '@app/core/model/deposit/deposit-configuration'; +import { DepositAuthenticateRequest, DepositRequest } from '@app/core/model/deposit/deposit-request'; +import { EntityDoi } from '@app/core/model/entity-doi/entity-doi'; +import { Observable, throwError } from 'rxjs'; +import { catchError } from 'rxjs/operators'; +import { ConfigurationService } from '../configuration/configuration.service'; +import { BaseHttpV2Service } from '../http/base-http-v2.service'; + +@Injectable() +export class DepositService { + + private headers = new HttpHeaders(); + + constructor( + private http: BaseHttpV2Service, + private configurationService: ConfigurationService + ) { + } + + private get apiBase(): string { return `${this.configurationService.server}deposit`; } + + getAvailableRepos(reqFields: string[] = []): Observable { + const url = `${this.apiBase}/repositories/available`; + const options = { params: { f: reqFields } }; + + return this.http + .get(url, options).pipe( + catchError((error: any) => throwError(error))); + } + + getAccessToken(item: DepositAuthenticateRequest): Observable { + const url = `${this.apiBase}/get-access-token`; + return this.http.post(url, item).pipe(catchError((error: any) => throwError(error))); + } + + deposit(item: DepositRequest): Observable { + const url = `${this.apiBase}/deposit`; + return this.http.post(url, item).pipe(catchError((error: any) => throwError(error))); + } + + getLogo(repositoryId: string): Observable { + const url = `${this.apiBase}/repositories/${repositoryId}/logo`; + return this.http + .get(url).pipe(catchError((error: any) => throwError(error))); + } +} diff --git a/dmp-frontend/src/app/core/services/description-template/description-template.service.ts b/dmp-frontend/src/app/core/services/description-template/description-template.service.ts index a2c01c23a..e4cda2701 100644 --- a/dmp-frontend/src/app/core/services/description-template/description-template.service.ts +++ b/dmp-frontend/src/app/core/services/description-template/description-template.service.ts @@ -1,7 +1,6 @@ import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { IsActive } from '@app/core/common/enum/is-active.enum'; -import { DataTableData } from '@app/core/model/data-table/data-table-data'; import { DescriptionTemplate } from '@app/core/model/description-template/description-template'; import { DescriptionTemplatePersist } from '@app/core/model/description-template/description-template-persist'; import { DescriptionTemplateLookup } from '@app/core/query/description-template.lookup'; @@ -77,7 +76,7 @@ export class DescriptionTemplateService { return this.httpClient.get(url, { params: params, responseType: 'blob', observe: 'response', headers: headerXml }); } - uploadFile(file: FileList, labelSent: string, reqFields: string[] = []): Observable> { + uploadFile(file: FileList, labelSent: string, reqFields: string[] = []): Observable { const url = `${this.apiBase}/xml/import`; const params = new BaseHttpParams(); params.interceptorContext = { diff --git a/dmp-frontend/src/app/core/services/description/description.service.ts b/dmp-frontend/src/app/core/services/description/description.service.ts index a9289d9a4..69725a8c9 100644 --- a/dmp-frontend/src/app/core/services/description/description.service.ts +++ b/dmp-frontend/src/app/core/services/description/description.service.ts @@ -86,10 +86,6 @@ export class DescriptionService { return this.httpClient.get(`${this.apiBase}/${id}/export/${format}`, { responseType: 'blob', observe: 'response', headers: this.headers }); } - public getExportFormats(): Observable { - return this.httpClient.get(`${this.apiBase}/export/formats`); - } - // // Autocomplete Commons // diff --git a/dmp-frontend/src/app/core/services/dmp/dmp-blueprint.service.ts b/dmp-frontend/src/app/core/services/dmp/dmp-blueprint.service.ts index 06f47ab0e..eb788298a 100644 --- a/dmp-frontend/src/app/core/services/dmp/dmp-blueprint.service.ts +++ b/dmp-frontend/src/app/core/services/dmp/dmp-blueprint.service.ts @@ -1,7 +1,6 @@ import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { IsActive } from '@app/core/common/enum/is-active.enum'; -import { DataTableData } from '@app/core/model/data-table/data-table-data'; import { DmpBlueprint, DmpBlueprintDefinitionSection, DmpBlueprintPersist } from '@app/core/model/dmp-blueprint/dmp-blueprint'; import { DmpBlueprintLookup } from '@app/core/query/dmp-blueprint.lookup'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; @@ -76,7 +75,7 @@ export class DmpBlueprintService { return this.httpClient.get(url, { params: params, responseType: 'blob', observe: 'response', headers: headerXml }); } - uploadFile(file: FileList, labelSent: string, reqFields: string[] = []): Observable> { + uploadFile(file: FileList, labelSent: string, reqFields: string[] = []): Observable { const url = `${this.apiBase}/xml/import`; const params = new BaseHttpParams(); params.interceptorContext = { diff --git a/dmp-frontend/src/app/core/services/dmp/dmp-invitation.service.ts b/dmp-frontend/src/app/core/services/dmp/dmp-invitation.service.ts deleted file mode 100644 index a19663de8..000000000 --- a/dmp-frontend/src/app/core/services/dmp/dmp-invitation.service.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { HttpHeaders } 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 { DmpInvitation } from '../../model/dmp/invitation/dmp-invitation'; -import { DmpInvitationUser } from '../../model/dmp/invitation/dmp-invitation-user'; -import { DmpInvitationUserCriteria } from '../../query/dmp/dmp-invitation-user-criteria'; -import { BaseHttpService } from '../http/base-http.service'; -import { ConfigurationService } from '../configuration/configuration.service'; - -@Injectable() -export class DmpInvitationService { - - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'invite/'; - } - - public inviteDmpInvitationUsers(invitation: DmpInvitation): Observable { - return this.http.post(this.actionUrl + 'users', invitation, { headers: this.headers }); - } - - public getDmpInvitationUsers(usersInvitationRequestItem: RequestItem): Observable { - return this.http.post(this.actionUrl + 'getUsers', usersInvitationRequestItem, { headers: this.headers }); - } - - public exchange(id: String): Observable { - return this.http.get(this.actionUrl + 'exchange/' + 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 0dfcad89a..9045ecf8d 100644 --- a/dmp-frontend/src/app/core/services/dmp/dmp.service.ts +++ b/dmp-frontend/src/app/core/services/dmp/dmp.service.ts @@ -1,9 +1,10 @@ import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { DmpStatus } from '@app/core/common/enum/dmp-status'; import { DmpUserRole } from '@app/core/common/enum/dmp-user-role'; import { IsActive } from '@app/core/common/enum/is-active.enum'; -import { UserInfoListingModel } from '@app/core/model/user/user-info-listing'; -import { VersionListingModel } from '@app/core/model/version/version-listing.model'; +import { FileFormat } from '@app/core/model/file/file-format.model'; +import { DmpDescriptionTemplateLookup } from '@app/core/query/dmp-description-template.lookup'; import { DmpLookup } from '@app/core/query/dmp.lookup'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; @@ -15,29 +16,13 @@ import { catchError, map } from 'rxjs/operators'; import { nameof } from 'ts-simple-nameof'; 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 { CloneDmpPersist, Dmp, DmpModel, DmpPersist, DmpUser, DmpUserPersist, DmpUserRemovePersist, NewVersionDmpPersist } 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 { CloneDmpPersist, Dmp, DmpPersist, DmpUser, DmpUserPersist, DmpUserRemovePersist, NewVersionDmpPersist } from '../../model/dmp/dmp'; import { AuthService } from '../auth/auth.service'; import { ConfigurationService } from '../configuration/configuration.service'; import { BaseHttpV2Service } from '../http/base-http-v2.service'; -import { BaseHttpService } from '../http/base-http.service'; -import { DmpStatus } from '@app/core/common/enum/dmp-status'; -import { DmpDescriptionTemplateLookup } from '@app/core/query/dmp-description-template.lookup'; -import { FileFormat } from '@app/core/model/file/file-format.model'; @Injectable() -export class DmpServiceNew { +export class DmpService { private headers = new HttpHeaders(); @@ -105,7 +90,7 @@ export class DmpServiceNew { const options = { params: { f: reqFields } }; return this.http - .get(url, options).pipe( + .post(url, item).pipe( catchError((error: any) => throwError(error))); } @@ -136,10 +121,6 @@ export class DmpServiceNew { return this.httpClient.get(`${this.apiBase}/${id}/export/Pdf`, { responseType: 'blob', observe: 'response', headers: headerPdf }); } - public getExportFormats(): Observable { - return this.httpClient.get(`${this.apiBase}/export/formats`); - } - // public downloadJson(id: string): Observable> { // return this.httpClient.get(this.actionUrl + 'rda/' + id, { responseType: 'blob', observe: 'response' }); // } @@ -154,7 +135,7 @@ export class DmpServiceNew { return this.httpClient.get(url, { params: params, responseType: 'blob', observe: 'response', headers: headerXml }); } - uploadFile(file: FileList, labelSent: string, reqFields: string[] = []): Observable> { + uploadFile(file: FileList, labelSent: string, reqFields: string[] = []): Observable { const url = `${this.apiBase}/xml/import`; const params = new BaseHttpParams(); params.interceptorContext = { @@ -225,164 +206,4 @@ export class DmpServiceNew { isDmpOwner(dmpUsers: DmpUser[]): Boolean { return this.getCurrentUserRolesInDmp(dmpUsers).includes(DmpUserRole.Owner); } -} - - -// -// -// Pre refactor TODO: delete -// -// - -@Injectable() -export class DmpService { - - private actionUrl: string; - private headers = new HttpHeaders(); - - constructor(private http: BaseHttpService, private httpClient: HttpClient, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'dmps/'; - - } - - getPaged(dataTableRequest: DataTableRequest, fieldsGroup?: string): Observable> { - if (fieldsGroup) { - return this.http.post>(this.actionUrl + 'paged?fieldsGroup=' + fieldsGroup, dataTableRequest, { headers: this.headers }); - } - else { - return this.http.post>(this.actionUrl + 'paged?fieldsGroup=' + fieldsGroup, dataTableRequest, { headers: this.headers }); - } - } - - getSingle(id: String): Observable { - return this.http.get(this.actionUrl + id, { headers: this.headers }); //'getSingle/' + - } - - getSingleNoDatasets(id: String): Observable { - return this.http.get(this.actionUrl + 'plain/' + id, { headers: this.headers }); //'getSingle/' + - } - - getSinglePublic(id: String): Observable { - return this.http.get(this.actionUrl + 'public/' + id, { headers: this.headers }); - } - - getOverviewSingle(id: string): Observable { - return this.http.get(this.actionUrl + 'overview/' + id, { headers: this.headers }); - } - - getOverviewSinglePublic(id: string): Observable { - return this.http.get(this.actionUrl + 'publicOverview/' + id, { headers: this.headers }) - } - - getAllVersions(id: string, isPublic: boolean): Observable { - return this.http.get(this.actionUrl + 'versions/' + id + '?public=' + isPublic, { headers: this.headers }) - } - - unlock(id: String): Observable { - return this.http.get(this.actionUrl + id + '/unlock', { headers: this.headers }); - } - - createDmp(dataManagementPlanModel: DmpModel): Observable { - return this.http.post(this.actionUrl, dataManagementPlanModel, { headers: this.headers }); - } - - createDmpWithDatasets(dataManagementPlanModel: DmpModel): Observable { - return this.http.post(this.actionUrl + 'full', dataManagementPlanModel, { headers: this.headers }); - } - - inactivate(id: String): Observable { - return this.http.delete(this.actionUrl + 'inactivate/' + id, { headers: this.headers }); - } - - searchDmpBlueprints(dataSetProfileRequest: RequestItem): Observable { - return this.http.post(this.actionUrl + 'datasetprofiles/get', dataSetProfileRequest, { headers: this.headers }); - } - - newVersion(dataManagementPlanModel: DmpModel, id: String): Observable { - return this.http.post(this.actionUrl + 'new/' + id, dataManagementPlanModel, { headers: this.headers }); - } - - clone(dataManagementPlanModel: DmpModel, id: String): Observable { - return this.http.post(this.actionUrl + 'clone/' + id, dataManagementPlanModel, { headers: this.headers }); - } - - delete(id: String): Observable { - return this.http.delete(this.actionUrl + id, { headers: this.headers }); // + 'delete/' - } - - publish(id: String): Observable { - return this.http.get(this.actionUrl + 'makepublic/' + id, { headers: this.headers }); - } - - finalize(datasetsToBeFinalized: DatasetsToBeFinalized, id: String): Observable { - return this.http.post(this.actionUrl + 'finalize/' + id, datasetsToBeFinalized, { headers: this.headers }); - } - - unfinalize(id: String): Observable { - return this.http.post(this.actionUrl + 'unfinalize/' + id, { headers: this.headers }); - } - - updateUsers(id: string, users: UserInfoListingModel[]): Observable { - return this.http.post(`${this.actionUrl}updateusers/${id}`, users, { headers: this.headers }); - } - - getDynamicField(requestItem: RequestItem): any { - return this.http.post(this.actionUrl + 'dynamic', requestItem, { headers: this.headers }); - } - - public downloadXML(id: string): Observable> { - let headerXml: HttpHeaders = this.headers.set('Content-Type', 'application/xml') - return this.httpClient.get(this.actionUrl + id, { responseType: 'blob', observe: 'response', headers: headerXml }); //+ "/getXml/" - } - - public downloadDocx(id: string): Observable> { - let headerDoc: HttpHeaders = this.headers.set('Content-Type', 'application/msword') - return this.httpClient.get(this.actionUrl + id, { responseType: 'blob', observe: 'response', headers: headerDoc }); - } - - public downloadPDF(id: string): Observable> { - let headerPdf: HttpHeaders = this.headers.set('Content-Type', 'application/pdf') - return this.httpClient.get(this.actionUrl + 'getPDF/' + id, { responseType: 'blob', observe: 'response', headers: headerPdf }); - } - - public downloadJson(id: string): Observable> { - return this.httpClient.get(this.actionUrl + 'rda/' + id, { responseType: 'blob', observe: 'response' }); - } - - public uploadXml(fileList: FileList, dmpTitle: string, dmpBlueprints: any[]): Observable { - const formData: FormData = new FormData(); - if (fileList instanceof FileList) { - for (let i = 0; i < fileList.length; i++) { - formData.append('file', fileList[i], dmpTitle); - } - } else if (Array.isArray(fileList)) { - formData.append('file', fileList[0], dmpTitle); - } else { - formData.append('file', fileList, dmpTitle); - } - for (let j = 0; j < dmpBlueprints.length; j++) { - formData.append('profiles', dmpBlueprints[j].id); - } - const params = new BaseHttpParams(); - params.interceptorContext = { - excludedInterceptors: [InterceptorType.JSONContentType] - }; - return this.http.post(this.actionUrl + 'upload', formData, { params: params }); - } - - getPublicPaged(dataTableRequest: DataTableRequest, fieldsGroup?: string): Observable> { - return this.http.post>(this.actionUrl + 'public/paged?fieldsGroup=' + fieldsGroup, dataTableRequest, { headers: this.headers }); - } - - getDatasetProfilesUsedPaged(dataTableRequest: DataTableRequest) { - return this.http.post>(this.actionUrl + 'datasetProfilesUsedByDmps/paged', dataTableRequest); - } - - generateIndex() { - return this.http.post(this.actionUrl + 'index', {}); - } - - clearIndex() { - return this.http.delete(this.actionUrl + 'index'); - } -} +} \ No newline at end of file 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 deleted file mode 100644 index bae593b87..000000000 --- a/dmp-frontend/src/app/core/services/email-confirmation/email-confirmation.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { HttpHeaders } from '@angular/common/http'; -import { Injectable } from "@angular/core"; -import { environment } from "../../../../environments/environment"; -import { BaseHttpService } from "../http/base-http.service"; -import { ConfigurationService } from '../configuration/configuration.service'; - -@Injectable() -export class EmailConfirmationService { - private actioUrl: string; - private headers: HttpHeaders - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actioUrl = configurationService.server + 'emailConfirmation/'; - } - - public emailConfirmation(token: string) { - return this.http.get(this.actioUrl + token, { headers: this.headers }); - } - - public sendConfirmationEmail(email: string) { - return this.http.post(this.actioUrl, email, { headers: this.headers }); - } -} diff --git a/dmp-frontend/src/app/core/services/external-sources/currency/currency.service.ts b/dmp-frontend/src/app/core/services/external-sources/currency/currency.service.ts deleted file mode 100644 index 3ab66a2ec..000000000 --- a/dmp-frontend/src/app/core/services/external-sources/currency/currency.service.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ConfigurationService } from '../../configuration/configuration.service'; -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { LocalFetchModel } from '@app/core/model/local-fetch/local-fetch.model'; -import { BaseHttpService } from '../../http/base-http.service'; - -@Injectable() -export class CurrencyService { - - private actionUrl: string; - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'currency'; - } - - get(): Observable { - return this.http.get(this.actionUrl); - } - -} diff --git a/dmp-frontend/src/app/core/services/external-sources/data-repository/extternal-data-repository.service.ts b/dmp-frontend/src/app/core/services/external-sources/data-repository/extternal-data-repository.service.ts deleted file mode 100644 index 5fd29f12b..000000000 --- a/dmp-frontend/src/app/core/services/external-sources/data-repository/extternal-data-repository.service.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { environment } from '../../../../../environments/environment'; -import { DataRepositoryModel } from '../../../model/data-repository/data-repository'; -import { BaseHttpService } from '../../http/base-http.service'; -import { ConfigurationService } from '../../configuration/configuration.service'; - -@Injectable() -export class ExternalDataRepositoryService { - - private actionUrl: string; - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'external/datarepos'; - } - - create(dataRepoModel: DataRepositoryModel): Observable { - return this.http.post(this.actionUrl , dataRepoModel); - } - -} diff --git a/dmp-frontend/src/app/core/services/external-sources/dataset/external-dataset.service.ts b/dmp-frontend/src/app/core/services/external-sources/dataset/external-dataset.service.ts deleted file mode 100644 index 260bb989a..000000000 --- a/dmp-frontend/src/app/core/services/external-sources/dataset/external-dataset.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { environment } from '../../../../../environments/environment'; -import { RequestItem } from '../../../query/request-item'; -import { DataTableData } from '../../../model/data-table/data-table-data'; -import { DataTableRequest } from '../../../model/data-table/data-table-request'; -import { ExternalDatasetModel } from '../../../model/external-dataset/external-dataset'; -import { ExternalDatasetCriteria } from '../../../query/external-dataset/external-dataset-criteria'; -import { BaseHttpService } from '../../http/base-http.service'; -import { ConfigurationService } from '../../configuration/configuration.service'; - -@Injectable() -export class ExternalDatasetService { - - private actionUrl: string; - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'externaldatasets/'; - } - - create(externalDatasetModel: ExternalDatasetModel): Observable { - return this.http.post(this.actionUrl, externalDatasetModel); - } -} diff --git a/dmp-frontend/src/app/core/services/external-sources/external-sources-configuration.service.ts b/dmp-frontend/src/app/core/services/external-sources/external-sources-configuration.service.ts deleted file mode 100644 index f443a4004..000000000 --- a/dmp-frontend/src/app/core/services/external-sources/external-sources-configuration.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { HttpHeaders } from '@angular/common/http'; -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { environment } from '../../../../environments/environment'; -import { ExternalSourcesConfiguration } from '../../model/external-sources/external-sources-configuration'; -import { BaseHttpService } from '../http/base-http.service'; -import { ConfigurationService } from '../configuration/configuration.service'; - -@Injectable() -export class ExternalSourcesConfigurationService { - - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'common/'; - } - - public getExternalSourcesConfiguration(): Observable { - return this.http.get(this.actionUrl + 'externalSourcesConfiguration', { headers: this.headers }); - } - -} diff --git a/dmp-frontend/src/app/core/services/external-sources/external-sources.service.ts b/dmp-frontend/src/app/core/services/external-sources/external-sources.service.ts deleted file mode 100644 index 937aa57fa..000000000 --- a/dmp-frontend/src/app/core/services/external-sources/external-sources.service.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { HttpHeaders } 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 { ExternalSourceItemModel } from '../../model/external-sources/external-source-item'; -import { DataRepositoryCriteria } from '../../query/data-repository/data-repository-criteria'; -import { ExternalDatasetCriteria } from '../../query/external-dataset/external-dataset-criteria'; -import { RegistryCriteria } from '../../query/registry/registry-criteria'; -import { ResearcherCriteria } from '../../query/researcher/researcher-criteria'; -import { ServiceCriteria } from '../../query/service/service-criteria'; -import { TagCriteria } from '../../query/tag/tag-criteria'; -import { BaseHttpService } from '../http/base-http.service'; -import { ConfigurationService } from '../configuration/configuration.service'; -import { LicenseCriteria } from '@app/core/query/license/license-criteria'; -import {PublicationCriteria} from "@app/core/query/publication/publication-criteria"; -import { FetcherReference } from '@app/core/model/reference/reference'; -import { ReferenceType } from '@app/core/common/enum/reference-type'; -@Injectable() -export class ExternalSourcesService { - - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - - this.actionUrl = configurationService.server + 'external/'; - - this.headers = new HttpHeaders(); - this.headers = this.headers.set('Content-Type', 'application/json'); - this.headers = this.headers.set('Accept', 'application/json'); - } - - public searchDatasetRegistry(requestItem: RequestItem): Observable { - return this.http.get(this.actionUrl + 'registries' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); - } - - public searchDatasetRepository(requestItem: RequestItem): Observable { - return this.http.get(this.actionUrl + 'datarepos' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); - } - public searchPublicationRepository(requestItem: RequestItem): Observable { - return this.http.get(this.actionUrl + 'pubrepos' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); - } - public searchJournals(requestItem: RequestItem): Observable { - return this.http.get(this.actionUrl + 'journals' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); - } - public searchTaxonomies(requestItem: RequestItem): Observable { - return this.http.get(this.actionUrl + 'taxonomies' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); - } - public searchPublications(requestItem: RequestItem): Observable { - return this.http.get(this.actionUrl + 'publications' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); - } - - public searchDatasetService(requestItem: RequestItem): Observable { - return this.http.get(this.actionUrl + 'services' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); - } - - public searchLicense(requestItem: RequestItem): Observable { - return this.http.get(this.actionUrl + 'licenses' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); - } - - public listExternal(externalType: ReferenceType, query: string, type: string): Observable { - const url = this.configurationService.server + `reference/search/${externalType}`; - const options = { params: { query: query, type: type } }; - - return this.http.get(url, options); - } - - public searchDatasetTags(requestItem: RequestItem): Observable { - // return Observable.of([ - // { id: '1', name: 'Tag 1', description: '' }, - // { id: '2', name: 'Tag 2', description: '' }, - // { id: '3', name: 'Tag 3', description: '' }, - // { id: '4', name: 'Tag 4', description: '' }, - // { id: '5', name: 'Tag 5', description: '' }, - // { id: '6', name: 'Tag 6', description: '' }, - // { id: '7', name: 'Tag 7', description: '' }, - // { id: '8', name: 'Tag 8', description: '' }, - // ]); - return this.http.get(this.actionUrl + "tags" + "?query=" + requestItem.criteria.like + "&type=" + requestItem.criteria.type, { headers: this.headers }); - } - - public searchDatasetSExternalDatasetservice(requestItem: RequestItem): Observable { - return this.http.get(this.actionUrl + 'datasets' + '?query=' + requestItem.criteria.like + '&type=' + requestItem.criteria.type, { headers: this.headers }); - } - - public searchDMPResearchers(requestItem: RequestItem): Observable { - return this.http.post(this.configurationService.server + 'researchers/getWithExternal', requestItem, { headers: this.headers }); - } - - public searchDMPOrganizations(like: string, reference?: string): Observable { - const params = { - query:like - } - if(reference){ - params['reference'] = reference; - } - return this.http.get(this.actionUrl + 'organisations', { headers: this.headers, params: params }); - } - - // TODO: currently not used. - public searchDmpBlueprints(like: string): Observable { - return this.http.get(this.actionUrl + 'datasetprofiles/get' + '?query=' + like, { headers: this.headers }); - } - - public validateIdentifier(like: string, type: string): Observable { - return this.http.get(this.actionUrl + 'validation?query=' + like + '&type=' + type, { headers: this.headers }); - } - -} diff --git a/dmp-frontend/src/app/core/services/external-sources/registry/external-registry.service.ts b/dmp-frontend/src/app/core/services/external-sources/registry/external-registry.service.ts deleted file mode 100644 index 3b4e1ef3a..000000000 --- a/dmp-frontend/src/app/core/services/external-sources/registry/external-registry.service.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { environment } from '../../../../../environments/environment'; -import { RegistryModel } from '../../../model/registry/registry'; -import { BaseHttpService } from '../../http/base-http.service'; -import { ConfigurationService } from '../../configuration/configuration.service'; - -@Injectable() -export class ExternalRegistryService { - - private actionUrl: string; - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'registries/'; - } - - create(registerModel: RegistryModel): Observable { - return this.http.post(this.actionUrl, registerModel); - } -} diff --git a/dmp-frontend/src/app/core/services/external-sources/researcher/external-researcher.service.ts b/dmp-frontend/src/app/core/services/external-sources/researcher/external-researcher.service.ts deleted file mode 100644 index 3651c83e4..000000000 --- a/dmp-frontend/src/app/core/services/external-sources/researcher/external-researcher.service.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Injectable } from '@angular/core'; -import { environment } from '../../../../../environments/environment'; -import { ResearcherModel } from '../../../model/researcher/researcher'; -import { BaseHttpService } from '../../http/base-http.service'; -import { ConfigurationService } from '../../configuration/configuration.service'; - -@Injectable() -export class ExternalResearcherService { - - private actionUrl: string; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'researchers/'; - } - - public createResearcher(researcher: ResearcherModel) { - return this.http.post(this.actionUrl, researcher); - } - -} diff --git a/dmp-frontend/src/app/core/services/external-sources/service/external-service.service.ts b/dmp-frontend/src/app/core/services/external-sources/service/external-service.service.ts deleted file mode 100644 index 3a5fa623e..000000000 --- a/dmp-frontend/src/app/core/services/external-sources/service/external-service.service.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { environment } from '../../../../../environments/environment'; -import { ServiceModel } from '../../../model/service/service'; -import { BaseHttpService } from '../../http/base-http.service'; -import { ConfigurationService } from '../../configuration/configuration.service'; - -@Injectable() -export class ExternalServiceService { - - private actionUrl: string; - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'services/'; - } - - create(serviceModel: ServiceModel): Observable { - return this.http.post(this.actionUrl, serviceModel); - } - -} diff --git a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts new file mode 100644 index 000000000..85acc4801 --- /dev/null +++ b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.http.service.ts @@ -0,0 +1,39 @@ +import { HttpHeaders } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { FileFormat } from '@app/core/model/file/file-format.model'; +import { BaseService } from '@common/base/base.service'; +import { Guid } from '@common/types/guid'; +import { Observable, throwError } from 'rxjs'; +import { catchError } from 'rxjs/operators'; +import { ConfigurationService } from '../configuration/configuration.service'; +import { BaseHttpV2Service } from '../http/base-http-v2.service'; + +@Injectable() +export class FileTransformerHttpService extends BaseService { + + private headers = new HttpHeaders(); + + constructor( + private http: BaseHttpV2Service, + private configurationService: ConfigurationService + ) { super(); } + + private get apiBase(): string { return `${this.configurationService.server}file-transformer`; } + + getAvailableConfigurations(): Observable { + const url = `${this.apiBase}/available`; + return this.http.get(url).pipe(catchError((error: any) => throwError(error))); + } + + exportDmp(dmpId: Guid): Observable { + //TODO: implement + const url = `${this.apiBase}/export-dmp`; + return this.http.post(url, null).pipe(catchError((error: any) => throwError(error))); + } + + exportDescription(item: any): Observable { + //TODO: implement + const url = `${this.apiBase}/export-description`; + return this.http.post(url, item).pipe(catchError((error: any) => throwError(error))); + } +} diff --git a/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts new file mode 100644 index 000000000..e1dfbf4c0 --- /dev/null +++ b/dmp-frontend/src/app/core/services/file-transformer/file-transformer.service.ts @@ -0,0 +1,37 @@ +import { Injectable } from '@angular/core'; +import { FileFormat } from '@app/core/model/file/file-format.model'; +import { BaseService } from '@common/base/base.service'; +import { catchError, takeUntil } from 'rxjs/operators'; +import { FileTransformerHttpService } from './file-transformer.http.service'; + +@Injectable() +export class FileTransformerService extends BaseService { + + constructor( + private fileTransformerHttpService: FileTransformerHttpService + ) { super(); } + + private _initialized: boolean = false; + private _loading: boolean = false; + + private _availableFormats: FileFormat[] = []; + get availableFormats(): FileFormat[] { + // console.log('availableFormats'); + if (!this._initialized && !this._loading) this.init(); + return this._availableFormats; + } + + init() { + this._loading = true; + // console.log('init'); + this.fileTransformerHttpService.getAvailableConfigurations().pipe(takeUntil(this._destroyed), catchError((error) => { + this._loading = false; + this._initialized = true; + return []; + })).subscribe(items => { + this._availableFormats = items; + this._loading = false; + this._initialized = true; + }); + } +} diff --git a/dmp-frontend/src/app/core/services/file/file.service.ts b/dmp-frontend/src/app/core/services/file/file.service.ts deleted file mode 100644 index 337688e93..000000000 --- a/dmp-frontend/src/app/core/services/file/file.service.ts +++ /dev/null @@ -1,68 +0,0 @@ -import {RequestItem} from "@app/core/query/request-item"; -import {ResearcherCriteria} from "@app/core/query/researcher/researcher-criteria"; -import {Observable} from "rxjs"; -import {ExternalSourceItemModel} from "@app/core/model/external-sources/external-source-item"; -import {Injectable} from "@angular/core"; -import {HttpClient, HttpHeaders, HttpResponse} from "@angular/common/http"; -import {BaseHttpService} from "@app/core/services/http/base-http.service"; -import {ConfigurationService} from "@app/core/services/configuration/configuration.service"; -import {BaseHttpParams} from "@common/http/base-http-params"; -import {InterceptorType} from "@common/http/interceptors/interceptor-type"; -import {tap} from "rxjs/operators"; - -@Injectable() -export class FileService { - - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private httpClient: HttpClient, private configurationService: ConfigurationService) { - - this.actionUrl = configurationService.server + 'file/'; - - this.headers = new HttpHeaders(); - this.headers = this.headers.set('Content-Type', 'application/json'); - this.headers = this.headers.set('Accept', 'application/json'); - } - - public upload(fileList: File, datasetProfileId: string, fieldId: string): Observable { - const formData: FormData = new FormData(); - // if (fileList instanceof FileList) { - // for (let i = 0; i < fileList.length; i++) { - // formData.append('file', fileList[i], "test-konstantina"); - // } - // } else if (Array.isArray(fileList)) { - // formData.append('files', fileList); - // } else { - formData.append('file', fileList); - formData.append('datasetProfileId', datasetProfileId); - formData.append('fieldId', fieldId); - // } - // formData.append("fileType", fileList.) - console.log(fileList.type, fileList.name, fileList.size); - const params = new BaseHttpParams(); - params.interceptorContext = { - excludedInterceptors: [InterceptorType.JSONContentType] - }; - return this.http.post(this.actionUrl + 'upload', formData - , { params: params } - ); - } - - public deleteFromTempFolder(uuid: string) { - const params = new BaseHttpParams(); - params.interceptorContext = { - excludedInterceptors: [InterceptorType.JSONContentType] - }; - return this.http.post(this.actionUrl + 'delete-temp', uuid - , { params: params } - ); - } - - public download(id: string): Observable> { - // let headerDocx: HttpHeaders = this.headers.set('Content-Type', 'application/msword') - return this.httpClient.get(this.actionUrl + id, { responseType: 'blob', observe: 'response' - , headers: this.headers - });//.pipe(tap(x => console.log(x)); - } -} diff --git a/dmp-frontend/src/app/core/services/funder/funder.service.ts b/dmp-frontend/src/app/core/services/funder/funder.service.ts deleted file mode 100644 index 86430d977..000000000 --- a/dmp-frontend/src/app/core/services/funder/funder.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Observable } from "rxjs"; -import { Injectable } from "@angular/core"; -import { HttpHeaders } from "@angular/common/http"; -import { RequestItem } from "../../query/request-item"; -import { BaseHttpService } from "../http/base-http.service"; -import { environment } from '../../../../environments/environment'; -import { FunderCriteria } from "../../query/funder/funder-criteria"; -import { FunderModel } from "../../model/funder/funder"; -import { ConfigurationService } from '../configuration/configuration.service'; - -@Injectable() -export class FunderService { - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'funders/'; - } - - getWithExternal(requestItem: RequestItem): Observable { - return this.http.post(this.actionUrl + 'external', requestItem, { headers: this.headers }); - } -} diff --git a/dmp-frontend/src/app/core/services/grant/grant-file-upload.service.ts b/dmp-frontend/src/app/core/services/grant/grant-file-upload.service.ts deleted file mode 100644 index 78aa904d3..000000000 --- a/dmp-frontend/src/app/core/services/grant/grant-file-upload.service.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { HttpHeaders } from '@angular/common/http'; -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { environment } from '../../../../environments/environment'; -import { ContentFile } from '../../model/grant/grant-listing'; -import { BaseHttpService } from '../http/base-http.service'; -import { BaseHttpParams } from '../../../../common/http/base-http-params'; -import { InterceptorType } from '../../../../common/http/interceptors/interceptor-type'; -import { ConfigurationService } from '../configuration/configuration.service'; - -@Injectable() -export class GrantFileUploadService { - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'files/'; - } - - uploadFile(formData: FormData): Observable { - const params = new BaseHttpParams(); - params.interceptorContext = { - excludedInterceptors: [InterceptorType.JSONContentType] - }; - return this.http.post(this.actionUrl + 'upload', formData, { params: params }); - } -} diff --git a/dmp-frontend/src/app/core/services/grant/grant.service.ts b/dmp-frontend/src/app/core/services/grant/grant.service.ts deleted file mode 100644 index 01d80993f..000000000 --- a/dmp-frontend/src/app/core/services/grant/grant.service.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { HttpHeaders } from '@angular/common/http'; -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { environment } from '../../../../environments/environment'; -import { DataTableData } from '../../model/data-table/data-table-data'; -import { DataTableRequest } from '../../model/data-table/data-table-request'; -import { GrantListingModel } from '../../model/grant/grant-listing'; -import { GrantCriteria } from '../../query/grant/grant-criteria'; -import { RequestItem } from '../../query/request-item'; -import { BaseHttpService } from '../http/base-http.service'; -import { ConfigurationService } from '../configuration/configuration.service'; - - -@Injectable() -export class GrantService { - - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'grants/'; - } - - getPaged(dataTableRequest: DataTableRequest, fieldsGroup?: string): Observable> { - if (fieldsGroup) { - return this.http.post>(this.actionUrl + 'paged?fieldsGroup=' + fieldsGroup, dataTableRequest, { headers: this.headers }); - } - else { - return this.http.post>(this.actionUrl + 'paged?fieldsGroup=' + 'autocomplete', dataTableRequest, { headers: this.headers }); - } - } - - getPublicPaged(dataTableRequest: DataTableRequest): Observable> { - return this.http.post>(this.actionUrl + 'public/paged', dataTableRequest, { headers: this.headers }); - } - - getWithExternal(requestItem: RequestItem): Observable { - return this.http.post(this.actionUrl + 'external', requestItem, { headers: this.headers }); - } - - getSingle(id: string): Observable { - return this.http.get(this.actionUrl + id, { headers: this.headers }); - } - - createGrant(grantModel: GrantListingModel): Observable { - return this.http.post(this.actionUrl, grantModel, { headers: this.headers }); - } - - // Actually sets it inactive. - delete(id: String): Observable { - return this.http.delete(this.actionUrl + id, { headers: this.headers }); - } -} diff --git a/dmp-frontend/src/app/core/services/help-content/cached-content-item.ts b/dmp-frontend/src/app/core/services/help-content/cached-content-item.ts deleted file mode 100644 index c33f7a264..000000000 --- a/dmp-frontend/src/app/core/services/help-content/cached-content-item.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { PageHelpContent } from "../../model/help-content/page-help-content"; - -export class CachedContentItem { - public timestamp: number; - public content: PageHelpContent; -} 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 deleted file mode 100644 index 5682d934f..000000000 --- a/dmp-frontend/src/app/core/services/help-content/help-content.service.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { HttpClient } from '@angular/common/http'; -/** - * Created by stefania on 7/17/17. - */ -import { Injectable } from '@angular/core'; -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'; -import { ConfigurationService } from '../configuration/configuration.service'; - - -@Injectable() -export class HelpContentService { - private _helpServiceUrl: string; - cache = new Map(); - - constructor(private http: HttpClient, private configurationService: ConfigurationService) { - this._helpServiceUrl = configurationService.helpService.url; - } - - // 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; } - // } -} 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 deleted file mode 100644 index 7fe8f473d..000000000 --- a/dmp-frontend/src/app/core/services/http/base-http.service.ts +++ /dev/null @@ -1,90 +0,0 @@ - -import {map} from 'rxjs/operators'; -import { HttpClient } from '@angular/common/http'; -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { ApiMessageCode } from '../../common/enum/api-message-code'; - -@Injectable() -export class BaseHttpService { - constructor( - protected http: HttpClient - ) { - } - - get(url: string, options?: Object): Observable { - return this.interceptRepsonse(this.http.get(url, options)); - } - - post(url: string, body: any, options?: Object): Observable { - return this.interceptRepsonse(this.http.post(url, body, options)); - } - - put(url: string, body: any, options?: Object): Observable { - return this.interceptRepsonse(this.http.put(url, body, options)); - } - - delete(url: string, options?: Object): Observable { - return this.interceptRepsonse(this.http.delete(url, options)); - } - - patch(url: string, body: any, options?: Object): Observable { - return this.interceptRepsonse(this.http.patch(url, body, options)); - } - - head(url: string, options?: Object): Observable { - return this.interceptRepsonse(this.http.head(url, options)); - } - - options(url: string, options?: Object): Observable { - return this.interceptRepsonse(this.http.options(url, options)); - } - - private interceptRepsonse(observable: Observable): Observable { - return observable.pipe( - // .catch((errorResponse) => { - // if (errorResponse.status === 401) { - // this.snackBar.openFromComponent(SnackBarNotificationComponent, { - // data: { message: 'GENERAL.SNACK-BAR.SUCCESSFUL-LOGOUT', language: this.language }, - // duration: 3000, - // }); - // const currentPage = this.router.url; - // this.router.navigate(['/unauthorized'], { queryParams: { returnUrl: currentPage } }); - // //this.notification.httpError(error); - // return Observable.of(); - // } else { - // const error: any = errorResponse.error; - // if (error.statusCode === ApiMessageCode.ERROR_MESSAGE) { - // this.snackBar.openFromComponent(SnackBarNotificationComponent, { - // data: { message: error.message, language: null }, - // duration: 3000, - // }); - // return Observable.throw(errorResponse); - // } else if (error.statusCode === ApiMessageCode.VALIDATION_MESSAGE) { - // return Observable.throw(errorResponse); - // } else { - // this.snackBar.openFromComponent(SnackBarNotificationComponent, { - // data: { message: 'GENERAL.ERRORS.HTTP-REQUEST-ERROR', language: this.language }, - // duration: 3000, - // }); - // return Observable.throw(errorResponse); - // } - // } - // }) - map(response => { - if (response instanceof Blob) { return response; } - if (response['statusCode'] === ApiMessageCode.SUCCESS_MESSAGE) { - //throw new Error('Request failed'); - // this.snackBar.openFromComponent(SnackBarNotificationComponent, { - // data: { message: response['message'], language: null }, - // duration: 3000, - // }); - return response['payload']; - } else if (response['statusCode'] === ApiMessageCode.NO_MESSAGE) { - return response['payload']; - } else { - return response['payload']; - } - })); - } -} diff --git a/dmp-frontend/src/app/core/services/http/principal.service.ts b/dmp-frontend/src/app/core/services/http/principal.service.ts index 851a3d746..50b9cc5b5 100644 --- a/dmp-frontend/src/app/core/services/http/principal.service.ts +++ b/dmp-frontend/src/app/core/services/http/principal.service.ts @@ -1,8 +1,8 @@ import { Injectable } from '@angular/core'; -import { ConfigurationService } from '../configuration/configuration.service'; -import { BaseHttpService } from './base-http.service'; -import { Observable } from 'rxjs'; import { AppAccount } from '@app/core/model/auth/principal'; +import { Observable } from 'rxjs'; +import { ConfigurationService } from '../configuration/configuration.service'; +import { BaseHttpV2Service } from './base-http-v2.service'; @Injectable() export class PrincipalService { @@ -11,7 +11,7 @@ export class PrincipalService { constructor( private installationConfiguration: ConfigurationService, - private http: BaseHttpService + private http: BaseHttpV2Service ) { } public me(options?: Object): Observable { diff --git a/dmp-frontend/src/app/core/services/language/language.http.service.ts b/dmp-frontend/src/app/core/services/language/language.http.service.ts index 0ca160433..aff0f3a79 100644 --- a/dmp-frontend/src/app/core/services/language/language.http.service.ts +++ b/dmp-frontend/src/app/core/services/language/language.http.service.ts @@ -12,7 +12,6 @@ import { catchError, map } from 'rxjs/operators'; import { nameof } from 'ts-simple-nameof'; import { ConfigurationService } from '../configuration/configuration.service'; import { BaseHttpV2Service } from '../http/base-http-v2.service'; -import { HttpResponse } from '@angular/common/http'; @Injectable() export class LanguageHttpService { diff --git a/dmp-frontend/src/app/core/services/language/server.loader.ts b/dmp-frontend/src/app/core/services/language/server.loader.ts index f794533a0..007e8e892 100644 --- a/dmp-frontend/src/app/core/services/language/server.loader.ts +++ b/dmp-frontend/src/app/core/services/language/server.loader.ts @@ -1,14 +1,9 @@ +import { Language } from '@app/core/model/language/language'; import { TranslateLoader } from '@ngx-translate/core'; import { Observable } from 'rxjs'; -import { environment } from 'environments/environment'; -import { HttpClient } from '@angular/common/http'; -import { ConfigurationService } from '../configuration/configuration.service'; -import { BaseHttpParams } from '@common/http/base-http-params'; -import { InterceptorType } from '@common/http/interceptors/interceptor-type'; -import { LanguageHttpService } from './language.http.service'; import { map } from 'rxjs/operators'; import { nameof } from 'ts-simple-nameof'; -import { Language } from '@app/core/model/language/language'; +import { LanguageHttpService } from './language.http.service'; export class TranslateServerLoader implements TranslateLoader { diff --git a/dmp-frontend/src/app/core/services/lock/lock.service.ts b/dmp-frontend/src/app/core/services/lock/lock.service.ts index 9f689c039..742c73d08 100644 --- a/dmp-frontend/src/app/core/services/lock/lock.service.ts +++ b/dmp-frontend/src/app/core/services/lock/lock.service.ts @@ -1,14 +1,14 @@ +import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { HttpHeaders, HttpClient, HttpResponse } from '@angular/common/http'; -import { Observable, throwError } from 'rxjs'; -import { Lock, LockModel, LockPersist } from '@app/core/model/lock/lock.model'; -import { ConfigurationService } from '../configuration/configuration.service'; -import { BaseHttpV2Service } from '../http/base-http-v2.service'; -import { FilterService } from '@common/modules/text-filter/filter-service'; +import { Lock, LockPersist } from '@app/core/model/lock/lock.model'; import { LockLookup } from '@app/core/query/lock.lookup'; import { QueryResult } from '@common/model/query-result'; -import { catchError } from 'rxjs/operators'; +import { FilterService } from '@common/modules/text-filter/filter-service'; import { Guid } from '@common/types/guid'; +import { Observable, throwError } from 'rxjs'; +import { catchError } from 'rxjs/operators'; +import { ConfigurationService } from '../configuration/configuration.service'; +import { BaseHttpV2Service } from '../http/base-http-v2.service'; @Injectable() export class LockService { @@ -57,7 +57,7 @@ export class LockService { unlockTarget(targetId: Guid): Observable { return this.http.delete(`${this.apiBase}/target/unlock/${targetId}`) - .pipe(catchError((error: any) => throwError(error))); + .pipe(catchError((error: any) => throwError(error))); } getSingleWithTarget(targetId: Guid, reqFields: string[] = []): Observable { @@ -68,9 +68,4 @@ export class LockService { .get(url, options).pipe( catchError((error: any) => throwError(error))); } - - //ToDo replace with persist function - createOrUpdate(lock: LockModel): Observable { - return this.http.post(`${this.apiBase}`, lock, { headers: this.headers }); - } } diff --git a/dmp-frontend/src/app/core/services/logging/logging-service.ts b/dmp-frontend/src/app/core/services/logging/logging-service.ts index b8d8a2629..0a66c39c6 100644 --- a/dmp-frontend/src/app/core/services/logging/logging-service.ts +++ b/dmp-frontend/src/app/core/services/logging/logging-service.ts @@ -1,5 +1,4 @@ import { Injectable } from '@angular/core'; -import { environment } from '../../../../environments/environment'; import { ConfigurationService } from '../configuration/configuration.service'; export enum LogLevel { diff --git a/dmp-frontend/src/app/core/services/maintenance-tasks/maintenance-tasks.service.ts b/dmp-frontend/src/app/core/services/maintenance-tasks/maintenance-tasks.service.ts deleted file mode 100644 index 01062cd55..000000000 --- a/dmp-frontend/src/app/core/services/maintenance-tasks/maintenance-tasks.service.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Injectable } from "@angular/core"; -import { BaseService } from "@common/base/base.service"; -import { Observable } from "rxjs"; -import { ConfigurationService } from "../configuration/configuration.service"; -import { BaseHttpService } from "../http/base-http.service"; - -@Injectable() -export class MaintenanceTasksService extends BaseService { - - private actionUrl: string; - - constructor(private http: BaseHttpService, configurationService: ConfigurationService) { - super(); - this.actionUrl = configurationService.server + 'management/'; - } - - migrateSemantics(): Observable { - return this.http.post(this.actionUrl + 'addSemantics/', null); - } - - addRdaInSemantics(): Observable { - return this.http.post(this.actionUrl + 'addRdaInSemantics/', null); - } -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/services/maintenance/maintenance.service.ts b/dmp-frontend/src/app/core/services/maintenance/maintenance.service.ts index 2060616e2..ce966e3d3 100644 --- a/dmp-frontend/src/app/core/services/maintenance/maintenance.service.ts +++ b/dmp-frontend/src/app/core/services/maintenance/maintenance.service.ts @@ -1,27 +1,31 @@ -import { BaseService } from "@common/base/base.service"; -import { BaseHttpService } from "../http/base-http.service"; -import { ConfigurationService } from "../configuration/configuration.service"; import { Injectable } from "@angular/core"; -import { Observable } from "rxjs"; +import { BaseService } from "@common/base/base.service"; +import { Observable, throwError } from "rxjs"; +import { catchError } from "rxjs/operators"; +import { ConfigurationService } from "../configuration/configuration.service"; +import { BaseHttpV2Service } from "../http/base-http-v2.service"; @Injectable() -export class MaintenanceService extends BaseService{ +export class MaintenanceService extends BaseService { - private actionUrl: string; + constructor( + private http: BaseHttpV2Service, + private installationConfiguration: ConfigurationService, + ) { super(); } - constructor(private http: BaseHttpService, - private configurationService: ConfigurationService) { - super(); - this.actionUrl = `${configurationService.server}maintenance`; + private get apiBase(): string { return `${this.installationConfiguration.server}maintenance`; } + + generateElasticIndex(): Observable { + const url = `${this.apiBase}/index/elastic`; + return this.http + .post(url, null).pipe( + catchError((error: any) => throwError(error))); } - public generateElasticIndex(): Observable { - return this.http.post(`${this.actionUrl}/index/elastic`, null); + clearElasticIndex(): Observable { + const url = `${this.apiBase}/index/elastic`; + return this.http + .delete(url).pipe( + catchError((error: any) => throwError(error))); } - - public clearElasticIndex(): Observable { - return this.http.delete(`${this.actionUrl}/index/elastic`); - } - - } diff --git a/dmp-frontend/src/app/core/services/merge-email-confirmation/merge-email-confirmation.service.ts b/dmp-frontend/src/app/core/services/merge-email-confirmation/merge-email-confirmation.service.ts deleted file mode 100644 index 0f3676932..000000000 --- a/dmp-frontend/src/app/core/services/merge-email-confirmation/merge-email-confirmation.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { HttpHeaders } from '@angular/common/http'; -import { Injectable } from "@angular/core"; -import { BaseHttpService } from "../http/base-http.service"; -import { ConfigurationService } from '../configuration/configuration.service'; -import { UserMergeRequestModel } from '@app/core/model/merge/user-merge-request'; - -@Injectable() -export class MergeEmailConfirmationService { - private actioUrl: string; - private headers: HttpHeaders - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actioUrl = configurationService.server + 'emailMergeConfirmation/'; - } - - public emailConfirmation(token: string) { - return this.http.get(this.actioUrl + token, { headers: this.headers }); - } - - public sendConfirmationEmail(mergeRequest: UserMergeRequestModel) { - return this.http.post(this.actioUrl, mergeRequest, { headers: this.headers }); - } -} diff --git a/dmp-frontend/src/app/core/services/organisation/organisation.service.ts b/dmp-frontend/src/app/core/services/organisation/organisation.service.ts deleted file mode 100644 index 0cc4f67d0..000000000 --- a/dmp-frontend/src/app/core/services/organisation/organisation.service.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { HttpHeaders } from "@angular/common/http"; -import { Injectable } from "@angular/core"; -import { ExternalSourceItemModel } from "@app/core/model/external-sources/external-source-item"; -import { RequestItem } from "@app/core/query/request-item"; -import { Observable } from "rxjs"; -import { DataTableData } from "../../model/data-table/data-table-data"; -import { DataTableRequest } from "../../model/data-table/data-table-request"; -import { OrganizationModel } from "../../model/organisation/organization"; -import { OrganisationCriteria } from "../../query/organisation/organisation-criteria"; -import { ConfigurationService } from '../configuration/configuration.service'; -import { BaseHttpService } from "../http/base-http.service"; - -@Injectable() -export class OrganisationService { - - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - - this.actionUrl = configurationService.server; - - this.headers = new HttpHeaders(); - this.headers = this.headers.set('Content-Type', 'application/json'); - this.headers = this.headers.set('Accept', 'application/json'); - } - - public searchInternalOrganisations(dataTableRequest: DataTableRequest): Observable> { - return this.http.post>(this.actionUrl + 'internal/organisations', dataTableRequest, { headers: this.headers }); - } - - public searchGeneralOrganisations(dataTableRequest: RequestItem): Observable { - return this.http.post(this.actionUrl + 'general/organisations', dataTableRequest, { headers: this.headers }); - } - - public searchPublicOrganisations(dataTableRequest: DataTableRequest): Observable> { - return this.http.post>(this.actionUrl + 'public/organisations', dataTableRequest, { headers: this.headers }); - } -} diff --git a/dmp-frontend/src/app/core/services/prefilling.service.ts b/dmp-frontend/src/app/core/services/prefilling.service.ts index fa940a1f6..4cf7ec2f9 100644 --- a/dmp-frontend/src/app/core/services/prefilling.service.ts +++ b/dmp-frontend/src/app/core/services/prefilling.service.ts @@ -1,29 +1,27 @@ -import {Injectable} from "@angular/core"; -import {HttpClient, HttpHeaders} from "@angular/common/http"; -import {BaseHttpService} from "@app/core/services/http/base-http.service"; -import {ConfigurationService} from "@app/core/services/configuration/configuration.service"; -import {Observable} from "rxjs"; -import {Prefilling} from "@app/core/model/dataset/prefilling"; -import {DatasetWizardModel} from "@app/core/model/dataset/dataset-wizard"; +import { HttpClient, HttpHeaders } from "@angular/common/http"; +import { Injectable } from "@angular/core"; +import { ConfigurationService } from "@app/core/services/configuration/configuration.service"; +import { BaseHttpV2Service } from "./http/base-http-v2.service"; @Injectable() export class PrefillingService { private readonly actionUrl: string; private headers = new HttpHeaders(); - constructor(private http: BaseHttpService, private httpClient: HttpClient, private configurationService: ConfigurationService) { + constructor(private http: BaseHttpV2Service, private httpClient: HttpClient, private configurationService: ConfigurationService) { this.actionUrl = configurationService.server + 'prefilling/'; } - public getPrefillingList(like: string): Observable { - return this.http.get(this.actionUrl + 'list?like=' + encodeURIComponent(like), { headers: this.headers }); - } + //TODO: refactor + // public getPrefillingList(like: string): Observable { + // return this.http.get(this.actionUrl + 'list?like=' + encodeURIComponent(like), { headers: this.headers }); + // } - public getPrefillingDataset(pid: string, profileId: string, configId: string): Observable { - return this.http.get(this.actionUrl + '/generate/' + encodeURIComponent(pid) + '?configId=' + encodeURIComponent(configId) + '&profileId=' + encodeURIComponent(profileId), { headers: this.headers }); - } + // public getPrefillingDataset(pid: string, profileId: string, configId: string): Observable { + // return this.http.get(this.actionUrl + '/generate/' + encodeURIComponent(pid) + '?configId=' + encodeURIComponent(configId) + '&profileId=' + encodeURIComponent(profileId), { headers: this.headers }); + // } - public getPrefillingDatasetUsingData(data: any, profileId: string, configId: string): Observable { - return this.http.post(this.actionUrl + '/generateUsingData' + '?configId=' + encodeURIComponent(configId) + '&profileId=' + encodeURIComponent(profileId), data, { headers: this.headers }); - } + // public getPrefillingDatasetUsingData(data: any, profileId: string, configId: string): Observable { + // return this.http.post(this.actionUrl + '/generateUsingData' + '?configId=' + encodeURIComponent(configId) + '&profileId=' + encodeURIComponent(profileId), data, { headers: this.headers }); + // } } diff --git a/dmp-frontend/src/app/core/services/project/project.service.ts b/dmp-frontend/src/app/core/services/project/project.service.ts deleted file mode 100644 index 0532f8c95..000000000 --- a/dmp-frontend/src/app/core/services/project/project.service.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Observable } from "rxjs"; -import { Injectable } from "@angular/core"; -import { HttpHeaders } from "@angular/common/http"; -import { RequestItem } from "../../query/request-item"; -import { BaseCriteria } from "../../query/base-criteria"; -import { BaseHttpService } from "../http/base-http.service"; -import { environment } from '../../../../environments/environment'; -import { ProjectCriteria } from "../../query/project/project-criteria"; -import { ProjectModel } from "../../model/project/project"; -import { ConfigurationService } from '../configuration/configuration.service'; - -@Injectable() -export class ProjectService { - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'projects/'; - } - - getWithExternal(requestItem: RequestItem): Observable { - return this.http.post(this.actionUrl + 'external', requestItem, { headers: this.headers }); - } -} diff --git a/dmp-frontend/src/app/core/services/reference-type/reference-type.service.ts b/dmp-frontend/src/app/core/services/reference-type/reference-type.service.ts index 831e7bf1a..185ed3652 100644 --- a/dmp-frontend/src/app/core/services/reference-type/reference-type.service.ts +++ b/dmp-frontend/src/app/core/services/reference-type/reference-type.service.ts @@ -1,18 +1,18 @@ import { Injectable } from '@angular/core'; +import { IsActive } from '@app/core/common/enum/is-active.enum'; +import { ReferenceType, ReferenceTypePersist } from '@app/core/model/reference-type/reference-type'; +import { ReferenceTypeLookup } from '@app/core/query/reference-type.lookup'; +import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; +import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; +import { ReferenceTypeEditorResolver } from '@app/ui/admin/reference-type/editor/reference-type-editor.resolver'; import { QueryResult } from '@common/model/query-result'; import { FilterService } from '@common/modules/text-filter/filter-service'; import { Guid } from '@common/types/guid'; import { Observable, throwError } from 'rxjs'; import { catchError, map } from 'rxjs/operators'; +import { nameof } from 'ts-simple-nameof'; import { ConfigurationService } from '../configuration/configuration.service'; import { BaseHttpV2Service } from '../http/base-http-v2.service'; -import { ReferenceTypeLookup } from '@app/core/query/reference-type.lookup'; -import { ReferenceType, ReferenceTypePersist } from '@app/core/model/reference-type/reference-type'; -import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; -import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { IsActive } from '@app/core/common/enum/is-active.enum'; -import { nameof } from 'ts-simple-nameof'; -import { ReferenceTypeEditorResolver } from '@app/ui/admin/reference-type/editor/reference-type-editor.resolver'; @Injectable() export class ReferenceTypeService { @@ -31,7 +31,7 @@ export class ReferenceTypeService { return this.http.post>(url, q).pipe(catchError((error: any) => throwError(error))); } - getSingle(id: Guid, reqFields: string[] = []): Observable { + getSingle(id: Guid, reqFields: string[] = []): Observable { const url = `${this.apiBase}/${id}`; const options = { params: { f: reqFields } }; @@ -67,7 +67,7 @@ export class ReferenceTypeService { // LOOKUP - public static DefaultReferenceTypeLookup(): ReferenceTypeLookup{ + public static DefaultReferenceTypeLookup(): ReferenceTypeLookup { const lookup = new ReferenceTypeLookup(); lookup.project = { @@ -122,7 +122,7 @@ export class ReferenceTypeService { ///system fields - getSystemFields(fields: string[]): string[]{ + getSystemFields(fields: string[]): string[] { fields.push('reference_id'); fields.push('label'); fields.push('description'); diff --git a/dmp-frontend/src/app/core/services/search-bar/search-bar.service.ts b/dmp-frontend/src/app/core/services/search-bar/search-bar.service.ts deleted file mode 100644 index db5d6341e..000000000 --- a/dmp-frontend/src/app/core/services/search-bar/search-bar.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { HttpHeaders } from '@angular/common/http'; -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { environment } from '../../../../environments/environment'; -import { SearchBarItem } from '../../model/dashboard/search-bar-item'; -import { BaseHttpService } from '../http/base-http.service'; -import { ConfigurationService } from '../configuration/configuration.service'; - -@Injectable() -export class SearchBarService { - - private actionUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - - this.actionUrl = configurationService.server + 'dashboard/'; - } - - search(like: string): Observable { - return this.http.get(this.actionUrl + 'search?like=' + like, { headers: this.headers }); - } -} diff --git a/dmp-frontend/src/app/core/services/supportive-material/supportive-material.service.ts b/dmp-frontend/src/app/core/services/supportive-material/supportive-material.service.ts index d5f82c30a..ac5e2380a 100644 --- a/dmp-frontend/src/app/core/services/supportive-material/supportive-material.service.ts +++ b/dmp-frontend/src/app/core/services/supportive-material/supportive-material.service.ts @@ -1,19 +1,18 @@ +import { HttpResponse } from "@angular/common/http"; import { Injectable } from "@angular/core"; -import { ConfigurationService } from "../configuration/configuration.service"; -import { HttpClient, HttpResponse } from "@angular/common/http"; -import { Observable, throwError } from "rxjs"; +import { IsActive } from "@app/core/common/enum/is-active.enum"; import { SupportiveMaterial, SupportiveMaterialPersist } from "@app/core/model/supportive-material/supportive-material"; -import { BaseHttpV2Service } from "../http/base-http-v2.service"; import { SupportiveMaterialLookup } from "@app/core/query/supportive-material.lookup"; import { QueryResult } from "@common/model/query-result"; -import { catchError } from "rxjs/operators"; import { Guid } from "@common/types/guid"; +import { Observable, throwError } from "rxjs"; +import { catchError } from "rxjs/operators"; import { nameof } from "ts-simple-nameof"; -import { IsActive } from "@app/core/common/enum/is-active.enum"; -import { SupportiveMaterialFieldType } from "@app/core/common/enum/supportive-material-field-type"; +import { ConfigurationService } from "../configuration/configuration.service"; +import { BaseHttpV2Service } from "../http/base-http-v2.service"; @Injectable() -export class SupportiveMaterialService{ +export class SupportiveMaterialService { constructor( private http: BaseHttpV2Service, @@ -24,7 +23,7 @@ export class SupportiveMaterialService{ private get apiBase(): string { return `${this.configurationService.server}supportive-material`; } queryPublic(q: SupportiveMaterialLookup): Observable> { - return this.http.post>(`${this.apiBase}/public`, q , {responseType: 'blob', observe: 'response' }); + return this.http.post>(`${this.apiBase}/public`, q, { responseType: 'blob', observe: 'response' }); } query(q: SupportiveMaterialLookup): Observable> { @@ -60,7 +59,7 @@ export class SupportiveMaterialService{ // LOOKUP - public static DefaultSupportiveMaterialLookup(): SupportiveMaterialLookup{ + public static DefaultSupportiveMaterialLookup(): SupportiveMaterialLookup { const lookup = new SupportiveMaterialLookup(); lookup.project = { diff --git a/dmp-frontend/src/app/core/services/tenant/tenant.service.ts b/dmp-frontend/src/app/core/services/tenant/tenant.service.ts index c498d5de2..171516e66 100644 --- a/dmp-frontend/src/app/core/services/tenant/tenant.service.ts +++ b/dmp-frontend/src/app/core/services/tenant/tenant.service.ts @@ -1,4 +1,3 @@ -import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { IsActive } from '@app/core/common/enum/is-active.enum'; import { Tenant, TenantPersist } from '@app/core/model/tenant/tenant'; diff --git a/dmp-frontend/src/app/core/services/unlink-account-email-confirmation/unlink-account-email-confirmation.service.ts b/dmp-frontend/src/app/core/services/unlink-account-email-confirmation/unlink-account-email-confirmation.service.ts deleted file mode 100644 index 40846c568..000000000 --- a/dmp-frontend/src/app/core/services/unlink-account-email-confirmation/unlink-account-email-confirmation.service.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { HttpHeaders } from "@angular/common/http"; -import { Injectable } from "@angular/core"; -import { BaseHttpService } from "../http/base-http.service"; -import { ConfigurationService } from "../configuration/configuration.service"; -import { UnlinkAccountRequestModel } from "@app/core/model/unlink-account/unlink-account"; - -@Injectable() -export class UnlinkAccountEmailConfirmationService { - private actioUrl: string; - private headers: HttpHeaders; - - constructor(private http: BaseHttpService, private configurationService: ConfigurationService) { - this.actioUrl = configurationService.server + 'emailUnlinkConfirmation/'; - } - - public emailConfirmation(token: string) { - return this.http.get(this.actioUrl + token, { headers: this.headers }); - } - - public sendConfirmationEmail(unlinkRequest: UnlinkAccountRequestModel) { - return this.http.post(this.actioUrl, unlinkRequest, { headers: this.headers }); - } -} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/services/user-settings/user-settings-http.service.ts b/dmp-frontend/src/app/core/services/user-settings/user-settings-http.service.ts index 5d161b6fa..90e432691 100644 --- a/dmp-frontend/src/app/core/services/user-settings/user-settings-http.service.ts +++ b/dmp-frontend/src/app/core/services/user-settings/user-settings-http.service.ts @@ -1,9 +1,9 @@ import { Injectable } from '@angular/core'; +import { UserSettingPersist, UserSettings } from '@app/core/model/user-settings/user-settings.model'; import { Guid } from '@common/types/guid'; import { Observable } from 'rxjs'; -import { UserSettingPersist, UserSettings } from '@app/core/model/user-settings/user-settings.model'; -import { BaseHttpV2Service } from '../http/base-http-v2.service'; import { ConfigurationService } from '../configuration/configuration.service'; +import { BaseHttpV2Service } from '../http/base-http-v2.service'; @Injectable() export class UserSettingsHttpService { @@ -37,7 +37,7 @@ export class UserSettingsHttpService { .delete(url); } - share(item: UserSettingPersist, targetId: Guid): Observable{ + share(item: UserSettingPersist, targetId: Guid): Observable { const url = `${this.apiBase}/share/${targetId}`; return this.http.post(url, item); diff --git a/dmp-frontend/src/app/core/services/user/user.service-old.ts b/dmp-frontend/src/app/core/services/user/user.service-old.ts deleted file mode 100644 index 05b684598..000000000 --- a/dmp-frontend/src/app/core/services/user/user.service-old.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { environment } from '../../../../environments/environment'; -import { DataTableData } from '../../model/data-table/data-table-data'; -import { DataTableRequest } from '../../model/data-table/data-table-request'; -import { UserListingModel } from '../../model/user/user-listing'; -import { UserCriteria } from '../../query/user/user-criteria'; -import { BaseHttpService } from '../http/base-http.service'; -import { ConfigurationService } from '../configuration/configuration.service'; -import { UserCredentialModel } from '@app/core/model/user/user-credential'; - -@Injectable() -export class UserServiceOld { - - private actionUrl: string; - private headers = new HttpHeaders(); - - constructor(private http: BaseHttpService, private httpClient: HttpClient, private configurationService: ConfigurationService) { - - this.actionUrl = configurationService.server + 'user/'; - } - - getPaged(dataTableRequest: DataTableRequest): Observable> { - return this.http.post>(this.actionUrl + 'getPaged', JSON.stringify(dataTableRequest), { headers: this.headers }); - } - - getUser(id: String): Observable { - return this.http.get(this.actionUrl + id, { headers: this.headers }); - } - - getEmails(id: String): Observable { - return this.http.get(`${this.actionUrl}${id}/emails`, { headers: this.headers }); - } - - updateRoles(itemToUpdate: UserListingModel): Observable { - return this.http.post(this.actionUrl + 'updateRoles', JSON.stringify(itemToUpdate), { headers: this.headers }); - } - - delete(id: String): Observable { - return this.http.delete(this.actionUrl + id, { headers: this.headers }); - } - - getRecentActivity(): Observable { - return this.http.get(this.actionUrl + 'recentActivity', { headers: this.headers }); - } - - updateUserSettings(value: any): Observable { - return this.http.post(this.actionUrl + 'settings', value, { headers: this.headers }); - } - - getCollaboratorsPaged(dataTableRequest: DataTableRequest): Observable> { - return this.http.post>(this.actionUrl + 'getCollaboratorsPaged', JSON.stringify(dataTableRequest), { headers: this.headers }); - } - - getFromEmail(email: string): Observable { - return this.http.post(this.actionUrl + 'find', email, {headers: this.headers}); - } - - downloadCSV(): Observable> { - let headerCsv: HttpHeaders = this.headers.set('Content-Type', 'application/csv') - return this.httpClient.get(this.actionUrl + 'getCsv/', { responseType: 'blob', observe: 'response', headers: headerCsv }); - } -} diff --git a/dmp-frontend/src/app/core/services/user/user.service.ts b/dmp-frontend/src/app/core/services/user/user.service.ts index 9bc7b2fb2..2506ba5ec 100644 --- a/dmp-frontend/src/app/core/services/user/user.service.ts +++ b/dmp-frontend/src/app/core/services/user/user.service.ts @@ -1,7 +1,6 @@ import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { IsActive } from '@app/core/common/enum/is-active.enum'; -import { DataTableData } from '@app/core/model/data-table/data-table-data'; import { User, UserPersist, UserRolePatchPersist } from '@app/core/model/user/user'; import { UserLookup } from '@app/core/query/user.lookup'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; @@ -84,7 +83,7 @@ export class UserService { return this.httpClient.get(url, { params: params, responseType: 'blob', observe: 'response', headers: headerXml }); } - uploadFile(file: FileList, labelSent: string, reqFields: string[] = []): Observable> { + uploadFile(file: FileList, labelSent: string, reqFields: string[] = []): Observable { const url = `${this.apiBase}/xml/import`; const params = new BaseHttpParams(); params.interceptorContext = { diff --git a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts index 8b80025b3..0abdaf342 100644 --- a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts +++ b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts @@ -5,32 +5,27 @@ import { DescriptionTemplateStatus } from '@app/core/common/enum/description-tem import { DescriptionTemplateTypeStatus } from '@app/core/common/enum/description-template-type-status'; import { DmpBlueprintStatus } from '@app/core/common/enum/dmp-blueprint-status'; import { DmpBlueprintSystemFieldType } from '@app/core/common/enum/dmp-blueprint-system-field-type'; -import { RecentActivityOrder } from '@app/core/common/enum/recent-activity-order'; +import { DmpUserRole } from '@app/core/common/enum/dmp-user-role'; +import { EmailOverrideMode } from '@app/core/common/enum/email-override-mode'; +import { IsActive } from '@app/core/common/enum/is-active.enum'; +import { NotificationDataType } from '@app/core/common/enum/notification-data-type'; +import { NotificationTemplateChannel } from '@app/core/common/enum/notification-template-channel'; +import { NotificationTemplateKind } from '@app/core/common/enum/notification-template-kind'; import { ReferenceFieldDataType } from '@app/core/common/enum/reference-field-data-type'; import { ReferenceSourceType } from '@app/core/common/enum/reference-source-type'; import { ReferenceType } from '@app/core/common/enum/reference-type'; import { ReferenceTypeExternalApiHTTPMethodType } from '@app/core/common/enum/reference-type-external-api-http-method-type'; import { ReferenceTypeSourceType } from '@app/core/common/enum/reference-type-source-type'; -import { Role } from '@app/core/common/enum/role'; import { RoleOrganizationType } from '@app/core/common/enum/role-organization-type'; import { SupportiveMaterialFieldType } from '@app/core/common/enum/supportive-material-field-type'; import { UserDescriptionTemplateRole } from '@app/core/common/enum/user-description-template-role'; import { TranslateService } from '@ngx-translate/core'; import { AppRole } from '../../common/enum/app-role'; -import { DatasetProfileComboBoxType } from '../../common/enum/dataset-profile-combo-box-type'; -import { DatasetProfileFieldViewStyle } from '../../common/enum/dataset-profile-field-view-style'; -import { DatasetProfileInternalDmpEntitiesType } from '../../common/enum/dataset-profile-internal-dmp-entities-type'; -import { DatasetStatus } from '../../common/enum/dataset-status'; import { DmpBlueprintExtraFieldDataType } from '../../common/enum/dmp-blueprint-field-type'; import { DmpBlueprintType } from '../../common/enum/dmp-blueprint-type'; import { DmpStatus } from '../../common/enum/dmp-status'; import { ValidationType } from '../../common/enum/validation-type'; -import { IsActive } from '@app/core/common/enum/is-active.enum'; -import { DmpUserRole } from '@app/core/common/enum/dmp-user-role'; -import { NotificationTemplateKind } from '@app/core/common/enum/notification-template-kind'; -import { NotificationTemplateChannel } from '@app/core/common/enum/notification-template-channel'; -import { NotificationDataType } from '@app/core/common/enum/notification-data-type'; -import { EmailOverrideMode } from '@app/core/common/enum/email-override-mode'; +import { RecentActivityOrder } from '@app/core/common/enum/recent-activity-order'; @Injectable() export class EnumUtils { @@ -80,13 +75,6 @@ export class EnumUtils { } } - toDatasetStatusString(status: DatasetStatus): string { - switch (status) { - case DatasetStatus.Draft: return this.language.instant('TYPES.DATASET-STATUS.DRAFT'); - case DatasetStatus.Finalized: return this.language.instant('TYPES.DATASET-STATUS.FINALISED'); - } - } - toDmpStatusString(status: DmpStatus): string { switch (status) { case DmpStatus.Draft: return this.language.instant('TYPES.DMP.DRAFT'); @@ -101,103 +89,6 @@ export class EnumUtils { } } - toDatasetProfileFieldViewStyleString(status: DatasetProfileFieldViewStyle): string { - switch (status) { - case DatasetProfileFieldViewStyle.BooleanDecision: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.BOOLEAN-DECISION'); - case DatasetProfileFieldViewStyle.CheckBox: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.CHECKBOX'); - case DatasetProfileFieldViewStyle.ComboBox: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.COMBO-BOX'); - case DatasetProfileFieldViewStyle.InternalDmpEntities: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.INTERNAL-DMP-ENTITIES'); - case DatasetProfileFieldViewStyle.FreeText: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.FREE-TEXT'); - case DatasetProfileFieldViewStyle.RadioBox: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.RADIO-BOX'); - case DatasetProfileFieldViewStyle.TextArea: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.TEXT-AREA'); - case DatasetProfileFieldViewStyle.RichTextArea: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.RICH-TEXT-AREA'); - case DatasetProfileFieldViewStyle.Upload: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.UPLOAD'); - case DatasetProfileFieldViewStyle.Table: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.TABLE'); - case DatasetProfileFieldViewStyle.DatePicker: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.DATE-PICKER'); - case DatasetProfileFieldViewStyle.ExternalDatasets: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.EXTERNAL-DATASETS'); - case DatasetProfileFieldViewStyle.DataRepositories: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.DATA-REPOSITORIES'); - case DatasetProfileFieldViewStyle.PubRepositories: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.PUB-REPOSITORIES'); - case DatasetProfileFieldViewStyle.JournalRepositories: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.JOURNALS-REPOSITORIES'); - case DatasetProfileFieldViewStyle.Taxonomies: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.TAXONOMIES'); - case DatasetProfileFieldViewStyle.Licenses: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.LICENSES'); - case DatasetProfileFieldViewStyle.Publications: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.PUBLICATIONS'); - case DatasetProfileFieldViewStyle.Registries: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.REGISTRIES'); - case DatasetProfileFieldViewStyle.Services: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.SERVICES'); - case DatasetProfileFieldViewStyle.Tags: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.TAGS'); - case DatasetProfileFieldViewStyle.Researchers: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.RESEARCHERS'); - case DatasetProfileFieldViewStyle.Organizations: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.ORGANIZATIONS'); - case DatasetProfileFieldViewStyle.DatasetIdentifier: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.DATASET-IDENTIFIER'); - case DatasetProfileFieldViewStyle.Currency: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.CURRENCY'); - case DatasetProfileFieldViewStyle.Validation: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.VALIDATION'); - } - } - // toDatasetProfileViewTypeString(status: ViewStyleType): string { - // switch (status) { - // case ViewStyleType.BooleanDecision: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.BOOLEAN-DECISION'); - // case ViewStyleType.CheckBox: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.CHECKBOX'); - // case ViewStyleType.Select: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.SELECT'); - // case ViewStyleType.InternalDmpEntities: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.INTERNAL-DMP-ENTITIES'); - // case ViewStyleType.FreeText: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.FREE-TEXT'); - // case ViewStyleType.RadioBox: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.RADIO-BOX'); - // case ViewStyleType.TextArea: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.TEXT-AREA'); - // case ViewStyleType.RichTextArea: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.RICH-TEXT-AREA'); - // case ViewStyleType.Table: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.TABLE'); - // case ViewStyleType.Upload: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.UPLOAD'); - // case ViewStyleType.DatePicker: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.DATE-PICKER'); - // case ViewStyleType.ExternalDatasets: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.EXTERNAL-DATASETS'); - // case ViewStyleType.DataRepositories: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.DATA-REPOSITORIES'); - // case ViewStyleType.PubRepositories: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.PUB-REPOSITORIES'); - // case ViewStyleType.JournalRepositories: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.JOURNALS-REPOSITORIES'); - // case ViewStyleType.Taxonomies: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.TAXONOMIES'); - // case ViewStyleType.Licenses: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.LICENSES'); - // case ViewStyleType.Publications: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.PUBLICATIONS'); - // case ViewStyleType.Registries: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.REGISTRIES'); - // case ViewStyleType.Services: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.SERVICES'); - // case ViewStyleType.Tags: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.TAGS'); - // case ViewStyleType.Researchers: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.RESEARCHERS'); - // case ViewStyleType.Organizations: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.ORGANIZATIONS'); - // case ViewStyleType.DatasetIdentifier: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.DATASET-IDENTIFIER'); - // case ViewStyleType.Currency: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.CURRENCY'); - // case ViewStyleType.Validation: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.VALIDATION'); - // case ViewStyleType.Other: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.OTHER'); - // } - - // } - - toDatasetProfileComboBoxTypeString(status: DatasetProfileComboBoxType): string { - switch (status) { - case DatasetProfileComboBoxType.WordList: return this.language.instant('TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.WORD-LIST'); - case DatasetProfileComboBoxType.Autocomplete: return this.language.instant('TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.AUTOCOMPLETE'); - } - } - - toDatasetProfileInternalDmpEntitiesTypeString(status: DatasetProfileInternalDmpEntitiesType): string { - switch (status) { - case DatasetProfileInternalDmpEntitiesType.Researchers: return this.language.instant('TYPES.DATASET-PROFILE-INTERNAL-DMP-ENTITIES-TYPE.RESEARCHERS'); - case DatasetProfileInternalDmpEntitiesType.Datasets: return this.language.instant('TYPES.DATASET-PROFILE-INTERNAL-DMP-ENTITIES-TYPE.DATASETS'); - case DatasetProfileInternalDmpEntitiesType.Dmps: return this.language.instant('TYPES.DATASET-PROFILE-INTERNAL-DMP-ENTITIES-TYPE.DMPS'); - } - } - - toRecentActivityOrderString(status: RecentActivityOrder): string { - switch (status) { - case RecentActivityOrder.CREATED: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.CREATED'); - case RecentActivityOrder.LABEL: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.LABEL'); - case RecentActivityOrder.MODIFIED: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.MODIFIED'); - case RecentActivityOrder.FINALIZED: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.FINALIZED'); - case RecentActivityOrder.PUBLISHED: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.PUBLISHED'); - case RecentActivityOrder.DATASETPUBLISHED: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.PUBLISHED'); - case RecentActivityOrder.STATUS: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.STATUS'); - } - } - - toRoleString(status: Role): string { - switch (status) { - case Role.Owner: return this.language.instant('FACET-SEARCH.ROLE.OWNER'); - case Role.Member: return this.language.instant('FACET-SEARCH.ROLE.MEMBER'); - } - } - toRoleOrganizationString(status: RoleOrganizationType): string { switch (status) { case RoleOrganizationType.Faculty: return this.language.instant('USER-PROFILE.ROLE-ORGANIZATION.FACULTY'); @@ -372,8 +263,8 @@ export class EnumUtils { } } - toDmpUserRolesString(roles: DmpUserRole[]): string { return roles.map(x => this.toDmpUserRoleString(x)).join(', ') } - toDmpUserRoleString(role: DmpUserRole): string { + toDmpUserRolesString(roles: DmpUserRole[]): string { return roles.map(x => this.toDmpUserRoleString(x)).join(', ') } + toDmpUserRoleString(role: DmpUserRole): string { switch (role) { case DmpUserRole.Owner: return this.language.instant('TYPES.DMP-USER-ROLE.OWNER'); case DmpUserRole.User: return this.language.instant('TYPES.DMP-USER-ROLE.USER'); @@ -413,4 +304,16 @@ export class EnumUtils { case EmailOverrideMode.Replace: return this.language.instant('TYPES.NOTIFICATION-TEMPLATE-EMAIL-OVERRIDE-MODE.REPLACE'); } } + + toRecentActivityOrderString(status: RecentActivityOrder): string { + switch (status) { + // case RecentActivityOrder.CREATED: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.CREATED'); + case RecentActivityOrder.Label: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.LABEL'); + case RecentActivityOrder.UpdatedAt: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.MODIFIED'); + // case RecentActivityOrder.FINALIZED: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.FINALIZED'); + // case RecentActivityOrder.PUBLISHED: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.PUBLISHED'); + // case RecentActivityOrder.DATASETPUBLISHED: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.PUBLISHED'); + case RecentActivityOrder.Status: return this.language.instant('TYPES.RECENT-ACTIVITY-ORDER.STATUS'); + } + } } diff --git a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.html b/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.html deleted file mode 100644 index 6e601516c..000000000 --- a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.html +++ /dev/null @@ -1,18 +0,0 @@ -
-
-
- {{ data.message }} -
-
close
-
-
-
-
-
-
-
-
-
-
-
-
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 deleted file mode 100644 index f23b9e314..000000000 --- a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.scss +++ /dev/null @@ -1,16 +0,0 @@ -.export-method-dialog { - .export-method-message { - padding-bottom: 20px;; - } - - .close-btn { - margin-left: auto; - cursor: pointer; - } - - button { - // background-color: #aaaaaa; - background-color: var(--primary-color-3); - color: #ffffff; - } -} 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 deleted file mode 100644 index a702a72b8..000000000 --- a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.component.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; - - -@Component({ - selector: 'app-export-method-dialog', - templateUrl: './export-method-dialog.component.html', - styleUrls: ['./export-method-dialog.component.scss'] -}) -export class ExportMethodDialogComponent implements OnInit { - - constructor( - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: any - ) { } - - ngOnInit() { - } - - close() { - this.dialogRef.close(false); - } - - downloadXML() { - this.dialogRef.close("xml"); - } - - downloadDocument() { - this.dialogRef.close("doc"); - } - - downloadPdf() { - this.dialogRef.close("pdf"); - } - - downloadJson() { - this.dialogRef.close("json"); - } - - isFinalized() { - return this.data.isFinalized; - } -} diff --git a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.module.ts b/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.module.ts deleted file mode 100644 index 51f8dedcc..000000000 --- a/dmp-frontend/src/app/library/export-method-dialog/export-method-dialog.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { ExportMethodDialogComponent } from '@app/library/export-method-dialog/export-method-dialog.component'; -import { CommonUiModule } from '@common/ui/common-ui.module'; - -@NgModule({ - imports: [CommonUiModule], - declarations: [ExportMethodDialogComponent], - exports: [ExportMethodDialogComponent] -}) -export class ExportMethodDialogModule { - constructor() { } -} diff --git a/dmp-frontend/src/app/models/dynamic-field-grant/DynamicFieldGrantCriteria.ts b/dmp-frontend/src/app/models/dynamic-field-grant/DynamicFieldGrantCriteria.ts deleted file mode 100644 index e82f095f5..000000000 --- a/dmp-frontend/src/app/models/dynamic-field-grant/DynamicFieldGrantCriteria.ts +++ /dev/null @@ -1,9 +0,0 @@ -export class DynamicFieldGrantCriteria { - public id: string; - public dynamicFields: DynamicFieldGrantCriteriaDependencies[]; -} - -export class DynamicFieldGrantCriteriaDependencies { - public value; - public property; -} diff --git a/dmp-frontend/src/app/models/language/Language.ts b/dmp-frontend/src/app/models/language/Language.ts deleted file mode 100644 index b75ea3e03..000000000 --- a/dmp-frontend/src/app/models/language/Language.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class Language { - public key: string; - public languageKey: string; -} diff --git a/dmp-frontend/src/app/ui/admin/description-template/editor/components/composite-field/description-template-editor-composite-field.component.ts b/dmp-frontend/src/app/ui/admin/description-template/editor/components/composite-field/description-template-editor-composite-field.component.ts index 3b9a313f4..700e44e14 100644 --- a/dmp-frontend/src/app/ui/admin/description-template/editor/components/composite-field/description-template-editor-composite-field.component.ts +++ b/dmp-frontend/src/app/ui/admin/description-template/editor/components/composite-field/description-template-editor-composite-field.component.ts @@ -35,9 +35,6 @@ import { import { ConfigurationService } from "@app/core/services/configuration/configuration.service"; import { DescriptionTemplateService } from '@app/core/services/description-template/description-template.service'; import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; -import { - DatasetDescriptionSectionEditorModel -} from '@app/ui/misc/dataset-description-form/dataset-description-form.model'; import { TransitionGroupComponent } from "@app/ui/transition-group/transition-group.component"; import { BaseComponent } from '@common/base/base.component'; import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component'; @@ -47,8 +44,7 @@ import { Subject } from 'rxjs'; import { debounceTime, delay, map, takeUntil, tap } from 'rxjs/operators'; import { GENERAL_ANIMATIONS } from '../../animations/animations'; import { EditorCustomValidators } from '../../custom-validators/editor-custom-validators'; -import { DescriptionTemplateFieldEditorModel, DescriptionTemplateRuleEditorModel } from '../../description-template-editor.model'; -import { ViewStyleType } from '../field/view-style-enum'; +import { DescriptionTemplateFieldEditorModel, DescriptionTemplateRuleEditorModel, DescriptionTemplateSectionEditorModel } from '../../description-template-editor.model'; @Component({ selector: 'app-description-template-editor-composite-field-component', @@ -237,7 +233,7 @@ export class DescriptionTemplateEditorCompositeFieldComponent extends BaseCompon }); } - previewSubject$: Subject = new Subject(); + previewSubject$: Subject = new Subject(); private generatePreviewForm() { // const formValue: DescriptionTemplateFieldSet = this.form.getRawValue(); diff --git a/dmp-frontend/src/app/ui/admin/description-template/editor/components/final-preview/final-preview.component.ts b/dmp-frontend/src/app/ui/admin/description-template/editor/components/final-preview/final-preview.component.ts index d2ba708e6..3b9cdbda6 100644 --- a/dmp-frontend/src/app/ui/admin/description-template/editor/components/final-preview/final-preview.component.ts +++ b/dmp-frontend/src/app/ui/admin/description-template/editor/components/final-preview/final-preview.component.ts @@ -1,5 +1,5 @@ -import { Component, Input, OnInit} from '@angular/core'; -import { Rule } from '@app/core/model/dataset-profile-definition/rule'; +import { Component, Input, OnInit } from '@angular/core'; +import { Rule } from '@app/ui/description/editor/description-form/visibility-rules/models/rule'; import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; @@ -7,22 +7,22 @@ import { VisibilityRulesService } from '@app/ui/description/editor/description-f selector: 'app-final-preview-component', templateUrl: './final-preview.component.html', styleUrls: ['./final-preview.component.scss'], - providers:[VisibilityRulesService] + providers: [VisibilityRulesService] }) -export class FinalPreviewComponent implements OnInit { +export class FinalPreviewComponent implements OnInit { + - @Input() formGroup = null; - @Input() visibilityRules:Rule[] = []; - constructor(private visibilityRulesService: VisibilityRulesService){ - + @Input() visibilityRules: Rule[] = []; + constructor(private visibilityRulesService: VisibilityRulesService) { + } - + ngOnInit(): void { this.visibilityRulesService.buildVisibilityRules(this.visibilityRules, this.formGroup); } - + } diff --git a/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts b/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts index 5d4848553..280839d77 100644 --- a/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.component.ts @@ -5,15 +5,14 @@ import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; -import { BehaviorSubject } from 'rxjs'; // import { BreadcrumbItem } from '@app/ui/misc/breadcrumb/definition/breadcrumb-item'; import { CdkStep, StepperSelectionEvent } from '@angular/cdk/stepper'; import { DatePipe } from '@angular/common'; -import { MatInput } from '@angular/material/input'; import { MatStepper } from '@angular/material/stepper'; import { DescriptionTemplateStatus } from '@app/core/common/enum/description-template-status'; import { IsActive } from '@app/core/common/enum/is-active.enum'; import { AppPermission } from '@app/core/common/enum/permission.enum'; +import { UserDescriptionTemplateRole } from '@app/core/common/enum/user-description-template-role'; import { DescriptionTemplate } from '@app/core/model/description-template/description-template'; import { DescriptionTemplatePersist } from '@app/core/model/description-template/description-template-persist'; import { LanguageInfo } from '@app/core/model/language-info'; @@ -22,7 +21,6 @@ import { AuthService } from '@app/core/services/auth/auth.service'; import { LanguageInfoService } from '@app/core/services/culture/language-info-service'; import { DescriptionTemplateTypeService } from '@app/core/services/description-template-type/description-template-type.service'; import { DescriptionTemplateService } from '@app/core/services/description-template/description-template.service'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; import { LoggingService } from '@app/core/services/logging/logging-service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { UserService } from '@app/core/services/user/user.service'; @@ -35,14 +33,12 @@ import { HttpErrorHandlingService } from '@common/modules/errors/error-handling/ import { FilterService } from '@common/modules/text-filter/filter-service'; import { Guid } from '@common/types/guid'; import { TranslateService } from '@ngx-translate/core'; -import { combineLatest } from 'rxjs'; -import { debounceTime, filter, map, takeUntil } from 'rxjs/operators'; +import { map, takeUntil } from 'rxjs/operators'; import { GENERAL_ANIMATIONS, STEPPER_ANIMATIONS } from './animations/animations'; import { DescriptionTemplateEditorModel, DescriptionTemplateFieldEditorModel, DescriptionTemplateFieldSetEditorModel, DescriptionTemplatePageEditorModel, DescriptionTemplateSectionEditorModel, UserDescriptionTemplateEditorModel } from './description-template-editor.model'; import { DescriptionTemplateEditorResolver } from './description-template-editor.resolver'; import { DescriptionTemplateEditorService } from './description-template-editor.service'; import { NewEntryType, ToCEntry, ToCEntryType } from './table-of-contents/description-template-table-of-contents-entry'; -import { UserDescriptionTemplateRole } from '@app/core/common/enum/user-description-template-role'; @Component({ @@ -130,7 +126,6 @@ export class DescriptionTemplateEditorComponent extends BaseEditor {this.usersMap.set(obj.user.id, obj.user); }); + (this.item?.users ?? []).forEach(obj => { this.usersMap.set(obj.user.id, obj.user); }); this.isDeleted = data ? data.isActive === IsActive.Inactive : false; this.buildForm(); @@ -267,7 +262,7 @@ export class DescriptionTemplateEditorComponent extends BaseEditorthis.formGroup.get('pages'))?.length; } diff --git a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.ts b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.ts index 802661181..400849d3b 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.ts @@ -15,17 +15,13 @@ import { DmpBlueprintStatus } from '@app/core/common/enum/dmp-blueprint-status'; import { DmpBlueprintSystemFieldType } from '@app/core/common/enum/dmp-blueprint-system-field-type'; import { IsActive } from '@app/core/common/enum/is-active.enum'; import { AppPermission } from '@app/core/common/enum/permission.enum'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; import { DmpBlueprint, DmpBlueprintPersist } from '@app/core/model/dmp-blueprint/dmp-blueprint'; -import { DatasetProfileCriteria } from '@app/core/query/dataset-profile/dataset-profile-criteria'; import { AuthService } from '@app/core/services/auth/auth.service'; import { DmpService } from '@app/core/services/dmp/dmp.service'; import { LoggingService } from '@app/core/services/logging/logging-service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { FileUtils } from '@app/core/services/utilities/file-utils.service'; import { QueryParamsService } from '@app/core/services/utilities/query-params.service'; -import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; import { BaseEditor } from '@common/base/base-editor'; import { FormService } from '@common/forms/form-service'; import { FormValidationErrorsDialogComponent } from '@common/forms/form-validation-errors-dialog/form-validation-errors-dialog.component'; @@ -35,7 +31,6 @@ import { FilterService } from '@common/modules/text-filter/filter-service'; import { Guid } from '@common/types/guid'; import { TranslateService } from '@ngx-translate/core'; import * as FileSaver from 'file-saver'; -import { Observable } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; import { DescriptionTemplatesInSectionEditorModel, DmpBlueprintDefinitionSectionEditorModel, DmpBlueprintEditorModel, FieldInSectionEditorModel } from './dmp-blueprint-editor.model'; import { DmpBlueprintEditorResolver } from './dmp-blueprint-editor.resolver'; @@ -61,14 +56,15 @@ export class DmpBlueprintEditorComponent extends BaseEditor(DmpBlueprintExtraFieldDataType); - blueprintsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: this.filterDescriptionTempaltes.bind(this), - initialItems: (excludedItems: any[]) => this.filterDescriptionTempaltes('').pipe(map(result => result.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1))), - displayFn: (item: DatasetProfileModel) => item.label, - titleFn: (item: DatasetProfileModel) => item.label, - subtitleFn: (item: DatasetProfileModel) => item.description, - popupItemActionIcon: 'visibility' - }; + //TODO refactor + // blueprintsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { + // filterFn: this.filterDescriptionTempaltes.bind(this), + // initialItems: (excludedItems: any[]) => this.filterDescriptionTempaltes('').pipe(map(result => result.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1))), + // displayFn: (item: DatasetProfileModel) => item.label, + // titleFn: (item: DatasetProfileModel) => item.label, + // subtitleFn: (item: DatasetProfileModel) => item.description, + // popupItemActionIcon: 'visibility' + // }; protected get canDelete(): boolean { return !this.isDeleted && !this.isNew && this.hasPermission(this.authService.permissionEnum.DeleteDmpBlueprint); @@ -318,13 +314,14 @@ export class DmpBlueprintEditorComponent extends BaseEditor { - const request = new DataTableRequest(null, null, { fields: ['+label'] }); - const criteria = new DatasetProfileCriteria(); - criteria.like = value; - request.criteria = criteria; - return this.dmpService.searchDmpBlueprints(request); - } + //TODO refactor + // filterDescriptionTempaltes(value: string): Observable { + // const request = new DataTableRequest(null, null, { fields: ['+label'] }); + // const criteria = new DatasetProfileCriteria(); + // criteria.like = value; + // request.criteria = criteria; + // return this.dmpService.searchDmpBlueprints(request); + // } onRemoveDescritionTemplate(event, sectionIndex: number) { const descriptionTemplateFormArray = (this.formGroup.get('definition').get('sections') as FormArray).at(sectionIndex).get('descriptionTemplates') as FormArray; diff --git a/dmp-frontend/src/app/ui/admin/index-managment/index-managment.component.ts b/dmp-frontend/src/app/ui/admin/index-managment/index-managment.component.ts index d3ae0db1f..5f9077200 100644 --- a/dmp-frontend/src/app/ui/admin/index-managment/index-managment.component.ts +++ b/dmp-frontend/src/app/ui/admin/index-managment/index-managment.component.ts @@ -4,7 +4,6 @@ import { takeUntil } from 'rxjs/operators'; import { UiNotificationService, SnackBarNotificationLevel } from '@app/core/services/notification/ui-notification-service'; import { TranslateService } from '@ngx-translate/core'; import { Router } from '@angular/router'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; import { MaintenanceService } from '@app/core/services/maintenance/maintenance.service'; @Component({ diff --git a/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.component.html b/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.component.html index 7e90cea4f..d1a063acb 100644 --- a/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.component.html +++ b/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.component.html @@ -2,8 +2,8 @@
Warning: Danger zone. Irreversible actions!
- - + +
diff --git a/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.component.ts b/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.component.ts index 4c86f3dd6..65b3ca8b0 100644 --- a/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.component.ts +++ b/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.component.ts @@ -1,65 +1,65 @@ import { Component, OnInit } from '@angular/core'; -import { BaseComponent } from '@common/base/base.component'; -import { takeUntil } from 'rxjs/operators'; -import { UiNotificationService, SnackBarNotificationLevel } from '@app/core/services/notification/ui-notification-service'; -import { TranslateService } from '@ngx-translate/core'; import { Router } from '@angular/router'; -import { MaintenanceTasksService } from '@app/core/services/maintenance-tasks/maintenance-tasks.service'; +import { MaintenanceService } from '@app/core/services/maintenance/maintenance.service'; +import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; +import { BaseComponent } from '@common/base/base.component'; +import { TranslateService } from '@ngx-translate/core'; @Component({ - selector: 'app-maintenance-tasks', - templateUrl: './maintenance-tasks.component.html', - styleUrls: ['./maintenance-tasks.component.scss'] + selector: 'app-maintenance-tasks', + templateUrl: './maintenance-tasks.component.html', + styleUrls: ['./maintenance-tasks.component.scss'] }) export class MaintenanceTasksComponent extends BaseComponent implements OnInit { - constructor( - private maintenanceTasksService: MaintenanceTasksService, - private uiNotificationService: UiNotificationService, - private translate: TranslateService, - private router: Router, - ) { - super(); - } + constructor( + private maintenanceService: MaintenanceService, + private uiNotificationService: UiNotificationService, + private translate: TranslateService, + private router: Router, + ) { + super(); + } - ngOnInit(): void { - } + ngOnInit(): void { + } - migrateSemantics(ev: Event) { - (ev.srcElement as HTMLButtonElement).disabled = true; - this.maintenanceTasksService.migrateSemantics().pipe(takeUntil(this._destroyed)).subscribe( - response => { - (ev.srcElement as HTMLButtonElement).disabled = false; - this.onCallbackSuccess(); - }, - error => { - (ev.srcElement as HTMLButtonElement).disabled = false; - this.onCallbackError(error); - } - ); - } + //TODO: refactor + // migrateSemantics(ev: Event) { + // (ev.srcElement as HTMLButtonElement).disabled = true; + // this.maintenanceTasksService.migrateSemantics().pipe(takeUntil(this._destroyed)).subscribe( + // response => { + // (ev.srcElement as HTMLButtonElement).disabled = false; + // this.onCallbackSuccess(); + // }, + // error => { + // (ev.srcElement as HTMLButtonElement).disabled = false; + // this.onCallbackError(error); + // } + // ); + // } - addRdaInSemantics(ev: Event) { - (ev.srcElement as HTMLButtonElement).disabled = true; - this.maintenanceTasksService.addRdaInSemantics().pipe(takeUntil(this._destroyed)).subscribe( - response => { - (ev.srcElement as HTMLButtonElement).disabled = false; - this.onCallbackSuccess(); - }, - error => { - (ev.srcElement as HTMLButtonElement).disabled = false; - this.onCallbackError(error); - } - ); - } + // addRdaInSemantics(ev: Event) { + // (ev.srcElement as HTMLButtonElement).disabled = true; + // this.maintenanceTasksService.addRdaInSemantics().pipe(takeUntil(this._destroyed)).subscribe( + // response => { + // (ev.srcElement as HTMLButtonElement).disabled = false; + // this.onCallbackSuccess(); + // }, + // error => { + // (ev.srcElement as HTMLButtonElement).disabled = false; + // this.onCallbackError(error); + // } + // ); + // } - onCallbackSuccess(): void { - this.uiNotificationService.snackBarNotification( this.translate.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); - this.router.navigate(['/reload']).then(() => this.router.navigate(['/maintenance-tasks'])); - } - - onCallbackError(error: any) { - this.uiNotificationService.snackBarNotification( error, SnackBarNotificationLevel.Error); - } + onCallbackSuccess(): void { + this.uiNotificationService.snackBarNotification(this.translate.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); + this.router.navigate(['/reload']).then(() => this.router.navigate(['/maintenance-tasks'])); + } + + onCallbackError(error: any) { + this.uiNotificationService.snackBarNotification(error, SnackBarNotificationLevel.Error); + } } diff --git a/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.module.ts b/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.module.ts index fe1988755..ce65af9ee 100644 --- a/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.module.ts +++ b/dmp-frontend/src/app/ui/admin/maintenance-tasks/maintenance-tasks.module.ts @@ -5,7 +5,6 @@ import { MaintenanceTasksComponent } from './maintenance-tasks.component'; import { CommonUiModule } from '@common/ui/common-ui.module'; import { CommonFormsModule } from '@common/forms/common-forms.module'; import { ConfirmationDialogModule } from '@common/modules/confirmation-dialog/confirmation-dialog.module'; -import { MaintenanceTasksService } from '@app/core/services/maintenance-tasks/maintenance-tasks.service'; @NgModule({ @@ -17,7 +16,6 @@ import { MaintenanceTasksService } from '@app/core/services/maintenance-tasks/ma MaintenanceTasksRoutingModule ], providers: [ - MaintenanceTasksService ] }) export class MaintenanceTasksModule { } \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.html b/dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.html deleted file mode 100644 index 4170ef7b5..000000000 --- a/dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.html +++ /dev/null @@ -1,22 +0,0 @@ -
-
-
-
-

{{ 'EMAIL-CONFIRMATION.CARD-TITLE' | translate }}

-
-
-
-
{{ 'EMAIL-CONFIRMATION.REQUEST-EMAIL-HEADER' | translate }}
-

{{ 'EMAIL-CONFIRMATION.REQUEST-EMAIL-TEXT' | translate }}

- - - - -
-
{{ 'EMAIL-CONFIRMATION.SENT-EMAIL-HEADER' | translate }}
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.scss b/dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.scss deleted file mode 100644 index 4b946ea03..000000000 --- a/dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.scss +++ /dev/null @@ -1,5 +0,0 @@ -.form { - min-width: 150px; - max-width: 500px; - width: 100%; - } diff --git a/dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.ts b/dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.ts deleted file mode 100644 index ae92d1208..000000000 --- a/dmp-frontend/src/app/ui/auth/login/email-confirmation/email-confirmation.component.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { Component, OnInit } from "@angular/core"; -import { UntypedFormControl } from '@angular/forms'; -import { ActivatedRoute, Router } from "@angular/router"; -import { EmailConfirmationService } from '@app/core/services/email-confirmation/email-confirmation.service'; -import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; -import { BaseComponent } from '@common/base/base.component'; -import { TranslateService } from '@ngx-translate/core'; -import { takeUntil } from "rxjs/operators"; - -@Component({ - selector: 'app-email-confirmation-component', - templateUrl: './email-confirmation.component.html' -}) -export class EmailConfirmation extends BaseComponent implements OnInit { - - public emailFormControl = new UntypedFormControl(''); - public showForm: boolean = false; - public mailSent: boolean = false; - - constructor( - private emailConfirmationService: EmailConfirmationService, - private route: ActivatedRoute, - private router: Router, - private language: TranslateService, - private uiNotificationService: UiNotificationService - ) { super(); } - - ngOnInit() { - this.route.params - .pipe(takeUntil(this._destroyed)) - .subscribe(params => { - const token = params['token'] - if (token != null) { - this.showForm = false; - this.emailConfirmationService.emailConfirmation(token) - .pipe(takeUntil(this._destroyed)) - .subscribe( - result => this.onCallbackEmailConfirmationSuccess(), - error => this.onCallbackError(error) - ) - } else { - this.showForm = true; - } - }); - } - - sendConfirmationEmail() { - this.emailConfirmationService.sendConfirmationEmail(this.emailFormControl.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - result => this.onCallbackSuccess(), - error => this.onCallbackError(error) - ) - } - - onCallbackSuccess() { - this.mailSent = true; - } - - onCallbackEmailConfirmationSuccess() { - this.router.navigate(['home']); - } - - onCallbackError(error: any) { - if (error.status === 302) { - this.uiNotificationService.snackBarNotification(this.language.instant('EMAIL-CONFIRMATION.EMAIL-FOUND'), SnackBarNotificationLevel.Warning); - this.router.navigate(['home']); - } else { - this.uiNotificationService.snackBarNotification(this.language.instant('EMAIL-CONFIRMATION.EXPIRED-EMAIL'), SnackBarNotificationLevel.Error); - this.router.navigate(['login']); - } - } -} diff --git a/dmp-frontend/src/app/ui/auth/login/login.component.ts b/dmp-frontend/src/app/ui/auth/login/login.component.ts index 4b2216188..9fe5e0c52 100644 --- a/dmp-frontend/src/app/ui/auth/login/login.component.ts +++ b/dmp-frontend/src/app/ui/auth/login/login.component.ts @@ -3,12 +3,6 @@ import { ActivatedRoute } from '@angular/router'; import { AuthService } from '@app/core/services/auth/auth.service'; import { BaseComponent } from '@common/base/base.component'; -/// -/// - -declare const gapi: any; -declare const FB: any; - @Component({ selector: 'app-login', templateUrl: './login.component.html', diff --git a/dmp-frontend/src/app/ui/auth/login/login.module.ts b/dmp-frontend/src/app/ui/auth/login/login.module.ts index a0aae9b78..224ebb388 100644 --- a/dmp-frontend/src/app/ui/auth/login/login.module.ts +++ b/dmp-frontend/src/app/ui/auth/login/login.module.ts @@ -1,5 +1,4 @@ import { NgModule } from '@angular/core'; -import { EmailConfirmation } from '@app/ui/auth/login/email-confirmation/email-confirmation.component'; import { LoginComponent } from '@app/ui/auth/login/login.component'; import { LoginRoutingModule } from '@app/ui/auth/login/login.routing'; import { LoginService } from '@app/ui/auth/login/utilities/login.service'; @@ -7,7 +6,6 @@ import { Oauth2DialogModule } from '@app/ui/misc/oauth2-dialog/oauth2-dialog.mod import { CommonFormsModule } from '@common/forms/common-forms.module'; import { CommonUiModule } from '@common/ui/common-ui.module'; import { MergeEmailConfirmation } from './merge-email-confirmation/merge-email-confirmation.component'; -import { MergeLoginService } from './utilities/merge-login.service'; import { UnlinkEmailConfirmation } from './unlink-email-confirmation/unlink-email-confirmation.component'; @NgModule({ @@ -19,13 +17,12 @@ import { UnlinkEmailConfirmation } from './unlink-email-confirmation/unlink-emai ], declarations: [ LoginComponent, - EmailConfirmation, MergeEmailConfirmation, UnlinkEmailConfirmation, ], exports: [ LoginComponent ], - providers: [LoginService, MergeLoginService] + providers: [LoginService] }) export class LoginModule { } diff --git a/dmp-frontend/src/app/ui/auth/login/login.routing.ts b/dmp-frontend/src/app/ui/auth/login/login.routing.ts index 48e43575e..c874ba0c7 100644 --- a/dmp-frontend/src/app/ui/auth/login/login.routing.ts +++ b/dmp-frontend/src/app/ui/auth/login/login.routing.ts @@ -1,16 +1,13 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { EmailConfirmation } from './email-confirmation/email-confirmation.component'; import { LoginComponent } from './login.component'; import { MergeEmailConfirmation } from './merge-email-confirmation/merge-email-confirmation.component'; import { UnlinkEmailConfirmation } from './unlink-email-confirmation/unlink-email-confirmation.component'; const routes: Routes = [ { path: '', component: LoginComponent }, - { path: 'confirmation/:token', component: EmailConfirmation }, { path: 'merge/confirmation/:token', component: MergeEmailConfirmation }, { path: 'unlink/confirmation/:token', component: UnlinkEmailConfirmation }, - { path: 'confirmation', component: EmailConfirmation } ]; @NgModule({ diff --git a/dmp-frontend/src/app/ui/auth/login/merge-email-confirmation/merge-email-confirmation.component.ts b/dmp-frontend/src/app/ui/auth/login/merge-email-confirmation/merge-email-confirmation.component.ts index 1feabe3ee..20dd25566 100644 --- a/dmp-frontend/src/app/ui/auth/login/merge-email-confirmation/merge-email-confirmation.component.ts +++ b/dmp-frontend/src/app/ui/auth/login/merge-email-confirmation/merge-email-confirmation.component.ts @@ -2,8 +2,6 @@ import { Component, OnInit } from "@angular/core"; import { UntypedFormControl } from '@angular/forms'; import { ActivatedRoute, Router } from "@angular/router"; import { AuthService } from "@app/core/services/auth/auth.service"; -import { EmailConfirmationService } from '@app/core/services/email-confirmation/email-confirmation.service'; -import { MergeEmailConfirmationService } from '@app/core/services/merge-email-confirmation/merge-email-confirmation.service'; import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; import { BaseComponent } from '@common/base/base.component'; import { TranslateService } from '@ngx-translate/core'; @@ -20,7 +18,8 @@ export class MergeEmailConfirmation extends BaseComponent implements OnInit { public mailSent: boolean = false; constructor( - private emailConfirmationService: MergeEmailConfirmationService, + //TODO: refactor + // private emailConfirmationService: MergeEmailConfirmationService, private authService: AuthService, private route: ActivatedRoute, private router: Router, @@ -35,18 +34,19 @@ export class MergeEmailConfirmation extends BaseComponent implements OnInit { const token = params['token'] if (token != null) { this.showForm = false; - this.emailConfirmationService.emailConfirmation(token) - .pipe(takeUntil(this._destroyed)) - .subscribe( - result => { - const email = this.authService.getUserProfileEmail(); - if(!email || !result || (email == result)) - this.authService.clear(); - this.uiNotificationService.snackBarNotification(this.language.instant('USER-PROFILE.MERGING-SUCCESS'), SnackBarNotificationLevel.Success); - this.onCallbackEmailConfirmationSuccess(); - }, - error => this.onCallbackError(error) - ) + //TODO: refactor + // this.emailConfirmationService.emailConfirmation(token) + // .pipe(takeUntil(this._destroyed)) + // .subscribe( + // result => { + // const email = this.authService.getUserProfileEmail(); + // if(!email || !result || (email == result)) + // this.authService.clear(); + // this.uiNotificationService.snackBarNotification(this.language.instant('USER-PROFILE.MERGING-SUCCESS'), SnackBarNotificationLevel.Success); + // this.onCallbackEmailConfirmationSuccess(); + // }, + // error => this.onCallbackError(error) + // ) } else { this.showForm = true; } @@ -62,8 +62,8 @@ export class MergeEmailConfirmation extends BaseComponent implements OnInit { this.uiNotificationService.snackBarNotification(this.language.instant('EMAIL-CONFIRMATION.EMAIL-FOUND'), SnackBarNotificationLevel.Warning); this.router.navigate(['home']); } else { - this.uiNotificationService.snackBarNotification(this.language.instant('EMAIL-CONFIRMATION.EXPIRED-EMAIL'), SnackBarNotificationLevel.Error); - this.router.navigate(['login']); + this.uiNotificationService.snackBarNotification(this.language.instant('EMAIL-CONFIRMATION.EXPIRED-EMAIL'), SnackBarNotificationLevel.Error); + this.router.navigate(['login']); } } } diff --git a/dmp-frontend/src/app/ui/auth/login/unlink-email-confirmation/unlink-email-confirmation.component.ts b/dmp-frontend/src/app/ui/auth/login/unlink-email-confirmation/unlink-email-confirmation.component.ts index 453eb754c..339d3e631 100644 --- a/dmp-frontend/src/app/ui/auth/login/unlink-email-confirmation/unlink-email-confirmation.component.ts +++ b/dmp-frontend/src/app/ui/auth/login/unlink-email-confirmation/unlink-email-confirmation.component.ts @@ -1,6 +1,5 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; -import { UnlinkAccountEmailConfirmationService } from '@app/core/services/unlink-account-email-confirmation/unlink-account-email-confirmation.service'; import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; import { BaseComponent } from '@common/base/base.component'; import { TranslateService } from '@ngx-translate/core'; @@ -13,7 +12,6 @@ import { takeUntil } from "rxjs/operators"; export class UnlinkEmailConfirmation extends BaseComponent implements OnInit { constructor( - private emailConfirmationService: UnlinkAccountEmailConfirmationService, private route: ActivatedRoute, private router: Router, private language: TranslateService, @@ -26,12 +24,13 @@ export class UnlinkEmailConfirmation extends BaseComponent implements OnInit { .subscribe(params => { const token = params['token'] if (token != null) { - this.emailConfirmationService.emailConfirmation(token) - .pipe(takeUntil(this._destroyed)) - .subscribe( - result => this.onCallbackEmailConfirmationSuccess(), - error => this.onCallbackError(error) - ) + //TODO refactor + // this.emailConfirmationService.emailConfirmation(token) + // .pipe(takeUntil(this._destroyed)) + // .subscribe( + // result => this.onCallbackEmailConfirmationSuccess(), + // error => this.onCallbackError(error) + // ) } }); } diff --git a/dmp-frontend/src/app/ui/auth/login/utilities/merge-login.service.ts b/dmp-frontend/src/app/ui/auth/login/utilities/merge-login.service.ts deleted file mode 100644 index 7ca95970a..000000000 --- a/dmp-frontend/src/app/ui/auth/login/utilities/merge-login.service.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Injectable } from '@angular/core'; -import { UserMergeRequestModel } from '@app/core/model/merge/user-merge-request'; -import { Observable, Subject } from 'rxjs'; - -@Injectable() -export class MergeLoginService { - private serviceStore = new Subject(); - - getObservable(): Observable { - return this.serviceStore.asObservable(); - } - - setRequest(request: UserMergeRequestModel) { - this.serviceStore.next(request); - } -} diff --git a/dmp-frontend/src/app/ui/dashboard/dashboard.module.ts b/dmp-frontend/src/app/ui/dashboard/dashboard.module.ts index 6d05911fb..fcb9c5f13 100644 --- a/dmp-frontend/src/app/ui/dashboard/dashboard.module.ts +++ b/dmp-frontend/src/app/ui/dashboard/dashboard.module.ts @@ -1,7 +1,6 @@ import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormattingModule } from '@app/core/formatting.module'; -import { ExportMethodDialogModule } from '@app/library/export-method-dialog/export-method-dialog.module'; import { DashboardComponent } from '@app/ui/dashboard/dashboard.component'; import { DashboardRoutingModule } from '@app/ui/dashboard/dashboard.routing'; import { ConfirmationDialogModule } from '@common/modules/confirmation-dialog/confirmation-dialog.module'; @@ -19,7 +18,6 @@ import { StartNewDmpDialogModule } from '../dmp/new/start-new-dmp-dialogue/start CommonUiModule, FormattingModule, DashboardRoutingModule, - ExportMethodDialogModule, ConfirmationDialogModule, // DatasetCopyDialogModule, FormsModule, diff --git a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.html b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.html index 964c18692..647f8a1c7 100644 --- a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.html +++ b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.html @@ -24,8 +24,8 @@
- - + +
{{'GENERAL.ACTIONS.NO-MORE-AVAILABLE' | translate}} diff --git a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts index e5dd00d2c..524733b50 100644 --- a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts @@ -12,7 +12,7 @@ import { FileFormat } from '@app/core/model/file/file-format.model'; import { Reference } from '@app/core/model/reference/reference'; import { RecentActivityItemLookup } from '@app/core/query/recent-activity-item-lookup.lookup'; import { DashboardService } from "@app/core/services/dashboard/dashboard.service"; -import { DmpServiceNew } from '@app/core/services/dmp/dmp.service'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import { BaseComponent } from '@common/base/base.component'; @@ -30,7 +30,6 @@ export class DraftsComponent extends BaseComponent implements OnInit { lookup: RecentActivityItemLookup = new RecentActivityItemLookup(); pageSize: number = 5; listingItems: RecentActivityItem[]; - fileFormats: FileFormat[] = []; public formGroup = new UntypedFormBuilder().group({ like: new UntypedFormControl(), @@ -54,7 +53,7 @@ export class DraftsComponent extends BaseComponent implements OnInit { private dashboardService: DashboardService, private location: Location, private matomoService: MatomoService, - private dmpServiceNew: DmpServiceNew + private dmpService: DmpService ) { super(); } @@ -77,9 +76,10 @@ export class DraftsComponent extends BaseComponent implements OnInit { order = this.order.UpdatedAt; } } else { - if (order === undefined || (order != this.order.PUBLISHED && order != this.order.LABEL)) { - order = this.order.PUBLISHED; - } + //TODO refactor + // if (order === undefined || (order != this.order.PUBLISHED && order != this.order.LABEL)) { + // order = this.order.PUBLISHED; + // } } this.formGroup.get('order').setValue(order); @@ -89,10 +89,6 @@ export class DraftsComponent extends BaseComponent implements OnInit { this.updateUrl(); } }); - this.dmpServiceNew.getExportFormats().pipe(takeUntil(this._destroyed)).subscribe(result => this.fileFormats = result); - if (this.isAuthenticated()) { - this.refresh(); - } } ngOnChanges() { @@ -104,7 +100,8 @@ export class DraftsComponent extends BaseComponent implements OnInit { updateUrl() { let parameters = "?type=dmps" + (this.page != 1 ? "&page=" + this.page : "") + - (((this.formGroup.get("order").value != this.order.MODIFIED && !this.publicMode) || (this.formGroup.get("order").value != this.order.PUBLISHED && this.publicMode)) ? "&order=" + this.formGroup.get("order").value : "") + + //TODO refactor + //(((this.formGroup.get("order").value != this.order.MODIFIED && !this.publicMode) || (this.formGroup.get("order").value != this.order.PUBLISHED && this.publicMode)) ? "&order=" + this.formGroup.get("order").value : "") + (this.formGroup.get("like").value ? ("&keyword=" + this.formGroup.get("like").value) : ""); this.location.go(this.router.url.split('?')[0] + parameters); } 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 957d1e861..2c61f0e17 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 @@ -26,7 +26,7 @@
- +
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 2e8673967..8f6a6f352 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 @@ -13,7 +13,7 @@ import { Reference } from '@app/core/model/reference/reference'; import { RecentActivityItemLookup } from '@app/core/query/recent-activity-item-lookup.lookup'; import { AuthService } from '@app/core/services/auth/auth.service'; import { DashboardService } from '@app/core/services/dashboard/dashboard.service'; -import { DmpServiceNew } from '@app/core/services/dmp/dmp.service'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import { BaseComponent } from '@common/base/base.component'; @@ -30,8 +30,6 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn lookup: RecentActivityItemLookup = new RecentActivityItemLookup(); pageSize: number = 5; listingItems: RecentActivityItem[]; - fileFormats: FileFormat[] = []; - public formGroup = new UntypedFormBuilder().group({ like: new UntypedFormControl(), @@ -55,7 +53,7 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn private dashboardService: DashboardService, private location: Location, private matomoService: MatomoService, - private dmpServiceNew: DmpServiceNew + private dmpService: DmpService ) { super(); } @@ -78,9 +76,10 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn order = this.order.UpdatedAt; } } else { - if (order === undefined || (order != this.order.PUBLISHED && order != this.order.LABEL)) { - order = this.order.PUBLISHED; - } + //TODO refactor + // if (order === undefined || (order != this.order.PUBLISHED && order != this.order.LABEL)) { + // order = this.order.PUBLISHED; + // } } this.formGroup.get('order').setValue(order); @@ -90,10 +89,6 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn this.updateUrl(); } }); - this.dmpServiceNew.getExportFormats().pipe(takeUntil(this._destroyed)).subscribe(result => this.fileFormats = result); - if (this.isAuthenticated()) { - this.refresh(); - } } ngOnChanges() { @@ -105,7 +100,8 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn updateUrl() { let parameters = "?type=dmps" + (this.page != 1 ? "&page=" + this.page : "") + - (((this.formGroup.get("order").value != this.order.MODIFIED && !this.publicMode) || (this.formGroup.get("order").value != this.order.PUBLISHED && this.publicMode)) ? "&order=" + this.formGroup.get("order").value : "") + + //TODO refactor + //(((this.formGroup.get("order").value != this.order.MODIFIED && !this.publicMode) || (this.formGroup.get("order").value != this.order.PUBLISHED && this.publicMode)) ? "&order=" + this.formGroup.get("order").value : "") + (this.formGroup.get("like").value ? ("&keyword=" + this.formGroup.get("like").value) : ""); this.location.go(this.router.url.split('?')[0] + parameters); } diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-description-activity/recent-edited-description-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-description-activity/recent-edited-description-activity.component.ts index 72d53051f..a9f39ee5a 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-description-activity/recent-edited-description-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-description-activity/recent-edited-description-activity.component.ts @@ -73,9 +73,10 @@ export class RecentEditedDescriptionActivityComponent extends BaseComponent impl order = this.order.UpdatedAt; } } else { - if (order === undefined || (order != this.order.PUBLISHED && order != this.order.LABEL)) { - order = this.order.PUBLISHED; - } + //TODO refactor + // if (order === undefined || (order != this.order.PUBLISHED && order != this.order.LABEL)) { + // order = this.order.PUBLISHED; + // } } this.formGroup.get('order').setValue(order); @@ -99,7 +100,8 @@ export class RecentEditedDescriptionActivityComponent extends BaseComponent impl updateUrl() { let parameters = "?type=dmps" + (this.page != 1 ? "&page=" + this.page : "") + - (((this.formGroup.get("order").value != this.order.MODIFIED && !this.publicMode) || (this.formGroup.get("order").value != this.order.PUBLISHED && this.publicMode)) ? "&order=" + this.formGroup.get("order").value : "") + + //TODO refactor + //(((this.formGroup.get("order").value != this.order.MODIFIED && !this.publicMode) || (this.formGroup.get("order").value != this.order.PUBLISHED && this.publicMode)) ? "&order=" + this.formGroup.get("order").value : "") + (this.formGroup.get("like").value ? ("&keyword=" + this.formGroup.get("like").value) : ""); this.location.go(this.router.url.split('?')[0] + parameters); } diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.html b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.html index 9f44d103b..5f3495173 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.html +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.html @@ -24,7 +24,7 @@
- +
- {{format.formatName}} - - - - + \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.ts b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.ts index c0cd7b6ce..98146d878 100644 --- a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.ts +++ b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.ts @@ -1,34 +1,31 @@ import { Location } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { UntypedFormControl } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { Router } from '@angular/router'; -import { Role } from '@app/core/common/enum/role'; +import { DmpAccessType } from '@app/core/common/enum/dmp-access-type'; +import { IsActive } from '@app/core/common/enum/is-active.enum'; +import { ReferenceType } from '@app/core/common/enum/reference-type'; +import { Description } from '@app/core/model/description/description'; import { AuthService } from '@app/core/services/auth/auth.service'; +import { DescriptionService } from '@app/core/services/description/description.service'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; +import { FileTransformerService } from '@app/core/services/file-transformer/file-transformer.service'; import { LockService } from '@app/core/services/lock/lock.service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; +import { ReferenceService } from '@app/core/services/reference/reference.service'; import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import { FileUtils } from '@app/core/services/utilities/file-utils.service'; import { DmpInvitationDialogComponent } from '@app/ui/dmp/invitation/dmp-invitation-dialog.component'; import { BaseComponent } from '@common/base/base.component'; import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component'; +import { Guid } from '@common/types/guid'; import { TranslateService } from '@ngx-translate/core'; import * as FileSaver from 'file-saver'; import { takeUntil } from 'rxjs/operators'; import { DescriptionStatus } from '../../../../core/common/enum/description-status'; -import { Description } from '@app/core/model/description/description'; -import { DescriptionService } from '@app/core/services/description/description.service'; -import { IsActive } from '@app/core/common/enum/is-active.enum'; -import { Guid } from '@common/types/guid'; -import { DmpAccessType } from '@app/core/common/enum/dmp-access-type'; -import { DmpUser } from '@app/core/model/dmp/dmp'; -import { DmpService, DmpServiceNew } from '@app/core/services/dmp/dmp.service'; -import { ReferenceService } from '@app/core/services/reference/reference.service'; -import { ReferenceType } from '@app/core/common/enum/reference-type'; import { DescriptionCopyDialogComponent } from '../../description-copy-dialog/description-copy-dialog.component'; -import { FileFormat } from '@app/core/model/file/file-format.model'; @Component({ selector: 'app-description-listing-item-component', @@ -40,7 +37,6 @@ export class DescriptionListingItemComponent extends BaseComponent implements On @Input() description: Description; @Input() showDivider: boolean = true; @Input() isPublic: boolean = false; - @Input() fileFormats: FileFormat[] = []; @Output() onClick: EventEmitter = new EventEmitter(); isDraft: boolean; @@ -61,11 +57,11 @@ export class DescriptionListingItemComponent extends BaseComponent implements On private uiNotificationService: UiNotificationService, private lockService: LockService, private location: Location, - private httpClient: HttpClient, private matomoService: MatomoService, private fileUtils: FileUtils, - public dmpService: DmpServiceNew, - public referenceService: ReferenceService + public dmpService: DmpService, + public referenceService: ReferenceService, + public fileTransformerService: FileTransformerService ) { super(); } diff --git a/dmp-frontend/src/app/ui/description/overview/description-overview.component.html b/dmp-frontend/src/app/ui/description/overview/description-overview.component.html index 967bf04a8..10fdb6144 100644 --- a/dmp-frontend/src/app/ui/description/overview/description-overview.component.html +++ b/dmp-frontend/src/app/ui/description/overview/description-overview.component.html @@ -117,28 +117,11 @@ {{ 'DESCRIPTION-OVERVIEW.ACTIONS.EXPORT' | translate }}

-
- -
+
-
diff --git a/dmp-frontend/src/app/ui/description/overview/description-overview.component.ts b/dmp-frontend/src/app/ui/description/overview/description-overview.component.ts index 32d4c75ec..6e23e99fb 100644 --- a/dmp-frontend/src/app/ui/description/overview/description-overview.component.ts +++ b/dmp-frontend/src/app/ui/description/overview/description-overview.component.ts @@ -14,20 +14,17 @@ import { DescriptionTemplate } from '@app/core/model/description-template/descri import { Description, DescriptionStatusPersist } from '@app/core/model/description/description'; import { Dmp, DmpUser, DmpUserRemovePersist } from '@app/core/model/dmp/dmp'; import { DmpReference } from '@app/core/model/dmp/dmp-reference'; -import { FileFormat } from '@app/core/model/file/file-format.model'; import { Reference } from '@app/core/model/reference/reference'; import { AuthService } from '@app/core/services/auth/auth.service'; import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; import { DescriptionService } from '@app/core/services/description/description.service'; -import { DmpServiceNew } from '@app/core/services/dmp/dmp.service'; -import { LockService } from '@app/core/services/lock/lock.service'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; +import { FileTransformerService } from '@app/core/services/file-transformer/file-transformer.service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; import { ReferenceService } from '@app/core/services/reference/reference.service'; -import { UserService } from '@app/core/services/user/user.service'; import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import { FileUtils } from '@app/core/services/utilities/file-utils.service'; -import { Oauth2DialogService } from '@app/ui/misc/oauth2-dialog/service/oauth2-dialog.service'; import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component'; import { Guid } from '@common/types/guid'; import { TranslateService } from '@ngx-translate/core'; @@ -59,27 +56,23 @@ export class DescriptionOverviewComponent extends BaseComponent implements OnIni referenceTypeEnum = ReferenceType; dmpStatusEnum = DmpStatus; dmpUserRoleEnum = DmpUserRole; - fileFormats: FileFormat[] = []; constructor( private route: ActivatedRoute, private router: Router, private descriptionService: DescriptionService, - private translate: TranslateService, private authentication: AuthService, private dialog: MatDialog, private language: TranslateService, private uiNotificationService: UiNotificationService, private configurationService: ConfigurationService, - private oauth2DialogService: Oauth2DialogService, - private userService: UserService, - private dmpService: DmpServiceNew, + private dmpService: DmpService, public referenceService: ReferenceService, private location: Location, - private lockService: LockService, public enumUtils: EnumUtils, private matomoService: MatomoService, - private fileUtils: FileUtils + private fileUtils: FileUtils, + public fileTransformerService: FileTransformerService ) { super(); } @@ -140,8 +133,6 @@ export class DescriptionOverviewComponent extends BaseComponent implements OnIni }); } }); - - this.descriptionService.getExportFormats().pipe(takeUntil(this._destroyed)).subscribe(result => this.fileFormats = result); } checkLockStatus(id: Guid) { diff --git a/dmp-frontend/src/app/ui/description/overview/description-overview.module.ts b/dmp-frontend/src/app/ui/description/overview/description-overview.module.ts index 92df45d46..690bd7481 100644 --- a/dmp-frontend/src/app/ui/description/overview/description-overview.module.ts +++ b/dmp-frontend/src/app/ui/description/overview/description-overview.module.ts @@ -1,7 +1,6 @@ import { NgModule } from '@angular/core'; import { FormattingModule } from '@app/core/formatting.module'; import { AutoCompleteModule } from '@app/library/auto-complete/auto-complete.module'; -import { ExportMethodDialogModule } from '@app/library/export-method-dialog/export-method-dialog.module'; import { CommonFormsModule } from '@common/forms/common-forms.module'; import { ConfirmationDialogModule } from '@common/modules/confirmation-dialog/confirmation-dialog.module'; import { CommonUiModule } from '@common/ui/common-ui.module'; @@ -14,7 +13,6 @@ import { DescriptionOverviewRoutingModule } from './description-overview.routing CommonUiModule, CommonFormsModule, ConfirmationDialogModule, - ExportMethodDialogModule, FormattingModule, AutoCompleteModule, DescriptionCopyDialogModule, diff --git a/dmp-frontend/src/app/ui/description/start-new-description-dialog/start-new-description-dialog.component.ts b/dmp-frontend/src/app/ui/description/start-new-description-dialog/start-new-description-dialog.component.ts index 704c1efcb..5fe33618f 100644 --- a/dmp-frontend/src/app/ui/description/start-new-description-dialog/start-new-description-dialog.component.ts +++ b/dmp-frontend/src/app/ui/description/start-new-description-dialog/start-new-description-dialog.component.ts @@ -2,9 +2,7 @@ import { Component, Inject } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog'; import { DmpStatus } from '@app/core/common/enum/dmp-status'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DmpListingModel } from '@app/core/model/dmp/dmp-listing'; -import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria'; +import { Dmp } from '@app/core/model/dmp/dmp'; import { DmpService } from '@app/core/services/dmp/dmp.service'; import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; import { BaseComponent } from '@common/base/base.component'; @@ -62,14 +60,16 @@ export class StartNewDescriptionDialogComponent extends BaseComponent { this.dialogRef.close(this.data); } - searchDmp(query: string): Observable { - const fields: Array = new Array(); - fields.push('-created'); - const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dmpDataTableRequest.criteria = new DmpCriteria(); - dmpDataTableRequest.criteria.like = query; - dmpDataTableRequest.criteria.status = DmpStatus.Draft; - return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(map(x => x.data)); + searchDmp(query: string): Observable { + // TODO refactor + // const fields: Array = new Array(); + // fields.push('-created'); + // const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); + // dmpDataTableRequest.criteria = new DmpCriteria(); + // dmpDataTableRequest.criteria.like = query; + // dmpDataTableRequest.criteria.status = DmpStatus.Draft; + // return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(map(x => x.data)); + return null; } getDatasetDisplay(item: any): string { diff --git a/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.html b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.html new file mode 100644 index 000000000..8b33f023b --- /dev/null +++ b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.html @@ -0,0 +1,55 @@ +
+
+
{{'DMP-CLONE-DIALOG.TITLE' | translate}}
+ close +
+ +
+
+
{{'DMP-CLONE-DIALOG.FIELDS.LABEL' | translate}}*
+
+
+ + + {{formGroup.get('label').getError('backendError').message}} + {{'GENERAL.VALIDATION.REQUIRED' | translate}} + +
+
+ +
+
+
{{'DMP-CLONE-DIALOG.FIELDS.DESCRIPTION' | translate}}
+
+
{{'DMP-CLONE-DIALOG.FIELDS.DESCRIPTION-HINT' | translate}}
+
+ + +
+
+
+
+
{{'DMP-CLONE-DIALOG.FIELDS.DESCRIPTIONS' | translate}}
+
+
+
{{'DMP-CLONE-DIALOG.FIELDS.DESCRIPTIONS-HINT' | translate}}
+
+
+ + + + {{description.label}} + + + +
+
+
{{'DMP-CLONE-DIALOG.NO-DESCRIPTIONS' | translate}}
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.scss b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.scss similarity index 96% rename from dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.scss rename to dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.scss index d2a67e117..28605e240 100644 --- a/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.scss +++ b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.scss @@ -1,4 +1,6 @@ .clone-dialog { + padding: 1.5rem; + .heading { text-align: left; font-weight: 700; @@ -33,7 +35,7 @@ } .cancel-btn { - min-width: 101px; + min-width: 101px; height: 43px; background: #ffffff; border: 1px solid #b5b5b5; diff --git a/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.ts new file mode 100644 index 000000000..a42799b5d --- /dev/null +++ b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.component.ts @@ -0,0 +1,64 @@ +import { Component, Inject } from '@angular/core'; +import { UntypedFormGroup } from '@angular/forms'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { CloneDmpPersist, Dmp } from '@app/core/model/dmp/dmp'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; +import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; +import { BaseComponent } from '@common/base/base.component'; +import { TranslateService } from '@ngx-translate/core'; +import { takeUntil } from 'rxjs/operators'; +import { DmpCloneDialogEditorModel } from './dmp-clone-dialog.editor.model'; + +@Component({ + selector: 'app-dmp-clone-dialog', + templateUrl: './dmp-clone-dialog.component.html', + styleUrls: ['./dmp-clone-dialog.component.scss'] +}) +export class CloneDmpDialogComponent extends BaseComponent { + + dmp: Dmp; + editorModel: DmpCloneDialogEditorModel; + formGroup: UntypedFormGroup; + + constructor( + public dialogRef: MatDialogRef, + private dmpService: DmpService, + private uiNotificationService: UiNotificationService, + private language: TranslateService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + super(); + this.dmp = data.dmp; + } + + ngOnInit() { + this.editorModel = new DmpCloneDialogEditorModel().fromModel(this.data.dmp); + this.formGroup = this.editorModel.buildForm(); + } + + hasDescriptions() { + return this.dmp.descriptions.length > 0; + } + + close() { + this.dialogRef.close(null); + } + + cancel() { + this.dialogRef.close(null); + } + + confirm() { + if (!this.formGroup.valid) { return; } + const value: CloneDmpPersist = this.formGroup.value; + this.dmpService.clone(value).pipe(takeUntil(this._destroyed)).subscribe( + dmp => this.dialogRef.close(dmp), + error => this.onCallbackError(error) + ); + + } + + onCallbackError(error: any) { + this.uiNotificationService.snackBarNotification(error.error.message ? error.error.message : this.language.instant('GENERAL.SNACK-BAR.UNSUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Error); + } +} diff --git a/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.editor.model.ts b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.editor.model.ts new file mode 100644 index 000000000..093b2ff2f --- /dev/null +++ b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.editor.model.ts @@ -0,0 +1,50 @@ +import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms"; +import { CloneDmpPersist, Dmp } from "@app/core/model/dmp/dmp"; +import { BackendErrorValidator } from '@common/forms/validation/custom-validator'; +import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model'; +import { Validation, ValidationContext } from '@common/forms/validation/validation-context'; +import { Guid } from "@common/types/guid"; + +export class DmpCloneDialogEditorModel implements CloneDmpPersist { + id: Guid; + label: string; + description: String; + descriptions: Guid[] = []; + + public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); + protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); + + constructor() { } + + public fromModel(item: Dmp): DmpCloneDialogEditorModel { + if (item) { + this.id = item.id; + this.label = item.label; + this.description = item.description; + if (item.descriptions) { this.descriptions = item.descriptions.map(x => x.id); } + } + return this; + } + + buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { + if (context == null) { context = this.createValidationContext(); } + + return this.formBuilder.group({ + id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], + label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], + description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], + descriptions: [{ value: this.descriptions, disabled: disabled }, context.getValidation('descriptions').validators], + }); + } + + createValidationContext(): ValidationContext { + const baseContext: ValidationContext = new ValidationContext(); + const baseValidationArray: Validation[] = new Array(); + baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(this.validationErrorModel, 'id')] }); + baseValidationArray.push({ key: 'label', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'label')] }); + baseValidationArray.push({ key: 'description', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'description')] }); + baseValidationArray.push({ key: 'descriptions', validators: [BackendErrorValidator(this.validationErrorModel, 'descriptions')] }); + baseContext.validation = baseValidationArray; + return baseContext; + } +} diff --git a/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.module.ts b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.module.ts similarity index 71% rename from dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.module.ts rename to dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.module.ts index a68cbe124..e2040ebd5 100644 --- a/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.module.ts +++ b/dmp-frontend/src/app/ui/dmp/clone-dialog/dmp-clone-dialog.module.ts @@ -1,15 +1,15 @@ import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { CommonUiModule } from '@common/ui/common-ui.module'; -import { CloneDialogComponent } from './clone-dialog.component'; +import { CloneDmpDialogComponent } from './dmp-clone-dialog.component'; import { AutoCompleteModule } from '@app/library/auto-complete/auto-complete.module'; import {RichTextEditorModule} from "@app/library/rich-text-editor/rich-text-editor.module"; @NgModule({ imports: [CommonUiModule, FormsModule, ReactiveFormsModule, AutoCompleteModule, RichTextEditorModule], - declarations: [CloneDialogComponent], - exports: [CloneDialogComponent] + declarations: [CloneDmpDialogComponent], + exports: [CloneDmpDialogComponent] }) -export class CloneDialogModule { +export class CloneDmpDialogModule { constructor() { } } diff --git a/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.html b/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.html deleted file mode 100644 index ef4ae836c..000000000 --- a/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.html +++ /dev/null @@ -1,77 +0,0 @@ -
-
-
{{'DMP-EDITOR.TITLE.CLONE-DMP' | translate}}
-
{{'DMP-EDITOR.TITLE.NEW-VERSION' | translate}}
- close -
- -
-
-
{{'DMP-EDITOR.FIELDS.NAME' | translate}}*
-
- - - - {{this.data.formGroup.get('label').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
- -
-
-
{{'DMP-EDITOR.FIELDS.DESCRIPTION' | translate}}
-
{{'DMP-EDITOR.MAIN-INFO.HINT' | translate}}
-
- - -
-
-
- -
-
-
{{'DMP-EDITOR.FIELDS.TEMPLATES' | translate}}
- - {{'DMP-EDITOR.FIELDS.SELECT-TEMPLATE' | translate}} - - - - {{data.formGroup.get('profiles').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - -
-
- -
-
-
{{'DMP-EDITOR.FIELDS.DESCRIPTIONS' | translate}}
-
-
{{'DATASET-LISTING.SELECT-DESCRIPTIONS-TO-CLONE' | translate}}
- - - - {{dataset.label}} - - - -
-
-
{{'DATASET-LISTING.SELECT-DESCRIPTIONS-NONE' | translate}}
-
-
-
-
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.ts deleted file mode 100644 index 4ba1303e5..000000000 --- a/dmp-frontend/src/app/ui/dmp/clone/clone-dialog/clone-dialog.component.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { Component, Inject } from '@angular/core'; -import { UntypedFormArray, UntypedFormBuilder, UntypedFormControl } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; -import { DatasetProfileCriteria } from '@app/core/query/dataset-profile/dataset-profile-criteria'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { BaseComponent } from '@common/base/base.component'; -import { Observable } from 'rxjs'; -import { map, takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-clone-dialog', - templateUrl: './clone-dialog.component.html', - styleUrls: ['./clone-dialog.component.scss'] -}) -export class CloneDialogComponent extends BaseComponent { - - agreePrivacyPolicyNames = false; - initialItems = []; - profilesAutoCompleteConfiguration: MultipleAutoCompleteConfiguration; - - constructor( - public dialogRef: MatDialogRef, - private dialog: MatDialog, - private dmpService: DmpService, - @Inject(MAT_DIALOG_DATA) public data: any - ) { - super(); - - this.selectionChanged(this.initialItems) - - this.profilesAutoCompleteConfiguration = { - filterFn: this.filterProfiles.bind(this), - 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'], - popupItemActionIcon: 'visibility' - }; - - if (this.data.isNewVersion) { - // this.data.formGroup.get('label').disable(); - } - } - - close() { - this.dialogRef.close(false); - } - - cancel() { - this.dialogRef.close(false); - } - - confirm() { - this.dialogRef.close(true); - } - - selectionChanged(selectedItems) { - this.data.formGroup.removeControl('datasets'); - this.data.formGroup.addControl('datasets', new UntypedFormBuilder().array(new Array())); - if (selectedItems && selectedItems.selectedOptions && selectedItems.selectedOptions.selected.length > 0) { - selectedItems.selectedOptions.selected.forEach(element => { - (this.data.formGroup.get('datasets')).push(new UntypedFormBuilder().group({ id: element.value })); - }); - } - } - - hasDatasets() { - return this.data.datasets.length > 0; - } - - filterProfiles(value: string): Observable { - const request = new DataTableRequest(null, null, { fields: ['+label'] }); - const criteria = new DatasetProfileCriteria(); - criteria.like = value; - request.criteria = criteria; - return this.dmpService.searchDmpBlueprints(request); - } - - onPreviewTemplate(event) { - // const dialogRef = this.dialog.open(DatasetPreviewDialogComponent, { - // width: '590px', - // minHeight: '200px', - // restoreFocus: false, - // data: { - // template: event - // }, - // panelClass: 'custom-modalbox' - // }); - // dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { - // if (result) { - // let profiles = this.data.formGroup.get('profiles').value; - // profiles.push(event); - // this.data.formGroup.get('profiles').setValue(profiles); - // this.profilesAutoCompleteConfiguration = { - // filterFn: this.filterProfiles.bind(this), - // 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'], - // popupItemActionIcon: 'visibility' - // }; - // } - // }); - } - -} diff --git a/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.html b/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.html deleted file mode 100644 index ed8b1a92e..000000000 --- a/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.html +++ /dev/null @@ -1,175 +0,0 @@ -
-
-
- -
-
-
-
-
-
{{'DMP-EDITOR.TITLE.CLONE-DMP' | translate}}
-
{{ formGroup.get('label').value }} ({{'DMP-EDITOR.CHANGES' | translate}})
-
-
- -
- -
-
-
-
-
-
- -
-
-
-
-
- -
{{'DATASET-LISTING.SELECT-DESCRIPTIONS-TO-CLONE' | translate}}
-
{{ dataset.value.label }} ({{'DMP-EDITOR.CHANGES' | translate}})
-
-
{{'DATASET-LISTING.TOOLTIP.PART-OF' | translate}} -
{{'DATASET-LISTING.TOOLTIP.DMP' | translate}}
-
-
{{ formGroup.get('label').value }}
- -
-
-
-
- -
-
- -
-
-
-
-
-
-
-
-
{{'DMP-EDITOR.STEPPER.USER-GUIDE' | translate}}
-
-
    -
  1. {{'DMP-EDITOR.STEPPER.MAIN-INFO' | translate}} (4)
  2. -
  3. {{'DMP-EDITOR.STEPPER.FUNDING-INFO' | translate}} (3)
  4. -
  5. {{'DMP-EDITOR.STEPPER.LICENSE-INFO' | translate}} (6)
  6. -
  7. {{'DMP-EDITOR.STEPPER.DESCRIPTION-INFO' | translate}}
  8. -
  9. -
    {{'DMP-EDITOR.STEPPER.DATASET' | translate}}
    - -
    {{'DMP-EDITOR.STEPPER.DATASET' | translate}}: {{ dataset.get('label').value }}
    - close -
    - check{{'TYPES.DATASET-STATUS.FINALISED' | translate}} -
    - -
    - -
  10. -
-
-
- -
-
{{'DMP-EDITOR.STEPPER.NEXT' | translate}}
- chevron_right -
-
- add -
{{'DMP-LISTING.ACTIONS.ADD-DESCRIPTION-SHORT' | translate}}
-
-
-
-
- - - - - -
- -
-
-
-
-
-
- - 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 deleted file mode 100644 index 5a9122ecf..000000000 --- a/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.scss +++ /dev/null @@ -1,421 +0,0 @@ -form { - height: calc(100vh - 124px); -} - -a { - color: #000000; -} - -a:hover { - color: var(--primary-color-3); -} - -.main-content { - height: 100vh !important; -} - -.fixed-editor-header { - // position: fixed; - // width: calc(100% - 310px); - z-index: 3; - background-color: whitesmoke; -} - -.editor-header { - height: 64px; - background: var(--unnamed-color-var(--primary-color)) 0% 0% no-repeat padding-box; - background: var(--primary-color) 0% 0% no-repeat padding-box; - box-shadow: 0px 3px 6px #00000029; - padding: 0.6rem; - margin: 30px 0px 0px 0px; - border-radius: 4px; - opacity: 1; - - .info { - flex: 2; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } -} - -.dataset-editor-header { - height: 113px; - background: var(--unnamed-color-var(--primary-color)) 0% 0% no-repeat padding-box; - background: var(--secondary-color) 0% 0% no-repeat padding-box; - box-shadow: 0px 3px 6px #00000029; - padding: 0.6rem; - margin: 30px 0px 0px 0px; - border-radius: 4px; - opacity: 1; - - .info { - flex: 2; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } -} - -.editor-content { - .form { - // position: relative; - // left: 362px; - // width: calc(100% - 366px); - - position: relative; - left: 362px; - width: calc(100% - 366px); - overflow-y: auto; - height: calc(100vh - 218px); - } -} - -.title { - text-align: left; - font-weight: 400; - font-size: 14px; - color: #ffffff; - opacity: 0.75; -} - -.dataset-title { - text-align: left; - letter-spacing: 0px; - color: #212121; - opacity: 0.9; - font-size: 14px; - font-weight: 400; -} - -.subtitle { - text-align: left; - color: #ffffff; - font-weight: 700; - font-size: 16px; - opacity: 1; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.dataset-subtitle { - text-align: left; - letter-spacing: 0px; - color: #212121; - font-weight: 700; - font-size: 16px; - opacity: 0.9; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.discard-btn { - background: transparent; - border: 1px solid #ffffff; - color: white; - border-radius: 30px; - opacity: 1; - width: 110px; - height: 40px; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; -} - -.save-btn { - background: #ffffff 0% 0% no-repeat padding-box; - border-radius: 30px; - opacity: 1; - width: 110px; - height: 40px; - display: flex; - justify-content: center; - align-items: center; - font-weight: 700; - color: var(--primary-color); - cursor: pointer; -} - -.dataset-discard-btn { - border: 1px solid #212121; - border-radius: 30px; - opacity: 1; - background-color: transparent; - font-weight: 700; - width: 110px; - height: 40px; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; -} - -.dataset-save-btn { - background: #ffffff 0% 0% no-repeat padding-box; - border-radius: 30px; - opacity: 1; - width: 110px; - height: 40px; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; -} - -.dataset-part-of { - display: flex; - flex-direction: row; - text-align: left; - font-weight: 400; - font-family: "Roboto", sans-serif; - font-size: 0.875rem; - align-items: center; - letter-spacing: 0px; - color: #3d3d3d; - padding: 0; -} - -.changes { - font-weight: 400; - color: #ffffff; -} - -.dataset-changes { - font-weight: 400; - color: #000000; -} - -.dataset-stepper { - position: fixed; - // height: 100%; - display: flex; - flex-direction: column; - height: calc(100vh - 240px); - overflow-y: auto; -} - -.dmp-stepper { - position: fixed; - // height: 100%; - display: flex; - flex-direction: column; - height: calc(100vh - 190px); - overflow-y: auto; -} - -.stepper-title { - text-align: left; - font-weight: 300; - font-size: 20px; - letter-spacing: 0px; - color: #212121; - opacity: 0.6; - margin: 2.875rem 0rem 2.875rem 0rem; - padding-left: 1rem; -} - -.stepper-list li { - text-align: left; - font-weight: 400; - letter-spacing: 0px; - color: #212121; - padding: 0.3rem 0.1rem; - opacity: 0.6; - cursor: pointer; - max-width: 290px; -} - -.stepper-list .active { - color: #212121; - font-weight: 700; - opacity: 1; -} - -.stepper-list .active-dataset { - color: #212121; - font-weight: 700; - opacity: 1; - .dataset-tag { - width: 73px; - height: 27px; - background-color: var(--secondary-color); - color: #5d5d5d; - border-radius: 4px; - font-weight: 400; - font-size: 14px; - justify-content: center; - display: flex; - align-items: center; - } -} - -.stepper-options { - // flex-grow: 1; -} - -.stepper-actions { - display: flex; - padding-left: 1rem; - margin-top: auto; - margin-bottom: 0.5rem; - // margin-top: 5rem; - // flex-grow: 8; -} - -.stepper-btn { - border-radius: 30px; - opacity: 1; - width: 154px; - height: 40px; - display: flex; - justify-content: center; - align-items: center; - font-size: 14px; -} - -.previous { - color: #212121; - background: #f5f5f5 0% 0% no-repeat padding-box; - box-shadow: 0px 3px 6px #1e202029; - border: 2px solid #212121; - font-weight: 500; - cursor: pointer; -} - -.next { - background: var(--primary-color) 0% 0% no-repeat padding-box; - color: white; - box-shadow: 0px 3px 6px #1e202029; - font-weight: 400; - cursor: pointer; -} - -.dataset-next { - background: var(--secondary-color) 0% 0% no-repeat padding-box; - color: #212121; - box-shadow: 0px 3px 6px #1e202029; - font-weight: 700; - cursor: pointer; -} - -.previous-disabled { - border: 1px solid #b5b5b5; - color: #b5b5b5; - cursor: auto !important; -} - -.next-disabled { - background: #cbcbcb 0% 0% no-repeat padding-box; - box-shadow: 0px 3px 6px #1e202029; - color: white; - cursor: auto !important; -} - -.dataset-list { - list-style-type: none; - padding-left: 0px; -} - -.dmp-label { - min-width: 67px; - height: 37px; - background: var(--primary-color) 0% 0% no-repeat padding-box; - color: white; - border-radius: 4px; - opacity: 1; - display: flex; - align-items: center; - justify-content: center; -} - -.dmp-title { - text-align: left; - font-weight: 500; - font-family: "Roboto", sans-serif; - font-size: 1rem; - opacity: 0.81; - padding-top: 0.75rem; - padding-bottom: 0.55rem; - color: #212121; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.status-icon { - font-size: 1.2em; - color: #a7a7a7; - vertical-align: text-top; -} - -.cursor-default { - cursor: default; -} - -.finalized-label { - display: flex; - align-items: center; - padding-right: 1rem; - font-weight: 400; - font-size: 0.875rem; -} - -// ::ng-deep .mat-tab-labels { -// justify-content: space-between; -// } - -// ::ng-deep .mat-tab-label-content { -// text-transform: uppercase; -// } - -::ng-deep .mat-ink-bar { - background-color: var(--primary-color-3) !important; - // background-color: #0070c0 !important; -} - -/////// Old version style - -// .menu-item { -// width: 248px; -// } - -// .more-horiz { -// font-size: 28px; -// color: #aaaaaa; -// } - -// .clone-dmp { -// height: 3.5em; -// } - -// .clone-mode { -// // line-height: 2em; -// text-transform: uppercase; -// color: #089dbb; -// font-weight: 400; -// align-self: center; -// } - -// .clone-mode-text { -// color: black; -// align-self: center; -// } - -// .more-icon :hover { -// color: var(--primary-color-3); -// } - -// ::ng-deep .mat-tab-labels { -// justify-content: space-between; -// } - -// ::ng-deep .mat-tab-label-content { -// text-transform: uppercase; -// } - -// ::ng-deep .mat-ink-bar { -// background-color: var(--primary-color-3) !important; -// } 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 deleted file mode 100644 index b413710b0..000000000 --- a/dmp-frontend/src/app/ui/dmp/clone/dmp-clone.component.ts +++ /dev/null @@ -1,382 +0,0 @@ - -import { HttpErrorResponse } from '@angular/common/http'; -import { Component, OnInit } from '@angular/core'; -import { UntypedFormGroup, UntypedFormControl, UntypedFormBuilder, UntypedFormArray } from '@angular/forms'; -import { ActivatedRoute, Params, Router } from '@angular/router'; -import { DmpModel } from '@app/core/model/dmp/dmp'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; -import { FunderFormModel } from '@app/ui/dmp/editor/grant-tab/funder-form-model'; -import { GrantTabModel } from '@app/ui/dmp/editor/grant-tab/grant-tab-model'; -import { ProjectFormModel } from '@app/ui/dmp/editor/grant-tab/project-form-model'; -import { DmpWizardEditorModel } from '@app/ui/dmp/wizard/dmp-wizard-editor.model'; -// import { BreadcrumbItem } from '@app/ui/misc/breadcrumb/definition/breadcrumb-item'; -import { BaseComponent } from '@common/base/base.component'; -import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model'; -import { TranslateService } from '@ngx-translate/core'; -import { Observable, of as observableOf } from 'rxjs'; -import { map, takeUntil } from 'rxjs/operators'; -import { DmpStatus } from '@app/core/common/enum/dmp-status'; -import { ExtraPropertiesFormModel } from '../editor/general-tab/extra-properties-form.model'; -import { AuthService } from '@app/core/services/auth/auth.service'; -import { Role } from '@app/core/common/enum/role'; -import { DatasetListingModel } from '@app/core/model/dataset/dataset-listing'; -import { DatasetService } from '@app/core/services/dataset/dataset.service'; -import { DmpEditorModel } from '../editor/dmp-editor.model'; -import { DatasetWizardEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.model'; -import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component'; -import { MatDialog } from '@angular/material/dialog'; -import { isNullOrUndefined } from '@app/utilities/enhancers/utils'; -import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.service'; -import { DmpBlueprintSystemFieldType } from '@app/core/common/enum/dmp-blueprint-system-field-type'; -import { DescriptionTemplatesInSection, DmpBlueprint, DmpBlueprintDefinition, DmpBlueprintDefinitionSection, FieldInSection } from '@app/core/model/dmp-blueprint/dmp-blueprint'; -import { Guid } from '@common/types/guid'; -import { nameof } from 'ts-simple-nameof'; -import { DmpBlueprintSectionFieldCategory } from '@app/core/common/enum/dmp-blueprint-section-field-category'; - - -@Component({ - selector: 'app-dmp-clone', - templateUrl: './dmp-clone.component.html', - styleUrls: ['./dmp-clone.component.scss'] -}) -export class DmpCloneComponent extends BaseComponent implements OnInit { - - // breadCrumbs: Observable; - // dmp: DmpWizardEditorModel; - dmp: DmpEditorModel; - formGroup: UntypedFormGroup; - itemId: string; - datasetId: string = null; - isFinalized: false; - isPublic: false; - parentDmpLabel: string; - isNewVersion: boolean = false; - isClone: boolean = true; - isNew: boolean = false; - isUserOwner: boolean = true; - // datasets: DatasetListingModel[] = []; - datasets = new UntypedFormArray([]); - removeIndexes = []; - - selectedTab = 0; - step: number = 0; - stepsBeforeDatasets: number = 3; - maxStep: number = 3; - - constructor( - private route: ActivatedRoute, - private router: Router, - private language: TranslateService, - private dmpService: DmpService, - private dmpBlueprintService: DmpBlueprintService, - private authentication: AuthService, - private uiNotificationService: UiNotificationService, - private datasetService: DatasetService, - private dialog: MatDialog - ) { - super(); - } - - ngOnInit() { - this.route.params - .pipe(takeUntil(this._destroyed)) - .subscribe((params: Params) => { - this.itemId = params['id']; - this.dmpService.getSingle(this.itemId).pipe(map(data => data as DmpModel)) - .pipe(takeUntil(this._destroyed)) - .subscribe(data => { - this.dmp = new DmpEditorModel(); - this.dmp.grant = new GrantTabModel(); - this.dmp.project = new ProjectFormModel(); - this.dmp.funder = new FunderFormModel(); - this.dmp.extraProperties = new ExtraPropertiesFormModel(); - this.dmp.fromModel(data); - this.dmp.status = DmpStatus.Draft; - this.formGroup = this.dmp.buildForm(); - - if (!isNullOrUndefined(this.formGroup.get('profile').value)) { - this.getBlueprintDefinition(Guid.parse(this.formGroup.get('profile').value), result => { - this.checkForGrant(result.definition); - this.checkForFunder(result.definition); - this.checkForProject(result.definition); - }); - } - - this.datasets = this.formGroup.get('datasets') as UntypedFormArray; - - this.parentDmpLabel = this.formGroup.get('label').value; - if (this.route.routeConfig.path.startsWith('new_version/')) { - this.formGroup.get('version').setValue(this.formGroup.get('version').value + 1); - this.formGroup.controls['label'].disable(); - this.formGroup.controls['grant'].disable(); - this.isNewVersion = true; - } else if (this.route.routeConfig.path.startsWith('clone/')) { - this.formGroup.get('label').setValue(this.dmp.label + " New"); - this.isNewVersion = false; - } - - // const request: DataTableRequest = new DataTableRequest(null, null, null); - // request.criteria = new DatasetCriteria(); - // request.criteria.dmpIds = [this.formGroup.get('id').value]; - // request.criteria.allVersions = true; - // this.datasetService.getPaged(request) - // .pipe(takeUntil(this._destroyed)) - // .subscribe(items => { - // this.datasets = items.data; - // this.formGroup.addControl('datasets', new FormBuilder().array(new Array())); - // this.datasets.forEach(element => { - // console.log(element); - // (this.formGroup.get('datasets')).push(new FormBuilder().group({ id: element.value })); - // }); - // }); - - - // 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 = observableOf(breadCrumbs); - }); - }); - - } - - private getBlueprintDefinition(blueprintId: Guid, successFunction) { - this.dmpBlueprintService.getSingle(blueprintId, [ - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.id)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.label)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.description)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.ordinal)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.hasTemplates)].join('.'), - - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.id)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.category)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.dataType)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.systemFieldType)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.label)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.placeholder)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.description)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.required)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.fields), nameof(x => x.ordinal)].join('.'), - - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.id)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.descriptionTemplateId)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.label)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.minMultiplicity)].join('.'), - [nameof(x => x.definition), nameof(x => x.sections), nameof(x => x.descriptionTemplates), nameof(x => x.maxMultiplicity)].join('.'), - ] - ) - .pipe(map(data => data as DmpBlueprint), takeUntil(this._destroyed)) - .subscribe( - data => successFunction(data), - error => this.onCallbackError(error) - ); - } - - private checkForGrant(blueprint: DmpBlueprintDefinition) { - let hasGrant = false; - blueprint.sections.forEach(section => section.fields.forEach( - field => { - if (field.category as unknown === DmpBlueprintSectionFieldCategory.SYSTEM && field.systemFieldType === DmpBlueprintSystemFieldType.GRANT) { - hasGrant = true; - } - } - )); - if (!hasGrant) { - this.formGroup.removeControl('grant'); - } - } - - private checkForFunder(blueprint: DmpBlueprintDefinition) { - let hasFunder = false; - blueprint.sections.forEach(section => section.fields.forEach( - field => { - if (field.category as unknown === DmpBlueprintSectionFieldCategory.SYSTEM && field.systemFieldType === DmpBlueprintSystemFieldType.FUNDER) { - hasFunder = true; - } - } - )); - if (!hasFunder) { - this.formGroup.removeControl('funder'); - } - } - - private checkForProject(blueprint: DmpBlueprintDefinition) { - let hasProject = false; - blueprint.sections.forEach(section => section.fields.forEach( - field => { - if (field.category as unknown === DmpBlueprintSectionFieldCategory.SYSTEM && field.systemFieldType === DmpBlueprintSystemFieldType.PROJECT) { - hasProject = true; - } - } - )); - if (!hasProject) { - this.formGroup.removeControl('project'); - } - } - - public cancel(id: String): void { - if (id != null) { - this.router.navigate(['/plans/overview/' + id]); - } else { - this.router.navigate(['/plans']); - } - } - - public isFormValid(): boolean { - return this.formGroup.valid; - } - - formSubmit(): void { - if (!this.isFormValid()) { return; } - if (this.isNewVersion) { - this.dmpService.newVersion(this.formGroup.getRawValue(), this.itemId) - .pipe(takeUntil(this._destroyed)) - .subscribe( - complete => this.onCallbackSuccess(), - error => this.onCallbackErrorNewVersion(error) - ); - } - else { - this.removeDatasetsFromClone(); - this.dmpService.clone(this.formGroup.getRawValue(), this.itemId) - .pipe(takeUntil(this._destroyed)) - .subscribe( - complete => this.onCallbackSuccess(), - error => this.onCallbackError(error) - ); - } - } - - onCallbackSuccess(): void { - this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); - this.router.navigate(['/plans']); - } - - onCallbackError(error: any) { - this.setErrorModel(error.error); - } - - onCallbackErrorNewVersion(errorResponse: HttpErrorResponse) { - this.uiNotificationService.snackBarNotification(errorResponse.error.message, SnackBarNotificationLevel.Error); - } - - public setErrorModel(validationErrorModel: ValidationErrorModel) { - Object.keys(validationErrorModel).forEach(item => { - (this.dmp.validationErrorModel)[item] = (validationErrorModel)[item]; - }); - } - - isDirty() { - - } - - discardChanges() { - - } - - public changeStep(index: number, dataset?: DatasetListingModel) { - this.step = index; - if (dataset) { this.datasetId = dataset.id }; - } - - public nextStep() { - this.step = this.step < this.maxStep ? this.step + 1 : this.step; - if (this.step >= this.stepsBeforeDatasets) { - this.datasetId = this.datasets[this.step - this.stepsBeforeDatasets].id; - } - } - - public previousStep() { - this.step = this.step !== 0 ? this.step - 1 : this.step; - if (this.step >= this.stepsBeforeDatasets) { - this.datasetId = this.datasets[this.step - this.stepsBeforeDatasets].id; - } - } - - setIsUserOwner() { - if (this.dmp) { - const principalId: string = this.authentication.userId()?.toString(); - if (principalId) { - this.isUserOwner = !!this.dmp.users.find(x => (x.role === Role.Owner) && (principalId === x.id)); - } else { - this.isUserOwner = false; - } - } - } - - formChanged() { - - } - - addDataset() { - if (!this.formGroup.get('datasets')) { - this.formGroup.addControl('datasets', new UntypedFormBuilder().array(new Array())); - } - this.formGroup.get('datasets')['controls'].push(new DatasetWizardEditorModel().buildForm()); - this.datasets = this.formGroup.get('datasets') as UntypedFormArray; - this.step = this.stepsBeforeDatasets + this.formGroup.get('datasets')['controls'].length - 1; - this.maxStep = this.maxStep + this.formGroup.get('datasets')['controls'].length - 1; - } - - editDataset(id: string) { - this.router.navigate(['/datasets', 'edit', id]); - } - - hasProfile(): boolean { - return this.formGroup.get('profiles') && this.formGroup.get('profiles').value && this.formGroup.get('profiles').value.length > 0; - } - - selectionChanged(event, dataset) { - var datasetIndex = this.formGroup.get('datasets').value.map(function (item) { return item.id; }).indexOf(dataset.value.id); - if (!event.checked) { - if (this.removeIndexes.indexOf(datasetIndex) === -1) { this.removeIndexes.push(datasetIndex); } - } else { - var index = this.removeIndexes.indexOf(datasetIndex); - this.removeIndexes.splice(index, 1) - } - } - - removeDatasetsFromClone() { - this.removeIndexes.forEach(index => { - this.formGroup.get('datasets')['controls'].splice(index, 1); - this.formGroup.get('datasets').value.splice(index, 1) - }) - } - - public removeDataset(datasetId: string, index: number) { - const dialogRef = this.dialog.open(ConfirmationDialogComponent, { - maxWidth: '300px', - restoreFocus: false, - data: { - message: this.language.instant('GENERAL.CONFIRMATION-DIALOG.DELETE-ITEM'), - confirmButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.DELETE'), - cancelButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CANCEL'), - isDeleteConfirmation: true - } - }); - dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { - if (result) { - if (datasetId) { - this.datasetService.delete(datasetId) - .pipe(takeUntil(this._destroyed)) - .subscribe( - complete => { - this.onDeleteCallbackSuccess(); - }, - error => this.onDeleteCallbackError(error) - ); - } - this.formGroup.get('datasets')['controls'].splice(index, 1); - this.step = 0; - } - }); - } - onDeleteCallbackSuccess(): void { - this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-DELETE'), SnackBarNotificationLevel.Success); - this.dmp.id != null ? this.router.navigate(['/plans', 'edit', this.dmp.id]) : this.router.navigate(['/plans']); - } - onDeleteCallbackError(error) { - this.uiNotificationService.snackBarNotification(error.error.message ? error.error.message : this.language.instant('GENERAL.SNACK-BAR.UNSUCCESSFUL-DELETE'), SnackBarNotificationLevel.Error); - } -} diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts index 4eeee142b..06c75f60e 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.ts @@ -14,7 +14,7 @@ import { Dmp, DmpPersist } from '@app/core/model/dmp/dmp'; import { AuthService } from '@app/core/services/auth/auth.service'; import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.service'; -import { DmpServiceNew } from '@app/core/services/dmp/dmp.service'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; import { LockService } from '@app/core/services/lock/lock.service'; import { LoggingService } from '@app/core/services/logging/logging-service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; @@ -85,12 +85,11 @@ export class DmpEditorComponent extends BaseEditor implemen // Rest dependencies. Inject any other needed deps here: public authService: AuthService, // public enumUtils: EnumUtils, - private dmpService: DmpServiceNew, + private dmpService: DmpService, private logger: LoggingService, // private descriptionEditorService: DescriptionEditorService, public dmpBlueprintService: DmpBlueprintService, private matomoService: MatomoService, - // private dmpService: DmpService, private lockService: LockService, private configurationService: ConfigurationService, // public visibilityRulesService: VisibilityRulesService @@ -442,7 +441,6 @@ export class DmpEditorComponent extends BaseEditor implemen // private language: TranslateService, // private externalSourcesService: ExternalSourcesService, // private organizationService: OrganisationService, - // private dmpService: DmpService, // private uiNotificationService: UiNotificationService, // private formService: FormService, // private dialog: MatDialog, diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.resolver.ts b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.resolver.ts index f1702a7c8..6bb767ed8 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.resolver.ts +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.resolver.ts @@ -5,7 +5,7 @@ import { DescriptionTemplatesInSection, DmpBlueprint, DmpBlueprintDefinition, Dm import { Dmp, DmpDescriptionTemplate } from '@app/core/model/dmp/dmp'; import { DmpReference } from '@app/core/model/dmp/dmp-reference'; import { Reference } from '@app/core/model/reference/reference'; -import { DmpServiceNew } from '@app/core/services/dmp/dmp.service'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; import { BreadcrumbService } from '@app/ui/misc/breadcrumb/breadcrumb.service'; import { BaseEditorResolver } from '@common/base/base-editor.resolver'; import { Guid } from '@common/types/guid'; @@ -15,7 +15,7 @@ import { nameof } from 'ts-simple-nameof'; @Injectable() export class DmpEditorResolver extends BaseEditorResolver { - constructor(private descriptionService: DmpServiceNew, private breadcrumbService: BreadcrumbService) { + constructor(private descriptionService: DmpService, private breadcrumbService: BreadcrumbService) { super(); } diff --git a/dmp-frontend/src/app/ui/dmp/dmp.module.ts b/dmp-frontend/src/app/ui/dmp/dmp.module.ts index dbee55915..4162dbf3f 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp.module.ts +++ b/dmp-frontend/src/app/ui/dmp/dmp.module.ts @@ -20,7 +20,6 @@ import { CommonUiModule } from '@common/ui/common-ui.module'; // CommonUiModule, // CommonFormsModule, // ConfirmationDialogModule, - // ExportMethodDialogModule, // FormattingModule, // AutoCompleteModule, // DmpRoutingModule, diff --git a/dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.component.html b/dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.component.html deleted file mode 100644 index 10f6b5c8b..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.component.html +++ /dev/null @@ -1,28 +0,0 @@ -
-

{{'ADDORGANIZATION-EDITOR.TITLE' | translate}}

-
- - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{'DMP-EDITOR.MAIN-INFO.ORGANISATION-IDENTIFIER-EXSTS' | translate}} - check - clear - {{'DMP-EDITOR.MAIN-INFO.IDENTIFIER-EXISTS-ORGANISATION-LIST' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - -
-
-
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.component.ts b/dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.component.ts deleted file mode 100644 index ed67c5dbd..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.component.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { Component, Inject, OnInit } from '@angular/core'; -import { AbstractControl, AsyncValidatorFn, UntypedFormControl, UntypedFormGroup, ValidationErrors } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; -import { ExternalResearcherService } from '@app/core/services/external-sources/researcher/external-researcher.service'; -import { OrganisationService } from '@app/core/services/organisation/organisation.service'; -import { BaseComponent } from '@common/base/base.component'; -import { Observable } from 'rxjs'; -import { debounceTime, distinctUntilChanged, first, map, mergeMap, takeUntil } from 'rxjs/operators'; -import { OrganizationEditorModel } from './add-organization.model'; - -@Component({ - selector: 'app-add-organization-component', - templateUrl: 'add-organization.component.html', -}) -export class AddOrganizationComponent extends BaseComponent implements OnInit { - - public formGroup: UntypedFormGroup; - - private readonly _REFERENCE_PREFIX:string = "Internal:"; - private readonly _KEY: string = 'Internal'; - private existingReferences: string[] = []; - get referenceExists(){ - const reference = this.formGroup.get('reference').value; - - return this.existingReferences.find((r)=>r === reference) - } - constructor( - private externalSourcesService: ExternalSourcesService, - private externalResearcherService: ExternalResearcherService, - public dialogRef: MatDialogRef, - private organizationService: OrganisationService, - @Inject(MAT_DIALOG_DATA) public data: any - ) { - super(); - if(data){ - const organisations = (data as UntypedFormControl).value ; - if(organisations){ - this.existingReferences = (organisations as Array).map(organisation => organisation.reference); - } - }} - - ngOnInit(): void { - const researcher = new OrganizationEditorModel(); - this.formGroup = researcher.buildForm(); - this.formGroup.get('reference').setAsyncValidators(this.organizationUniqueIdentifier()); - } - - send(value: any) { - this.externalResearcherService.createResearcher(this.formGroup.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - null, null, () => this.dialogRef.close() - ); - } - - addOrganization() { - this.dialogRef.close(this.formGroup.value); - } - - isFormValid() { - return this.formGroup.valid && !this.referenceExists; - } - private organizationUniqueIdentifier(): AsyncValidatorFn{ - return (control: AbstractControl) :Observable =>{ - return control.valueChanges.pipe( - debounceTime(600), - mergeMap(value=>this.organizationService.searchGeneralOrganisations({criteria:{labelLike:'', like: this._REFERENCE_PREFIX +value}})), - takeUntil(this._destroyed), - map((response)=>{ - if(response && response.length){ - const internalOrganizations = (response as Array).filter(organization=> organization.key === this._KEY).filter(organization=> organization.reference === this._REFERENCE_PREFIX + control.value); - - if(internalOrganizations && internalOrganizations.length){ - return {organizationIdentifierExists:true}; - } - } - return null; - }) - - ).pipe(first()) - } - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.model.ts b/dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.model.ts deleted file mode 100644 index 6cb515c84..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/add-organization/add-organization.model.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; -import { ResearcherModel } from '@app/core/model/researcher/researcher'; -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 { OrganizationModel } from '@app/core/model/organisation/organization'; - -export class OrganizationEditorModel { - public id: String; - public name: String; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - public reference: string; - - fromModel(item: OrganizationModel): OrganizationEditorModel { - this.id = item.id; - this.name = item.name; - this.reference = item.reference; - return this; - } - - buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { - if (context == null) { context = this.createValidationContext(); } - const formGroup = new UntypedFormBuilder().group({ - reference: [{ value: this.reference, disabled: disabled }, context.getValidation('reference').validators], - name: [{ value: this.name, disabled: disabled }, context.getValidation('name').validators] - }); - - return formGroup; - } - - createValidationContext(): ValidationContext { - const baseContext: ValidationContext = new ValidationContext(); - baseContext.validation.push({ key: 'name', validators: [BackendErrorValidator(this.validationErrorModel, 'name')] }); - baseContext.validation.push({ key: 'reference', validators: [BackendErrorValidator(this.validationErrorModel, 'reference')] }); - return baseContext; - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.html b/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.html deleted file mode 100644 index 1664c9541..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.html +++ /dev/null @@ -1,27 +0,0 @@ -
-

{{'ADDRESEARCHERS-EDITOR.TITLE' | translate}}

-
- - - - {{'DMP-EDITOR.MAIN-INFO.RESEARCHER-IDENTIFIER-EXISTS' | translate}} - check - clear - {{'DMP-EDITOR.MAIN-INFO.IDENTIFIER-EXISTS-RESEARCHER-LIST' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
-
-
-
-
-
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 deleted file mode 100644 index d2c084b9b..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.component.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { Component, Inject, OnInit } from '@angular/core'; -import { AbstractControl, AsyncValidatorFn, UntypedFormControl, UntypedFormGroup, ValidationErrors } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; -import { ExternalResearcherService } from '@app/core/services/external-sources/researcher/external-researcher.service'; -import { ResearcherEditorModel } from '@app/ui/dmp/editor/add-researcher/add-researcher.model'; -import { BaseComponent } from '@common/base/base.component'; -import { Observable } from 'rxjs'; -import { debounceTime, distinctUntilChanged, filter, first, map, mergeMap, startWith, takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-add-researcher-component', - templateUrl: 'add-researcher.component.html', -}) -export class AddResearcherComponent extends BaseComponent implements OnInit { - - public formGroup: UntypedFormGroup; - - private readonly _REFERENCE_PREFIX:string = "dmp:"; - private readonly _KEY:string = 'Internal'; - private existingReferences: string[] = []; - get referenceExists(){ - const reference = this.formGroup.get('reference').value; - - return this.existingReferences.find((r)=>r === reference) - } - - constructor( - private externalSourcesService: ExternalSourcesService, - private externalResearcherService: ExternalResearcherService, - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: any - ) { super(); - - if(data){ - const researchers = (data as UntypedFormControl).value ; - if(researchers){ - this.existingReferences = (researchers as Array).map(researcher => researcher.reference); - } - } - } - - ngOnInit(): void { - const researcher = new ResearcherEditorModel(); - this.formGroup = researcher.buildForm(); - - this.formGroup.get('reference').setAsyncValidators(this.researcherUniqueIdentifier()); - } - - send(value: any) { - this.externalResearcherService.createResearcher(this.formGroup.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - null, null, () => this.dialogRef.close() - ); - } - - addResearcher() { - - const formValue = this.formGroup.value; - formValue.reference = formValue.reference; - this.dialogRef.close(this.formGroup.value); - } - - isFormValid() { - return this.formGroup.valid && !this.referenceExists; - } - - private researcherUniqueIdentifier(): AsyncValidatorFn{ - return (control: AbstractControl) :Observable =>{ - return control.valueChanges.pipe( - debounceTime(600), - takeUntil(this._destroyed), - mergeMap(value=>this.externalSourcesService.searchDMPResearchers({criteria:{name: '',like: null,reference: (this._REFERENCE_PREFIX + value) }})), - map((response)=>{ - if(response && response.length){ - let internalEntries = (response as any[]).filter(record=>record.key === this._KEY); - if(internalEntries && internalEntries.length){ - internalEntries = internalEntries.filter(record=> (record.reference === (this._REFERENCE_PREFIX + control.value))); - } - return internalEntries && internalEntries.length? {researcherIdentifierExists:true} : null; - } - return null; - }) - - ).pipe(first()) - } - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.model.ts b/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.model.ts deleted file mode 100644 index d27a42e5c..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/add-researcher/add-researcher.model.ts +++ /dev/null @@ -1,44 +0,0 @@ -import {UntypedFormBuilder, UntypedFormGroup, ValidationErrors } from '@angular/forms'; -import { ResearcherModel } from '@app/core/model/researcher/researcher'; -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'; - -export class ResearcherEditorModel { - public id: String; - public name: String; - public lastName: String; - public uri: String; - public email: String; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - public reference: String; - - - fromModel(item: ResearcherModel): ResearcherEditorModel { - this.id = item.id; - this.name = item.name; - this.email = item.email; - this.uri = item.uri; - this.reference = item.reference; - return this; - } - - buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { - if (context == null) { context = this.createValidationContext(); } - const formGroup = new UntypedFormBuilder().group({ - reference: [{ value: this.reference, disabled: disabled },context.getValidation('reference')], - firstName: [{ value: this.name, disabled: disabled }, context.getValidation('firstName').validators], - lastName: [{ value: this.lastName, disabled: disabled }, context.getValidation('lastName').validators] - }); - - return formGroup; - } - - createValidationContext(): ValidationContext { - const baseContext: ValidationContext = new ValidationContext(); - baseContext.validation.push({ key: 'reference', validators: [BackendErrorValidator(this.validationErrorModel, 'reference')] }); - baseContext.validation.push({ key: 'firstName', validators: [BackendErrorValidator(this.validationErrorModel, 'firstName')] }); - baseContext.validation.push({ key: 'lastName', validators: [BackendErrorValidator(this.validationErrorModel, 'lastName')] }); - return baseContext; - } -} 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 e61adccd1..80deb296a 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,10 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; -import { DatasetProfileCriteria } from '@app/core/query/dataset-profile/dataset-profile-criteria'; -import { DatasetService } from '@app/core/services/dataset/dataset.service'; import { BaseComponent } from '@common/base/base.component'; import { takeUntil } from 'rxjs/operators'; diff --git a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.component.html b/dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.component.html deleted file mode 100644 index fca4f3c07..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.component.html +++ /dev/null @@ -1,28 +0,0 @@ -
-

{{'ADDEDITCOST-EDITOR.ADD-TITLE' | translate}}

-
- - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.component.ts b/dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.component.ts deleted file mode 100644 index ce9d0e91f..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.component.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Component, Inject, OnInit } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { ExternalResearcherService } from '@app/core/services/external-sources/researcher/external-researcher.service'; -import { BaseComponent } from '@common/base/base.component'; -import { takeUntil } from 'rxjs/operators'; -import { CostEditorModel } from './add-cost.model'; -import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; -import { Observable } from 'rxjs'; -import { LocalFetchModel } from '@app/core/model/local-fetch/local-fetch.model'; -import { CurrencyService } from '@app/core/services/currency/currency.service'; - -@Component({ - selector: 'app-add-cost-component', - templateUrl: 'add-cost.component.html', -}) -export class AddCostComponent extends BaseComponent implements OnInit { - - public formGroup: UntypedFormGroup; - - currencyAutoCompleteConfiguration: SingleAutoCompleteConfiguration = { - filterFn: this.searchCurrency.bind(this), - initialItems: () => this.searchCurrency(''), - displayFn: (item) => typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name, - titleFn: (item) => typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name, - valueAssign: (item) => JSON.stringify(item) - }; - - constructor( - private externalResearcherService: ExternalResearcherService, - public dialogRef: MatDialogRef, - private currencyService: CurrencyService, - @Inject(MAT_DIALOG_DATA) public data: any - ) { super(); } - - ngOnInit(): void { - const cost = new CostEditorModel(); - this.formGroup = cost.buildForm(); - } - - send(value: any) { - this.externalResearcherService.createResearcher(this.formGroup.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - null, null, () => this.dialogRef.close() - ); - } - - addCost() { - this.dialogRef.close(this.formGroup.value); - } - - isFormValid() { - return this.formGroup.valid; - } - - searchCurrency(like: string): Observable { - return this.currencyService.get(like); - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.model.ts b/dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.model.ts deleted file mode 100644 index 3441c8e8f..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/add-cost/add-cost.model.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; -import { ResearcherModel } from '@app/core/model/researcher/researcher'; -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 { OrganizationModel } from '@app/core/model/organisation/organization'; -import { CostModel } from '@app/core/model/dmp/cost'; - -export class CostEditorModel implements CostModel{ - public code: string; - public description: string; - public title: string; - public value: number; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - - fromModel(item: CostModel): CostEditorModel { - this.code = item.code; - this.description = item.description; - this.title = item.title; - this.value = item.value; - return this; - } - - buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { - if (context == null) { context = this.createValidationContext(); } - const formGroup = new UntypedFormBuilder().group({ - code: [{ value: this.code, disabled: disabled }, context.getValidation('code').validators], - description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], - title: [{ value: this.title, disabled: disabled }, context.getValidation('title').validators], - value: [{ value: this.value, disabled: disabled }, context.getValidation('value').validators] - }); - - return formGroup; - } - - createValidationContext(): ValidationContext { - const baseContext: ValidationContext = new ValidationContext(); - baseContext.validation.push({ key: 'code', validators: [] }); - baseContext.validation.push({ key: 'description', validators: [] }); - baseContext.validation.push({ key: 'title', validators: [BackendErrorValidator(this.validationErrorModel, 'title')] }); - baseContext.validation.push({ key: 'value', validators: [] }); - return baseContext; - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.html b/dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.html deleted file mode 100644 index 8ed92f09d..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.html +++ /dev/null @@ -1,42 +0,0 @@ - - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
- - - - - -
diff --git a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.scss b/dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.scss deleted file mode 100644 index 52f45cc20..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.scss +++ /dev/null @@ -1,10 +0,0 @@ -.listing-container { - height: fit-content; - width: fit-content; - background-color: whitesmoke; -} - - -.cost-element { - margin-bottom: 1em; -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.ts b/dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.ts deleted file mode 100644 index 70f9c5ce5..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/cost-editor/cost-listing/cost-listing.component.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { Component, OnInit, Input } from '@angular/core'; -import { BaseComponent } from '@common/base/base.component'; -import { UntypedFormArray, FormControl } from '@angular/forms'; -import { takeUntil } from 'rxjs/operators'; -import { CostModel } from '@app/core/model/dmp/cost'; -import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; -import { CurrencyService } from '@app/core/services/currency/currency.service'; -import { Observable } from 'rxjs'; -import { LocalFetchModel } from '@app/core/model/local-fetch/local-fetch.model'; -import { CostEditorModel } from '../add-cost/add-cost.model'; - -@Component({ - selector: 'app-cost-listing', - templateUrl: './cost-listing.component.html', - styleUrls: ['./cost-listing.component.scss'] -}) -export class CostListingComponent extends BaseComponent implements OnInit { - - @Input() form: UntypedFormArray; - - private cost: CostEditorModel[] = []; - - currencyAutoCompleteConfiguration: SingleAutoCompleteConfiguration = { - filterFn: this.searchCurrency.bind(this), - initialItems: () => this.searchCurrency(''), - displayFn: (item) => typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name, - titleFn: (item) => typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name, - valueAssign: (item) => JSON.stringify(item) - }; - - constructor( - private currencyService: CurrencyService, - ) { - super(); - } - - ngOnInit() { - } - - searchCurrency(like: string): Observable { - return this.currencyService.get(like); -} - -switchEditMode(event: number) { - const control = this.form.at(event); - if (control.disabled) { - this.cost[event] = control.value; - control.enable(); - } else { - control.disable(); - } -} - -removeCost(event: number) { - this.form.removeAt(event); -} - -revertEdits(event: number) { - this.form.at(event).setValue(this.cost[event]); - this.form.at(event).disable(); -} - -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/dataset-editor-details/dataset-editor-details.component.ts b/dmp-frontend/src/app/ui/dmp/editor/dataset-editor-details/dataset-editor-details.component.ts index fdddbe051..9c26e407a 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dataset-editor-details/dataset-editor-details.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/dataset-editor-details/dataset-editor-details.component.ts @@ -2,37 +2,26 @@ import { BaseComponent } from '@common/base/base.component'; import { OnInit, Component, Input, Output, EventEmitter } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; import { MatChipInputEvent } from '@angular/material/chips'; import { MatDialog } from '@angular/material/dialog'; import { MatSnackBar } from '@angular/material/snack-bar'; -import { DatasetWizardService } from '@app/core/services/dataset-wizard/dataset-wizard.service'; import { ActivatedRoute, Router } from '@angular/router'; import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { ExternalSourcesConfigurationService } from '@app/core/services/external-sources/external-sources-configuration.service'; import { UiNotificationService, SnackBarNotificationLevel } from '@app/core/services/notification/ui-notification-service'; import { FormService } from '@common/forms/form-service'; import { LockService } from '@app/core/services/lock/lock.service'; import { AuthService } from '@app/core/services/auth/auth.service'; -import { DatasetStatus } from '@app/core/common/enum/dataset-status'; import { UntypedFormGroup, FormControl, UntypedFormArray } from '@angular/forms'; -import { DatasetDescriptionFormEditorModel } from '@app/ui/misc/dataset-description-form/dataset-description-form.model'; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; -import { LockModel } from '@app/core/model/lock/lock.model'; import { takeUntil, map, catchError } from 'rxjs/operators'; import { RequestItem } from '@app/core/query/request-item'; import { isNullOrUndefined } from '@app/utilities/enhancers/utils'; import { interval, Observable, of as observableOf } from 'rxjs'; import { Guid } from '@common/types/guid'; import { Location } from '@angular/common'; -import { DatasetProfileCriteria } from '@app/core/query/dataset-profile/dataset-profile-criteria'; -import { DmpListingModel } from '@app/core/model/dmp/dmp-listing'; -import { DatasetWizardEditorModel, ExternalTagEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.model'; import { ENTER, COMMA } from '@angular/cdk/keycodes'; import { GuidedTour, Orientation } from '@app/library/guided-tour/guided-tour.constants'; import { GuidedTourService } from '@app/library/guided-tour/guided-tour.service'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; import { AvailableProfilesComponent } from '../available-profiles/available-profiles.component'; diff --git a/dmp-frontend/src/app/ui/dmp/editor/dataset-editor-details/dataset-editor-details.module.ts b/dmp-frontend/src/app/ui/dmp/editor/dataset-editor-details/dataset-editor-details.module.ts index 54fa774a2..ac6563f04 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dataset-editor-details/dataset-editor-details.module.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/dataset-editor-details/dataset-editor-details.module.ts @@ -2,7 +2,6 @@ import { NgModule } from '@angular/core'; import { FormattingModule } from '@app/core/formatting.module'; import { AutoCompleteModule } from '@app/library/auto-complete/auto-complete.module'; import { ConfirmationDialogModule } from '@common/modules/confirmation-dialog/confirmation-dialog.module'; -import { ExportMethodDialogModule } from '@app/library/export-method-dialog/export-method-dialog.module'; import { DmpRoutingModule } from '@app/ui/dmp/dmp.routing'; import { DmpOverviewModule } from '@app/ui/dmp/overview/dmp-overview.module'; import { CommonFormsModule } from '@common/forms/common-forms.module'; @@ -10,13 +9,6 @@ import { FormValidationErrorsDialogModule } from '@common/forms/form-validation- import { CommonUiModule } from '@common/ui/common-ui.module'; import { MultipleChoiceDialogModule } from '@common/modules/multiple-choice-dialog/multiple-choice-dialog.module'; import { DatasetEditorDetailsComponent } from './dataset-editor-details.component'; -import { DatasetExternalReferencesEditorComponent } from '@app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component'; -import { DatasetModule } from '@app/ui/dataset/dataset.module'; -import { DatasetExternalServiceDialogEditorComponent } from '@app/ui/dataset/dataset-wizard/external-references/editors/service/dataset-external-service-dialog-editor.component'; -import { DatasetExternalRegistryDialogEditorComponent } from '@app/ui/dataset/dataset-wizard/external-references/editors/registry/dataset-external-registry-dialog-editor.component'; -import { DatasetExternalDatasetDialogEditorComponent } from '@app/ui/dataset/dataset-wizard/external-references/editors/external-dataset/dataset-external-dataset-dialog-editor.component'; -import { DatasetExternalDataRepositoryDialogEditorComponent } from '@app/ui/dataset/dataset-wizard/external-references/editors/data-repository/dataset-external-data-repository-dialog-editor.component'; -import { DatasetDescriptionFormModule } from '@app/ui/misc/dataset-description-form/dataset-description-form.module'; @NgModule({ @@ -24,15 +16,12 @@ import { DatasetDescriptionFormModule } from '@app/ui/misc/dataset-description-f CommonUiModule, CommonFormsModule, ConfirmationDialogModule, - ExportMethodDialogModule, FormattingModule, AutoCompleteModule, DmpRoutingModule, DmpOverviewModule, FormValidationErrorsDialogModule, MultipleChoiceDialogModule, - DatasetModule, - DatasetDescriptionFormModule ], declarations: [ DatasetEditorDetailsComponent diff --git a/dmp-frontend/src/app/ui/dmp/editor/dataset-info/dataset-info.component.ts b/dmp-frontend/src/app/ui/dmp/editor/dataset-info/dataset-info.component.ts index b19660994..d56a20819 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dataset-info/dataset-info.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/dataset-info/dataset-info.component.ts @@ -2,26 +2,18 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; import { DmpBlueprintDefinition } from '@app/core/model/dmp-blueprint/dmp-blueprint'; -import { DatasetProfileCriteria } from '@app/core/query/dataset-profile/dataset-profile-criteria'; import { RequestItem } from '@app/core/query/request-item'; import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; -import { DatasetWizardService } from '@app/core/services/dataset-wizard/dataset-wizard.service'; import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.service'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { DatasetDescriptionFormEditorModel } from '@app/ui/misc/dataset-description-form/dataset-description-form.model'; import { BaseComponent } from '@common/base/base.component'; import { TranslateService } from '@ngx-translate/core'; import { Observable } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; -import { DatasetPreviewDialogComponent } from '../../dataset-preview/dataset-preview-dialog.component'; import { AvailableProfilesComponent } from '../available-profiles/available-profiles.component'; -import { DmpEditorModel } from '../dmp-editor.model'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; @Component({ selector: 'dataset-info', diff --git a/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.html b/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.html deleted file mode 100644 index 8b811e0d7..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.html +++ /dev/null @@ -1,30 +0,0 @@ -
-
-
-
- -
-
-
-
-
-
- bookmark - bookmark -

{{ 'TYPES.DATASET-STATUS.DRAFT' | translate }}: - {{ dataset.label }}

-

{{ dataset.label }}

-
- {{ dataset.profile }}
-
-
-
-
-
- -
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 deleted file mode 100644 index 7f90f8e5e..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.scss +++ /dev/null @@ -1,85 +0,0 @@ -@media (max-width: 768px) { - button { - font-size: smaller; - } -} - -.draft-bookmark { - color: #e7e6e6; - display: inline; - position: absolute; - margin-top: 0.5em; - margin-left: 0.5em; -} - -.finalized-bookmark { - color: #08bd63; - // color: #92d050; - display: inline; - position: absolute; - margin-top: 0.5em; - margin-left: 0.5em; -} - -.dataset-card { - display: flex; - flex-direction: column; - min-width: 0; - word-wrap: break-word; - border-radius: 6px; - color: #333333; - background: #fff; - width: 100%; - min-height: 90%; - max-height: 90%; - margin-top: 1em; - margin-bottom: 1em; - cursor: pointer; - box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.14); -} - -.dataset-card h4 { - padding-left: 1em; - margin: 1em 1.5em; -} - -.show-more { - background-color: #ffffff00; - color: var(--primary-color-3); - font-weight: 700; - justify-self: center; -} - -.chip { - padding: 0.1em 1em; - margin-top: auto; - margin-bottom: 1em; - margin-left: 2.5em; - margin-right: 2.5em; - border-radius: 10em; - background-color: #0d7489; - // background-color: #0070c0; - // background-color: rgb(70, 135, 230); - color: #fff; - text-transform: uppercase; - font-weight: 500; - max-width: 160px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.add-dataset { - display: flex; - justify-content: flex-end; - margin-top: 1.5em; - padding: 0.5em 0.8em; - cursor: pointer; - background-color: rgb(248, 248, 248); -} - -h4 span { - color: #089dbb; - font-weight: 600; - text-transform: uppercase; -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.ts b/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.ts deleted file mode 100644 index ccb631948..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/datasets-tab/datasets-tab.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Component, OnInit, Input } from '@angular/core'; -import { DmpEditorModel } from '../dmp-editor.model'; -import { Router } from '@angular/router'; -import { DatasetOverviewModel } from '../../../../core/model/dataset/dataset-overview'; -import { DatasetStatus } from '../../../../core/common/enum/dataset-status'; - -@Component({ - selector: 'app-datasets-tab', - templateUrl: './datasets-tab.component.html', - styleUrls: ['./datasets-tab.component.scss'] -}) -export class DatasetsTabComponent implements OnInit { - - @Input() dmp: DmpEditorModel; - @Input() isPublic: boolean; - @Input() isFinalized: boolean; - - constructor( - private router: Router - ) { } - - ngOnInit() { - } - - datasetClicked(datasetId: String) { - this.router.navigate(this.isPublic ? ['/datasets/publicEdit/' + datasetId] : ['/datasets/edit/' + datasetId]); - } - - datasetsClicked(dmpId: String) { - this.router.navigate(['/datasets'], { queryParams: { dmpId: dmpId } }); - } - - isDraft(dataset: DatasetOverviewModel) { - if (dataset.status == DatasetStatus.Draft) { return true } - else { return false } - } - - addDataset(rowId: String) { - this.router.navigate(['/datasets/new/' + rowId]); - } - -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/dmp-deposit-dropdown/dmp-deposit-dropdown.component.ts b/dmp-frontend/src/app/ui/dmp/editor/dmp-deposit-dropdown/dmp-deposit-dropdown.component.ts index 36a1572a3..6baad284f 100644 --- a/dmp-frontend/src/app/ui/dmp/editor/dmp-deposit-dropdown/dmp-deposit-dropdown.component.ts +++ b/dmp-frontend/src/app/ui/dmp/editor/dmp-deposit-dropdown/dmp-deposit-dropdown.component.ts @@ -1,20 +1,21 @@ -import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; -import {MatDialog} from '@angular/material/dialog'; -import {DepositConfigurationStatus} from '@app/core/common/enum/deposit-configuration-status'; -import {DepositConfigurationModel} from '@app/core/model/deposit/deposit-configuration'; -import {DmpOverviewModel} from '@app/core/model/dmp/dmp-overview'; -import {DoiModel} from '@app/core/model/doi/doi'; -import {DepositRepositoriesService} from '@app/core/services/deposit-repositories/deposit-repositories.service'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { DomSanitizer, SafeResourceUrl } from "@angular/platform-browser"; +import { DepositConfigurationStatus } from '@app/core/common/enum/deposit-configuration-status'; +import { DepositConfiguration } from '@app/core/model/deposit/deposit-configuration'; +import { DepositAuthenticateRequest, DepositRequest } from '@app/core/model/deposit/deposit-request'; +import { Dmp } from '@app/core/model/dmp/dmp'; +import { EntityDoi } from '@app/core/model/entity-doi/entity-doi'; +import { DepositService } from '@app/core/services/deposit/deposit.service'; import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; -import {Oauth2DialogService} from '@app/ui/misc/oauth2-dialog/service/oauth2-dialog.service'; -import {BaseComponent} from '@common/base/base.component'; -import {MultipleChoiceDialogComponent} from '@common/modules/multiple-choice-dialog/multiple-choice-dialog.component'; -import {TranslateService} from '@ngx-translate/core'; -import {takeUntil} from 'rxjs/operators'; -import {DomSanitizer, SafeResourceUrl} from "@angular/platform-browser"; +import { Oauth2DialogService } from '@app/ui/misc/oauth2-dialog/service/oauth2-dialog.service'; +import { BaseComponent } from '@common/base/base.component'; +import { MultipleChoiceDialogComponent } from '@common/modules/multiple-choice-dialog/multiple-choice-dialog.component'; +import { TranslateService } from '@ngx-translate/core'; +import { takeUntil } from 'rxjs/operators'; @Component({ selector: 'app-dmp-deposit-dropdown', @@ -23,17 +24,17 @@ import {DomSanitizer, SafeResourceUrl} from "@angular/platform-browser"; }) export class DmpDepositDropdown extends BaseComponent implements OnInit { @Input() - inputRepos: DepositConfigurationModel[]; + inputRepos: DepositConfiguration[]; @Input() - dmp: DmpOverviewModel; + dmp: Dmp; outputRepos = []; logos: Map = new Map(); @Output() - outputReposEmitter: EventEmitter = new EventEmitter(); + outputReposEmitter: EventEmitter = new EventEmitter(); private oauthLock: boolean; constructor( - private depositRepositoriesService: DepositRepositoriesService, + private depositRepositoriesService: DepositService, private dialog: MatDialog, private language: TranslateService, private translate: TranslateService, @@ -49,11 +50,11 @@ export class DmpDepositDropdown extends BaseComponent implements OnInit { } ngOnInit(): void { - for (var i = 0; i < this.dmp.dois.length; i++) { - this.inputRepos = this.inputRepos.filter(r => this.hasDoi(r, this.dmp.dois, i)); + for (var i = 0; i < this.dmp.entityDois.length; i++) { + this.inputRepos = this.inputRepos.filter(r => this.hasDoi(r, this.dmp.entityDois, i)); } this.inputRepos.forEach(repo => { - if(repo.hasLogo) { + if (repo.hasLogo) { this.depositRepositoriesService.getLogo(repo.repositoryId).subscribe(logo => { this.logos.set(repo.repositoryId, this.sanitizer.bypassSecurityTrustResourceUrl('data:image/png;base64, ' + logo)); }) @@ -61,7 +62,7 @@ export class DmpDepositDropdown extends BaseComponent implements OnInit { }) } - deposit(repo: DepositConfigurationModel) { + deposit(repo: DepositConfiguration) { if (repo.depositType == DepositConfigurationStatus.BothSystemAndUser) { @@ -70,7 +71,7 @@ export class DmpDepositDropdown extends BaseComponent implements OnInit { restoreFocus: false, data: { message: this.language.instant('DMP-OVERVIEW.DEPOSIT.ACCOUNT-LOGIN'), - titles: [this.language.instant('DMP-OVERVIEW.DEPOSIT.LOGIN', {'repository': repo.repositoryId}), this.language.instant('DMP-OVERVIEW.MULTIPLE-DIALOG.USE-DEFAULT')] + titles: [this.language.instant('DMP-OVERVIEW.DEPOSIT.LOGIN', { 'repository': repo.repositoryId }), this.language.instant('DMP-OVERVIEW.MULTIPLE-DIALOG.USE-DEFAULT')] } }); dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { @@ -81,7 +82,12 @@ export class DmpDepositDropdown extends BaseComponent implements OnInit { + repo.redirectUri, repo, this.dmp); break; case 1: - this.depositRepositoriesService.createDoi(repo.repositoryId, this.dmp.id, null) + const depositRequest: DepositRequest = { + repositoryId: repo.repositoryId, + dmpId: this.dmp.id, + accessToken: null + }; + this.depositRepositoriesService.deposit(depositRequest) .pipe(takeUntil(this._destroyed)) .subscribe(doi => { this.onDOICallbackSuccess(); @@ -93,7 +99,12 @@ export class DmpDepositDropdown extends BaseComponent implements OnInit { }); } else if (repo.depositType == DepositConfigurationStatus.System) { - this.depositRepositoriesService.createDoi(repo.repositoryId, this.dmp.id, null) + const depositRequest: DepositRequest = { + repositoryId: repo.repositoryId, + dmpId: this.dmp.id, + accessToken: null + }; + this.depositRepositoriesService.deposit(depositRequest) .pipe(takeUntil(this._destroyed)) .subscribe(doi => { this.onDOICallbackSuccess(); @@ -111,16 +122,25 @@ export class DmpDepositDropdown extends BaseComponent implements OnInit { this.uiNotificationService.snackBarNotification(error.error.message ? error.error.message : this.language.instant('DMP-EDITOR.SNACK-BAR.UNSUCCESSFUL-DOI'), SnackBarNotificationLevel.Error); } - showOauth2Dialog(url: string, repo: DepositConfigurationModel, dmp: DmpOverviewModel) { + showOauth2Dialog(url: string, repo: DepositConfiguration, dmp: Dmp) { this.oauth2DialogService.login(url) .pipe(takeUntil(this._destroyed)) .subscribe(result => { if (result !== undefined) { if (result.oauthCode !== undefined && result.oauthCode !== null && !this.oauthLock) { - this.depositRepositoriesService.getAccessToken(repo.repositoryId, result.oauthCode) + const depositAuthenticateRequest: DepositAuthenticateRequest = { + repositoryId: repo.repositoryId, + code: result.oauthCode + }; + this.depositRepositoriesService.getAccessToken(depositAuthenticateRequest) .pipe(takeUntil(this._destroyed)) .subscribe(token => { - this.depositRepositoriesService.createDoi(repo.repositoryId, dmp.id, token) + const depositRequest: DepositRequest = { + repositoryId: repo.repositoryId, + dmpId: dmp.id, + accessToken: token + }; + this.depositRepositoriesService.deposit(depositRequest) .pipe(takeUntil(this._destroyed)) .subscribe(doi => { this.onDOICallbackSuccess(); 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 d49b4cbb2..8c7475e2e 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,8 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { Router } from '@angular/router'; -import { DatasetStatus } from '@app/core/common/enum/dataset-status'; -import { DatasetService } from '@app/core/services/dataset/dataset.service'; import { BaseComponent } from '@common/base/base.component'; import { Observable, of } from 'rxjs'; import { catchError, map, takeUntil } from 'rxjs/operators'; diff --git a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.html b/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.html deleted file mode 100644 index 284520aed..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.html +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.scss b/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.ts b/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.ts deleted file mode 100644 index 4b547f491..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-field-grant/dynamic-field-grant.component.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { RequestItem } from '../../../../../core/query/request-item'; -import { DmpService } from '../../../../../core/services/dmp/dmp.service'; -import { SingleAutoCompleteConfiguration } from '../../../../../library/auto-complete/single/single-auto-complete-configuration'; -import { DynamicFieldGrantCriteria, DynamicFieldGrantCriteriaDependencies } from '../../../../../models/dynamic-field-grant/DynamicFieldGrantCriteria'; - -@Component({ - selector: 'app-dynamic-field-grant', - templateUrl: 'dynamic-field-grant.component.html', - styleUrls: ['./dynamic-field-grant.component.scss'] -}) -export class DynamicFieldGrantComponent implements OnInit { - - constructor( - private dmpService: DmpService - ) { } - - @Input()dependencies: Array; - - @Input()formGroup: UntypedFormGroup; - - autoCompleteConfiguration: SingleAutoCompleteConfiguration; - - ngOnInit(): void { - - this.autoCompleteConfiguration = { - filterFn: this.searchDynamicField.bind(this), - initialItems: (extraData) => this.searchDynamicField(''), - displayFn: (item) => item['label'], - titleFn: (item) => item['label'] - }; - - } - - searchDynamicField(query: string) { - const requestItem = new RequestItem(); - requestItem.criteria = { id: this.formGroup.get('id').value, dynamicFields: this.buildDependencies() }; - return this.dmpService.getDynamicField(requestItem); - } - - hasUnResolvedDependencies() { - if (this.dependencies == null || this.dependencies.length === 0) { - if (this.formGroup.get('value').disabled) { - this.updateConfiguration(); - this.formGroup.get('value').enable({ onlySelf: true, emitEvent: false }); - } - return false; - } - for (let i = 0; i < this.dependencies.length; i++) { - if (!this.dependencies[i].get('value').value) { - this.formGroup.get('value').disable({ onlySelf: true, emitEvent: false }); - return true; - } - } - if (this.formGroup.get('value').disabled) { - this.updateConfiguration(); - this.formGroup.get('value').enable({ onlySelf: true, emitEvent: false }); - } - return false; - } - - updateConfiguration() { - // const requestItem = new RequestItem(); - // requestItem.criteria = { id: this.formGroup.get('id').value, dynamicFields: this.buildDependencies() }; - // this.autoCompleteConfiguration = new AutoCompleteConfiguration(this.dmpService.getDynamicField.bind(this.dmpService), requestItem); - // this.autocomplete.inputData = this.autoCompleteConfiguration; - } - - buildDependencies(): Array { - if (!this.dependencies || this.dependencies.length === 0) { return []; } - const dependencies = new Array(); - for (let i = 0; i < this.dependencies.length; i++) { - dependencies.push({ property: this.dependencies[i].get('id').value, value: this.assignFunction(this.dependencies[i].get('value').value) }); - } - return dependencies; - } - - assignFunction(item: any): any { - if (!item) { return null; } - return item['id']; - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.html b/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.html deleted file mode 100644 index 83bf7cd02..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.html +++ /dev/null @@ -1,7 +0,0 @@ -
-
-
- -
-
-
diff --git a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.scss b/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.ts b/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.ts deleted file mode 100644 index 1ff153196..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/dynamic-fields-grant/dynamic-fields-grant.component.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { UntypedFormArray, UntypedFormGroup } from '@angular/forms'; -import { DmpDynamicFieldDependency } from '../../../../core/model/dmp/dmp-dynamic-field-dependency'; - -@Component({ - selector: 'app-dynamic-fields-grant', - templateUrl: 'dynamic-fields-grant.component.html', - styleUrls: ['./dynamic-fields-grant.component.scss'] -}) -export class DynamicFieldsGrantComponent implements OnInit { - - @Input() - formGroup: UntypedFormGroup; - - ngOnInit(): void { - } - - findDependencies(id: number) { - const formGroupDependencies: Array = new Array(); - const dynamicFieldDependency: DmpDynamicFieldDependency[] = (this.formGroup.get('dynamicFields')).at(id).get('dependencies').value; - if (dynamicFieldDependency.length > 0) { - dynamicFieldDependency.forEach(item => { - const length = (this.formGroup.get('dynamicFields')).length; - for (let i = 0; i < length; i++) { - const formGroup = (this.formGroup.get('dynamicFields')).at(i); - if (formGroup.get('id').value === item.id) { formGroupDependencies.push(formGroup); } - } - }); - } - return formGroupDependencies; - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.html b/dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.html deleted file mode 100644 index 723d4a39d..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.html +++ /dev/null @@ -1,171 +0,0 @@ -
-
- - - -
-
- - - - -
- -
- - - - {{'DMP-EDITOR.FUNDING-INFO.IDENTIFIER-FUNDER-EXISTS' | translate}} - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - check - clear - - - - - {{funderFormGroup.get('label').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
- -
-
-
- {{'QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.EXIST-FUNDER' | translate}} -
-
- {{'DMP-EDITOR.FUNDING-INFO.FIND' | translate}} - {{'DMP-EDITOR.ACTIONS.INSERT-MANUALLY' | translate}} -
-
-
-
- - - - -
-
- - - - -
- -
- - - - {{'DMP-EDITOR.FUNDING-INFO.IDENTIFIER-GRANT-EXISTS' | translate}} - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - check - clear - - - - - {{grantformGroup.get('label').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - - {{projectFormGroup.get('description').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
- -
-
-
- {{'QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.EXIST-GRANT' | translate}} -
-
- {{'DMP-EDITOR.FUNDING-INFO.FIND' | translate}} - {{'DMP-EDITOR.ACTIONS.INSERT-MANUALLY' | translate}} -
-
-
-
- - - -
-
- - - - -
- -
- - - - {{'DMP-EDITOR.FUNDING-INFO.IDENTIFIER-PROJECT-EXISTS' | translate}} - check - clear - - - - - {{projectFormGroup.get('label').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - - {{projectFormGroup.get('description').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
- -
-
-
- {{'QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.EXIST-PROJECT' | translate}} -
-
- {{'DMP-EDITOR.FUNDING-INFO.FIND' | translate}} - {{'DMP-EDITOR.ACTIONS.INSERT-MANUALLY' | translate}} -
-
-
-
- - -
- -
diff --git a/dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.scss b/dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.scss deleted file mode 100644 index 5b59efebb..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.scss +++ /dev/null @@ -1,112 +0,0 @@ -.funding-info { - // position: relative; - // left: 362px; - // width: calc(100% - 366px); - - .intro { - text-align: left; - font-weight: 400; - letter-spacing: 0px; - color: #212121; - opacity: 1; - margin: 3rem 0rem 3rem 0rem; - } - - .heading { - text-align: left; - font-weight: 700; - font-size: 18px; - letter-spacing: 0px; - color: #212121; - opacity: 0.81; - margin-top: 1.625rem; - margin-bottom: 0.625rem; - } - - .hint { - text-align: left; - font-weight: 400; - font-size: 16px; - letter-spacing: 0px; - color: #212121; - opacity: 0.81; - margin-bottom: 2.125rem; - } - - .title-form, - .description-form { - text-align: left; - font-weight: 400; - font-size: 16px; - letter-spacing: 0.15px; - color: #7d7d7d; - opacity: 1; - margin-bottom: 1rem; - } - - // textarea::placeholder { - // font-style: oblique; - // } - - .input-btn { - border: none; - color: #aaaaaa; - background-color: #ffffff00; - cursor: pointer; - } - - .input-btn :hover { - color: var(--primary-color-3) !important; - } - - .insert { - text-decoration: underline; - color: var(--primary-color-3); - cursor: pointer; - font-size: 1rem; - font-weight: 400; - } - - .not-found { - // cursor: pointer; - font-size: 1rem; - font-weight: 400; - padding: 0rem 0.5rem 0rem 0rem; - } - - .disabled-toggle { - font-size: 1rem; - font-weight: 400; - padding: 0rem 0.5rem 0rem 0rem; - color: #e0e0e0 !important; - text-decoration: none; - } - -} - -::ng-deep .funder-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .grant-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .project-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .funder-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} - -::ng-deep .grant-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} - -::ng-deep .project-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.ts b/dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.ts deleted file mode 100644 index 88220c5b4..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/funding-info/funding-info.component.ts +++ /dev/null @@ -1,471 +0,0 @@ -import { BaseComponent } from '@common/base/base.component'; -import { OnInit, Component, Input, EventEmitter, Output, ViewChild } from '@angular/core'; -import { AbstractControl, UntypedFormGroup, Validators } from '@angular/forms'; -import { TranslateService } from '@ngx-translate/core'; -import { GrantTabModel } from '../grant-tab/grant-tab-model'; -import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; -import { FunderService } from '@app/core/services/funder/funder.service'; -import { ProjectService } from '@app/core/services/project/project.service'; -import { GrantService } from '@app/core/services/grant/grant.service'; -import { RequestItem } from '@app/core/query/request-item'; -import { GrantCriteria } from '@app/core/query/grant/grant-criteria'; -import { ProjectCriteria } from '@app/core/query/project/project-criteria'; -import { FunderCriteria } from '@app/core/query/funder/funder-criteria'; -import { debounceTime, filter, map, switchMap, takeUntil, tap } from 'rxjs/operators'; - -import { isNullOrUndefined } from '@swimlane/ngx-datatable'; -@Component({ - selector: 'funding-info', - templateUrl: './funding-info.component.html', - styleUrls: ['./funding-info.component.scss'] -}) -export class FundingInfoComponent extends BaseComponent implements OnInit { - - // @Input() formGroup: FormGroup = null; - @Input() isUserOwner: boolean; - @Input() isNew: boolean; - @Input() isFinalized: boolean; - @Input() isClone: boolean = false; - @Input() isNewVersion: boolean; - - @Input() isRequired: boolean; - @Input() type: number; - - @Input() formGroup: UntypedFormGroup; - @Input() grantformGroup: UntypedFormGroup; - @Input() projectFormGroup: UntypedFormGroup; - @Input() funderFormGroup: UntypedFormGroup = null; - @Output() onFormChanged: EventEmitter = new EventEmitter(); - - isCreateNew = false; - isCreateNewProject = false; - isCreateNewFunder = false; - grant: GrantTabModel; - // forceFocus = false; - - grantAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - projectAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - funderAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - - isFunderPending:boolean = false; - isGrantPending:boolean = false; - isProjectPending:boolean = false; - - private readonly _FUNDER_PREFIX = "dmp:"; - private readonly _GRANT_PREFIX = "dmp:"; - private readonly _PROJECT_PREFIX = "dmp:"; - private readonly _KEY = "Internal"; - - - constructor( - private grantService: GrantService, - private projectService: ProjectService, - private funderService: FunderService, - private language: TranslateService - ) { - super(); - } - - getGrantIdText(item) { - if (item.reference != null && typeof item.reference == 'string') { - const parts = (item.reference as String).split('::'); - return parts.length > 1 ? ' (' + parts[parts.length - 1] + ')' : ''; - } - return ''; - } - - ngOnInit() { - const grantRequestItem: RequestItem = new RequestItem(); - grantRequestItem.criteria = new GrantCriteria(); - - this.configureAutoCompletes(); - - this.initializeReferenceValidators(); - - if (this.grantformGroup != null) { - this.isCreateNew = (this.grantformGroup.get('label').value != null && this.grantformGroup.get('label').value.length > 0); - this.setGrantValidators(); - } - if (this.projectFormGroup != null) { - this.isCreateNewProject = (this.projectFormGroup.get('label').value != null && this.projectFormGroup.get('label').value.length > 0); - this.setProjectValidators(); - } - if (this.funderFormGroup != null) { - this.isCreateNewFunder = (this.funderFormGroup.get('label').value != null && this.funderFormGroup.get('label').value.length > 0); - this.setFunderValidators(); - } - this.registerFormListeners(); - if (this.isNew && !this.isClone) { - if (this.grantformGroup != null && this.funderFormGroup != null) { - this.grantformGroup.reset(); - this.grantformGroup.disable(); - } - } - - this.formGroup.valueChanges.pipe(takeUntil(this._destroyed)) - .subscribe(x => { - this.configureAutoCompletes(); - }); - } - initializeReferenceValidators() { - - //Validator for funder - if (this.funderFormGroup != null) { - this.funderFormGroup.get('reference').valueChanges.pipe( - takeUntil(this._destroyed), - filter(value =>!isNullOrUndefined(value)), - tap(_=>this.isFunderPending = true), - debounceTime(500), - switchMap(value=> { - const requestItem = new RequestItem(); - requestItem.criteria = new FunderCriteria(); - requestItem.criteria.exactReference = this._FUNDER_PREFIX +value; - return this.funderService.getWithExternal(requestItem).pipe(takeUntil(this._destroyed)); - }), - map(response=>{ - if(response && response.length){ - const internalFunders = (response as Array).filter(funder=> funder.key === this._KEY); - - if(internalFunders && internalFunders.length){ - return {funderIdentifierExists:true}; - } - return null; - } - return null; - }) - ) - .subscribe(error=>{ - this.isFunderPending = false; - this.funderFormGroup.get('reference').setErrors(error); - if(!error && this.funderFormGroup.get('reference').validator){ - const validator = this.funderFormGroup.get('reference').validator({} as AbstractControl); - if(validator && validator.required && this.funderFormGroup.get('reference').touched && !this.funderFormGroup.get('reference').value){ - this.funderFormGroup.get('reference').setErrors({required : true}); - } - } - }); - } - - //Validator for grants - if (this.grantformGroup != null) { - this.grantformGroup.get('reference').valueChanges.pipe( - takeUntil(this._destroyed), - filter(value =>!isNullOrUndefined(value)), - tap(_=> this.isGrantPending = true), - debounceTime(500), - switchMap(value=> { - const requestItem = new RequestItem(); - requestItem.criteria = new GrantCriteria(); - requestItem.criteria.exactReference = this._GRANT_PREFIX + value; - return this.grantService.getWithExternal(requestItem).pipe(takeUntil(this._destroyed)); - }), - map(response=>{ - if(response && response.length){ - const internalGrants = (response as Array).filter(grant=> grant.key === this._KEY); - - if(internalGrants && internalGrants.length){ - return {grantIdentifierExists:true}; - } - return null; - } - return null; - }) - ) - .subscribe(error=>{ - this.isGrantPending = false; - this.grantformGroup.get('reference').setErrors(error); - if(!error && this.grantformGroup.get('reference').validator){ - const validator = this.grantformGroup.get('reference').validator({} as AbstractControl); - if(validator && validator.required && this.grantformGroup.get('reference').touched && !this.grantformGroup.get('reference').value){ - this.grantformGroup.get('reference').setErrors({required : true}); - } - } - }); - } - - //validator for projects - if (this.projectFormGroup != null) { - this.projectFormGroup.get('reference').valueChanges.pipe( - takeUntil(this._destroyed), - filter(value =>!isNullOrUndefined(value)), - tap(_ => this.isProjectPending = true), - debounceTime(500), - switchMap(value=> { - const requestItem = new RequestItem(); - requestItem.criteria = new ProjectCriteria(); - requestItem.criteria.exactReference = this._PROJECT_PREFIX + value; - return this.projectService.getWithExternal(requestItem).pipe(takeUntil(this._destroyed)); - }), - map(response=>{ - if(response && response.length){ - const internalProjects = (response as Array).filter(project=> project.key === this._KEY); - if(internalProjects && internalProjects.length){ - return {projectIdentifierExists:true}; - } - return null; - } - return null; - }) - ) - .subscribe(error=>{ - this.isProjectPending = false; - this.projectFormGroup.get('reference').setErrors(error); - if(!error && this.projectFormGroup.get('reference').validator){ - const validator = this.projectFormGroup.get('reference').validator({} as AbstractControl); - if(validator && validator.required && this.projectFormGroup.get('reference').touched && !this.projectFormGroup.get('reference').value){ - this.projectFormGroup.get('reference').setErrors({required : true}); - } - } - }); - } - } - - configureAutoCompletes(): void { - this.funderAutoCompleteConfiguration = { - filterFn: this.searchFunder.bind(this), - initialItems: () => this.searchFunder(''), - displayFn: (item) => item['label'], - titleFn: (item) => item['label'], - subtitleFn: (item) => item['source'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['source'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')) - } - - this.grantAutoCompleteConfiguration = { - filterFn: this.searchGrant.bind(this), - initialItems: () => this.searchGrant(''), - displayFn: (item) => item['label'] + this.getGrantIdText(item), - titleFn: (item) => item['label'] + this.getGrantIdText(item), - subtitleFn: (item) => item['source'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['source'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')), - } - // this.forceFocus = false; - - this.projectAutoCompleteConfiguration = { - filterFn: this.searchProject.bind(this), - initialItems: () => this.searchProject(''), - displayFn: (item) => item['label'], - titleFn: (item) => item['label'], - subtitleFn: (item) => item['source'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['source'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')) - } - } - - searchGrant(query: any) { - const grantRequestItem: RequestItem = new RequestItem(); - grantRequestItem.criteria = new GrantCriteria(); - grantRequestItem.criteria.like = query; - const existFunderValue = this.funderFormGroup.get('existFunder').value; - if (existFunderValue && !this.isCreateNewFunder && (existFunderValue.key != this._KEY)) { - grantRequestItem.criteria.funderReference = this.funderFormGroup.controls['existFunder'].value.reference; - } - return this.grantService.getWithExternal(grantRequestItem); - } - - searchProject(query: string) { - const projectRequestItem: RequestItem = new RequestItem(); - projectRequestItem.criteria = new ProjectCriteria(); - projectRequestItem.criteria.like = query; - return this.projectService.getWithExternal(projectRequestItem); - } - - searchFunder(query: string) { - const funderRequestItem: RequestItem = new RequestItem(); - funderRequestItem.criteria = new FunderCriteria(); - funderRequestItem.criteria.like = query; - return this.funderService.getWithExternal(funderRequestItem) - } - - createGrant() { - if (this.isNewVersion) { return }; - if (this.isGrantDisabled()) return; - this.isCreateNew = !this.isCreateNew; - this.setGrantValidators(); - } - - createProject() { - if (this.isNewVersion) { return }; - this.isCreateNewProject = !this.isCreateNewProject; - this.setProjectValidators(); - } - - createFunder() { - if (this.isNewVersion) { return }; - this.isCreateNewFunder = !this.isCreateNewFunder; - this.setFunderValidators(); - } - - setGrantValidators() { - if (this.isCreateNew) { - this.grantformGroup.get('existGrant').disable(); - this.grantformGroup.get('label').enable(); - this.grantformGroup.get('description').enable(); - - this.grantformGroup.get('reference').enable(); - if(this.isRequired) - this.grantformGroup.get('reference').setValidators(Validators.required); - this.grantformGroup.get('reference').updateValueAndValidity(); - } else if (this.isClone && !this.isNewVersion) { - this.grantformGroup.get('existGrant').enable(); - this.grantformGroup.get('label').disable(); - this.grantformGroup.get('label').reset(); - this.grantformGroup.get('description').disable(); - this.grantformGroup.get('description').reset(); - - this.grantformGroup.get('reference').disable(); - this.grantformGroup.get('reference').clearValidators(); - this.grantformGroup.get('reference').setErrors(null); - this.grantformGroup.get('reference').updateValueAndValidity(); - } else if (this.isFinalized || this.isNewVersion || !this.isUserOwner) { - this.grantformGroup.get('existGrant').disable(); - this.grantformGroup.get('label').disable(); - this.grantformGroup.get('description').disable(); - - this.grantformGroup.get('reference').disable(); - this.grantformGroup.get('reference').clearValidators(); - this.grantformGroup.get('reference').setErrors(null); - this.grantformGroup.get('reference').updateValueAndValidity(); - } else { - this.grantformGroup.get('existGrant').enable(); - this.grantformGroup.get('label').disable(); - this.grantformGroup.get('label').reset(); - this.grantformGroup.get('description').disable(); - this.grantformGroup.get('description').reset(); - - this.grantformGroup.get('reference').disable(); - this.grantformGroup.get('reference').clearValidators(); - this.grantformGroup.get('reference').setErrors(null); - this.grantformGroup.get('reference').updateValueAndValidity(); - } - } - - setProjectValidators() { - if (this.isCreateNewProject) { - this.projectFormGroup.get('existProject').disable(); - this.projectFormGroup.get('label').enable(); - this.projectFormGroup.get('description').enable(); - - this.projectFormGroup.get('reference').enable() - if(this.isRequired) - this.projectFormGroup.get('reference').setValidators(Validators.required); - this.projectFormGroup.get('reference').updateValueAndValidity(); - } else if (this.isClone && !this.isNewVersion) { - this.projectFormGroup.get('existProject').enable(); - this.projectFormGroup.get('label').disable() - this.projectFormGroup.get('label').reset(); - this.projectFormGroup.get('description').disable(); - this.projectFormGroup.get('description').reset(); - - this.projectFormGroup.get('reference').disable(); - this.projectFormGroup.get('reference').clearValidators(); - this.projectFormGroup.get('reference').setErrors(null); - this.projectFormGroup.get('reference').updateValueAndValidity(); - } else if (this.isFinalized || this.isNewVersion || !this.isUserOwner) { - this.projectFormGroup.get('existProject').disable(); - this.projectFormGroup.get('label').disable(); - this.projectFormGroup.get('description').disable(); - - this.projectFormGroup.get('reference').disable(); - this.projectFormGroup.get('reference').clearValidators(); - this.projectFormGroup.get('reference').setErrors(null); - this.projectFormGroup.get('reference').updateValueAndValidity(); - } else { - this.projectFormGroup.get('existProject').enable(); - this.projectFormGroup.get('label').disable(); - this.projectFormGroup.get('label').reset(); - this.projectFormGroup.get('description').disable(); - this.projectFormGroup.get('description').reset(); - - this.projectFormGroup.get('reference').disable(); - this.projectFormGroup.get('reference').clearValidators(); - this.projectFormGroup.get('reference').setErrors(null); - this.projectFormGroup.get('reference').updateValueAndValidity(); - } - } - - setFunderValidators() { - if (this.isCreateNewFunder) { - this.funderFormGroup.get('existFunder').disable(); - this.funderFormGroup.get('label').enable(); - - this.funderFormGroup.get('reference').enable(); - if(this.isRequired) - this.funderFormGroup.get('reference').setValidators(Validators.required); - this.funderFormGroup.get('reference').updateValueAndValidity(); - - } else if (this.isClone && !this.isNewVersion) { - if (this.funderFormGroup.get('existFunder')) { - this.funderFormGroup.get('existFunder').enable(); - this.funderFormGroup.get('label').disable(); - this.funderFormGroup.get('label').reset(); - this.funderFormGroup.get('reference').disable(); - this.funderFormGroup.get('reference').clearValidators(); - this.funderFormGroup.get('reference').setErrors(null); - this.funderFormGroup.get('reference').updateValueAndValidity(); - } else { - this.funderFormGroup.get('label').enable(); - this.funderFormGroup.get('reference').enable(); - if(this.isRequired) - this.funderFormGroup.get('reference').setValidators(Validators.required); - this.funderFormGroup.get('reference').updateValueAndValidity(); - } - } else if (this.isFinalized || this.isNewVersion || !this.isUserOwner) { - this.funderFormGroup.get('existFunder').disable(); - this.funderFormGroup.get('label').disable(); - - this.funderFormGroup.get('reference').disable(); - this.funderFormGroup.get('reference').clearValidators(); - this.funderFormGroup.get('reference').setErrors(null); - this.funderFormGroup.get('reference').updateValueAndValidity(); - } else { - this.funderFormGroup.enable(); - this.funderFormGroup.get('label').disable(); - this.funderFormGroup.get('label').reset(); - - this.funderFormGroup.get('reference').disable(); - this.funderFormGroup.get('reference').clearValidators(); - this.funderFormGroup.get('reference').setErrors(null); - this.funderFormGroup.get('reference').updateValueAndValidity(); - } - } - - registerFormListeners() { - if (this.funderFormGroup != null) { - this.funderFormGroup.valueChanges - .pipe(takeUntil(this._destroyed)) - .subscribe(x => { - this.funderValueChanged(x); - }) - } - } - - private hasNewFunder(funder: any) { - return funder.label !== null && funder.label !== undefined && funder.label !== '' && funder.reference !== undefined && funder.reference !== undefined && funder.reference !== ''; - } - - private hasExistingFunder(funder: any) { - return funder.existFunder !== null && funder.existFunder !== undefined && funder.existFunder.reference !== null && funder.existFunder.reference !== undefined; - } - - funderValueChanged(funder: any) { - - if (this.hasNewFunder(funder) || this.hasExistingFunder(funder)) { - //this.grantformGroup.reset(); - this.grantformGroup.enable(); - this.setGrantValidators(); - } else { - this.grantformGroup.reset(); - this.grantformGroup.disable(); - if (this.isCreateNew) this.isCreateNew = !this.isCreateNew; - } - } - - isGrantDisabled() { - return this.grantformGroup.disabled; - } - - showToggleButton() { - return (!this.isFinalized && this.isUserOwner) || this.isClone; - } - - - private consoleForm(){ - console.log(this.formGroup); - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/general-tab/extra-properties-form.model.ts b/dmp-frontend/src/app/ui/dmp/editor/general-tab/extra-properties-form.model.ts deleted file mode 100644 index 2da5a6380..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/general-tab/extra-properties-form.model.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { ValidationContext } from '@common/forms/validation/validation-context'; -import { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms'; -import { BackendErrorValidator } from '@common/forms/validation/custom-validator'; -import { CostModel } from '@app/core/model/dmp/cost'; -import { isNullOrUndefined } from '@app/utilities/enhancers/utils'; -import { CostEditorModel } from '../cost-editor/add-cost/add-cost.model'; -import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model'; - -export class ExtraPropertiesFormModel { - public language: string; - public license: string; - public visible: boolean; - public publicDate: Date; - public contact: string; - public costs: CostEditorModel[] = []; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - - fromModel(item: any): ExtraPropertiesFormModel { - this.language = item.language; - this.license = item.license; - this.visible = item.visible; - this.publicDate = item.publicDate; - this.contact = item.contact; - if (!isNullOrUndefined(item.costs)) { - (item.costs).forEach(element => { - this.costs.push(new CostEditorModel().fromModel(element)); - }); - } - return this; - } - - buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { - if (context == null) { context = this.createValidationContext(); } - const formBuilder = new UntypedFormBuilder(); - const formGroup = new UntypedFormBuilder().group({ - language: [{ value: this.language, disabled: disabled }, context.getValidation('language').validators], - license: [{ value: this.license, disabled: disabled }, context.getValidation('license').validators], - visible: [{ value: this.visible, disabled: disabled }, context.getValidation('visible').validators], - publicDate: [{ value: this.publicDate, disabled: disabled }, context.getValidation('publicDate').validators], - contact: [{ value: this.contact, disabled: disabled }, context.getValidation('contact').validators], - // costs: [{ value: this.costs, disabled: disabled }, context.getValidation('costs').validators] - }); - - const costArray = new Array(); - //if (this.externalDatasets && this.externalDatasets.length > 0) { - this.costs.forEach(item => { - costArray.push(item.buildForm(context.getValidation('costs').descendantValidations, true)); - }); - // } else { - // //externalDatasetsFormArray.push(new ExternalDatasetModel().buildForm(context.getValidation('externalDatasets').descendantValidations, disabled)); - // } - formGroup.addControl('costs', formBuilder.array(costArray)); - return formGroup; - } - - createValidationContext(): ValidationContext { - const baseContext: ValidationContext = new ValidationContext(); - baseContext.validation.push({ key: 'language', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'language')] }); - baseContext.validation.push({ key: 'license', validators: [BackendErrorValidator(this.validationErrorModel, 'license')] }); - baseContext.validation.push({ key: 'visible', validators: [BackendErrorValidator(this.validationErrorModel, 'visible')] }); - baseContext.validation.push({ key: 'publicDate', validators: [BackendErrorValidator(this.validationErrorModel, 'publicDate')] }); - baseContext.validation.push({ key: 'contact', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'contact')] }); - baseContext.validation.push({ key: 'costs', validators: [BackendErrorValidator(this.validationErrorModel, 'costs')] }); - return baseContext; - } - -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/funder-form-model.ts b/dmp-frontend/src/app/ui/dmp/editor/grant-tab/funder-form-model.ts deleted file mode 100644 index 49d43d422..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/funder-form-model.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; -import { Status } from '@app/core/common/enum/status'; -import { FunderModel } from '@app/core/model/funder/funder'; -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'; - - -export class FunderFormModel { - public id: string; - public label?: string; - public status: Status = Status.Active; - public existFunder: FunderModel; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - public reference: string; - - - fromModel(item: FunderModel): FunderFormModel { - this.existFunder = item; - return this; - } - - buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { - if (context == null) { context = this.createValidationContext(); } - - const formGroup = new UntypedFormBuilder().group({ - id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], - label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], - status: [{ value: this.status, disabled: disabled }, context.getValidation('status').validators], - existFunder: [{ value: this.existFunder, disabled: disabled }, context.getValidation('existFunder').validators], - reference: [{ value: this.reference, disabled: disabled }, context.getValidation('reference').validators], - }); - return formGroup; - } - - createValidationContext(): ValidationContext { - const baseContext: ValidationContext = new ValidationContext(); - baseContext.validation.push({ key: 'id', validators: [] }); - baseContext.validation.push({ key: 'label', validators: [BackendErrorValidator(this.validationErrorModel, 'label')] }); - baseContext.validation.push({ key: 'status', validators: [] }); - baseContext.validation.push({ key: 'existFunder', validators: [BackendErrorValidator(this.validationErrorModel, 'existFunder')] }); - baseContext.validation.push({ key: 'reference', validators: [BackendErrorValidator(this.validationErrorModel, 'reference')] }); - return baseContext; - } - -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab-model.ts b/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab-model.ts deleted file mode 100644 index f7635121a..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab-model.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; -import { Status } from '@app/core/common/enum/status'; -import { GrantListingModel } from '@app/core/model/grant/grant-listing'; -import { ValidJsonValidator } from '@app/library/auto-complete/auto-complete-custom-validator'; -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'; - - -export class GrantTabModel { - public id: string; - public label?: string; - public status: Status = Status.Active; - public description: String; - public existGrant: GrantListingModel; - public funderId: String; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - public reference: string; - - - fromModel(item: GrantListingModel): GrantTabModel { - this.existGrant = item; - return this; - } - - buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { - if (context == null) { context = this.createValidationContext(); } - - const formGroup = new UntypedFormBuilder().group({ - id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], - label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], - status: [{ value: this.status, disabled: disabled }, context.getValidation('status').validators], - description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], - existGrant: [{ value: this.existGrant, disabled: disabled }, context.getValidation('existGrant').validators], - funderId: [{ value: this.funderId, disabled: disabled }, context.getValidation('funderId').validators], - reference: [{ value: this.funderId, disabled: disabled }, context.getValidation('reference').validators], - }); - return formGroup; - } - - createValidationContext(): ValidationContext { - const baseContext: ValidationContext = new ValidationContext(); - baseContext.validation.push({ key: 'id', validators: [] }); - baseContext.validation.push({ key: 'label', validators: [BackendErrorValidator(this.validationErrorModel, 'label')] }); - baseContext.validation.push({ key: 'status', validators: [] }); - baseContext.validation.push({ key: 'description', validators: [BackendErrorValidator(this.validationErrorModel, 'description')] }); - baseContext.validation.push({ key: 'existGrant', validators: [ValidJsonValidator, BackendErrorValidator(this.validationErrorModel, 'existGrant')] }); - baseContext.validation.push({ key: 'funderId', validators: [ValidJsonValidator, BackendErrorValidator(this.validationErrorModel, 'funderId')] }); - baseContext.validation.push({ key: 'reference', validators: [BackendErrorValidator(this.validationErrorModel, 'reference')] }); - return baseContext; - } - - -} - diff --git a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.html b/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.html deleted file mode 100644 index 2677a7c3a..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.html +++ /dev/null @@ -1,125 +0,0 @@ -
-
- - -
-
- - - - {{'DMP-EDITOR.FIELDS.EXTERNAL-SOURCE-HINT' | translate}} - -
- - -
- - - - {{funderFormGroup.get('label').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
- - -
-
-
- settings_backup_restore - {{'QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.EXIST-FUNDER' | translate}} -
-
- add - {{'QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.CREATE-NEW-FUNDER' | translate}} -
-
-
-
- - -
-
- - - - {{'DMP-EDITOR.FIELDS.EXTERNAL-SOURCE-HINT' | translate}} - -
- - -
- - - - {{grantformGroup.get('label').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - - {{projectFormGroup.get('description').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
- - -
-
-
- settings_backup_restore - {{'QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.EXIST-GRANT' | translate}} -
-
- add - {{'QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.CREATE-NEW-GRANT' | translate}} -
-
-
-
-
-
- - - - {{'DMP-EDITOR.FIELDS.EXTERNAL-SOURCE-HINT' | translate}} - -
- - -
- - - - {{projectFormGroup.get('label').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - - {{projectFormGroup.get('description').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
- - -
-
-
- settings_backup_restore - {{'QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.EXIST-PROJECT' | translate}} -
-
- add - {{'QUICKWIZARD.CREATE-ADD.CREATE.QUICKWIZARD_CREATE.ACTIONS.CREATE-NEW-PROJECT' | translate}} -
-
-
-
- -
-
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 deleted file mode 100644 index f1cb8b38d..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.scss +++ /dev/null @@ -1,36 +0,0 @@ -.add-entity { - display: flex; - // justify-content: flex-end; - // margin-top: 1.5em; - align-self: center; - padding-bottom: 1em; - cursor: pointer; - color: var(--primary-color-3); -} - -.add-entity:after { - background: none repeat scroll 0 0 transparent; - bottom: 0; - content: ""; - display: block; - height: 2px; - left: 50%; - position: absolute; - background: var(--primary-color-3); - // background: #0070c0; - transition: width 0.3s ease 0s, left 0.3s ease 0s; - width: 0; -} - -.add-entity:hover:after { - width: 100%; - left: 0; -} - -.disabled-toggle { - display: flex; - align-self: center; - padding-bottom: 1em; - cursor: default; - color: #e0e0e0; -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.ts b/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.ts deleted file mode 100644 index 6e4eaaf0a..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/grant-tab.component.ts +++ /dev/null @@ -1,241 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { FunderCriteria } from '@app/core/query/funder/funder-criteria'; -import { GrantCriteria } from '@app/core/query/grant/grant-criteria'; -import { ProjectCriteria } from '@app/core/query/project/project-criteria'; -import { RequestItem } from '@app/core/query/request-item'; -import { FunderService } from '@app/core/services/funder/funder.service'; -import { GrantService } from '@app/core/services/grant/grant.service'; -import { ProjectService } from '@app/core/services/project/project.service'; -import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; -import { GrantTabModel } from '@app/ui/dmp/editor/grant-tab/grant-tab-model'; -import { BaseComponent } from '@common/base/base.component'; -import { TranslateService } from '@ngx-translate/core'; -import { takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-grant-tab', - templateUrl: './grant-tab.component.html', - styleUrls: ['./grant-tab.component.scss'] -}) -export class GrantTabComponent extends BaseComponent implements OnInit { - - @Input() grantformGroup: UntypedFormGroup; - @Input() projectFormGroup: UntypedFormGroup; - @Input() funderFormGroup: UntypedFormGroup = null; - @Input() isFinalized: boolean; - @Input() isNewVersion: boolean; - @Input() isNew: boolean; - @Input() isUserOwner: boolean; - @Input() isClone: boolean = false; - - isCreateNew = false; - isCreateNewProject = false; - isCreateNewFunder = false; - grant: GrantTabModel; - - grantAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - projectAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - funderAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - - constructor( - private grantService: GrantService, - private projectService: ProjectService, - private funderService: FunderService, - private language: TranslateService - ) { - super(); - } - - getGrantIdText(item) { - if (item.reference != null && typeof item.reference == 'string') { - const parts = (item.reference as String).split('::'); - return parts.length > 1 ? ' (' + parts[parts.length - 1] + ')' : ''; - } - return ''; - } - - ngOnInit() { - - const grantRequestItem: RequestItem = new RequestItem(); - grantRequestItem.criteria = new GrantCriteria(); - - this.funderAutoCompleteConfiguration = { - filterFn: this.searchFunder.bind(this), - initialItems: () => this.searchFunder(''), - displayFn: (item) => item['label'], - titleFn: (item) => item['label'], - subtitleFn: (item) => item['source'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['source'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')) - } - - this.grantAutoCompleteConfiguration = { - filterFn: this.searchGrant.bind(this), - initialItems: () => this.searchGrant(''), - displayFn: (item) => item['label'] + this.getGrantIdText(item), - titleFn: (item) => item['label'] + this.getGrantIdText(item), - subtitleFn: (item) => item['source'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['source'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')) - }; - - this.projectAutoCompleteConfiguration = { - filterFn: this.searchProject.bind(this), - initialItems: () => this.searchProject(''), - displayFn: (item) => item['label'], - titleFn: (item) => item['label'], - subtitleFn: (item) => item['source'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['source'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')) - } - - this.isCreateNew = (this.grantformGroup.get('label').value != null && this.grantformGroup.get('label').value.length > 0); - this.isCreateNewProject = (this.projectFormGroup.get('label').value != null && this.projectFormGroup.get('label').value.length > 0); - this.isCreateNewFunder = (this.funderFormGroup.get('label').value != null && this.funderFormGroup.get('label').value.length > 0); - this.setGrantValidators(); - this.setProjectValidators(); - this.setFunderValidators(); - this.registerFormListeners(); - if (this.isNew && !this.isClone) { - this.grantformGroup.reset(); - this.grantformGroup.disable(); - } - } - - searchGrant(query: any) { - const grantRequestItem: RequestItem = new RequestItem(); - grantRequestItem.criteria = new GrantCriteria(); - grantRequestItem.criteria.like = query; - if (this.funderFormGroup.get('existFunder').value) { - grantRequestItem.criteria.funderReference = this.funderFormGroup.controls['existFunder'].value.reference; - } - return this.grantService.getWithExternal(grantRequestItem); - } - - searchProject(query: string) { - const projectRequestItem: RequestItem = new RequestItem(); - projectRequestItem.criteria = new ProjectCriteria(); - projectRequestItem.criteria.like = query; - return this.projectService.getWithExternal(projectRequestItem); - } - - searchFunder(query: string) { - const funderRequestItem: RequestItem = new RequestItem(); - funderRequestItem.criteria = new FunderCriteria(); - funderRequestItem.criteria.like = query; - return this.funderService.getWithExternal(funderRequestItem) - } - - createGrant() { - if (this.isNewVersion) { return }; - if (this.isGrantDisabled()) return; - this.isCreateNew = !this.isCreateNew; - this.setGrantValidators(); - } - - createProject() { - if (this.isNewVersion) { return }; - this.isCreateNewProject = !this.isCreateNewProject; - this.setProjectValidators(); - } - - createFunder() { - if (this.isNewVersion) { return }; - this.isCreateNewFunder = !this.isCreateNewFunder; - this.setFunderValidators(); - } - - setGrantValidators() { - if (this.isCreateNew) { - this.grantformGroup.get('existGrant').disable(); - this.grantformGroup.get('label').enable(); - this.grantformGroup.get('description').enable(); - } else if (this.isClone && !this.isNewVersion) { - this.grantformGroup.get('existGrant').enable(); - this.grantformGroup.get('label').disable(); - this.grantformGroup.get('label').reset(); - this.grantformGroup.get('description').disable(); - this.grantformGroup.get('description').reset(); - } else if (this.isFinalized || this.isNewVersion || !this.isUserOwner) { - this.grantformGroup.get('existGrant').disable(); - this.grantformGroup.get('label').disable(); - this.grantformGroup.get('description').disable(); - } else { - this.grantformGroup.get('existGrant').enable(); - this.grantformGroup.get('label').disable(); - this.grantformGroup.get('label').reset(); - this.grantformGroup.get('description').disable(); - this.grantformGroup.get('description').reset(); - } - } - - setProjectValidators() { - if (this.isCreateNewProject) { - this.projectFormGroup.get('existProject').disable(); - this.projectFormGroup.get('label').enable(); - this.projectFormGroup.get('description').enable(); - } else if (this.isClone && !this.isNewVersion) { - this.projectFormGroup.get('existProject').enable(); - this.projectFormGroup.get('label').disable() - this.projectFormGroup.get('label').reset(); - this.projectFormGroup.get('description').disable(); - this.projectFormGroup.get('description').reset(); - } else if (this.isFinalized || this.isNewVersion || !this.isUserOwner) { - this.projectFormGroup.get('existProject').disable(); - this.projectFormGroup.get('label').disable(); - this.projectFormGroup.get('description').disable(); - } else { - this.projectFormGroup.get('existProject').enable(); - this.projectFormGroup.get('label').disable(); - this.projectFormGroup.get('label').reset(); - this.projectFormGroup.get('description').disable(); - this.projectFormGroup.get('description').reset(); - } - } - - setFunderValidators() { - if (this.isCreateNewFunder) { - this.funderFormGroup.get('existFunder').disable(); - this.funderFormGroup.get('label').enable(); - } else if (this.isClone && !this.isNewVersion) { - if (this.funderFormGroup.get('existFunder')) { - this.funderFormGroup.get('existFunder').enable(); - this.funderFormGroup.get('label').disable(); - this.funderFormGroup.get('label').reset(); - } else { - this.funderFormGroup.get('label').enable(); - } - } else if (this.isFinalized || this.isNewVersion || !this.isUserOwner) { - this.funderFormGroup.get('existFunder').disable(); - this.funderFormGroup.get('label').disable(); - } else { - this.funderFormGroup.enable(); - this.funderFormGroup.get('label').disable(); - this.funderFormGroup.get('label').reset(); - } - } - - registerFormListeners() { - this.funderFormGroup.valueChanges - .pipe(takeUntil(this._destroyed)) - .subscribe(x => { - this.funderValueChanged(x); - }) - } - - funderValueChanged(funder: any) { - if ((funder.label !== "" && funder.label != null && funder.label !== undefined) - || (funder.existFunder !== null && funder.existFunder !== undefined && funder.existFunder.id !== undefined)) { - this.grantformGroup.reset(); - this.grantformGroup.enable(); - this.setGrantValidators(); - } else { - this.grantformGroup.reset(); - this.grantformGroup.disable(); - if (this.isCreateNew) this.isCreateNew = !this.isCreateNew; - } - } - - isGrantDisabled() { - return this.grantformGroup.disabled; - } - - showToggleButton() { - return (!this.isFinalized && this.isUserOwner) || this.isClone; - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/project-form-model.ts b/dmp-frontend/src/app/ui/dmp/editor/grant-tab/project-form-model.ts deleted file mode 100644 index 4b165ec71..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/grant-tab/project-form-model.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; -import { Status } from '@app/core/common/enum/status'; -import { ProjectModel } from '@app/core/model/project/project'; -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'; - - -export class ProjectFormModel { - public id: string; - public label?: string; - public status: Status = Status.Active; - public description: String; - public existProject: ProjectModel; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - public reference: string; - - - fromModel(item: ProjectModel): ProjectFormModel { - this.existProject = item; - return this; - } - - buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { - if (context == null) { context = this.createValidationContext(); } - - const formGroup = new UntypedFormBuilder().group({ - id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], - label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], - status: [{ value: this.status, disabled: disabled }, context.getValidation('status').validators], - description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], - existProject: [{ value: this.existProject, disabled: disabled }, context.getValidation('existProject').validators], - reference: [{ value: this.reference, disabled: disabled }, context.getValidation('reference').validators], - }); - return formGroup; - } - - createValidationContext(): ValidationContext { - const baseContext: ValidationContext = new ValidationContext(); - baseContext.validation.push({ key: 'id', validators: [] }); - baseContext.validation.push({ key: 'label', validators: [BackendErrorValidator(this.validationErrorModel, 'label')] }); - baseContext.validation.push({ key: 'status', validators: [] }); - baseContext.validation.push({ key: 'description', validators: [BackendErrorValidator(this.validationErrorModel, 'description')] }); - baseContext.validation.push({ key: 'existProject', validators: [BackendErrorValidator(this.validationErrorModel, 'existProject')] }); - baseContext.validation.push({ key: 'reference', validators: [BackendErrorValidator(this.validationErrorModel, 'reference')] }); - return baseContext; - } - -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.html b/dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.html deleted file mode 100644 index 3e4c57cba..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.html +++ /dev/null @@ -1,74 +0,0 @@ -
-
- {{'DMP-EDITOR.LICENSE-INFO.INTRO' | translate}} -
-
- -
-
-
3.1 {{'DMP-EDITOR.FIELDS.LICENSE' | translate}}
-
{{'DMP-EDITOR.LICENSE-INFO.HINT' | translate}}
-
- - - - - {{formGroup.get('extraProperties').get('license').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
- -
-
-
3.2 {{'DMP-EDITOR.FIELDS.VISIBILITY' | translate}}
-
{{'DMP-EDITOR.FIELDS.VISIBILITY-HINT' | translate}}
-
- - - - {{vis.name | translate}} - - - - {{formGroup.get('extraProperties').get('visible').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
- -
-
-
3.3 {{'DMP-EDITOR.FIELDS.PUBLICATION' | translate}}*
- -
- - - - - - {{formGroup.get('extraProperties').get('publicDate').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
- -
-
diff --git a/dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.scss b/dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.scss deleted file mode 100644 index 0c50a8d8d..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.scss +++ /dev/null @@ -1,105 +0,0 @@ -.main-info { - // position: relative; - // left: 362px; - // width: calc(100% - 366px); - - .intro { - text-align: left; - font-weight: 400; - letter-spacing: 0px; - color: #212121; - opacity: 1; - margin: 3rem 0rem 3rem 0rem; - } - - .heading { - text-align: left; - font-weight: 700; - font-size: 18px; - letter-spacing: 0px; - color: #212121; - opacity: 0.81; - margin-top: 1.625rem; - margin-bottom: 0.625rem; - } - - .hint { - text-align: left; - font-weight: 400; - font-size: 16px; - letter-spacing: 0px; - color: #212121; - opacity: 0.81; - margin-bottom: 2.125rem; - } - - .title-form, - .description-form { - text-align: left; - font-weight: 400; - font-size: 16px; - letter-spacing: 0.15px; - color: #7d7d7d; - opacity: 1; - margin-bottom: 1rem; - } - - // textarea::placeholder { - // font-style: oblique; - // } - - .input-btn { - border: none; - color: #aaaaaa; - background-color: #ffffff00; - cursor: pointer; - } - - .input-btn :hover { - color: var(--primary-color-3) !important; - } -} - -::ng-deep .title-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .description-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .organizations-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .author-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .title-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} - -::ng-deep .description-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} - -::ng-deep .organizations-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} - -::ng-deep .author-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} - -.cost-placeholder { - text-decoration: underline; -} - -.cost-add { - margin-top: 1em; -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.ts b/dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.ts deleted file mode 100644 index 91975a5c5..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/license-info/license-info.component.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { BaseComponent } from '@common/base/base.component'; -import { OnInit, Component, Input, Output, EventEmitter } from '@angular/core'; -import { UntypedFormGroup, UntypedFormControl, UntypedFormArray } from '@angular/forms'; -import { map, takeUntil } from 'rxjs/operators'; -import { ExternalSourceItemModel } from '@app/core/model/external-sources/external-source-item'; -import { Observable } from 'rxjs'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; -import { isNullOrUndefined } from '@app/utilities/enhancers/utils'; -import { MatDialog } from '@angular/material/dialog'; -import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; -import { LanguageInfo } from '@app/core/model/language-info'; -import { LanguageInfoService } from '@app/core/services/culture/language-info-service'; -import { RequestItem } from '@app/core/query/request-item'; -import { LicenseCriteria } from '@app/core/query/license/license-criteria'; -import { AddCostComponent } from '../cost-editor/add-cost/add-cost.component'; -import { CostEditorModel } from '../cost-editor/add-cost/add-cost.model'; - -interface Visible { - value: boolean; - name: string; -} - -@Component({ - selector: 'license-info', - templateUrl: './license-info.component.html', - styleUrls: ['./license-info.component.scss'] -}) -export class LicenseInfoComponent extends BaseComponent implements OnInit { - - @Input() formGroup: UntypedFormGroup = null; - // @Input() datasetFormGroup: FormGroup; - @Input() isNewVersion: boolean; - @Input() isUserOwner: boolean; - @Input() isClone: boolean; - @Output() onFormChanged: EventEmitter = new EventEmitter(); - - public formControl = new UntypedFormControl(); - - visibles: Visible[] = [ - { value: true, name: 'DMP-EDITOR.VISIBILITY.PUBLIC' }, - { value: false, name: 'DMP-EDITOR.VISIBILITY.RESTRICTED' } - ] - - licenseAutoCompleteConfiguration: SingleAutoCompleteConfiguration = { - filterFn: this.licenseSearch.bind(this), - initialItems: (excludedItems: any[]) => this.licenseSearch('').pipe(map(result => result.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1))), - displayFn: (item) => item['name'], - titleFn: (item) => item['name'] - }; - - constructor( - private externalSourcesService: ExternalSourcesService, - private dialog: MatDialog, - private languageInfoService: LanguageInfoService - ) { - super(); - } - - ngOnInit() { - - } - - getLanguageInfos(): LanguageInfo[] { - return this.languageInfoService.getLanguageInfoValues(); - } - - licenseSearch(query: string): Observable { - const request = new RequestItem(); - request.criteria = new LicenseCriteria(); - request.criteria.like = query; - request.criteria.type = ''; - return this.externalSourcesService.searchLicense(request); - } - - getAssociates(): any[] { - let associates: any[] = []; - //associates = (this.formGroup.get('researchers').value as any[]); - associates = associates.concat(this.formGroup.get('associatedUsers').value); - return associates; - } - - addCost(event: MouseEvent) { - event.stopPropagation(); - const dialogRef = this.dialog.open(AddCostComponent, { - data: this.formGroup.get('extraProperties').get('costs') - }); - dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { - if (result) { - const costsArray = this.formGroup.get('extraProperties').get('costs').value || []; - costsArray.push(result); - let costeditModel: CostEditorModel = new CostEditorModel(); - costeditModel = costeditModel.fromModel(result); - (this.formGroup.get('extraProperties').get('costs')).push(costeditModel.buildForm(null, true)); - } - }); - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.html b/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.html deleted file mode 100644 index 61242374a..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.html +++ /dev/null @@ -1,131 +0,0 @@ -
-
- {{'DMP-EDITOR.MAIN-INFO.INTRO' | translate}} -
-
- -
- dgdfgdfgdf -
-
1.1 {{'DMP-EDITOR.FIELDS.NAME' | translate}}*
- -
- - - - {{formGroup.get('label').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
- -
-
-
1.2 {{'DMP-EDITOR.FIELDS.DESCRIPTION' | translate}}
-
{{'DMP-EDITOR.FIELDS.DESCRIPTION-HINT' | translate}}
-
- - -
-
-
- -
-
-
1.3 {{'DMP-EDITOR.FIELDS.RESEARCHERS' | translate}}
-
-
{{'DMP-EDITOR.FIELDS.RESEARCHERS-HINT' | translate}}
-
info {{'DMP-EDITOR.MAIN-INFO.TYPING' | translate}}
-
-
- - {{'DMP-EDITOR.PLACEHOLDER.RESEARCHERS' | translate}} - - - - {{formGroup.get('researchers').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - -
- {{'DMP-EDITOR.FUNDING-INFO.FIND' | translate}} - {{'DMP-EDITOR.ACTIONS.INSERT-MANUALLY' | translate}} -
-
-
-
- -
-
-
1.4 {{'DMP-EDITOR.FIELDS.ORGANISATIONS' | translate}}
-
-
{{'DMP-EDITOR.FIELDS.ORGANISATIONS-HINT' | translate}}
-
info {{'DMP-EDITOR.MAIN-INFO.TYPING' | translate}}
-
-
- - {{'DMP-EDITOR.PLACEHOLDER.ORGANIZATION' | translate}} - - - - {{formGroup.get('organisations').getError('backendError').message}} - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - -
- {{'DMP-EDITOR.FUNDING-INFO.FIND' | translate}} - {{'DMP-EDITOR.ACTIONS.INSERT-MANUALLY' | translate}} -
-
-
-
- -
-
-
1.5 {{'DMP-EDITOR.FIELDS.LANGUAGE' | translate}}*
-
{{'DMP-EDITOR.FIELDS.LANGUAGE-HINT' | translate}}
-
- - - - {{ lang.name }} - - - - {{formGroup.get('extraProperties').get('language').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
- -
-
-
1.6 {{'DMP-EDITOR.FIELDS.CONTACT' | translate}}*
- -
- - - - {{vis.name | translate}} - - - - {{formGroup.get('extraProperties').get('contact').getError('backendError').message}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.scss b/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.scss deleted file mode 100644 index 6b5c69009..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.scss +++ /dev/null @@ -1,147 +0,0 @@ -.main-info { - // position: relative; - // left: 362px; - // width: calc(100% - 366px); - - .intro { - text-align: left; - font-weight: 400; - letter-spacing: 0px; - color: #212121; - opacity: 1; - margin: 3rem 0rem 3rem 0rem; - } - - .heading { - text-align: left; - font-weight: 700; - font-size: 18px; - letter-spacing: 0px; - color: #212121; - opacity: 0.81; - margin-top: 1.625rem; - margin-bottom: 0.625rem; - } - - .hint { - text-align: left; - font-weight: 400; - font-size: 16px; - letter-spacing: 0px; - color: #212121; - opacity: 0.81; - margin-bottom: 2.125rem; - } - - .title-form, - .contact-form, - .description-form, - .publication-form, - .organisations-form, - .researchers-form, - .language-form, - .visibility-form { - text-align: left; - font-weight: 400; - font-size: 16px; - letter-spacing: 0.15px; - color: #7d7d7d; - opacity: 1; - margin-bottom: 1rem; - } - - // textarea::placeholder { - // font-style: oblique; - // } - - .input-btn { - border: none; - color: #aaaaaa; - background-color: #ffffff00; - cursor: pointer; - } - - .input-btn :hover { - color: var(--primary-color-3) !important; - } - - .insert-manually { - text-decoration: underline; - color: var(--primary-color-3); - cursor: pointer; - font-size: 1rem; - font-weight: 400; - } - - .not-found { - // cursor: pointer; - font-size: 1rem; - font-weight: 400; - padding: 0rem 0.5rem 0rem 0rem; - } -} - -::ng-deep .title-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} -::ng-deep .description-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} -::ng-deep .organizations-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} -::ng-deep .researchers-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} -::ng-deep .author-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} -::ng-deep .contact-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} -::ng-deep .publication-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} -::ng-deep .language-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} -::ng-deep .visibility-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .title-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} -::ng-deep .description-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} -::ng-deep .organizations-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} -::ng-deep .researchers-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} -::ng-deep .author-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} -::ng-deep .contact-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} -::ng-deep .publication-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} -::ng-deep .language-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} -::ng-deep .visibility-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.ts b/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.ts deleted file mode 100644 index ac18f9bf5..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/main-info/main-info.component.ts +++ /dev/null @@ -1,209 +0,0 @@ -import { BaseComponent } from '@common/base/base.component'; -import { OnInit, Component, Input, Output, EventEmitter } from '@angular/core'; -import { UntypedFormGroup, UntypedFormControl } from '@angular/forms'; -import { TranslateService } from '@ngx-translate/core'; -import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; -import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { map, takeUntil } from 'rxjs/operators'; -import { ExternalSourceItemModel } from '@app/core/model/external-sources/external-source-item'; -import { Observable } from 'rxjs'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; -import { isNullOrUndefined } from '@app/utilities/enhancers/utils'; -import { MatDialog } from '@angular/material/dialog'; -import { AddOrganizationComponent } from '../add-organization/add-organization.component'; -import { AddResearcherComponent } from '../add-researcher/add-researcher.component'; -import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; -import { DmpListingModel } from '@app/core/model/dmp/dmp-listing'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria'; -import { DmpStatus } from '@app/core/common/enum/dmp-status'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { LanguageInfo } from '@app/core/model/language-info'; -import { LanguageInfoService } from '@app/core/services/culture/language-info-service'; -import { UserModel } from '@app/core/model/user/user'; -import { AuthService } from '@app/core/services/auth/auth.service'; -import { OrganisationService } from '@app/core/services/organisation/organisation.service'; - -@Component({ - selector: 'main-info', - templateUrl: './main-info.component.html', - styleUrls: ['./main-info.component.scss'] -}) -export class MainInfoComponent extends BaseComponent implements OnInit { - - @Input() formGroup: UntypedFormGroup = null; - // @Input() datasetFormGroup: FormGroup; - @Input() isNewVersion: boolean; - @Input() isUserOwner: boolean; - @Input() isClone: boolean; - - @Output() onFormChanged: EventEmitter = new EventEmitter(); - public formControl = new UntypedFormControl(); - - private associates: UserModel[] = []; - - organisationsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: this.filterOrganisations.bind(this), - 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['tag'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')) - }; - researchersAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: this.filterResearchers.bind(this), - 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['tag'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')) - }; - - dmpAutoCompleteConfiguration: SingleAutoCompleteConfiguration = { - filterFn: this.searchDmp.bind(this), - initialItems: (extraData) => this.searchDmp(''), - displayFn: (item) => this.getDatasetDisplay(item), - titleFn: (item) => item['label'], - subtitleFn: (item) => this.language.instant('DATASET-WIZARD.FIRST-STEP.SUB-TITLE') + new Date(item['creationTime']).toISOString() - }; - - constructor( - private language: TranslateService, - private configurationService: ConfigurationService, - private externalSourcesService: ExternalSourcesService, - private dmpService: DmpService, - private dialog: MatDialog, - private languageInfoService: LanguageInfoService, - private authentication: AuthService, - private organizationService: OrganisationService - ) { - super(); - } - - ngOnInit() { - if (this.isNewVersion) { - this.formGroup.get('label').disable(); - } - - if (!this.isUserOwner && !this.isClone) { - this.formGroup.disable(); - } - if (isNullOrUndefined(this.formGroup.get('extraProperties').get('publicDate').value)) { - this.formGroup.get('extraProperties').get('publicDate').patchValue(new Date()); - } - - let associate: UserModel = { - id: this.authentication.userId()?.toString(), - name: this.authentication.getPrincipalName(), - appRoles: this.authentication.getRoles(), - email: this.authentication.getUserProfileEmail() - }; - this.associates.push(associate); - if (isNullOrUndefined(this.formGroup.get('extraProperties').get('contact').value)) { - this.formGroup.get('extraProperties').get('contact').patchValue(associate.id); - } - if (isNullOrUndefined(this.formGroup.get('extraProperties').get('language').value)) { - this.formGroup.get('extraProperties').get('language').patchValue('en'); - } - } - - // Researchers - filterResearchers(value: string): Observable { - return this.externalSourcesService.searchDMPResearchers({ criteria: { name: value, like: null } }); - } - - addResearcher(event: MouseEvent) { - event.stopPropagation(); - const dialogRef = this.dialog.open(AddResearcherComponent, { - data: this.formGroup.get('researchers') - }); - dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { - if (result) { - const fullName = result.firstName + " " + result.lastName; - const newItem = { - label: null, - name: fullName, - id: null, - status: 0, - key: "Internal", - reference: result.reference - }; - const researchersArray = this.formGroup.get('researchers').value || []; - researchersArray.push(newItem); - this.formGroup.get('researchers').setValue(researchersArray); - } - }); - } - - // Organizations - showOrganizationCreator(): boolean { - return this.configurationService.allowOrganizationCreator; - } - - filterOrganisations(value: string): Observable { - return this.organizationService.searchGeneralOrganisations({ criteria: { labelLike: value } }); - } - - cantAddOrganizations(): boolean { - if (!isNullOrUndefined(this.formGroup.get('organizations'))) { - return this.formGroup.get('organiztions').disabled; - } else { - return false; - } - } - - addOrganization(event: MouseEvent) { - event.stopPropagation(); - const dialogRef = this.dialog.open(AddOrganizationComponent, { - data: this.formGroup.get('organisations') - }); - dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { - if (result) { - const fullName = result.name; - const newItem = { - label: null, - name: fullName, - id: null, - status: 0, - key: "Internal", - reference: result.reference - }; - const organizationsArray = this.formGroup.get('organisations').value || []; - organizationsArray.push(newItem); - this.formGroup.get('organisations').setValue(organizationsArray); - } - }); - } - - searchDmp(query: string): Observable { - const fields: Array = new Array(); - fields.push('-created'); - const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dmpDataTableRequest.criteria = new DmpCriteria(); - dmpDataTableRequest.criteria.like = query; - dmpDataTableRequest.criteria.status = DmpStatus.Draft; - return this.dmpService.getPaged(dmpDataTableRequest, "autocomplete").pipe(map(x => x.data)); - } - - getDatasetDisplay(item: any): string { - // if (!this.isPublic) { - // return (item['status'] ? this.language.instant('TYPES.DATASET-STATUS.FINALISED').toUpperCase() : this.language.instant('TYPES.DATASET-STATUS.DRAFT').toUpperCase()) + ': ' + item['label']; - // } - // else { return item['label']; } - return item['label'] ? item['label'] : null; - } - - getLanguageInfos(): LanguageInfo[] { - return this.languageInfoService.getLanguageInfoValues(); - } - - getAssociates(): UserModel[] { - let associates: UserModel[]; - if (this.formGroup.get('associatedUsers').value && this.formGroup.get('associatedUsers').value.length > 0) { - associates = []; - } else { - associates = this.associates; - } - //associates = (this.formGroup.get('researchers').value as any[]); - associates = associates.concat(this.formGroup.get('associatedUsers').value); - return associates; - } -} diff --git a/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.html b/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.html deleted file mode 100644 index 62cc95064..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.html +++ /dev/null @@ -1,39 +0,0 @@ -
-
-
-
- Collaborators -
- add{{'DMP-LISTING.ACTIONS.INVITE' | translate}} -
-
-
- - - - - - - - - - - - - -
{{'USERS.LISTING.NAME' | translate}}{{'USERS.LISTING.EMAIL' | translate}}{{'USERS.LISTING.PERMISSIONS' | translate}}
{{user.name}}{{user.email}}{{roleDisplay(user)}} -
- delete -
-
- -
-
-
-
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 deleted file mode 100644 index 35fc52eda..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.scss +++ /dev/null @@ -1,55 +0,0 @@ -.table-header { - background-color: #eeeeee; - color: #0c7489; - // color: #0070c0; - height: 2em; -} - -.table-title { - align-self: center; - cursor: default; -} - -.table-action { - display: flex; - margin-left: auto; - cursor: pointer; -} - -.table-action span { - align-self: center; -} - -.table-container { - border: 3px solid #f2f2f2; - margin-top: 0px; - padding: 0.5em; - cursor: default; -} - -table { - width: 100%; - border-collapse: collapse; - color: black; -} - -td { - padding: 8px; - text-align: left; -} - -th { - background: linear-gradient(180deg, #f6f6f6, #fff); - padding: 8px; - text-align: left; - text-transform: uppercase; -} - -.remove_user { - color: #992626; - cursor: pointer; -} - -.remove_user :hover { - color: #ba2c2c; -} 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 deleted file mode 100644 index e8b10a623..000000000 --- a/dmp-frontend/src/app/ui/dmp/editor/people-tab/people-tab.component.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { MatDialog } from '@angular/material/dialog'; -import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component'; -import { TranslateService } from '@ngx-translate/core'; -import { UserInfoListingModel } from '../../../../core/model/user/user-info-listing'; -import { AuthService } from '../../../../core/services/auth/auth.service'; -import { DmpService } from '../../../../core/services/dmp/dmp.service'; -import { DmpInvitationDialogComponent } from '../../invitation/dmp-invitation-dialog.component'; -import { DmpEditorModel } from '../dmp-editor.model'; - -@Component({ - selector: 'app-people-tab', - templateUrl: './people-tab.component.html', - styleUrls: ['./people-tab.component.scss'] -}) -export class PeopleTabComponent implements OnInit { - - @Input() formGroup: UntypedFormGroup; - @Input() dmp: DmpEditorModel; - @Input() isPublic: boolean; - @Input() isFinalized: boolean; - - constructor( - private dialog: MatDialog, - private translate: TranslateService, - private authentication: AuthService, - private language: TranslateService, - private dmpService: DmpService - ) { } - - ngOnInit() { - } - - openShareDialog(rowId: any, rowName: any) { - const dialogRef = this.dialog.open(DmpInvitationDialogComponent, { - // height: '250px', - // width: '700px', - autoFocus: false, - data: { - dmpId: rowId, - dmpName: rowName - } - }); - } - - roleDisplay(user: UserInfoListingModel) { - if (user.role === 0) { - return this.translate.instant('DMP-LISTING.OWNER'); - } - else if (user.role === 1) { - return this.translate.instant('DMP-LISTING.MEMBER'); - } - else { - return this.translate.instant('DMP-LISTING.OWNER'); - } - } - - isOwner() { - const principalId: string = this.authentication.userId()?.toString(); - var isOwner: boolean = false; - if (principalId) { - this.formGroup.get('users').value.forEach(element => { - if (principalId === element.id && element.role === 0) { - isOwner = true; - } - }); - } - return isOwner; - } - - removeCollaborator(id: string) { - const dialogRef = this.dialog.open(ConfirmationDialogComponent, { - maxWidth: '300px', - data: { - message: this.language.instant('GENERAL.CONFIRMATION-DIALOG.DELETE-USER'), - confirmButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.REMOVE'), - cancelButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CANCEL'), - isDeleteConfirmation: false - } - }); - dialogRef.afterClosed().subscribe(result => { - if (result) { - this.formGroup.get('users').setValue(this.formGroup.get('users').value.filter(function (val, index, arr) { - return val.id !== id; - })); - } - }); - } -} diff --git a/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation-dialog.component.ts index 5c061918d..b7b19a9ff 100644 --- a/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation-dialog.component.ts +++ b/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation-dialog.component.ts @@ -1,23 +1,20 @@ import { COMMA, ENTER } from '@angular/cdk/keycodes'; -import { Component, Inject, OnInit, ViewChild } from '@angular/core'; +import { Component, Inject, OnInit } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { MatChipInputEvent } from '@angular/material/chips'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; -import { DmpInvitation } from '@app/core/model/dmp/invitation/dmp-invitation'; -import { DmpInvitationUser } from '@app/core/model/dmp/invitation/dmp-invitation-user'; -import { DmpInvitationUserCriteria } from '@app/core/query/dmp/dmp-invitation-user-criteria'; +import { DmpUserRole } from '@app/core/common/enum/dmp-user-role'; +import { User } from '@app/core/model/user/user'; import { RequestItem } from '@app/core/query/request-item'; -import { DmpInvitationService } from '@app/core/services/dmp/dmp-invitation.service'; +import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; +import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; import { BaseComponent } from '@common/base/base.component'; +import { TranslateService } from '@ngx-translate/core'; import { Observable } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; -import { Role } from '@app/core/common/enum/role'; -import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; -import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; -import { TranslateService } from '@ngx-translate/core'; @Component({ selector: 'app-invitation-dialog-component', @@ -28,9 +25,9 @@ export class DmpInvitationDialogComponent extends BaseComponent implements OnIni public formGroup: UntypedFormGroup; public filteredUsersAsync = false; - public filteredUsers: DmpInvitationUser[]; + public filteredUsers: User[]; public emails: string[] = []; - public roles = Role; + public roles = DmpUserRole; visible = true; selectable = true; removable = true; @@ -38,7 +35,6 @@ export class DmpInvitationDialogComponent extends BaseComponent implements OnIni readonly separatorKeysCodes: number[] = [ENTER, COMMA]; constructor( - public invitationService: DmpInvitationService, public enumUtils: EnumUtils, public route: ActivatedRoute, public router: Router, @@ -48,31 +44,33 @@ export class DmpInvitationDialogComponent extends BaseComponent implements OnIni @Inject(MAT_DIALOG_DATA) public data: any ) { super(); - } + } ngOnInit(): void { - const invitation = new DmpInvitation(); - invitation.dataManagementPlan = this.data.dmpId; - invitation.role = Role.Member; - this.formGroup = invitation.buildForm(); + //TODO refactor + // const invitation = new DmpInvitation(); + // invitation.dataManagementPlan = this.data.dmpId; + // invitation.role = Role.Member; + // this.formGroup = invitation.buildForm(); } usersAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { filterFn: this.filterUsers.bind(this), initialItems: (excludedItems: any[]) => this.filterUsers('').pipe(map(result => result.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1))), - displayFn: (item) => typeof(item) === 'string' ? item : item.name, - titleFn: (item) => typeof(item) === 'string' ? item : item.name, + displayFn: (item) => typeof (item) === 'string' ? item : item.name, + titleFn: (item) => typeof (item) === 'string' ? item : item.name, subtitleFn: (item) => item.email, valueAssign: (item) => { - const result = typeof(item) === 'string' ? item : item.email; + const result = typeof (item) === 'string' ? item : item.email; return result; }, autoSelectFirstOptionOnBlur: true, - appendClassToItem: [{class: 'invalid-email', applyFunc: (item)=> { - const val = typeof(item) === 'string'? item : item.email; - const regexp = new RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/); - return !regexp.test(val); - } + appendClassToItem: [{ + class: 'invalid-email', applyFunc: (item) => { + const val = typeof (item) === 'string' ? item : item.email; + const regexp = new RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/); + return !regexp.test(val); + } }] }; @@ -99,45 +97,38 @@ export class DmpInvitationDialogComponent extends BaseComponent implements OnIni invitationObject.dataManagementPlan = this.data.dmpId; invitationObject.role = this.formGroup.get('role').value; invitationObject.users = []; - invitationObject.users.push(...(this.formGroup.get('users').value).filter(user => typeof(user) === 'string').map(email => ({ email: email, name: email }))); - invitationObject.users.push(...(this.formGroup.get('users').value).filter(user => typeof(user) !== 'string')); + invitationObject.users.push(...(this.formGroup.get('users').value).filter(user => typeof (user) === 'string').map(email => ({ email: email, name: email }))); + invitationObject.users.push(...(this.formGroup.get('users').value).filter(user => typeof (user) !== 'string')); //invitationObject.users.push(...this.formGroup.get('users').value); this.emails.forEach(email => { invitationObject.users.push({ email: email, name: email }); }); - this.invitationService.inviteDmpInvitationUsers(invitationObject) - .pipe(takeUntil(this._destroyed)) - .subscribe( - complete => { - this.dialogRef.close(); - this.onCallbackSuccess(); - }, - error => this.onCallbackError(error) - ); + //TODO refactor + // this.invitationService.inviteDmpInvitationUsers(invitationObject) + // .pipe(takeUntil(this._destroyed)) + // .subscribe( + // complete => { + // this.dialogRef.close(); + // this.onCallbackSuccess(); + // }, + // error => this.onCallbackError(error) + // ); } closeDialog(): void { this.dialogRef.close(); } - filterUsers(value: string): Observable { + filterUsers(value: string): Observable { this.filteredUsers = undefined; this.filteredUsersAsync = true; - const request = new RequestItem(); - request.criteria = { like: value }; - return this.invitationService.getDmpInvitationUsers(request) - .pipe(takeUntil(this._destroyed)); - // .subscribe(items => { - // this.filteredUsers = new JsonSerializer(DmpInvitationUser).fromJSONArray(items); - // if (!this.filteredUsers || this.filteredUsers.length === 0) { - // const user = new DmpInvitationUser(); - // user.email = value; - // user.name = value; - // this.filteredUsers.push(user); - // } - // this.filteredUsersAsync = false; - // }); + //TODO refactor + // const request = new RequestItem(); + // request.criteria = { like: value }; + // return this.invitationService.getDmpInvitationUsers(request) + // .pipe(takeUntil(this._destroyed)); + return null; } hasValue(): boolean { @@ -145,11 +136,11 @@ export class DmpInvitationDialogComponent extends BaseComponent implements OnIni } onCallbackSuccess(): void { - this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.INVITATION-DIALOG.SUCCESS' ), SnackBarNotificationLevel.Success); + this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.INVITATION-DIALOG.SUCCESS'), SnackBarNotificationLevel.Success); } onCallbackError(errorResponse: any) { - this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.INVITATION-DIALOG.ERROR' ), SnackBarNotificationLevel.Error); + this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.INVITATION-DIALOG.ERROR'), SnackBarNotificationLevel.Error); } } diff --git a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts index b17af0e78..45f23a416 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/criteria/dmp-criteria-dialog.component.ts @@ -1,7 +1,6 @@ import { Inject, Component, ViewChild, OnInit, Output, EventEmitter } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { DmpCriteriaComponent } from './dmp-criteria.component'; -import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria'; import { UntypedFormGroup } from '@angular/forms'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { HttpClient } from '@angular/common/http'; 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 de4fc4099..98ebcb241 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 @@ -2,28 +2,14 @@ import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core'; import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { GrantListingModel } from '@app/core/model/grant/grant-listing'; -import { DatasetProfileCriteria } from '@app/core/query/dataset-profile/dataset-profile-criteria'; -import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria'; -import { GrantCriteria } from '@app/core/query/grant/grant-criteria'; -import { OrganisationCriteria } from '@app/core/query/organisation/organisation-criteria'; -import { UserCriteria } from '@app/core/query/user/user-criteria'; -import { DatasetProfileService } from '@app/core/services/dataset-profile/dataset-profile.service'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { GrantService } from '@app/core/services/grant/grant.service'; -import { OrganisationService } from '@app/core/services/organisation/organisation.service'; -import { UserServiceOld } from '@app/core/services/user/user.service-old'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; import { BaseCriteriaComponent } from '@app/ui/misc/criteria/base-criteria.component'; import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model'; import { TranslateService } from '@ngx-translate/core'; import { map, takeUntil } from 'rxjs/operators'; import { AuthService } from '@app/core/services/auth/auth.service'; -import { isNullOrUndefined } from '@app/utilities/enhancers/utils'; -import { DatasetService } from '@app/core/services/dataset/dataset.service'; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; import { Observable } from 'rxjs'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; @Component({ selector: 'app-dmp-criteria-component', diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html index f06be2118..71cd988bb 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.component.html @@ -47,7 +47,7 @@
- +
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 baaca9e64..9e4e464c2 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 @@ -8,8 +8,7 @@ import { MatSort } from '@angular/material/sort'; import { ActivatedRoute, Router } from '@angular/router'; import { RecentActivityOrder } from '@app/core/common/enum/recent-activity-order'; import { AuthService } from '@app/core/services/auth/auth.service'; -import { DmpService, DmpServiceNew } from '@app/core/services/dmp/dmp.service'; -import { GrantService } from "@app/core/services/grant/grant.service"; +import { DmpService } from '@app/core/services/dmp/dmp.service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { UiNotificationService } from '@app/core/services/notification/ui-notification-service'; import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; @@ -19,6 +18,7 @@ import { GuidedTourService } from '@app/library/guided-tour/guided-tour.service' // import { BreadcrumbItem } from '@app/ui/misc/breadcrumb/definition/breadcrumb-item'; import { IsActive } from '@app/core/common/enum/is-active.enum'; import { Description } from '@app/core/model/description/description'; +import { DmpBlueprint } from '@app/core/model/dmp-blueprint/dmp-blueprint'; import { Dmp, DmpUser } from '@app/core/model/dmp/dmp'; import { DmpLookup } from '@app/core/query/dmp.lookup'; import { BaseComponent } from '@common/base/base.component'; @@ -27,7 +27,6 @@ import { TranslateService } from '@ngx-translate/core'; import { NgDialogAnimationService } from "ng-dialog-animation"; import { debounceTime, takeUntil } from 'rxjs/operators'; import { nameof } from 'ts-simple-nameof'; -import { FileFormat } from '@app/core/model/file/file-format.model'; @Component({ selector: 'app-dmp-listing-component', @@ -45,7 +44,6 @@ export class DmpListingComponent extends BaseComponent implements OnInit { //IBr isPublic: boolean = false; hasListingItems = null; pageSize: number = 5; - fileFormats: FileFormat[] = []; public formGroup = new UntypedFormBuilder().group({ like: new UntypedFormControl(), order: new UntypedFormControl() @@ -56,14 +54,12 @@ export class DmpListingComponent extends BaseComponent implements OnInit { //IBr constructor( private dmpService: DmpService, - private dmpServiceNew: DmpServiceNew, private router: Router, private route: ActivatedRoute, public dialogAnimation: NgDialogAnimationService, public dialog: MatDialog, public enumUtils: EnumUtils, private language: TranslateService, - private grantService: GrantService, private uiNotificationService: UiNotificationService, private authService: AuthService, private guidedTourService: GuidedTourService, @@ -77,9 +73,11 @@ export class DmpListingComponent extends BaseComponent implements OnInit { //IBr this.matomoService.trackPageView('DMPs'); this.isPublic = this.router.url.startsWith('/explore-plans'); if (this.isPublic) { - this.formGroup.get('order').setValue(this.order.PUBLISHED); + //TODO refactor + // this.formGroup.get('order').setValue(this.order.PUBLISHED); } else { - this.formGroup.get('order').setValue(this.order.MODIFIED); + //TODO refactor + // this.formGroup.get('order').setValue(this.order.MODIFIED); } if (!this.isPublic && !this.authService.currentAccountIsAuthenticated()) { this.router.navigateByUrl("/explore-plans"); @@ -108,8 +106,6 @@ export class DmpListingComponent extends BaseComponent implements OnInit { //IBr this.formGroup.get('order').valueChanges .pipe(takeUntil(this._destroyed)) .subscribe(x => this.refresh(this.lookup)); - - this.dmpServiceNew.getExportFormats().pipe(takeUntil(this._destroyed)).subscribe(result => this.fileFormats = result); } public dashboardTour: GuidedTour = { @@ -165,6 +161,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit { //IBr fields: [ nameof(x => x.id), nameof(x => x.label), + nameof(x => x.description), nameof(x => x.status), nameof(x => x.accessType), nameof(x => x.version), @@ -172,6 +169,10 @@ export class DmpListingComponent extends BaseComponent implements OnInit { //IBr nameof(x => x.updatedAt), [nameof(x => x.descriptions), nameof(x => x.id)].join('.'), [nameof(x => x.descriptions), nameof(x => x.label)].join('.'), + + [nameof(x => x.blueprint), nameof(x => x.id)].join('.'), + [nameof(x => x.blueprint), nameof(x => x.label)].join('.'), + // [nameof(x => x.descriptionTemplate), nameof(x => x.label)].join('.'), // [nameof(x => x.dmp), nameof(x => x.id)].join('.'), // [nameof(x => x.dmp), nameof(x => x.label)].join('.'), @@ -186,7 +187,7 @@ export class DmpListingComponent extends BaseComponent implements OnInit { //IBr // [nameof(x => x.dmp), nameof(x => x.dmpReferences), nameof(x => x.reference), nameof(x => x.reference)].join('.'), ] }; - this.dmpServiceNew.query(lookup).pipe(takeUntil(this._destroyed)) + this.dmpService.query(lookup).pipe(takeUntil(this._destroyed)) .subscribe(result => { if (!result) { return []; } this.totalCount = result.count; diff --git a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.module.ts b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.module.ts index a34ec76af..148a6688e 100644 --- a/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.module.ts +++ b/dmp-frontend/src/app/ui/dmp/listing/dmp-listing.module.ts @@ -4,6 +4,8 @@ import { DmpListingComponent } from '@app/ui/dmp/listing/dmp-listing.component'; import { DmpListingItemComponent } from '@app/ui/dmp/listing/listing-item/dmp-listing-item.component'; import { CommonFormsModule } from '@common/forms/common-forms.module'; import { CommonUiModule } from '@common/ui/common-ui.module'; +import { CloneDmpDialogModule } from '../clone-dialog/dmp-clone-dialog.module'; +import { NewVersionDmpDialogModule } from '../new-version-dialog/dmp-new-version-dialog.module'; import { DmpListingRoutingModule } from './dmp-listing.routing'; @NgModule({ @@ -11,6 +13,8 @@ import { DmpListingRoutingModule } from './dmp-listing.routing'; CommonUiModule, CommonFormsModule, FormattingModule, + CloneDmpDialogModule, + NewVersionDmpDialogModule, DmpListingRoutingModule ], declarations: [ 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 f067d197f..876abaf1a 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 @@ -31,43 +31,20 @@ open_in_new{{'DMP-LISTING.ACTIONS.EXPORT' | translate}} add{{'DMP-LISTING.ACTIONS.ADD-DESCRIPTION-SHORT' | translate}} group_add{{'DMP-LISTING.ACTIONS.INVITE-SHORT' | translate}} - filter_none{{'DMP-LISTING.ACTIONS.CLONE' | translate}} + filter_none{{'DMP-LISTING.ACTIONS.CLONE' | translate}} library_books{{'DMP-LISTING.ACTIONS.VIEW-VERSION' | translate}} delete{{ 'DMP-LISTING.ACTIONS.DELETE' | translate }} more_horiz
- - -
- -
+
- - -
+
\ No newline at end of file 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 5ccccc0bd..d5f2a7556 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 @@ -6,9 +6,9 @@ import { Router } from '@angular/router'; import { DmpAccessType } from '@app/core/common/enum/dmp-access-type'; import { DmpUserRole } from '@app/core/common/enum/dmp-user-role'; import { ReferenceType } from '@app/core/common/enum/reference-type'; -import { Dmp } from '@app/core/model/dmp/dmp'; +import { CloneDmpPersist, Dmp } from '@app/core/model/dmp/dmp'; import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.service'; -import { DmpServiceNew } from '@app/core/services/dmp/dmp.service'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; import { LockService } from '@app/core/services/lock/lock.service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; @@ -24,6 +24,9 @@ import { DmpStatus } from '../../../../core/common/enum/dmp-status'; import { AuthService } from '../../../../core/services/auth/auth.service'; import * as FileSaver from 'file-saver'; import { FileFormat } from '@app/core/model/file/file-format.model'; +import { FileTransformerService } from '@app/core/services/file-transformer/file-transformer.service'; +import { CloneDmpDialogComponent } from '../../clone-dialog/dmp-clone-dialog.component'; +import { NewVersionDmpDialogComponent } from '../../new-version-dialog/dmp-new-version-dialog.component'; @Component({ selector: 'app-dmp-listing-item-component', @@ -35,7 +38,6 @@ export class DmpListingItemComponent extends BaseComponent implements OnInit { @Input() dmp: Dmp; @Input() showDivider: boolean = true; @Input() isPublic: boolean; - @Input() fileFormats: FileFormat[] = []; @Output() onClick: EventEmitter = new EventEmitter(); isDraft: boolean; @@ -49,7 +51,7 @@ export class DmpListingItemComponent extends BaseComponent implements OnInit { private dialog: MatDialog, private authentication: AuthService, public enumUtils: EnumUtils, - private dmpService: DmpServiceNew, + private dmpService: DmpService, private dmpBlueprintService: DmpBlueprintService, private language: TranslateService, private uiNotificationService: UiNotificationService, @@ -58,6 +60,7 @@ export class DmpListingItemComponent extends BaseComponent implements OnInit { private httpClient: HttpClient, private matomoService: MatomoService, public referenceService: ReferenceService, + public fileTransformerService: FileTransformerService, private fileUtils: FileUtils) { super(); } @@ -118,126 +121,38 @@ export class DmpListingItemComponent extends BaseComponent implements OnInit { return this.dmp.dmpUsers?.some(x => (x.user.id === principalId)); } - cloneOrNewVersionClicked(dmp: Dmp, isNewVersion: boolean) { - // this.dmpService.getSingle(dmp.id).pipe(map(data => data as DmpModel)) - // .pipe(takeUntil(this._destroyed)) - // .subscribe(data => { - // this.dmpModel = new DmpEditorModel(); - // this.dmpModel.grant = new GrantTabModel(); - // this.dmpModel.project = new ProjectFormModel(); - // this.dmpModel.funder = new FunderFormModel(); - // this.dmpModel.extraProperties = new ExtraPropertiesFormModel(); - // this.dmpModel.fromModel(data); - // this.dmpModel.status = DmpStatus.Draft; - // this.dmpFormGroup = this.dmpModel.buildForm(); - - // if (!isNullOrUndefined(this.dmpFormGroup.get('profile').value)) { - // this.getBlueprintDefinition(Guid.parse(this.dmpFormGroup.get('profile').value), result => { - // this.checkForGrant(result.definition); - // this.checkForFunder(result.definition); - // this.checkForProject(result.definition); - // }); - // } - - // if (!isNewVersion) { - // this.dmpFormGroup.get('label').setValue(dmp.label + " New"); - // } - // this.openCloneDialog(isNewVersion); - // }); + cloneClicked() { + const dialogRef = this.dialog.open(CloneDmpDialogComponent, { + maxWidth: '700px', + maxHeight: '80vh', + data: { + dmp: this.dmp + } + }); + dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe((result: Dmp) => { + if (result) { + this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); + this.router.navigate(['/plans/edit/', result.id]); + } + }); } - openCloneDialog(isNewVersion: boolean) { - // TODO: fix this - // const dialogRef = this.dialog.open(CloneDialogComponent, { - // maxWidth: '700px', - // maxHeight: '80vh', - // data: { - // formGroup: this.dmpFormGroup, - // datasets: this.dmpFormGroup.get('datasets').value, - // isNewVersion: isNewVersion, - // confirmButton: this.language.instant('DMP-EDITOR.CLONE-DIALOG.SAVE'), - // cancelButton: this.language.instant('DMP-EDITOR.CLONE-DIALOG.CANCEL'), - // } - // }); - // dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { - // if (result) { - // if (!isNewVersion) { - // this.dmpService.clone(this.dmpFormGroup.getRawValue(), this.dmp.id) - // .pipe(takeUntil(this._destroyed)) - // .subscribe( - // complete => this.onCloneOrNewVersionCallbackSuccess(complete), - // error => this.onCloneOrNewVersionCallbackError(error) - // ); - // } else if (isNewVersion) { - // this.dmpService.newVersion(this.dmpFormGroup.getRawValue(), this.dmp.id) - // .pipe(takeUntil(this._destroyed)) - // .subscribe( - // complete => this.onCloneOrNewVersionCallbackSuccess(complete), - // error => this.onCloneOrNewVersionCallbackError(error) - // ); - // } - // } - // }); + newVersionClicked() { + const dialogRef = this.dialog.open(NewVersionDmpDialogComponent, { + maxWidth: '700px', + maxHeight: '80vh', + data: { + dmp: this.dmp + } + }); + dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe((result: Dmp) => { + if (result) { + this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); + this.router.navigate(['/plans/edit/', result.id]); + } + }); } - downloadXml(id: Guid) { - // TODO: Add this - // this.dmpService.downloadXML(id) - // .pipe(takeUntil(this._destroyed)) - // .subscribe(response => { - // const blob = new Blob([response.body], { type: 'application/xml' }); - // const filename = this.fileUtils.getFilenameFromContentDispositionHeader(response.headers.get('Content-Disposition')); - - // FileSaver.saveAs(blob, filename); - // this.matomoService.trackDownload('dmps', "xml", id); - // }); - } - - download(id: Guid, format: string) { - // TODO: Add this - this.dmpService.download(id.toString(), format) - .pipe(takeUntil(this._destroyed)) - .subscribe(response => { - const blob = new Blob([response.body], { type: 'application/octet-stream' }); - const filename = this.fileUtils.getFilenameFromContentDispositionHeader(response.headers.get('Content-Disposition')); - - FileSaver.saveAs(blob, filename); - this.matomoService.trackDownload('dmps', format, id.toString()); - }); - } - - // downloadPDF(id: Guid) { - // this.dmpService.downloadPDF(id.toString()) - // .pipe(takeUntil(this._destroyed)) - // .subscribe(response => { - // const blob = new Blob([response.body], { type: 'application/pdf' }); - // const filename = this.fileUtils.getFilenameFromContentDispositionHeader(response.headers.get('Content-Disposition')); - - // FileSaver.saveAs(blob, filename); - // this.matomoService.trackDownload('dmps', "pdf", id.toString()); - // }); - // } - - downloadJson(id: Guid) { - // TODO: Add this - // this.dmpService.downloadJson(id) - // .pipe(takeUntil(this._destroyed)) - // .subscribe(response => { - // const blob = new Blob([response.body], { type: 'application/json' }); - // const filename = this.fileUtils.getFilenameFromContentDispositionHeader(response.headers.get('Content-Disposition')); - // FileSaver.saveAs(blob, filename); - // this.matomoService.trackDownload('dmps', "json", id); - // }, async error => { - // this.onExportCallbackError(error); - // }); - } - - // async onExportCallbackError(error: any) { - // const errorJsonText = await error.error.text(); - // const errorObj = JSON.parse(errorJsonText); - // this.uiNotificationService.snackBarNotification(errorObj.message, SnackBarNotificationLevel.Error); - // } - deleteClicked(id: Guid) { this.lockService.checkLockStatus(Guid.parse(id.toString())).pipe(takeUntil(this._destroyed)) .subscribe(lockStatus => { @@ -302,20 +217,6 @@ export class DmpListingItemComponent extends BaseComponent implements OnInit { this.uiNotificationService.snackBarNotification(error.error.message ? error.error.message : this.language.instant('GENERAL.SNACK-BAR.UNSUCCESSFUL-DELETE'), SnackBarNotificationLevel.Error); } - onCallbackSuccess(): void { - this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); - this.router.navigate(['/plans']); - } - - onCloneOrNewVersionCallbackSuccess(cloneId: String): void { - this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); - this.router.navigate(['/plans/edit/', cloneId]); - } - - onCloneOrNewVersionCallbackError(error: any) { - this.uiNotificationService.snackBarNotification(error.error.message ? error.error.message : this.language.instant('GENERAL.SNACK-BAR.UNSUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Error); - } - isUserOwner(dmp: Dmp): boolean { const principalId: Guid = this.authentication.userId(); if (principalId) return !!dmp.dmpUsers?.find(x => (x.role === DmpUserRole.Owner) && (principalId === x.id)); diff --git a/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.html b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.html new file mode 100644 index 000000000..5a16f71b9 --- /dev/null +++ b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.html @@ -0,0 +1,67 @@ +
+
+
{{'DMP-NEW-VERSION-DIALOG.TITLE' | translate}}
+ close +
+ +
+
+
{{'DMP-NEW-VERSION-DIALOG.FIELDS.LABEL' | translate}}*
+
+
+ + + {{formGroup.get('label').getError('backendError').message}} + {{'GENERAL.VALIDATION.REQUIRED' | translate}} + +
+
+ +
+
+
{{'DMP-NEW-VERSION-DIALOG.FIELDS.DESCRIPTION' | translate}}
+
+
{{'DMP-NEW-VERSION-DIALOG.FIELDS.DESCRIPTION-HINT' | translate}}
+
+ + +
+
+ +
+
+
{{'DMP-NEW-VERSION-DIALOG.FIELDS.BLUEPRINT' | translate}}*
+
+
+ + + + +
+
+
+
+
{{'DMP-NEW-VERSION-DIALOG.FIELDS.DESCRIPTIONS' | translate}}
+
+
+
{{'DMP-NEW-VERSION-DIALOG.FIELDS.DESCRIPTIONS-HINT' | translate}}
+
+
+ + + + {{description.label}} + + + +
+
+
{{'DMP-NEW-VERSION-DIALOG.NO-DESCRIPTIONS' | translate}}
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.scss b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.scss new file mode 100644 index 000000000..1aa4894b8 --- /dev/null +++ b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.scss @@ -0,0 +1,60 @@ +.new-version-dialog { + padding: 1.5rem; + + .heading { + text-align: left; + font-weight: 700; + font-size: 18px; + letter-spacing: 0px; + color: #212121; + opacity: 0.81; + margin-bottom: 0.625rem; + } + + .heading-1 { + text-align: left; + font-weight: 700; + font-size: 20px; + letter-spacing: 0px; + color: #212121; + opacity: 0.81; + margin-bottom: 0.625rem; + } + + .close-icon { + cursor: pointer; + margin-right: 20px; + padding: .4rem; + width: auto !important; + height: auto !important; + } + + .close-icon:hover { + background-color: #ECECED !important; + border-radius: 50%; + } + + .cancel-btn { + min-width: 101px; + height: 43px; + background: #ffffff; + border: 1px solid #b5b5b5; + border-radius: 30px; + opacity: 1; + } + + .confirm-btn { + min-width: 84px; + height: 43px; + background: #ffffff; + color: var(--primary-color); + border: 1px solid var(--primary-color); + border-radius: 30px; + opacity: 1; + } + + .confirm-btn:hover { + background-color: var(--primary-color); + color: #ffffff; + } +} diff --git a/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.ts new file mode 100644 index 000000000..a554437cb --- /dev/null +++ b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.component.ts @@ -0,0 +1,66 @@ +import { Component, Inject } from '@angular/core'; +import { UntypedFormGroup } from '@angular/forms'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { Dmp, NewVersionDmpPersist } from '@app/core/model/dmp/dmp'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; +import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; +import { BaseComponent } from '@common/base/base.component'; +import { TranslateService } from '@ngx-translate/core'; +import { takeUntil } from 'rxjs/operators'; +import { DmpNewVersionDialogEditorModel } from './dmp-new-version-dialog.editor.model'; +import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.service'; + +@Component({ + selector: 'app-dmp-new-version-dialog', + templateUrl: './dmp-new-version-dialog.component.html', + styleUrls: ['./dmp-new-version-dialog.component.scss'] +}) +export class NewVersionDmpDialogComponent extends BaseComponent { + + dmp: Dmp; + editorModel: DmpNewVersionDialogEditorModel; + formGroup: UntypedFormGroup; + + constructor( + public dialogRef: MatDialogRef, + private dmpService: DmpService, + public dmpBlueprintService: DmpBlueprintService, + private uiNotificationService: UiNotificationService, + private language: TranslateService, + @Inject(MAT_DIALOG_DATA) public data: any + ) { + super(); + this.dmp = data.dmp; + } + + ngOnInit() { + this.editorModel = new DmpNewVersionDialogEditorModel().fromModel(this.data.dmp); + this.formGroup = this.editorModel.buildForm(); + } + + hasDescriptions() { + return this.dmp.descriptions.length > 0; + } + + close() { + this.dialogRef.close(null); + } + + cancel() { + this.dialogRef.close(null); + } + + confirm() { + if (!this.formGroup.valid) { return; } + const value: NewVersionDmpPersist = this.formGroup.value; + this.dmpService.newVersion(value).pipe(takeUntil(this._destroyed)).subscribe( + dmp => this.dialogRef.close(dmp), + error => this.onCallbackError(error) + ); + + } + + onCallbackError(error: any) { + this.uiNotificationService.snackBarNotification(error.error.message ? error.error.message : this.language.instant('GENERAL.SNACK-BAR.UNSUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Error); + } +} diff --git a/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.editor.model.ts b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.editor.model.ts new file mode 100644 index 000000000..6ca660cd1 --- /dev/null +++ b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.editor.model.ts @@ -0,0 +1,54 @@ +import { UntypedFormBuilder, UntypedFormGroup, Validators } from "@angular/forms"; +import { Dmp, NewVersionDmpPersist } from "@app/core/model/dmp/dmp"; +import { BackendErrorValidator } from '@common/forms/validation/custom-validator'; +import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model'; +import { Validation, ValidationContext } from '@common/forms/validation/validation-context'; +import { Guid } from "@common/types/guid"; + +export class DmpNewVersionDialogEditorModel implements NewVersionDmpPersist { + id: Guid; + label: string; + description: String; + blueprintId: Guid; + descriptions: Guid[] = []; + + public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); + protected formBuilder: UntypedFormBuilder = new UntypedFormBuilder(); + + constructor() { } + + public fromModel(item: Dmp): DmpNewVersionDialogEditorModel { + if (item) { + this.id = item.id; + this.label = item.label; + this.description = item.description; + this.blueprintId = item.blueprint.id; + if (item.descriptions) { this.descriptions = item.descriptions.map(x => x.id); } + } + return this; + } + + buildForm(context: ValidationContext = null, disabled: boolean = false): UntypedFormGroup { + if (context == null) { context = this.createValidationContext(); } + + return this.formBuilder.group({ + id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators], + label: [{ value: this.label, disabled: disabled }, context.getValidation('label').validators], + description: [{ value: this.description, disabled: disabled }, context.getValidation('description').validators], + blueprintId: [{ value: this.blueprintId, disabled: disabled }, context.getValidation('blueprintId').validators], + descriptions: [{ value: this.descriptions, disabled: disabled }, context.getValidation('descriptions').validators], + }); + } + + createValidationContext(): ValidationContext { + const baseContext: ValidationContext = new ValidationContext(); + const baseValidationArray: Validation[] = new Array(); + baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(this.validationErrorModel, 'id')] }); + baseValidationArray.push({ key: 'label', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'label')] }); + baseValidationArray.push({ key: 'description', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'description')] }); + baseValidationArray.push({ key: 'blueprintId', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'blueprintId')] }); + baseValidationArray.push({ key: 'descriptions', validators: [BackendErrorValidator(this.validationErrorModel, 'descriptions')] }); + baseContext.validation = baseValidationArray; + return baseContext; + } +} diff --git a/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.module.ts b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.module.ts new file mode 100644 index 000000000..71ff8cdd4 --- /dev/null +++ b/dmp-frontend/src/app/ui/dmp/new-version-dialog/dmp-new-version-dialog.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { AutoCompleteModule } from '@app/library/auto-complete/auto-complete.module'; +import { RichTextEditorModule } from "@app/library/rich-text-editor/rich-text-editor.module"; +import { CommonUiModule } from '@common/ui/common-ui.module'; +import { NewVersionDmpDialogComponent } from './dmp-new-version-dialog.component'; + +@NgModule({ + imports: [CommonUiModule, FormsModule, ReactiveFormsModule, AutoCompleteModule, RichTextEditorModule], + declarations: [NewVersionDmpDialogComponent], + exports: [NewVersionDmpDialogComponent] +}) +export class NewVersionDmpDialogModule { + constructor() { } +} diff --git a/dmp-frontend/src/app/ui/dmp/new/start-new-dmp-dialogue/start-new-dmp-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/new/start-new-dmp-dialogue/start-new-dmp-dialog.component.ts index 962de5f91..43fc15a15 100644 --- a/dmp-frontend/src/app/ui/dmp/new/start-new-dmp-dialogue/start-new-dmp-dialog.component.ts +++ b/dmp-frontend/src/app/ui/dmp/new/start-new-dmp-dialogue/start-new-dmp-dialog.component.ts @@ -1,13 +1,13 @@ -import { Component, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog'; -import { Router } from '@angular/router'; -import { UiNotificationService, SnackBarNotificationLevel } from '@app/core/services/notification/ui-notification-service'; -import { TranslateService } from '@ngx-translate/core'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { takeUntil } from 'rxjs/operators'; -import { BaseComponent } from '@common/base/base.component'; -import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { HttpClient } from '@angular/common/http'; +import { Component, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog'; +import { Router } from '@angular/router'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; +import { MatomoService } from '@app/core/services/matomo/matomo-service'; +import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; +import { BaseComponent } from '@common/base/base.component'; +import { TranslateService } from '@ngx-translate/core'; +import { takeUntil } from 'rxjs/operators'; import { DmpUploadDialogComponent } from '../upload-dialogue/dmp-upload-dialog.component'; @Component({ @@ -66,15 +66,16 @@ export class StartNewDmpDialogComponent extends BaseComponent { }); dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { if (result && result.success) { - this.dmpService.uploadXml(result.fileList[0], result.dmpTitle, result.dmpBlueprints) - .pipe(takeUntil(this._destroyed)) - .subscribe( - (complete) => { - this.onCallbackImportComplete(); - this.dialog.closeAll(); - }, - (error) => this.onCallbackImportFail(error.error) - ); + //TODO refactor + // this.dmpService.uploadXml(result.fileList[0], result.dmpTitle, result.dmpBlueprints) + // .pipe(takeUntil(this._destroyed)) + // .subscribe( + // (complete) => { + // this.onCallbackImportComplete(); + // this.dialog.closeAll(); + // }, + // (error) => this.onCallbackImportFail(error.error) + // ); } }); } diff --git a/dmp-frontend/src/app/ui/dmp/new/upload-dialogue/dmp-upload-dialog.component.ts b/dmp-frontend/src/app/ui/dmp/new/upload-dialogue/dmp-upload-dialog.component.ts index 766fe87c1..284419940 100644 --- a/dmp-frontend/src/app/ui/dmp/new/upload-dialogue/dmp-upload-dialog.component.ts +++ b/dmp-frontend/src/app/ui/dmp/new/upload-dialogue/dmp-upload-dialog.component.ts @@ -1,15 +1,13 @@ import { HttpClient } from '@angular/common/http'; import { Component, Inject } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; -import { DatasetProfileCriteria } from '@app/core/query/dataset-profile/dataset-profile-criteria'; +import { DescriptionTemplate } from '@app/core/model/description-template/description-template'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; import { BaseComponent } from '@common/base/base.component'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { DmpService } from '../../../../core/services/dmp/dmp.service'; @Component({ selector: 'dmp-upload-dialog', @@ -91,12 +89,14 @@ export class DmpUploadDialogComponent extends BaseComponent { this.dmpTitle = null; } - filterProfiles(value: string): Observable { - const request = new DataTableRequest(null, null, { fields: ['+label'] }); - const criteria = new DatasetProfileCriteria(); - criteria.like = value; - request.criteria = criteria; - return this._service.searchDmpBlueprints(request); + filterProfiles(value: string): Observable { + // TODO refactor + // const request = new DataTableRequest(null, null, { fields: ['+label'] }); + // const criteria = new DatasetProfileCriteria(); + // criteria.like = value; + // request.criteria = criteria; + // return this._service.searchDmpBlueprints(request); + return null; } hasFile(): boolean { 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 7c7cb8584..febec2652 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 @@ -166,32 +166,11 @@

-
- -
+
-
@@ -225,4 +204,4 @@
- + \ No newline at end of file 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 3e91a2050..0d4a216e1 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 @@ -3,7 +3,7 @@ import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Params, Router } from '@angular/router'; import { DmpStatus } from '@app/core/common/enum/dmp-status'; import { AuthService } from '@app/core/services/auth/auth.service'; -import { DmpServiceNew } from '@app/core/services/dmp/dmp.service'; +import { DmpService } from '@app/core/services/dmp/dmp.service'; import { SnackBarNotificationLevel, UiNotificationService @@ -15,17 +15,16 @@ import { DescriptionStatus } from '@app/core/common/enum/description-status'; import { DmpAccessType } from '@app/core/common/enum/dmp-access-type'; import { DmpUserRole } from '@app/core/common/enum/dmp-user-role'; import { ReferenceType } from '@app/core/common/enum/reference-type'; -import { DepositConfigurationModel } from '@app/core/model/deposit/deposit-configuration'; +import { DepositConfiguration } from '@app/core/model/deposit/deposit-configuration'; import { Description } from '@app/core/model/description/description'; import { Dmp, DmpUser, DmpUserRemovePersist } from '@app/core/model/dmp/dmp'; import { DmpReference } from '@app/core/model/dmp/dmp-reference'; -import { DoiModel } from '@app/core/model/doi/doi'; import { EntityDoi } from '@app/core/model/entity-doi/entity-doi'; -import { FileFormat } from '@app/core/model/file/file-format.model'; import { Reference } from '@app/core/model/reference/reference'; import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; -import { DepositRepositoriesService } from '@app/core/services/deposit-repositories/deposit-repositories.service'; +import { DepositService } from '@app/core/services/deposit/deposit.service'; import { DmpBlueprintService } from '@app/core/services/dmp/dmp-blueprint.service'; +import { FileTransformerService } from '@app/core/services/file-transformer/file-transformer.service'; import { LockService } from '@app/core/services/lock/lock.service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { ReferenceService } from '@app/core/services/reference/reference.service'; @@ -58,12 +57,11 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { textMessage: any; pastVersions: Dmp[]; //TODO: get these from the backend selectedModel: EntityDoi; - fileFormats: FileFormat[] = []; @ViewChild('doi') doi: ElementRef; - depositRepos: DepositConfigurationModel[] = []; + depositRepos: DepositConfiguration[] = []; descriptionStatusEnum = DescriptionStatus; dmpAccessTypeEnum = DmpAccessType; @@ -74,9 +72,9 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { constructor( private route: ActivatedRoute, private router: Router, - private dmpService: DmpServiceNew, + private dmpService: DmpService, private dmpBlueprintService: DmpBlueprintService, - private depositRepositoriesService: DepositRepositoriesService, + private depositRepositoriesService: DepositService, private translate: TranslateService, private authentication: AuthService, private dialog: MatDialog, @@ -88,7 +86,8 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { private matomoService: MatomoService, private fileUtils: FileUtils, public referenceService: ReferenceService, - public enumUtils: EnumUtils + public enumUtils: EnumUtils, + public fileTransformerService: FileTransformerService ) { super(); } @@ -156,7 +155,6 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { }); } }); - this.dmpService.getExportFormats().pipe(takeUntil(this._destroyed)).subscribe(result => this.fileFormats = result); this.depositRepositoriesService.getAvailableRepos() .pipe(takeUntil(this._destroyed)) .subscribe( @@ -580,7 +578,8 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { this.dmp.entityDois.unshift(entityDoi); } - createDoiLink(doiModel: DoiModel): string { + // createDoiLink(doiModel: DoiModel): string { + createDoiLink(doiModel: any): string { //TODO: needs rewriting const repository = this.depositRepos.find(r => r.repositoryId == doiModel.repositoryId); if (typeof repository !== "undefined") { @@ -716,6 +715,7 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { return [ nameof(x => x.id), nameof(x => x.label), + nameof(x => x.description), nameof(x => x.status), nameof(x => x.accessType), nameof(x => x.version), diff --git a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.module.ts b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.module.ts index be48b699b..f94e89ffd 100644 --- a/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.module.ts +++ b/dmp-frontend/src/app/ui/dmp/overview/dmp-overview.module.ts @@ -1,14 +1,12 @@ import { NgModule } from '@angular/core'; import { FormattingModule } from '@app/core/formatting.module'; import { AutoCompleteModule } from '@app/library/auto-complete/auto-complete.module'; -import { ExportMethodDialogModule } from '@app/library/export-method-dialog/export-method-dialog.module'; import { DmpDepositDropdown } from "@app/ui/dmp/editor/dmp-deposit-dropdown/dmp-deposit-dropdown.component"; import { DmpOverviewComponent } from '@app/ui/dmp/overview/dmp-overview.component'; import { CommonFormsModule } from '@common/forms/common-forms.module'; import { ConfirmationDialogModule } from '@common/modules/confirmation-dialog/confirmation-dialog.module'; import { CommonUiModule } from '@common/ui/common-ui.module'; import { NgDialogAnimationService } from 'ng-dialog-animation'; -import { CloneDialogModule } from '../clone/clone-dialog/clone-dialog.module'; import { DmpOverviewRoutingModule } from './dmp-overview.routing'; @NgModule({ @@ -16,8 +14,6 @@ import { DmpOverviewRoutingModule } from './dmp-overview.routing'; CommonUiModule, CommonFormsModule, ConfirmationDialogModule, - CloneDialogModule, - ExportMethodDialogModule, FormattingModule, AutoCompleteModule, DmpOverviewRoutingModule diff --git a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.html b/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.html deleted file mode 100644 index a7cd49185..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.html +++ /dev/null @@ -1,82 +0,0 @@ -
-
-

Welcome to ARGOS

-

Create, Link, Share Data Management Plans

-
-
-
-
-
-
-
-

{{'DASHBOARD.DATASETS' | translate}}

- -
-
-
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- diff --git a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.scss b/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.scss deleted file mode 100644 index c5763d039..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.scss +++ /dev/null @@ -1,78 +0,0 @@ -@import "node_modules/bootstrap/scss/functions"; -@import "node_modules/bootstrap/scss/variables"; -@import "node_modules/bootstrap/scss/mixins/_breakpoints"; - -@include media-breakpoint-down(sm) { - .lightblue-btn { - font-size: 12px; - } - ::ng-deep .mat-paginator-container { - height: auto !important; - } -} - -text-center { - text-align: center; -} - -.header-image { - background: url("/assets/images/new-dashboard-bg.png") no-repeat; - background-size: cover; - margin-top: 70px; - min-height: 15em; - position: relative; -} - -.header-text-container { - background: rgba(255, 255, 255, 0.7); - position: absolute; - bottom: 0px; - padding-left: 5em; - padding-right: 10em; - padding-top: 2em; - padding-bottom: 2em; -} - -.explore-dmp-content { - padding: 30px 15px; -} - -.card-desc { - min-height: 5vh; -} - -::ng-deep .mat-paginator { - margin-top: 1em; -} - -::ng-deep .mat-paginator-container { - flex-direction: row-reverse !important; - justify-content: space-between !important; - background-color: #f6f6f6; - height: 30px; - min-height: 30px !important; -} - -::ng-deep .mat-paginator-page-size { - height: 43px; -} - -::ng-deep .mat-icon-button { - height: 30px !important; - font-size: 12px !important; -} - -::ng-deep .mat-paginator-range-label { - margin: 15px 32px 0 24px !important; -} - -::ng-deep .mat-paginator-range-actions { - width: auto !important; - min-width: 55% !important; - min-height: 43px !important; - justify-content: space-between; -} - -::ng-deep .mat-paginator-navigation-previous { - margin-left: auto !important; -} 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 deleted file mode 100644 index 1a480f821..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset-listing.component.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; -import { MatPaginator } from '@angular/material/paginator'; -import { MatSort } from '@angular/material/sort'; -import { ActivatedRoute, Params, Router } from '@angular/router'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DatasetListingModel } from '@app/core/model/dataset/dataset-listing'; -import { ExploreDatasetCriteriaModel } from '@app/core/query/explore-dataset/explore-dataset-criteria'; -import { DatasetService } from '@app/core/services/dataset/dataset.service'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { BaseComponent } from '@common/base/base.component'; -import { TranslateService } from '@ngx-translate/core'; -import { Observable, of as observableOf } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; -// import { BreadcrumbItem } from '../misc/breadcrumb/definition/breadcrumb-item'; -// import { IBreadCrumbComponent } from '../misc/breadcrumb/definition/IBreadCrumbComponent'; - - -@Component({ - selector: 'app-explore-dataset-listing-component', - templateUrl: 'explore-dataset-listing.component.html', - styleUrls: ['./explore-dataset-listing.component.scss'], -}) -export class ExploreDatasetListingComponent extends BaseComponent implements OnInit { //IBreadCrumbComponent - - @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; - @ViewChild(MatSort, { static: false }) sort: MatSort; - - totalCount: number; - listingItems: DatasetListingModel[] = []; - exploreDatasetCriteriaModel: ExploreDatasetCriteriaModel; - // breadCrumbs: Observable; - dmpId: string; - dmpSearchEnabled = true; - titlePrefix: String; - - constructor( - private datasetService: DatasetService, - private dmpService: DmpService, - private router: Router, - private route: ActivatedRoute, - private language: TranslateService, - ) { - super(); - } - - ngOnInit() { - this.route.params - .pipe(takeUntil(this._destroyed)) - .subscribe(async (params: Params) => { - const queryParams = this.route.snapshot.queryParams; - this.dmpId = queryParams['dmpId']; - if (this.dmpId != null) { - this.dmpSearchEnabled = false; - const dmp = await this.dmpService.getSinglePublic(this.dmpId).toPromise(); - - const fields: Array = []; - const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, this._paginator.pageSize, { fields: fields }); - dmpDataTableRequest.criteria = new ExploreDatasetCriteriaModel(); - dmpDataTableRequest.criteria.dmpIds.push(this.dmpId); - - this.datasetService.getPublicPaged(dmpDataTableRequest).pipe(takeUntil(this._destroyed)).subscribe(result => { - if (!result) { return []; } - if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } - this.listingItems = result.data; - }); - - - } else { - this.refresh(); - } - }); - - // const breadCrumbs = []; - // breadCrumbs.push({ - // parentComponentName: null, - // label: this.language.instant('NAV-BAR.PUBLIC DATASETS'), - // url: "/explore" - // }) - // this.breadCrumbs = observableOf(breadCrumbs); - } - - refresh(resetPages = false) { - if (this._paginator.pageSize === undefined) this._paginator.pageSize = 10; - const startIndex = this._paginator.pageIndex * this._paginator.pageSize; - let fields: Array = new Array(); - if (this.sort && 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.exploreDatasetCriteriaModel || this.getDefaultCriteria(); - this.datasetService.getPublicPaged(request).pipe(takeUntil(this._destroyed)).subscribe(result => { - if (!result) { return []; } - if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } - this.listingItems = result.data; - }); - } - - // rowClicked(dataset: DatasetListingModel) { - // this.router.navigate(['/datasets/publicEdit/' + dataset.id]); - // } - - onCriteriaChange(event: ExploreDatasetCriteriaModel) { - this.exploreDatasetCriteriaModel = event; - this._paginator.pageIndex = 0; - this.refresh(); - } - - getDefaultCriteria(): ExploreDatasetCriteriaModel { - const defaultCriteria = new ExploreDatasetCriteriaModel(); - // if (dmp != null) { - // defaultCriteria.dmpIds.push(dmp.id); - // } - return defaultCriteria; - } - - pageThisEvent(event) { - this.refresh(); - } -} diff --git a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset.module.ts b/dmp-frontend/src/app/ui/explore-dataset/explore-dataset.module.ts deleted file mode 100644 index 86dfe4e41..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset.module.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { NgModule } from '@angular/core'; -import { FormattingModule } from '@app/core/formatting.module'; -import { AutoCompleteModule } from '@app/library/auto-complete/auto-complete.module'; -import { ExploreDatasetListingComponent } from '@app/ui/explore-dataset/explore-dataset-listing.component'; -import { ExploreDatasetRoutingModule } from '@app/ui/explore-dataset/explore-dataset.routing'; -import { ExploreDatasetFilterItemComponent } from '@app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component'; -import { ExploreDatasetFiltersComponent } from '@app/ui/explore-dataset/filters/explore-dataset-filters.component'; -import { ExploreDatasetListingItemComponent } from '@app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component'; -import { CommonFormsModule } from '@common/forms/common-forms.module'; -import { CommonUiModule } from '@common/ui/common-ui.module'; -import { DatasetOverviewModule } from '../dataset/overview/dataset-overview.module'; - -@NgModule({ - imports: [ - CommonUiModule, - CommonFormsModule, - AutoCompleteModule, - ExploreDatasetRoutingModule, - FormattingModule, - DatasetOverviewModule - ], - declarations: [ - ExploreDatasetListingComponent, - ExploreDatasetFiltersComponent, - ExploreDatasetFilterItemComponent, - ExploreDatasetListingItemComponent - ] -}) -export class ExploreDatasetModule { } \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset.routing.ts b/dmp-frontend/src/app/ui/explore-dataset/explore-dataset.routing.ts deleted file mode 100644 index f1d28185b..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/explore-dataset.routing.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { ExploreDatasetListingComponent } from './explore-dataset-listing.component'; -import { DatasetOverviewComponent } from '../dataset/overview/dataset-overview.component'; - -const routes: Routes = [ - { - path: '', - component: ExploreDatasetListingComponent, - data: { - breadcrumb: true - }, - }, - { - path: 'overview/:publicId', - component: DatasetOverviewComponent, - data: { - breadcrumb: true, - title: 'GENERAL.TITLES.EXPLORE-PLANS-OVERVIEW' - }, - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class ExploreDatasetRoutingModule { } \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.html b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.html deleted file mode 100644 index 16495cc71..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.html +++ /dev/null @@ -1,20 +0,0 @@ -
- - - -
- - - {{ - displayLabel(option) }} - cancel - - - -
- - -

{{ displayLabel(option) }}

-
-
-
\ No newline at end of file diff --git a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.scss b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.scss deleted file mode 100644 index dfc39d9c0..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -.facet-option-item { - height: auto !important; - min-height: 48px; - padding: 0.5em; - .mat-list-item-content { - min-height: inherit; - } -} - -.data-expand-panel{ - max-height: 20em; - overflow-x: hidden; - overflow-y: auto; -} \ No newline at end of file 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 deleted file mode 100644 index fddaa4b57..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filter-item/explore-dataset-filter-item.component.ts +++ /dev/null @@ -1,94 +0,0 @@ - -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/list'; -import { BaseComponent } from '@common/base/base.component'; -import { Observable, of as observableOf } from 'rxjs'; -import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators'; - - -@Component({ - selector: 'app-explore-dataset-filter-item-component', - templateUrl: './explore-dataset-filter-item.component.html', - styleUrls: ['./explore-dataset-filter-item.component.scss'] -}) -export class ExploreDatasetFilterItemComponent extends BaseComponent implements OnInit { - - @Input() - searchEnabled = false; - - @Input() - requestDelay = 200; - - @Input() - multipleSelect = true; - - @Input() - filterOptions: (value) => Observable; - - @Input() - options: Observable = observableOf([]); - - @Input() - displayTitleFunc: (value) => string; - - @Input() - displayValueFunc: (value) => string; - - @Output() - selectedChanged = new EventEmitter(); - - @Output() - optionRemoved = new EventEmitter(); - - optionSearchControl = new FormControl(''); - - private selectedOptions: any[] = []; - - @ViewChild('optionsList', { static: true }) selectionList: MatSelectionList; - - constructor() { super(); } - - ngOnInit(): void { - if (!this.multipleSelect) { this.selectionList.selectedOptions = new SelectionModel(this.multipleSelect); } - this.optionSearchControl.valueChanges.pipe(debounceTime(this.requestDelay), - distinctUntilChanged()) - .pipe(takeUntil(this._destroyed)) - .subscribe(x => { if (this.filterOptions) { this.options = this.filterOptions(x); } }); - } - - public selectionChanged(event: any) { - const eventValue = event.option.value; - if (event.option.selected) { this.selectedOptions.push(eventValue); } - if (!event.option.selected) { - const index = this.selectedOptions.map(x => this.displayValue(x)).indexOf(this.displayValue(eventValue)); - this.selectedOptions.splice(index, 1); - } - this.selectedChanged.emit(event); - } - - public removeOption(grant) { - const list = this.selectionList.selectedOptions.selected.map(x => x.value); - const indexOfGrant = list.indexOf(grant); - if (this.selectionList.selectedOptions.selected[indexOfGrant]) { - this.selectionList.selectedOptions.selected[indexOfGrant].selected = false; - this.selectionList.selectedOptions.selected.splice(indexOfGrant, 1); - } - this.selectedOptions.splice(this.selectedOptions.map(x => this.displayValue(x)).indexOf(this.displayValue(grant)), 1); - this.optionRemoved.emit(grant); - } - - public isOptionSelected(value) { - return this.selectedOptions.map(x => this.displayValue(x)).indexOf(this.displayValue(value)) !== -1; - } - - displayLabel(value) { - return this.displayTitleFunc ? this.displayTitleFunc(value) : value; - } - - displayValue(value) { - return this.displayValueFunc ? this.displayValueFunc(value) : value; - } - -} diff --git a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.html b/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.html deleted file mode 100644 index 01769decb..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.html +++ /dev/null @@ -1,129 +0,0 @@ -
-
{{'CRITERIA.FILTERS'| translate}}
-
- - - - search - - - - -
-
{{ 'FACET-SEARCH.GRANT-STATUS.TITLE' | translate }}
- - {{ 'FACET-SEARCH.GRANT-STATUS.OPTIONS.ANY' | translate }} - {{ 'FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE' | translate }} - {{ 'FACET-SEARCH.GRANT-STATUS.OPTIONS.INACTIVE' | translate }} - -
- -
-
{{'CRITERIA.DATA-SETS.RELATED-DMP' | translate}}
- - - - -
- -
-
{{ 'FACET-SEARCH.GRANT.TITLE' | translate }}
- - - - -
- -
-
{{ 'FACET-SEARCH.PROFILES.TITLE' | translate }}
- - - - -
- -
-
{{ 'FACET-SEARCH.ROLE.TITLE' | translate }}
- - {{ 'FACET-SEARCH.ROLE.ANY' | translate }} - {{ 'FACET-SEARCH.ROLE.OWNER' | translate }} - {{ 'FACET-SEARCH.ROLE.MEMBER' | translate }} - -
- -
-
{{ 'FACET-SEARCH.DMP-ORGANISATIONS.TITLE' | translate }}
- - - - -
-
-
- - - 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 deleted file mode 100644 index e4fb0d02b..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.scss +++ /dev/null @@ -1,107 +0,0 @@ -.facet-search-component { - .mat-form-field { - width: 100%; - } - - .tags-chips { - padding: 0px; - } -} - -.search ::ng-deep.mat-form-field-infix { - margin-left: 1em; -} - -.category-title { - color: black; - // color: #089dbb; - margin-top: 8px; - margin-bottom: 12px; -} - -.import { - margin: 10px; - padding: 0px; -} - -.filters { - border: 1px solid #e4e4e4; - border-radius: 5px; -} - -.filters-title { - width: 90px; - // color: #089dbb; - color: var(--primary-color-2); - background-color: white; - padding: 0px 20px; - margin-top: -10px; - margin-left: 20px; - text-transform: uppercase; -} - -.style-icon { - color: #adadad; -} - -// ::ng-deep .mat-checkbox-inner-container { -// background: white; -// } - -// ::ng-deep .mat-focused .mat-form-field-label { -// color: var(--primary-color-3) !important; -// } - -// ::ng-deep.mat-form-field-underline { -// background-color: #adadad; -// } - -// ::ng-deep.mat-form-field-ripple { -// background-color: var(--primary-color-3) !important; -// } - -// ::ng-deep .mat-checkbox { -// background-color: #f6f6f6 !important; -// } - -::ng-deep .mat-checkbox .mat-checkbox-frame { - border: 1px solid #aaaaaa; -} - -::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background, -.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, -.mat-accent .mat-pseudo-checkbox-checked, -.mat-accent .mat-pseudo-checkbox-indeterminate, -.mat-pseudo-checkbox-checked, -.mat-pseudo-checkbox-indeterminate { - background-color: var(--primary-color-3); -} - -::ng-deep .mat-ripple-element { - background-color: #2e74b649 !important; -} - -::ng-deep .mat-radio-container { - border-radius: 1em; - background: white; -} - -::ng-deep .mat-radio-button .mat-radio-outer-circle { - border: 1px solid #aaaaaa; -} - -::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { - border-color: #777777; - // border-color: var(--primary-color-3); -} - -::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle { - color: #777777; - background-color: #777777; - // color: var(--primary-color-3); - // background-color: var(--primary-color-3); -} - -.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element { - background-color: #2e74b649; -} 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 deleted file mode 100644 index a256286d0..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/filters/explore-dataset-filters.component.ts +++ /dev/null @@ -1,366 +0,0 @@ - -import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core'; -import { MatAccordion } from '@angular/material/expansion'; -import { ActivatedRoute } from '@angular/router'; -import { GrantStateType } from '@app/core/common/enum/grant-state-type'; -import { DataTableData } from '@app/core/model/data-table/data-table-data'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; -import { DmpListingModel } from '@app/core/model/dmp/dmp-listing'; -import { ExternalSourceItemModel } from '@app/core/model/external-sources/external-source-item'; -import { GrantListingModel } from '@app/core/model/grant/grant-listing'; -import { OrganizationModel } from '@app/core/model/organisation/organization'; -import { DatasetProfileCriteria } from '@app/core/query/dataset-profile/dataset-profile-criteria'; -import { ExploreDatasetCriteriaModel } from '@app/core/query/explore-dataset/explore-dataset-criteria'; -import { ExploreDmpCriteriaModel } from '@app/core/query/explore-dmp/explore-dmp-criteria'; -import { GrantCriteria } from '@app/core/query/grant/grant-criteria'; -import { OrganisationCriteria } from '@app/core/query/organisation/organisation-criteria'; -import { RequestItem } from '@app/core/query/request-item'; -import { TagCriteria } from '@app/core/query/tag/tag-criteria'; -import { AuthService } from '@app/core/services/auth/auth.service'; -import { DatasetService } from '@app/core/services/dataset/dataset.service'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; -import { GrantService } from '@app/core/services/grant/grant.service'; -import { OrganisationService } from '@app/core/services/organisation/organisation.service'; -import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { BaseComponent } from '@common/base/base.component'; -import { TranslateService } from '@ngx-translate/core'; -import { Observable, of as observableOf } from 'rxjs'; -import { map } from 'rxjs/operators'; - - -@Component({ - selector: 'app-explore-dataset-filters-component', - templateUrl: './explore-dataset-filters.component.html', - styleUrls: ['./explore-dataset-filters.component.scss'] -}) -export class ExploreDatasetFiltersComponent extends BaseComponent implements OnInit, AfterViewInit { - - @Input() facetCriteria = new ExploreDatasetCriteriaModel(); - @Output() facetCriteriaChange = new EventEmitter(); - public filteringTagsAsync = false; - public filteredTags: ExternalSourceItemModel[]; - GrantStateType = GrantStateType; - grants: Observable; - profiles: Observable; - dmpOrganisations: Observable; - dmpIds: Observable>; - grantOptions: Observable; - grantStateOptions: Observable; - filteringOrganisationsAsync = false; - @ViewChild('facetAccordion', { static: false }) accordion: MatAccordion; - - displayGrantStateValue = (option) => option['value']; - displayGrantStateLabel = (option) => option['label']; - - displayGrantValue = (option) => option['id']; - displayGrantLabel = (option) => option['label']; - - displayProfileValue = (option) => option['id']; - displayProfileLabel = (option) => option['label']; - - displayDmpOrganisationsValue = (option) => option['id']; - displayDmpOrganisationsLabel = (option) => option['name']; - - tagsAutoCompleteConfiguration = { - filterFn: this.filterTags.bind(this), - 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).pipe(map(x => x.data)), - initialItems: (extraData) => this.filterDmps('').pipe(map(x => x.data)), - displayFn: (item) => item['label'], - titleFn: (item) => item['label'] - }; - - grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: this.filterGrant.bind(this), - 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'] - } - - profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: this.filterProfile.bind(this), - initialItems: (excludedItems: any[]) => - 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'] - }; - - organizationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: this.filterOrganisation.bind(this), - initialItems: (excludedItems: any[]) => - 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'] - } - - constructor( - public activatedRoute: ActivatedRoute, - private authentication: AuthService, - public grantService: GrantService, - public dmpService: DmpService, - public organisationService: OrganisationService, - public languageService: TranslateService, - public datasetProfileService: DatasetService, - public externalSourcesService: ExternalSourcesService, - ) { super(); } - - ngOnInit() { - 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.dmpOrganisations = this.externalSourcesService.searchDMPOrganizations(''); - } - - ngAfterViewInit(): void { - // this.accordion.openAll(); - } - - public grantStatusChanged(event) { - this.facetCriteria.grantStatus = event.value; - if (event.value === 'null') { - this.facetCriteria.grantStatus = null; - this.grants = observableOf([]); - this.facetCriteria.grants = []; - } - // if (event.option.selected) { - // if (event.source.checked) { - else { - // const grantCriteria = new GrantCriteria(); - // grantCriteria.grantStateType = this.facetCriteria.grantStatus; - //grantCriteria['length'] = 10; - const fields: Array = new Array(); - fields.push('asc'); - const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dataTableRequest.criteria = new GrantCriteria(); - dataTableRequest.criteria.grantStateType = this.facetCriteria.grantStatus; - dataTableRequest.criteria['length'] = 10; - - this.grants = this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data)); - this.facetCriteria.grants = []; - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - public grantChanged(event: any) { - const eventValue = event.option.value.id; - if (event.option.selected) { this.facetCriteria.grants.push(eventValue); } - if (!event.option.selected) { - const index = this.facetCriteria.grants.indexOf(eventValue); - this.facetCriteria.grants.splice(index, 1); - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - removeGrant(grant) { - this.facetCriteria.grants.splice(this.facetCriteria.grants.indexOf(grant), 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - public profileChanged(event: any) { - const eventValue = event.option.value.id; - if (event.option.selected) { - this.facetCriteria.datasetProfile.push(eventValue); - } - if (!event.option.selected) { - const index = this.facetCriteria.datasetProfile.indexOf(eventValue); - this.facetCriteria.datasetProfile.splice(index, 1); - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - // getProfiles() { - // return this.datasetProfileService.getDatasetProfiles(); - // } - - removeProfile(profile) { - this.facetCriteria.datasetProfile.splice(this.facetCriteria.datasetProfile.indexOf(profile), 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - getOrganisations() { - const fields: Array = new Array(); - fields.push('asc'); - const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dataTableRequest.criteria = new OrganisationCriteria(); - dataTableRequest.criteria.labelLike = ''; - return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); - } - - public roleChanged(event: any) { - this.facetCriteria.role = event.value; - if (event.value === 'null') { - this.facetCriteria.role = null; - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - public dmpOrganisationChanged(event: any) { - const eventValue = event.option.value.id; - if (event.option.selected) { this.facetCriteria.dmpOrganisations.push(eventValue); } - if (!event.option.selected) { - const index = this.facetCriteria.dmpOrganisations.indexOf(eventValue); - this.facetCriteria.dmpOrganisations.splice(index, 1); - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - public grantSearch(value: string): Observable { - - const grantCriteria = new GrantCriteria(); - grantCriteria.grantStateType = this.facetCriteria.grantStatus; - grantCriteria['length'] = 10; - grantCriteria.like = value; - - const fields: Array = new Array(); - fields.push('asc'); - - const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dataTableRequest.criteria = grantCriteria; - //const dataTableRequest: RequestItem = { criteria: grantCriteria }; - //return this.grantService.getPaged(dataTableRequest, "autocomplete").map(x => x.data); - return this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data)); - } - - public dmpOrganisationSearch(value: string): Observable { - return this.externalSourcesService.searchDMPOrganizations(value); - } - - removeOrganisation(organisation) { - this.facetCriteria.dmpOrganisations.splice(this.facetCriteria.dmpOrganisations.indexOf(organisation), 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - // public profileSearch(value: string) { - // return this.datasetProfileService.getDatasetProfiles(); - // } - - public controlModified() { - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onGrantOptionSelected(item: GrantListingModel) { - this.facetCriteria.grants.push(item.id); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onGrantOptionRemoved(item: GrantListingModel) { - const index = this.facetCriteria.grants.indexOf(item.id); - if (index >= 0) { - this.facetCriteria.grants.splice(index, 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - } - - onDmpOptionSelected(item: DmpListingModel) { - this.facetCriteria.dmpIds.push(item.id); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onDmpOptionRemoved(item: DmpListingModel) { - const index = this.facetCriteria.dmpIds.indexOf(item.id); - if (index >= 0) { - this.facetCriteria.dmpIds.splice(index, 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - } - - onProfileOptionSelected(item: DatasetProfileModel) { - this.facetCriteria.datasetProfile.push(item.id); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onProfileOptionRemoved(item: DatasetProfileModel) { - const index = this.facetCriteria.datasetProfile.indexOf(item.id); - if (index >= 0) { - this.facetCriteria.datasetProfile.splice(index, 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - } - - onOrganizationOptionSelected(item: OrganizationModel) { - this.facetCriteria.dmpOrganisations.push(item.id); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onOrganizationOptionRemoved(item: OrganizationModel) { - const index = this.facetCriteria.dmpOrganisations.indexOf(item.id); - if (index >= 0) { - this.facetCriteria.dmpOrganisations.splice(index, 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - } - - filterDmps(value: string): Observable> { - const fields: Array = new Array(); - fields.push('-finalizedAt'); - const dmpDataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dmpDataTableRequest.criteria = new ExploreDmpCriteriaModel(); - dmpDataTableRequest.criteria.like = value; - return this.dmpService.getPublicPaged(dmpDataTableRequest, "autocomplete") - } - - filterTags(value: string): Observable { - this.filteredTags = undefined; - this.filteringTagsAsync = true; - const requestItem: RequestItem = new RequestItem(); - const criteria: TagCriteria = new TagCriteria(); - criteria.like = value; - requestItem.criteria = criteria; - return this.externalSourcesService.searchDatasetTags(requestItem); - // .subscribe(items => { - // this.filteredTags = items; - // this.filteringTagsAsync = false; - // }); - } - - filterGrant(query: string) { - const fields: Array = new Array(); - fields.push('asc'); - const grantRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - grantRequestItem.criteria = new GrantCriteria(); - grantRequestItem.criteria.like = query; - return this.grantService.getPublicPaged(grantRequestItem).pipe(map(x => x.data)); - } - - filterProfile(query: string) { - const fields: Array = new Array(); - fields.push('asc'); - const profileRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - profileRequestItem.criteria = new DatasetProfileCriteria(); - profileRequestItem.criteria.like = query; - - return this.datasetProfileService.getDatasetProfiles(profileRequestItem); - // this.dmpService.getPublicPaged(profileRequestItem, "listing").pipe(map(x => x.data)); - } - - filterOrganisation(value: string) { - this.filteringOrganisationsAsync = true; - const fields: Array = new Array(); - fields.push('asc'); - const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dataTableRequest.criteria = new OrganisationCriteria(); - dataTableRequest.criteria.labelLike = value; - - return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); - } - - public isAuthenticated(): boolean { - return this.authentication.currentAccountIsAuthenticated(); - } -} 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 deleted file mode 100644 index b3c332065..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.html +++ /dev/null @@ -1,72 +0,0 @@ - - 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 deleted file mode 100644 index 99897de43..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.scss +++ /dev/null @@ -1,99 +0,0 @@ -.gray-container { - letter-spacing: 5px; - color: #aaaaaa; -} - -.container-header { - display: flex; - align-items: baseline; - margin-top: 0px; - text-transform: uppercase; -} - -.container-header p { - letter-spacing: 5px; - color: #aaaaaa; - padding-top: 10px; - margin-bottom: 0px; -} - -h4 { - display: inline; - padding-left: 1em; - color: #333333; -} - -.title h4 { - padding-left: 30px; - line-height: 2em; -} - -.about-item { - display: flex; - flex-wrap: wrap; -} - -.about-item .length { - color: var(--primary-color-3); - // color: #089dbb; -} - -.about-item .title { - margin: 2px 10px; -} - -.about-item p { - margin-left: auto; - margin-bottom: 0px; - padding-top: 7px; - color: #aaaaaa; -} - -p { - color: #333333; -} - -.finalized-bookmark { - color: #08bd63; -} - -// .explore-dataset-info { -// background-color: #f6f6f6; -// padding: 8px 15px; -// } - -// .explore-dataset-info p { -// margin-bottom: 0px; -// color: rgb(37, 35, 140); -// font-weight: 600; -// } - -// .template-name { -// padding-left: 0px; -// border: 1px solid rgb(218, 227, 243); -// color: rgb(43, 104, 209); -// background-color: rgb(236, 241, 249); -// border-radius: 10em; -// justify-content: center; -// text-transform: uppercase; -// display: flex; -// width: 25em; -// height: 1.8em; -// margin-top: 15px; -// font-size: 13px; -// font-weight: 500; -// } - -// .draft-bookmark { -// color: #e7e6e6; -// display: inline; -// } - -// .finalized-bookmark { -// color: #92d050; -// display: inline; -// } - -// h4 { -// display: inline; -// } diff --git a/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.ts b/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.ts deleted file mode 100644 index 83ac3f9ad..000000000 --- a/dmp-frontend/src/app/ui/explore-dataset/listing-item/explore-dataset-listing-item.component.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { DatasetListingModel } from '../../../core/model/dataset/dataset-listing'; -import { DatasetStatus } from '../../../core/common/enum/dataset-status'; - -@Component({ - selector: 'app-explore-dataset-listing-item-component', - templateUrl: './explore-dataset-listing-item.component.html', - styleUrls: ['./explore-dataset-listing-item.component.scss'] -}) -export class ExploreDatasetListingItemComponent implements OnInit { - - @Input() dataset: DatasetListingModel; - @Input() showDivider: boolean = true; - @Output() onClick: EventEmitter = new EventEmitter(); - - isDraft: boolean; - - constructor() { } - - ngOnInit() { - if (this.dataset.status == DatasetStatus.Draft) { this.isDraft = true } - else { this.isDraft = false } - } - - // itemClicked() { - // this.onClick.emit(this.dataset); - // } - -} diff --git a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.html b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.html deleted file mode 100644 index b0406d2ce..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.html +++ /dev/null @@ -1,20 +0,0 @@ -
- - - -
- - - {{ - displayLabel(option) }} - cancel - - - -
- - -

{{ displayLabel(option) }}

-
-
-
diff --git a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.scss b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.scss deleted file mode 100644 index b4d929724..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -.facet-option-item { - height: auto !important; - min-height: 48px; - padding: 0.5em; - .mat-list-item-content { - min-height: inherit; - } -} - -.data-expand-panel{ - max-height: 20em; - overflow-x: hidden; - overflow-y: auto; -} 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 deleted file mode 100644 index f18a44f34..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component.ts +++ /dev/null @@ -1,84 +0,0 @@ - -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/list'; -import { BaseComponent } from '@common/base/base.component'; -import { Observable, of as observableOf } from 'rxjs'; -import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators'; - - -@Component({ - selector: 'app-explore-dmp-filter-item-component', - templateUrl: './explore-dmp-filter-item.component.html', - styleUrls: ['./explore-dmp-filter-item.component.scss'] -}) -export class ExploreDmpFilterItemComponent extends BaseComponent implements OnInit { - @Input() - searchEnabled = false; - @Input() - requestDelay = 200; - @Input() - multipleSelect = true; - @Input() - filterOptions: (value) => Observable; - @Input() - options: Observable = observableOf([]); - @Input() - displayTitleFunc: (value) => string; - @Input() - displayValueFunc: (value) => string; - @Output() - selectedChanged = new EventEmitter(); - @Output() - optionRemoved = new EventEmitter(); - - - optionSearchControl = new FormControl(''); - public selectedOptions: any[] = []; - - @ViewChild('optionsList', { static: true }) selectionList: MatSelectionList; - - constructor() { super(); } - - ngOnInit(): void { - if (!this.multipleSelect) { this.selectionList.selectedOptions = new SelectionModel(this.multipleSelect); } - this.optionSearchControl.valueChanges.pipe(debounceTime(this.requestDelay), - distinctUntilChanged()) - .pipe(takeUntil(this._destroyed)) - .subscribe(x => { if (this.filterOptions) { this.options = this.filterOptions(x); } }); - } - - public selectionChanged(event: any) { - const eventValue = event.option.value; - if (event.option.selected) { this.selectedOptions.push(eventValue); } - if (!event.option.selected) { - const index = this.selectedOptions.map(x => this.displayValue(x)).indexOf(this.displayValue(eventValue)); - this.selectedOptions.splice(index, 1); - } - this.selectedChanged.emit(event); - } - - public removeOption(grant) { - const list = this.selectionList.selectedOptions.selected.map(x => x.value); - const indexOfGrant = list.indexOf(grant); - if (this.selectionList.selectedOptions.selected[indexOfGrant]) { - this.selectionList.selectedOptions.selected[indexOfGrant].selected = false; - this.selectionList.selectedOptions.selected.splice(indexOfGrant, 1); - } - this.selectedOptions.splice(this.selectedOptions.map(x => this.displayValue(x)).indexOf(this.displayValue(grant)), 1); - this.optionRemoved.emit(grant); - } - - public isOptionSelected(value) { - return this.selectedOptions.map(x => this.displayValue(x)).indexOf(this.displayValue(value)) !== -1; - } - - displayLabel(value) { - return this.displayTitleFunc ? this.displayTitleFunc(value) : value; - } - - displayValue(value) { - return this.displayValueFunc ? this.displayValueFunc(value) : value; - } -} diff --git a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.html b/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.html deleted file mode 100644 index d7a2e6ce6..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.html +++ /dev/null @@ -1,122 +0,0 @@ -
-
{{'CRITERIA.FILTERS'| translate}}
-
- - - - search - - -
-
{{ 'FACET-SEARCH.GRANT-STATUS.TITLE' | translate }}
- - - {{ 'FACET-SEARCH.GRANT-STATUS.OPTIONS.ANY' | translate }} - - - {{ 'FACET-SEARCH.GRANT-STATUS.OPTIONS.ACTIVE' | translate }} - - - {{ 'FACET-SEARCH.GRANT-STATUS.OPTIONS.INACTIVE' | translate }} - - -
- -
-
{{ 'FACET-SEARCH.GRANT.TITLE' | translate }}
- - - - -
- -
-
{{ 'FACET-SEARCH.PROFILES.TITLE' | translate }}
- - - - -
- -
-
{{ 'FACET-SEARCH.ROLE.TITLE' | translate }}
- - - {{ 'FACET-SEARCH.ROLE.ANY' | translate }} - - - {{ 'FACET-SEARCH.ROLE.OWNER' | translate }} - - - {{ 'FACET-SEARCH.ROLE.MEMBER' | translate }} - - -
- -
-
{{ 'FACET-SEARCH.DMP-ORGANISATIONS.TITLE' | translate }}
- - - - -
-
-
- - - 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 deleted file mode 100644 index f42ffd3fb..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.scss +++ /dev/null @@ -1,107 +0,0 @@ -.facet-search-component { - .mat-form-field { - width: 100%; - } - - .tags-chips { - padding: 0px; - } -} - -.search ::ng-deep.mat-form-field-infix { - margin-left: 1em; -} - -.category-title { - color: black; - // color: #089dbb; - margin-top: 8px; - margin-bottom: 12px; -} - -.import { - margin: 10px; - padding: 0px; -} - -.filters { - border: 1px solid #e4e4e4; - border-radius: 5px; -} - -.filters-title { - width: 93px; - // color: #089dbb; - color: var(--primary-color-2); - background-color: white; - padding: 0px 20px; - margin-top: -10px; - margin-left: 20px; - text-transform: uppercase; -} - -.style-icon { - color: #adadad; -} - -// ::ng-deep .mat-checkbox-inner-container { -// background: white; -// } - -// ::ng-deep .mat-focused .mat-form-field-label { -// color: var(--primary-color-3) !important; -// } - -// ::ng-deep.mat-form-field-underline { -// background-color: #adadad; -// } - -// ::ng-deep.mat-form-field-ripple { -// background-color: var(--primary-color-3) !important; -// } - -// ::ng-deep .mat-checkbox { -// background-color: #f6f6f6 !important; -// } - -::ng-deep .mat-checkbox .mat-checkbox-frame { - border: 1px solid #aaaaaa; -} - -::ng-deep .mat-checkbox-checked.mat-accent .mat-checkbox-background, -.mat-checkbox-indeterminate.mat-accent .mat-checkbox-background, -.mat-accent .mat-pseudo-checkbox-checked, -.mat-accent .mat-pseudo-checkbox-indeterminate, -.mat-pseudo-checkbox-checked, -.mat-pseudo-checkbox-indeterminate { - background-color: var(--primary-color-3); -} - -::ng-deep .mat-ripple-element { - background-color: #2e74b649 !important; -} - -::ng-deep .mat-radio-container { - border-radius: 1em; - background: white; -} - -::ng-deep .mat-radio-button .mat-radio-outer-circle { - border: 1px solid #aaaaaa; -} - -::ng-deep .mat-radio-button.mat-accent.mat-radio-checked .mat-radio-outer-circle { - border-color: #777777; - // border-color: var(--primary-color-3); -} - -::ng-deep .mat-radio-button.mat-accent .mat-radio-inner-circle { - color: #777777; - background-color: #777777; - // color: var(--primary-color-3); - // background-color: var(--primary-color-3); -} - -.mat-radio-button.mat-accent .mat-radio-ripple .mat-ripple-element { - background-color: #2e74b649; -} 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 deleted file mode 100644 index 8ee9d6d85..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component.ts +++ /dev/null @@ -1,347 +0,0 @@ - -import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core"; -import { MatAccordion } from "@angular/material/expansion"; -import { ActivatedRoute } from "@angular/router"; -import { GrantStateType } from '@app/core/common/enum/grant-state-type'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DatasetProfileModel } from '@app/core/model/dataset/dataset-profile'; -import { GrantListingModel } from '@app/core/model/grant/grant-listing'; -import { OrganizationModel } from '@app/core/model/organisation/organization'; -import { DatasetProfileCriteria } from '@app/core/query/dataset-profile/dataset-profile-criteria'; -import { ExploreDmpCriteriaModel } from '@app/core/query/explore-dmp/explore-dmp-criteria'; -import { GrantCriteria } from '@app/core/query/grant/grant-criteria'; -import { OrganisationCriteria } from '@app/core/query/organisation/organisation-criteria'; -import { AuthService } from '@app/core/services/auth/auth.service'; -import { DatasetService } from '@app/core/services/dataset/dataset.service'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; -import { GrantService } from '@app/core/services/grant/grant.service'; -import { OrganisationService } from '@app/core/services/organisation/organisation.service'; -import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { BaseCriteriaComponent } from '@app/ui/misc/criteria/base-criteria.component'; -import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model'; -import { TranslateService } from "@ngx-translate/core"; -import { Observable, of as observableOf } from 'rxjs'; -import { map } from 'rxjs/operators'; - - -@Component({ - selector: 'app-explore-dmp-filters-component', - templateUrl: './explore-dmp-filters.component.html', - styleUrls: ['./explore-dmp-filters.component.scss'] -}) -export class ExploreDmpFiltersComponent extends BaseCriteriaComponent implements OnInit, AfterViewInit { - - @Input() facetCriteria = new ExploreDmpCriteriaModel(); - @Output() facetCriteriaChange = new EventEmitter(); - @Input() displayTitleFunc: (value) => string; - GrantStateType = GrantStateType; - grants: Observable; - profiles: Observable; - dmpOrganisations: Observable; - grantOptions: Observable; - grantStateOptions: Observable; - filteringOrganisationsAsync = false; - filteredOrganisations: OrganizationModel[]; - status: GrantStateType; - IsChecked: boolean; - IsIndeterminate: boolean; - LabelAlign: string; - IsDisabled: boolean; - Active: string; - Inactive: string; - - @ViewChild('facetAccordion', { static: false }) accordion: MatAccordion; - - displayGrantStateValue = (option) => option['value']; - displayGrantStateLabel = (option) => option['label']; - - displayGrantValue = (option) => option['id']; - displayGrantLabel = (option) => option['label']; - - displayProfileValue = (option) => option['id']; - displayProfileLabel = (option) => option['label']; - - displayDmpOrganisationsValue = (option) => option['id']; - displayDmpOrganisationsLabel = (option) => option['name']; - - profileAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: this.filterProfile.bind(this), - initialItems: (excludedItems: any[]) => - 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'] - }; - - organizationAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: this.filterOrganisation.bind(this), - initialItems: (excludedItems: any[]) => - 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'] - } - - grantAutoCompleteConfiguration: MultipleAutoCompleteConfiguration = { - filterFn: this.filterGrant.bind(this), - 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'] - } - - constructor( - public activatedRoute: ActivatedRoute, - public languageService: TranslateService, - public grantService: GrantService, - private authentication: AuthService, - public datasetProfileService: DatasetService, - public organisationService: OrganisationService, - public externalSourcesService: ExternalSourcesService, - private dmpService: DmpService - ) { - super(new ValidationErrorModel()); - this.IsChecked = false; - this.IsIndeterminate = false; - this.LabelAlign = 'after'; - this.IsDisabled = false; - this.Active = "0"; - this.Inactive = "1"; - } - - ngOnInit() { - setTimeout(x => { - 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(); - const fields: Array = new Array(); - fields.push('asc'); - this.dmpOrganisations = this.organisationService.searchPublicOrganisations(new DataTableRequest(0, null, { fields: fields })).pipe(map(x => x.data)); - } - - ngAfterViewInit(): void { - // this.accordion.openAll(); - } - - OnChange($event) { - // console.log($event); - } - - OnIndeterminateChange($event) { - // console.log($event); - } - - controlModified() { - this.facetCriteriaChange.emit(this.facetCriteria); - } - - grantSearch(value: string): Observable { - const grantCriteria = new GrantCriteria(); - grantCriteria.grantStateType = this.facetCriteria.grantStatus; - grantCriteria['length'] = 10; - grantCriteria.like = value; - - const fields: Array = new Array(); - fields.push('asc'); - - const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dataTableRequest.criteria = grantCriteria; - return this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data)); - } - - grantStatusChanged(event) { - this.facetCriteria.grantStatus = event.value; - // this.facetCriteria.grantStatus = +event.source.ariaLabel; // For checkboxes - // this.facetCriteria.grantStatus = event.option.value.value; // For - // if (!event.source.checked) { - if (event.value === 'null') { - this.facetCriteria.grantStatus = null; - this.grants = observableOf([]); - this.facetCriteria.grants = []; - } - // if (event.checked) { - // if (event.option.selected) { - // if (event.source.checked) { - else { - const fields: Array = new Array(); - fields.push('asc'); - const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dataTableRequest.criteria = new GrantCriteria(); - dataTableRequest.criteria.grantStateType = this.facetCriteria.grantStatus; - dataTableRequest.criteria['length'] = 10; - - this.grants = this.grantService.getPublicPaged(dataTableRequest).pipe(map(x => x.data)); - this.facetCriteria.grants = []; - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - grantChanged(event: any) { - const eventValue = event.option.value.id; - if (event.option.selected) { this.facetCriteria.grants.push(eventValue); } - if (!event.option.selected) { - const index = this.facetCriteria.grants.indexOf(eventValue); - this.facetCriteria.grants.splice(index, 1); - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - removeGrant(grant) { - this.facetCriteria.grants.splice(this.facetCriteria.grants.indexOf(grant), 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onProfileOptionSelected(items: DatasetProfileModel) { - //this.facetCriteria.datasetProfile.splice(0); - this.facetCriteria.datasetProfile.push(items.id); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onProfileOptionRemoved(item: DatasetProfileModel) { - const index = this.facetCriteria.datasetProfile.indexOf(item.id); - if (index >= 0) { - this.facetCriteria.datasetProfile.splice(index, 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - } - - profileChanged(event: any) { - const eventValue = event.option.value.id; - if (event.option.selected) { - this.facetCriteria.datasetProfile.push(eventValue); - } - if (!event.option.selected) { - const index = this.facetCriteria.datasetProfile.indexOf(eventValue); - this.facetCriteria.datasetProfile.splice(index, 1); - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - removeProfile(profile) { - this.facetCriteria.datasetProfile.splice(this.facetCriteria.datasetProfile.indexOf(profile), 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onOrganizationOptionSelected(item: OrganizationModel) { - this.facetCriteria.dmpOrganisations.push(item.id); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onOrganizationOptionRemoved(item: OrganizationModel) { - const index = this.facetCriteria.dmpOrganisations.indexOf(item.id); - if (index >= 0) { - this.facetCriteria.dmpOrganisations.splice(index, 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - } - - onGrantOptionSelected(item: GrantListingModel) { - this.facetCriteria.grants.push(item.id); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - onGrantOptionRemoved(item: GrantListingModel) { - const index = this.facetCriteria.grants.indexOf(item.id); - if (index >= 0) { - this.facetCriteria.grants.splice(index, 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - } - - public roleChanged(event: any) { - this.facetCriteria.role = event.value; - if (event.value === 'null') { - this.facetCriteria.role = null; - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - dmpOrganisationChanged(event: any) { - const eventValue = event.option.value.id; - if (event.option.selected) { this.facetCriteria.dmpOrganisations.push(eventValue); } - if (!event.option.selected) { - const index = this.facetCriteria.dmpOrganisations.indexOf(eventValue); - this.facetCriteria.dmpOrganisations.splice(index, 1); - } - this.facetCriteriaChange.emit(this.facetCriteria); - } - - // profileSearch(value: string) { - // return this.datasetProfileService.getDatasetProfiles(); - // } - - dmpOrganisationSearch(value: string): Observable { - const fields: Array = new Array(); - fields.push('asc'); - const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dataTableRequest.criteria = new OrganisationCriteria(); - dataTableRequest.criteria.labelLike = value; - return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); - } - - removeOrganisation(organisation) { - this.facetCriteria.dmpOrganisations.splice(this.facetCriteria.dmpOrganisations.indexOf(organisation), 1); - this.facetCriteriaChange.emit(this.facetCriteria); - } - - // getProfiles() { - // return this.datasetProfileService.getDatasetProfiles(); - // } - - getOrganisations() { - const fields: Array = new Array(); - fields.push('asc'); - const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dataTableRequest.criteria = new OrganisationCriteria(); - dataTableRequest.criteria.labelLike = ''; - return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); - } - - filterGrant(query: string) { - const fields: Array = new Array(); - fields.push('asc'); - const grantRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - grantRequestItem.criteria = new GrantCriteria(); - grantRequestItem.criteria.like = query; - return this.grantService.getPublicPaged(grantRequestItem).pipe(map(x => x.data)); - } - - filterProfile(query: string) { - const fields: Array = new Array(); - fields.push('asc'); - const profileRequestItem: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - profileRequestItem.criteria = new DatasetProfileCriteria(); - profileRequestItem.criteria.like = query; - - return this.datasetProfileService.getDatasetProfiles(profileRequestItem); - } - - filterOrganisation(value: string) { - this.filteringOrganisationsAsync = true; - const fields: Array = new Array(); - fields.push('asc'); - const dataTableRequest: DataTableRequest = new DataTableRequest(0, null, { fields: fields }); - dataTableRequest.criteria = new OrganisationCriteria(); - dataTableRequest.criteria.labelLike = value; - - return this.organisationService.searchPublicOrganisations(dataTableRequest).pipe(map(x => x.data)); - } - - displayLabel(value) { - return this.displayTitleFunc ? this.displayTitleFunc(value) : value; - } - - isOptionSelected(profile: any) { - return this.formGroup.value.map(x => x.id).indexOf(profile.id) !== -1; - } - - public isAuthenticated(): boolean { - return this.authentication.currentAccountIsAuthenticated(); - } -} diff --git a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.html b/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.html deleted file mode 100644 index 1652e34fe..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.html +++ /dev/null @@ -1,39 +0,0 @@ -
-
-

{{ 'ABOUT.WELCOME' | translate }}

-

{{ 'ABOUT.WELCOME-MESSAGE' | translate }}

-
-
-
-
-
-
-
-

{{'DMP-LISTING.TITLE' | translate}}

-
- - {{'DMP-LISTING.VIEW-ALL-VERSIONS' | translate}} - - - {{this.groupLabel}} - -
-
-
-
-
-
- - -
-
-
- -
- -
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.scss b/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.scss deleted file mode 100644 index 79bfb137b..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.scss +++ /dev/null @@ -1,86 +0,0 @@ -@import "node_modules/bootstrap/scss/functions"; -@import "node_modules/bootstrap/scss/variables"; -@import "node_modules/bootstrap/scss/mixins/_breakpoints"; - -@include media-breakpoint-down(sm) { - .lightblue-btn { - font-size: 12px; - } - ::ng-deep .mat-paginator-container { - height: auto !important; - } -} - -text-center { - text-align: center; -} - -.card-desc { - min-height: 5vh; -} - -.header-image { - background: url("/assets/images/new-dashboard-bg.png") no-repeat; - background-size: cover; - margin-top: 70px; - min-height: 15em; - position: relative; -} - -.header-text-container { - background: rgba(255, 255, 255, 0.7); - position: absolute; - bottom: 0px; - padding-left: 5em; - padding-right: 10em; - padding-top: 2em; - padding-bottom: 2em; -} - -.explore-dmp-content { - padding: 30px 15px; -} - -::ng-deep .mat-paginator { - margin-top: 1em; -} - -::ng-deep .mat-paginator-container { - flex-direction: row-reverse !important; - justify-content: space-between !important; - background-color: #f6f6f6; - height: 30px; - min-height: 30px !important; -} - -::ng-deep .mat-paginator-page-size { - height: 43px; -} - -::ng-deep .mat-icon-button { - height: 30px !important; - font-size: 12px !important; -} - -::ng-deep .mat-paginator-range-label { - margin: 15px 32px 0 24px !important; -} - -::ng-deep .mat-paginator-range-actions { - width: auto !important; - min-width: 55% !important; - min-height: 43px !important; - justify-content: space-between; -} - -::ng-deep .mat-paginator-navigation-previous { - margin-left: auto !important; -} - -.all-versions { - color: #999999 !important; -} - -.dmp-label { - color: #089dbb !important; -} 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 deleted file mode 100644 index 360e6abde..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp-listing.component.ts +++ /dev/null @@ -1,198 +0,0 @@ - -import { Component, OnInit, ViewChild } from "@angular/core"; -import { MatPaginator } from "@angular/material/paginator"; -import { MatSort } from "@angular/material/sort"; -import { ActivatedRoute, Router } from "@angular/router"; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DmpListingModel } from '@app/core/model/dmp/dmp-listing'; -import { ExploreDmpCriteriaModel } from '@app/core/query/explore-dmp/explore-dmp-criteria'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -// import { BreadcrumbItem } from '@app/ui/misc/breadcrumb/definition/breadcrumb-item'; -// import { IBreadCrumbComponent } from '@app/ui/misc/breadcrumb/definition/IBreadCrumbComponent'; -import { BaseComponent } from '@common/base/base.component'; -import { TranslateService } from '@ngx-translate/core'; -import { Observable, of as observableOf } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-explore-dmp-listing-component', - templateUrl: 'explore-dmp-listing.component.html', - styleUrls: ['./explore-dmp-listing.component.scss'], -}) -export class ExploreDmpListingComponent extends BaseComponent implements OnInit { //IBreadCrumbComponent - - @ViewChild(MatPaginator, { static: true }) _paginator: MatPaginator; - sort = new MatSort(); - - exploreDmpCriteriaModel: ExploreDmpCriteriaModel = new ExploreDmpCriteriaModel(); - titlePrefix: string; - totalCount: number; - listingItems: DmpListingModel[] = []; - // breadCrumbs: Observable; - linkToDmpId: string; - groupId: string; - allVersions: boolean = false; - groupLabel: string; - - constructor( - private dmpService: DmpService, - private router: Router, - private route: ActivatedRoute, - private language: TranslateService, - ) { - super(); - this.sort.direction = 'desc'; - this.sort.active = "publishedAt"; - } - - ngOnInit() { - this.route.params - .pipe(takeUntil(this._destroyed)) - .subscribe(params => { - if (params['groupId']) { - this.groupId = params['groupId']; - this.exploreDmpCriteriaModel.groupIds.push(this.groupId); - this.exploreDmpCriteriaModel.allVersions = true; - this.allVersions = true; - this.route.queryParams - .pipe(takeUntil(this._destroyed)) - .subscribe(queryParams => { - if (queryParams["groupLabel"]) { - this.groupLabel = queryParams["groupLabel"]; - } - }) - } - - this.refresh(); - // const breadCrumbs = []; - // breadCrumbs.push({ - // parentComponentName: null, - // label: this.language.instant('NAV-BAR.PUBLIC-DMPS'), - // url: "/explore-plans" - // }) - // this.breadCrumbs = observableOf(breadCrumbs); - }) - } - - refresh() { - if (this._paginator.pageSize === undefined) this._paginator.pageSize = 10; - const startIndex = this._paginator.pageIndex * this._paginator.pageSize; - let fields: Array = new Array(); - if (this.sort && 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.exploreDmpCriteriaModel || this.getDefaultCriteria(); - this.dmpService.getPublicPaged(request, "listing").pipe(takeUntil(this._destroyed)).subscribe(result => { - if (!result) { return []; } - if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } - this.listingItems = result.data; - }); - } - - - getDefaultCriteria(): ExploreDmpCriteriaModel { - const defaultCriteria = new ExploreDmpCriteriaModel(); - return defaultCriteria; - } - - onCriteriaChange(event: ExploreDmpCriteriaModel) { - this.exploreDmpCriteriaModel = event; - if (this.allVersions == true) this.exploreDmpCriteriaModel.allVersions = this.allVersions; - if (this.groupId) this.exploreDmpCriteriaModel.groupIds.push(this.groupId); - this._paginator.pageIndex = 0; - this.refresh(); - } - - pageThisEvent(event) { - this.refresh(); - } - - // rowClicked(dmp: DmpListingModel) { - // this.router.navigate(['overview', dmp.id], { relativeTo: this.route }); - // } - - // @ViewChild(MatPaginator) _paginator: MatPaginator; - // @ViewChild(MatSort) sort: MatSort; - // criteria: ExploreDmpCriteriaModel = new ExploreDmpCriteriaModel(); - - // dataSource: DmpDataSource | null; - // displayedColumns: String[] = ['name', 'grant', 'organisations', 'created']; - // pageEvent: PageEvent; - // titlePrefix: String; - // dmpId: string; - - // constructor( - // public dmpService: DmpService, - // private router: Router, - // private languageService: TranslateService, - // public snackBar: MatSnackBar, - // public route: ActivatedRoute - // ) { - // super(); - // } - - // ngOnInit() { - // this.refresh(); - // } - - // rowClick(rowId: String) { - // this.router.navigate(['/plans/publicEdit/' + rowId]); - // } - - // refresh() { - // this.dataSource = new DmpDataSource(this.dmpService, this._paginator, this.sort, this.languageService, this.snackBar, this.criteria); - // } - - // getDefaultCriteria(dmpId: String): DmpCriteria { - // const defaultCriteria = new DmpCriteria(); - // return defaultCriteria; - // } - - // onCriteriaChange(event: ExploreDmpCriteriaModel) { - // //console.log(event) - // this.criteria = event; - // this.refresh(); - // } -} - -// export class DmpDataSource extends DataSource { - -// totalCount = 0; - -// constructor( -// private _service: DmpService, -// private _paginator: MatPaginator, -// private _sort: MatSort, -// private _languageService: TranslateService, -// private _snackBar: MatSnackBar, -// private _criteria: ExploreDmpCriteriaModel, -// ) { -// super(); -// } - -// connect(): Observable { -// const displayDataChanges = [ -// this._paginator.page -// ]; - -// return Observable.merge(...displayDataChanges) -// .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; -// //if (this.dmpId) request.criteria.allVersions = true; -// return this._service.getPublicPaged(request); -// }) -// .map(result => { -// if (!result) { return []; } -// if (this._paginator.pageIndex === 0) { this.totalCount = result.totalCount; } -// return result.data; -// }); -// } - -// disconnect(): void { -// // No-op -// } -// } diff --git a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp.module.ts b/dmp-frontend/src/app/ui/explore-dmp/explore-dmp.module.ts deleted file mode 100644 index 51046c470..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { NgModule } from "@angular/core"; -import { AutoCompleteModule } from '@app/library/auto-complete/auto-complete.module'; -import { DmpOverviewModule } from '@app/ui/dmp/overview/dmp-overview.module'; -import { ExploreDmpFilterItemComponent } from '@app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filter-item/explore-dmp-filter-item.component'; -import { ExploreDmpFiltersComponent } from '@app/ui/explore-dmp/dmp-explore-filters/explore-dmp-filters.component'; -import { ExploreDmpListingComponent } from '@app/ui/explore-dmp/explore-dmp-listing.component'; -import { ExploreDmpRoutingModule } from '@app/ui/explore-dmp/explore-dmp.routing'; -import { ExploreDmpListingItemComponent } from '@app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component'; -import { CommonFormsModule } from '@common/forms/common-forms.module'; -import { CommonUiModule } from '@common/ui/common-ui.module'; - -@NgModule({ - imports: [ - CommonUiModule, - CommonFormsModule, - AutoCompleteModule, - ExploreDmpRoutingModule, - DmpOverviewModule - ], - declarations: [ - ExploreDmpListingComponent, - ExploreDmpFiltersComponent, - ExploreDmpFilterItemComponent, - ExploreDmpListingItemComponent - ] -}) -export class ExploreDmpModule { } diff --git a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp.routing.ts b/dmp-frontend/src/app/ui/explore-dmp/explore-dmp.routing.ts deleted file mode 100644 index 4918a250d..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/explore-dmp.routing.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { ExploreDmpListingComponent } from './explore-dmp-listing.component'; -import { DmpOverviewComponent } from '../dmp/overview/dmp-overview.component'; - -const routes: Routes = [ - { - path: '', - component: ExploreDmpListingComponent, - data: { - breadcrumb: true - } - }, - { - path: 'versions/:groupId', - component: ExploreDmpListingComponent, - data: { - breadcrumb: true - }, - }, - { - path: 'overview/:publicId', - component: DmpOverviewComponent, - data: { - breadcrumb: true, - title: 'GENERAL.TITLES.EXPLORE-PLANS-OVERVIEW' - }, - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class ExploreDmpRoutingModule { } 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 deleted file mode 100644 index e7bf1a5d0..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - 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 deleted file mode 100644 index 8e71079de..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.scss +++ /dev/null @@ -1,142 +0,0 @@ -.gray-container { - letter-spacing: 5px; - color: #aaaaaa; -} - -.container-header { - display: flex; - align-items: baseline; - margin-top: 0px; - text-transform: uppercase; -} - -.about-item { - display: flex; - flex-wrap: wrap; -} - -.about-item h4 { - font-size: 1rem; - line-height: 1.25em; - font-weight: 500; -} - -.about-item .length { - color: var(--primary-color-3); - // color: #089dbb; -} - -.about-item .title { - margin: 2px 10px; -} - -.about-item p { - margin-left: auto; - margin-bottom: 0px; - padding-top: 7px; - color: #aaaaaa; -} - -.draft-icon { - color: #aaaaaa; -} - -.more-horiz { - font-size: 28px; - color: #aaaaaa; -} - -.custom-published-icon { - width: 20px; - height: 20px; - border-radius: 50%; - background-color: #08bd6342; - margin-top: 3px; -} - -.published-icon { - color: #08bd63; - font-size: 12px; - margin-left: 4px; - padding-bottom: 7px; - // padding-top: 2px; - // padding-left: 4px; - // color: #92d050; -} - -.outer-circle { - background: #08bd6342; - border-radius: 50%; - width: 20px; - height: 20px; - position: relative; - margin-top: 3px; -} - -.inner-circle { - position: absolute; - background: #08bd63; - border-radius: 50%; - height: 10px; - width: 10px; - top: 50%; - left: 50%; - margin: -5px 0px 0px -5px; -} - -h4 { - display: inline; - padding-left: 1em; - line-height: 1.7em; -} - -h4 > span { - text-transform: uppercase; -} - -p { - color: #333333; -} - -.description { - margin-bottom: 0.4em; -} - -// .explore-dmp-listing-item { -// margin-top: 2em; -// margin-bottom: 2em; -// cursor: pointer; - -// .title { -// color: black; -// } - -// .grant-title { -// color: rgb(93, 125, 173); -// } - -// .gray-icon { -// color: rgb(191, 191, 191); -// } - -// .explore-dmp-chip { -// padding: 0.1em 1em; -// border: 0.1em solid rgb(236, 241, 249); -// border-radius: 10em; -// background-color: rgb(236, 241, 249); -// color: rgb(68, 114, 196); -// } - -// .explore-dmp-squared-chip { -// padding: 0.1em 1em; -// border: 0.1em solid rgb(236, 241, 249); -// border-radius: 0.5em; -// background-color: rgb(246, 246, 246); -// color: rgb(127, 127, 127); -// } - -// mat-icon { -// width: auto; -// height: auto; -// } -// } diff --git a/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.ts b/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.ts deleted file mode 100644 index 663db64f7..000000000 --- a/dmp-frontend/src/app/ui/explore-dmp/listing-item/explore-dmp-listing-item.component.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { DmpListingModel } from '../../../core/model/dmp/dmp-listing'; -import { Principal } from '../../../core/model/auth/principal'; -import { AuthService } from '../../../core/services/auth/auth.service'; -import { TranslateService } from '@ngx-translate/core'; -import { Router, ActivatedRoute } from '@angular/router'; - -@Component({ - selector: 'app-explore-dmp-listing-item-component', - templateUrl: './explore-dmp-listing-item.component.html', - styleUrls: ['./explore-dmp-listing-item.component.scss'], -}) -export class ExploreDmpListingItemComponent implements OnInit { - - @Input() dmp: DmpListingModel; - @Input() showDivider: boolean = true; - @Output() onClick: EventEmitter = new EventEmitter(); - - constructor( - private authentication: AuthService, - private translate: TranslateService, - private router: Router, - private route: ActivatedRoute - ) { } - - ngOnInit() { - } - - // itemClicked() { - // this.onClick.emit(this.dmp); - // } - - roleDisplay(value: any) { - const principalId: string = this.authentication.userId().toString(); - let role: number; - if (principalId) { - value.forEach(element => { - if (principalId === element.id) { - role = element.role; - } - }); - } - if (role === 0) { - return this.translate.instant('DMP-PUBLIC-LISTING.OWNER'); - } - else if (role === 1) { - return this.translate.instant('DMP-PUBLIC-LISTING.MEMBER'); - } - else { - return this.translate.instant('DMP-PUBLIC-LISTING.VIEW-ONLY'); - } - } -} diff --git a/dmp-frontend/src/app/ui/language/language-content/language.component.ts b/dmp-frontend/src/app/ui/language/language-content/language.component.ts index 2bc6e76fc..d3e083826 100644 --- a/dmp-frontend/src/app/ui/language/language-content/language.component.ts +++ b/dmp-frontend/src/app/ui/language/language-content/language.component.ts @@ -1,13 +1,10 @@ -import { Component, OnInit, Output, EventEmitter } from '@angular/core'; +import { Component, EventEmitter, OnInit, Output } from '@angular/core'; +import { MatButtonToggleChange } from '@angular/material/button-toggle'; import { Router } from '@angular/router'; import { AuthService } from '@app/core/services/auth/auth.service'; import { LanguageService } from '@app/core/services/language/language.service'; -import { UserServiceOld } from '@app/core/services/user/user.service-old'; -import { takeUntil } from 'rxjs/operators'; -import { BaseComponent } from '@common/base/base.component'; -import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; -import { MatButtonToggleChange } from '@angular/material/button-toggle'; import { UserService } from '@app/core/services/user/user.service'; +import { BaseComponent } from '@common/base/base.component'; @Component({ selector: 'app-language', diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component.html deleted file mode 100644 index 567ff7d61..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component.html +++ /dev/null @@ -1,15 +0,0 @@ -
-
-
- close -
-
-
- -
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component.ts deleted file mode 100644 index 9648f1c31..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component.ts +++ /dev/null @@ -1,31 +0,0 @@ -import {Component, Inject} from "@angular/core"; -import {MAT_DIALOG_DATA, MatDialogRef} from "@angular/material/dialog"; -import { VisibilityRulesService } from "@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service"; - -@Component({ - selector: 'app-form-composite-field-dialog', - templateUrl: 'form-composite-field-dialog.component.html' -}) -export class FormCompositeFieldDialogComponent { - - public visibilityRulesService: VisibilityRulesService; - - constructor( - private dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: any - ) { - this.visibilityRulesService = data.visibilityRulesService; - } - - cancel() { - this.dialogRef.close(); - } - - save() { - this.dialogRef.close(this.data.formGroup); - } - - public close() { - this.dialogRef.close(false); - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.html deleted file mode 100644 index 471e5623b..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.html +++ /dev/null @@ -1,74 +0,0 @@ -
- -
-
-
- -
-
-
- -
- -
-
-
- - -
-
- -
-
-
- -
-
-
- -
-
{{this.fieldFormGroup.get('data').value.label}}
-
- - -
-
-
- -
-
-
-
- - - {{fieldFormGroup.getRawValue() | fieldValue | translate}} - - - - - - diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.scss deleted file mode 100644 index a6df1bcca..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.scss +++ /dev/null @@ -1,17 +0,0 @@ -.compositeField { - padding-left: 0em !important; -// padding-top: 2em !important; -} - -// ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline { -// background: #fafafa !important; -// } - -// ::ng-deep .mat-form-field-appearance-outline .mat-form-field-infix { -// font-size: 1rem; -// padding: 0.6em 0 1em 0 !important; -// } - -.actions { - width: 110px; -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.ts deleted file mode 100644 index f902aefdd..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component.ts +++ /dev/null @@ -1,125 +0,0 @@ -import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input} from '@angular/core'; -import {UntypedFormArray, UntypedFormGroup} from '@angular/forms'; -import {BaseComponent} from '@common/base/base.component'; -import {takeUntil} from 'rxjs/operators'; -import {ToCEntry} from '../../dataset-description.component'; -import { - FormCompositeFieldDialogComponent -} from "@app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component"; -import {MatDialog} from "@angular/material/dialog"; -import {cloneAbstractControl} from "@app/utilities/enhancers/utils"; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; - -@Component({ - selector: 'app-form-composite-field, [app-form-composite-field]', - templateUrl: './form-composite-field.component.html', - styleUrls: ['./form-composite-field.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class FormCompositeFieldComponent extends BaseComponent { - - @Input() datasetProfileId: String; - @Input() form: UntypedFormGroup; - @Input() isChild: Boolean = false; - @Input() showDelete: Boolean = false; - @Input() tocentry: ToCEntry; - @Input() tableRow: boolean = false; - @Input() showTitle: boolean = true; - @Input() placeholderTitle: boolean = false; - @Input() altVisibilityRulesService: VisibilityRulesService; - - constructor( - private dialog: MatDialog, - public visibilityRulesService: VisibilityRulesService, - private changeDetector: ChangeDetectorRef - ) { - super(); - } - - ngOnInit() { - if(this.altVisibilityRulesService) { - this.visibilityRulesService = this.altVisibilityRulesService; - } - this.visibilityRulesService.getElementVisibilityMapObservable().pipe(takeUntil(this._destroyed)).subscribe(x => { - this.changeDetector.markForCheck(); - }); - if (this.tocentry) { - this.form = this.tocentry.form as UntypedFormGroup; - } - } - - // addMultipleField(fieldIndex: number) { - // const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldIndex) as FormGroup).getRawValue(); - // const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned); - // ((this.form.get('compositeFields').get('' + fieldIndex).get('multiplicityItems'))).push(compositeField.buildForm()); - // } - - // markForConsideration() { - // this.markForConsiderationService.markForConsideration(this.compositeField); - // } - - editCompositeFieldInDialog() { - const dialogRef = this.dialog.open(FormCompositeFieldDialogComponent, { - width: '750px', - disableClose: true, - data: { - formGroup: cloneAbstractControl(this.form), - datasetProfileId: this.datasetProfileId, - visibilityRulesService: this.visibilityRulesService - } - }); - dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(data => { - if (data) { - this.form.patchValue(data.value); - this.changeDetector.detectChanges(); - } - }); - } - - deleteCompositeField() { - if (this.isChild) { - this.deleteMultipeFieldFromCompositeFormGroup(); - } else { - this.deleteCompositeFieldFormGroup(); - } - } - - deleteCompositeFieldFormGroup() { - - const compositeFieldId = ((this.form.get('multiplicityItems') as UntypedFormArray).get('' + 0) as UntypedFormGroup).getRawValue().id; - const fieldIds = (this.form.get('fields') as UntypedFormArray).controls.map(control => control.get('id').value) as string[]; - - const numberOfItems = this.form.get('multiplicityItems').get('' + 0).get('fields').value.length; - for (let i = 0; i < numberOfItems; i++) { - const multiplicityItem = this.form.get('multiplicityItems').get('' + 0).get('fields').get('' + i).value; - this.form.get('fields').get('' + i).patchValue(multiplicityItem); - } - ((this.form.get('multiplicityItems'))).removeAt(0); - - - this.visibilityRulesService.removeAllIdReferences(compositeFieldId); - fieldIds.forEach(x => this.visibilityRulesService.removeAllIdReferences(x)); - } - - deleteMultipeFieldFromCompositeFormGroup() { - const parent = this.form.parent; - const index = (parent as UntypedFormArray).controls.indexOf(this.form); - - const currentId = this.form.get('id').value; - const fieldIds = (this.form.get('fields') as UntypedFormArray).controls.map(control => control.get('id').value) as string[]; - - - this.visibilityRulesService.removeAllIdReferences(currentId); - fieldIds.forEach(x => this.visibilityRulesService.removeAllIdReferences(x)); - - (parent as UntypedFormArray).removeAt(index); - (parent as UntypedFormArray).controls.forEach((control, i) => { - try { - control.get('ordinal').setValue(i); - } catch { - throw 'Could not find ordinal'; - } - }); - // ((this.form as AbstractControl)).removeAt(fildIndex); - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.html deleted file mode 100644 index fc710c640..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.html +++ /dev/null @@ -1,27 +0,0 @@ -
-
-
- {{tocentry? tocentry.numbering :form.get('numbering').value}} - {{form.get('title').value}} - -
- info -
-
- - -
- -
-
- {{'DATASET-EDITOR.QUESTION.EXTENDED-DESCRIPTION.VIEW-MORE' | translate}} -
-
-
- - {{'DATASET-EDITOR.QUESTION.EXTENDED-DESCRIPTION.VIEW-LESS' | translate}} - -
-
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.scss deleted file mode 100644 index 356217a1e..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.scss +++ /dev/null @@ -1,31 +0,0 @@ -.compositeField { - // font-weight: bold; - // color: #3a3737; - // max-width: 100%; - // padding-top: 1em; - text-align: left; - font-weight: 700; - font-size: 18px; - letter-spacing: 0px; - color: #212121; - opacity: 0.81; - margin-top: 1.625rem; - margin-bottom: 0.625rem; -} - -.info-icon{ - margin-top: 1.625rem; -} - -h6 { - text-transform: none; - font-weight: 400; -} - -.more { - text-decoration: underline; - color: var(--secondary-color); - cursor: pointer; - font-size: 1rem; - font-weight: 400; -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.ts deleted file mode 100644 index 5cfc7027a..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-composite-title/form-composite-title.component.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Component, OnInit, Input } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { ToCEntry } from '../../dataset-description.component'; - -@Component({ - selector: 'app-form-composite-title', - templateUrl: './form-composite-title.component.html', - styleUrls: ['./form-composite-title.component.scss'] -}) -export class FormCompositeTitleComponent implements OnInit { - - @Input() form: UntypedFormGroup; - @Input() isChild: Boolean = false; - @Input() tocentry:ToCEntry; - - public showExtendedDescription: boolean = false; - - constructor() { } - - ngOnInit() { - if(this.tocentry){ - this.form = this.tocentry.form as UntypedFormGroup; - } - } - -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html deleted file mode 100644 index e24890e11..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html +++ /dev/null @@ -1,484 +0,0 @@ -
- -
{{this.form.get('title').value}}
- info - -
{{this.form.get('description').value}} -
-
- {{this.form.get('extendedDescription').value}} -
- - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - {{'GENERAL.VALIDATION.URL.MESSAGE' | translate}} - - -
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - - - - {{opt.label}} - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - -
-
- -
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - - - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - - - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
- - {{form.get('data').value.label}} -
- - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - -
-
- {{'GENERAL.VALIDATION.REQUIRED' | translate}} -
-
-
- -
- - - {{ form.value.value.name }} - - -
-
- - - -
-
- - - - - - - - - -
- - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.ACTIONS.YES" | translate }} - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.ACTIONS.NO" | translate }} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} -
- -
- - {{option.label}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} * -
- - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - -
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
-
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
-
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
-
- - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
-
- - - -
-
- -
-
- - - - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
-
- - - - - - - - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} - -
-
- -
-
- - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - - - {{ type.name }} - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - -
-
- -
-
- - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - -
-
- -
-
- - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - - - {{ type.name }} - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - -
- - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
- - {{validationIcon}} -
-
-
-
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.scss deleted file mode 100644 index 0213cb51f..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.scss +++ /dev/null @@ -1,105 +0,0 @@ -.dynamic-form-field { - .radio-button-item { - margin-right: 1em; - } - - .full-width { - width: 100%; - } - - .text-area { - box-sizing: content-box; - } - - .success { - color: green; - } - - .fail { - color: red; - } -} - -::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} - - -.attach-btn { - top: -20px; -} - -.attach-file-btn { - min-width: 156px; - height: 44px; - color: #ffffff; - background: var(--primary-color) 0% 0% no-repeat padding-box; - box-shadow: 0px 3px 6px #1e202029; - border-radius: 30px; -} - -.attach-file-btn:hover { - background-color: #ffffff; - border: 1px solid var(--primary-color); - color: var(--primary-color); -} - -.attach-file-btn.mdc-button-disabled, .attach-file-btn.mdc-button-disabled:hover { - background-color: #ffffff; - border: 1px solid darkgray; - color: darkgrey !important; -} -// -//.mdc-button-disabled .attach-file-btn > ::ng-deep mdc-button-wrapper:hover > * { -// color: darkgrey !important; -//} - -.drop-file { - background-color: #fafafa; - border: 1px dashed #d1d1d1; - border-radius: 4px; - //max-width: 480px; - height: 98px; - margin-top: 0.5rem; -} - -.file-preview { - height: auto !important; - width: auto !important; - max-width: 500px !important; - min-height: 1rem !important; - - background-color: #e0e0e0 !important; - background-image: none !important; - color: rgba(0, 0, 0, 0.87) !important; - font-weight: 500 !important; - border-radius: 24px !important; - line-height: 1.25 !important; -} - -.file-label { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - font-size: 14px !important; -} - -::ng-deep ngx-dropzone-remove-badge { - opacity: 1 !important; - margin-left: .5rem !important; - position: initial !important; -} - -::ng-deep .upload-form .mat-form-field-appearance-outline .mat-form-field-outline { - background: #fafafa !important; -} - -::ng-deep .upload-form .mat-form-field-appearance-outline .mat-form-field-infix { - font-size: 1rem; - padding: 0.6em 0 1em 0 !important; -} 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 deleted file mode 100644 index 041711468..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts +++ /dev/null @@ -1,766 +0,0 @@ - -import {ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit, SimpleChanges} from '@angular/core'; -import { UntypedFormGroup, FormArray, UntypedFormControl } from '@angular/forms'; -import { DatasetProfileComboBoxType } from '@app/core/common/enum/dataset-profile-combo-box-type'; -import { DatasetProfileFieldViewStyle } from '@app/core/common/enum/dataset-profile-field-view-style'; -import { DatasetProfileInternalDmpEntitiesType } from '@app/core/common/enum/dataset-profile-internal-dmp-entities-type'; -import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; -import { DatasetExternalAutocompleteCriteria, DatasetExternalAutocompleteOptionsCriteria } from '@app/core/query/dataset/daatset-external-autocomplete-criteria'; -import { DatasetCriteria } from '@app/core/query/dataset/dataset-criteria'; -import { DmpCriteria } from '@app/core/query/dmp/dmp-criteria'; -import { RequestItem } from '@app/core/query/request-item'; -import { ResearcherCriteria } from '@app/core/query/researcher/researcher-criteria'; -import { DatasetExternalAutocompleteService } from '@app/core/services/dataset/dataset-external-autocomplete.service'; -import { DatasetService } from '@app/core/services/dataset/dataset.service'; -import { DmpService } from '@app/core/services/dmp/dmp.service'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; -import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; -import { BaseComponent } from '@common/base/base.component'; -import { TranslateService } from '@ngx-translate/core'; -import { distinctUntilChanged, map, takeUntil } from 'rxjs/operators'; -import { Observable } from 'rxjs'; -import { ExternalSourceItemModel } from '@app/core/model/external-sources/external-source-item'; -import { ExternalDatasetCriteria } from '@app/core/query/external-dataset/external-dataset-criteria'; -import { DataRepositoryCriteria } from '@app/core/query/data-repository/data-repository-criteria'; -import { RegistryCriteria } from '@app/core/query/registry/registry-criteria'; -import { ServiceCriteria } from '@app/core/query/service/service-criteria'; -import { TagCriteria } from '@app/core/query/tag/tag-criteria'; -import { isNullOrUndefined } from '@app/utilities/enhancers/utils'; -import { ExternalTagEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.model'; -import { MatChipInputEvent } from '@angular/material/chips'; -import { ENTER, COMMA } from '@angular/cdk/keycodes'; -import { DatasetIdModel } from '@app/core/model/dataset/dataset-id.model'; -import { LocalFetchModel } from '@app/core/model/local-fetch/local-fetch.model'; -import { CurrencyService } from '@app/core/services/currency/currency.service'; -import { AutoCompleteSingleData } from '@app/core/model/dataset-profile-definition/field-data/field-data'; -import {LicenseCriteria} from "@app/core/query/license/license-criteria"; -import {TaxonomyCriteria} from "@app/core/query/taxonomy/taxonomy-criteria"; -import {PublicationCriteria} from "@app/core/query/publication/publication-criteria"; -import {FileService} from "@app/core/services/file/file.service"; -import { - SnackBarNotificationLevel, - UiNotificationService -} from "@app/core/services/notification/ui-notification-service"; -import {FormValidationErrorsDialogComponent} from "@common/forms/form-validation-errors-dialog/form-validation-errors-dialog.component"; -import {MatDialog} from "@angular/material/dialog"; -import {HttpError} from "@common/modules/errors/error-handling/http-error-handling.service"; -import {HttpErrorResponse} from "@angular/common/http"; -import * as FileSaver from "file-saver"; -import { FetcherReference, Reference } from '@app/core/model/reference/reference'; -import { ReferenceType } from '@app/core/common/enum/reference-type'; -import { FileUtils } from '@app/core/services/utilities/file-utils.service'; -import { ReferenceSearchLookup } from '@app/core/query/reference-search.lookup'; -import { lookup } from 'dns'; -import { ReferenceService } from '@app/core/services/reference/reference.service'; - -@Component({ - selector: 'app-form-field', - templateUrl: './form-field.component.html', - styleUrls: ['./form-field.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class FormFieldComponent extends BaseComponent implements OnInit { - - // @Input() field: Field; - @Input() form: UntypedFormGroup; - @Input() datasetProfileId: any; - @Input() isChild: Boolean = false; - autocompleteOptions: AutoCompleteSingleData[]; - - visible: boolean = true; - _renderStyle: DatasetProfileFieldViewStyle = null; - - get renderStyle() { - //console.log('renderStyle'); - return this._renderStyle; - } - - // change: Subscription; - // trackByFn = (index, item) => item ? item['id'] : null; - - public singleAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - public multipleAutoCompleteConfiguration: MultipleAutoCompleteConfiguration; - datasetProfileFieldViewStyleEnum = DatasetProfileFieldViewStyle; - datasetProfileComboBoxTypeEnum = DatasetProfileComboBoxType; - datasetProfileInternalDmpEntitiesTypeEnum = DatasetProfileInternalDmpEntitiesType; - externalDatasetAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - dataRepositoriesAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - pubRepositoriesAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - journalRepositoriesAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - taxonomiesAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - licensesAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - publicationsAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - registriesAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - servicesAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - tagsAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - researchersAutoCompleteConfiguration: MultipleAutoCompleteConfiguration; - organisationsAutoCompleteConfiguration: MultipleAutoCompleteConfiguration; - currencyAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - - readonly separatorKeysCodes: number[] = [ENTER, COMMA]; - - tags: ExternalTagEditorModel[] = []; - - datasetIdInitialized: boolean = false; - - validationIcon; - - readonly datasetIdTypes: any[] = [ - { name: 'Handle', value: 'handle' }, - { name: 'DOI', value: 'doi' }, - { name: 'Ark', value: 'ark' }, - { name: 'Url', value: 'url' }, - { name: 'Other', value: 'other' } - ]; - - - readonly validationTypes: any[] = [ - { name: 'Zenodo', value: 'zenodo' } - ]; - - filesToUpload: FileList; - - constructor( - public visibilityRulesService: VisibilityRulesService, - private datasetExternalAutocompleteService: DatasetExternalAutocompleteService, - private externalSourcesService: ExternalSourcesService, - private language: TranslateService, - private datasetService: DatasetService, - private dmpService: DmpService, - private currencyService: CurrencyService, - private fileService: FileService, - private cdr: ChangeDetectorRef, - private uiNotificationService: UiNotificationService, - public dialog: MatDialog, - private fileUtils: FileUtils, - private referenceService: ReferenceService - ) { - super(); - - this.visibilityRulesService.getElementVisibilityMapObservable().pipe(takeUntil(this._destroyed)).subscribe(x => { - this.visible = this.visibilityRulesService.checkElementVisibility(this.form?.get('id')?.value); - }); - } - - ngOnChanges(changes: SimpleChanges) { - if (changes['form']) { - this._renderStyle = this.form.get('viewStyle')?.value?.renderStyle; - } - } - - ngOnInit() { - - if (this.form.get('value').value) { - this.visibilityRulesService.updateValueAndVisibility(this.form.get('id').value, this.form.get('value').value); - } - - if (this.form.get('viewStyle').value.renderStyle === DatasetProfileFieldViewStyle.ComboBox && this.form.get('data').value.type === DatasetProfileComboBoxType.WordList) { - if (this.form.get('data').value.multiList) { - const originalValue = this.form.get('value').value; - if (originalValue !== null && typeof originalValue === 'string') { - let values = (this.form.get('value').value).slice(1, -1).split(', ').filter((value) => !value.includes('"')); - let specialValue = (this.form.get('value').value).split('"').filter((value) => !value.startsWith('[') && !value.endsWith(']') && !values.includes(value) && value !== ', '); - specialValue.forEach(value => values.push(value)); - if (!originalValue.startsWith('[') && !originalValue.endsWith(']')) { - values = undefined; - values = [originalValue]; - } - this.form.patchValue({ 'value': values }); - values.forEach(element => { - this.visibilityRulesService.updateValueAndVisibility(this.form.get('id').value, element); - }); - } - } - } - - // Setup autocomplete configuration if needed - if (this.form.get('viewStyle').value.renderStyle === DatasetProfileFieldViewStyle.ComboBox && this.form.get('data').value.type === DatasetProfileComboBoxType.Autocomplete) { - if (!(this.form.controls['data'].value.multiAutoComplete)) { - this.singleAutoCompleteConfiguration = { - filterFn: this.searchFromAutocomplete.bind(this), - initialItems: () => this.searchFromAutocomplete(''), - displayFn: (item) => { try { return (item != null && item.length > 1) ? JSON.parse(item).label : item['label'] } catch { return '' } }, - titleFn: (item) => { try { return item['label'] } catch { return '' } }, - valueAssign: (item) => { try { return JSON.stringify(item) } catch { return '' } }, - subtitleFn: (item) => { try { return item['source'] ? this.language.instant('DATASET-WIZARD.EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE-SUBTITLE') + item['source'] : this.language.instant('DATASET-WIZARD.EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE-NO-SOURCE') } catch { return '' } } - }; - } - else { - this.multipleAutoCompleteConfiguration = { - filterFn: this.searchFromAutocomplete.bind(this), - initialItems: () => this.searchFromAutocomplete(''), - displayFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['label'] : item['label'] } catch { return '' } }, - titleFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['label'] : item['label'] } catch { return '' } }, - valueAssign: (item) => { try { return typeof (item) == 'string' ? item : JSON.stringify(item) } catch { return '' } }, - subtitleFn: (item) => { try { return item['source'] ? this.language.instant('DATASET-WIZARD.EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE-SUBTITLE') + item['source'] : this.language.instant('DATASET-WIZARD.EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE-NO-SOURCE') } catch { return '' } } - } - } - if(isNullOrUndefined(this.datasetProfileId)){ - this.autocompleteOptions = this.form.get('data').value.autoCompleteSingleDataList; - } - } - - switch (this.form.get('viewStyle').value.renderStyle) { - case DatasetProfileFieldViewStyle.ExternalDatasets: - this.externalDatasetAutoCompleteConfiguration = { - filterFn: this.searchDatasetExternalDatasets.bind(this), - initialItems: () => this.searchDatasetExternalDatasets(''),//.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1), - displayFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - titleFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - subtitleFn: (item) => { try { return item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') } catch { return '' } }, - valueAssign: (item) => { try { return typeof (item) == 'string' ? item : JSON.stringify(item) } catch { return '' } } - }; - break; - case DatasetProfileFieldViewStyle.DataRepositories: - this.dataRepositoriesAutoCompleteConfiguration = { - filterFn: this.searchDatasetExternalDataRepositories.bind(this), - initialItems: () => this.searchDatasetExternalDataRepositories(''), - displayFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - titleFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - subtitleFn: (item) => { try { return item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') } catch { return '' } }, - valueAssign: (item) => { try { return typeof (item) == 'string' ? item : JSON.stringify(item) } catch { return '' } } - }; - break; - case DatasetProfileFieldViewStyle.PubRepositories: - this.pubRepositoriesAutoCompleteConfiguration = { - filterFn: this.searchDatasetExternalPubRepositories.bind(this), - initialItems: () => this.searchDatasetExternalPubRepositories(''), - displayFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - titleFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - subtitleFn: (item) => { try{return item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')}catch{return''}}, - valueAssign: (item) => { try{return typeof (item) == 'string' ? item : JSON.stringify(item)}catch{return''}} - }; - break; - case DatasetProfileFieldViewStyle.JournalRepositories: - this.journalRepositoriesAutoCompleteConfiguration = { - filterFn: this.searchDatasetExternalJournalRepositories.bind(this), - initialItems: () => this.searchDatasetExternalJournalRepositories(''), - displayFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - titleFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - subtitleFn: (item) => { try{return item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')}catch{return''}}, - valueAssign: (item) => { try{return typeof (item) == 'string' ? item : JSON.stringify(item)}catch{return''}} - }; - break; - case DatasetProfileFieldViewStyle.Taxonomies: - this.taxonomiesAutoCompleteConfiguration = { - filterFn: this.searchDatasetExternalTaxonomies.bind(this), - initialItems: () => this.searchDatasetExternalTaxonomies(''), - displayFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - titleFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - subtitleFn: (item) => { try{return item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')}catch{return''}}, - valueAssign: (item) => { try{return typeof (item) == 'string' ? item : JSON.stringify(item)}catch{return''}} - }; - break; - case DatasetProfileFieldViewStyle.Licenses: - this.licensesAutoCompleteConfiguration = { - filterFn: this.searchDatasetExternalLicences.bind(this), - initialItems: () => this.searchDatasetExternalLicences(''), - displayFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - titleFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - subtitleFn: (item) => { try{return item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')}catch{return''}}, - valueAssign: (item) => { try{return typeof (item) == 'string' ? item : JSON.stringify(item)}catch{return''}} - }; - break; - case DatasetProfileFieldViewStyle.Publications: - this.publicationsAutoCompleteConfiguration = { - filterFn: this.searchDatasetExternalPublications.bind(this), - initialItems: () => this.searchDatasetExternalPublications(''), - displayFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - titleFn: (item) => { try{return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name}catch{return''}}, - subtitleFn: (item) => { try{return item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')}catch{return''}}, - valueAssign: (item) => { try{return typeof (item) == 'string' ? item : JSON.stringify(item)}catch{return''}} - }; - break; - case DatasetProfileFieldViewStyle.Registries: - this.registriesAutoCompleteConfiguration = { - filterFn: this.searchDatasetExternalRegistries.bind(this), - initialItems: () => this.searchDatasetExternalRegistries(''), - displayFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - titleFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - subtitleFn: (item) => { try { return item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') } catch { return '' } }, - valueAssign: (item) => { try { return typeof (item) == 'string' ? item : JSON.stringify(item) } catch { return '' } } - }; - break; - case DatasetProfileFieldViewStyle.Services: - this.servicesAutoCompleteConfiguration = { - filterFn: this.searchDatasetExternalServices.bind(this), - initialItems: () => this.searchDatasetExternalServices(''), - displayFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - titleFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - subtitleFn: (item) => { try { return item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') } catch { return '' } }, - valueAssign: (item) => { try { return typeof (item) == 'string' ? item : JSON.stringify(item) } catch { return '' } } - }; - break; - case DatasetProfileFieldViewStyle.Tags: - this.tagsAutoCompleteConfiguration = { - filterFn: this.filterTags.bind(this), - initialItems: (excludedItems: any[]) => this.filterTags('').pipe(map(result => result.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1))), - displayFn: (item) => { try { return this.showTag(item) } catch { return '' } }, - titleFn: (item) => { try { return item['name'] } catch { return '' } }, - valueAssign: (item) => { try { return this.addTag(item) } catch { return '' } } - }; - this.parseTags(); - break; - case DatasetProfileFieldViewStyle.Researchers: - this.researchersAutoCompleteConfiguration = { - filterFn: this.filterResearchers.bind(this), - initialItems: (excludedItems: any[]) => this.filterResearchers('').pipe(map(result => result.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1))), - displayFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - titleFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - subtitleFn: (item) => { try { return item['tag'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')) } catch { return '' } }, - valueAssign: (item) => { try { return typeof (item) == 'string' ? item : JSON.stringify(item) } catch { return '' } } - }; - break; - case DatasetProfileFieldViewStyle.Organizations: - this.organisationsAutoCompleteConfiguration = { - filterFn: this.filterOrganisations.bind(this), - initialItems: (excludedItems: any[]) => this.filterOrganisations('').pipe(map(result => result.filter(resultItem => (excludedItems || []).map(x => x.id).indexOf(resultItem.id) === -1))), - displayFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - titleFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - subtitleFn: (item) => { try { return item['tag'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['tag'] : (item['key'] ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item['key'] : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE')) } catch { return '' } }, - valueAssign: (item) => { try { return typeof (item) == 'string' ? item : JSON.stringify(item) } catch { return '' } } - }; - break; - case DatasetProfileFieldViewStyle.DatasetIdentifier: - const value = this.form.get('value').value; - const disabled = this.form.disabled; - this.form.removeControl('value'); - this.form.addControl('value', new DatasetIdModel(value).buildForm()); - if(disabled) { - this.form.disable(); - } - this.datasetIdInitialized = true; - break; - case DatasetProfileFieldViewStyle.Currency: - this.currencyAutoCompleteConfiguration = { - filterFn: this.searchCurrency.bind(this), - initialItems: () => this.searchCurrency(''), - displayFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - titleFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)['name'] : item.name } catch { return '' } }, - valueAssign: (item) => { try { return typeof (item) == 'string' ? item : JSON.stringify(item) } catch { return '' } } - }; - break; - case DatasetProfileFieldViewStyle.Validation: - const value1 = this.form.get('value').value; - const disabled1 = this.form.disabled; - this.form.removeControl('value'); - this.form.addControl('value', new DatasetIdModel(value1).buildForm()); - if(disabled1) { - this.form.disable(); - } - //this.datasetIdInitialized = true; - break; - } - - if (this.form.get('viewStyle').value.renderStyle === DatasetProfileFieldViewStyle.InternalDmpEntities) { - if (this.form.get('data').value.type === DatasetProfileInternalDmpEntitiesType.Researchers) { - this.makeAutocompleteConfiguration(this.searchResearchers.bind(this), "name", "tag"); - } - else if (this.form.get('data').value.type === DatasetProfileInternalDmpEntitiesType.Datasets) { - this.makeAutocompleteConfiguration(this.searchDatasets.bind(this), "label"); - } - else if (this.form.get('data').value.type === DatasetProfileInternalDmpEntitiesType.Dmps) { - this.makeAutocompleteConfiguration(this.searchDmps.bind(this), "label"); - } - } - - // this.form = this.visibilityRulesService.getFormGroup(this.field.id); - this.form.get('value').valueChanges - .pipe( - takeUntil(this._destroyed), - distinctUntilChanged() - ) - .subscribe(item => { - // if (this.form.get('viewStyle').value.renderStyle === DatasetProfileFieldViewStyle.ComboBox && this.form.get('data').value.type === DatasetProfileComboBoxType.WordList && this.form.get('data').value.multiList) { - // item.forEach(element => { - // this.visibilityRulesService.updateValueAndVisibility(this.form.get('id').value, element); - // }); - - // } else { - this.visibilityRulesService.updateValueAndVisibility(this.form.get('id').value, item); - // } - }); - } - - // _optionRemove(event) { - // const array = JSON.parse(this.form.get('value').value); - // if (array) { - // const index = array.map(x => x.id).indexOf(event.id); - // if (index >= 0) { - // array.splice(index, 1); - // } - // this.form.get('value').patchValue(JSON.stringify(array)); - // } - // } - - searchFromAutocomplete(query: string) { - - if (this.autocompleteOptions) { - const autocompleteRequestItem: RequestItem = new RequestItem(); - autocompleteRequestItem.criteria = new DatasetExternalAutocompleteOptionsCriteria(); - autocompleteRequestItem.criteria.autoCompleteSingleDataList = this.autocompleteOptions; - autocompleteRequestItem.criteria.like = query; - return this.datasetExternalAutocompleteService.queryApi(autocompleteRequestItem); - } - else{ - const autocompleteRequestItem: RequestItem = new RequestItem(); - autocompleteRequestItem.criteria = new DatasetExternalAutocompleteCriteria(); - let parseIdArray: string[] = this.form.get('id').value.split('_'); - if(parseIdArray.length > 1) { - autocompleteRequestItem.criteria.fieldID = parseIdArray[parseIdArray.length - 1]; - } else { - autocompleteRequestItem.criteria.fieldID = this.form.get('id').value; - } - if (typeof this.datasetProfileId === 'string') { - autocompleteRequestItem.criteria.profileID = this.datasetProfileId; - } - else if (this.datasetProfileId != null) { - autocompleteRequestItem.criteria.profileID = this.datasetProfileId.id; - } - autocompleteRequestItem.criteria.like = query; - return this.datasetExternalAutocompleteService.queryAutocomplete(autocompleteRequestItem); - } - } - - searchResearchers(query: string) { - const reasearcherAutocompleteRequestItem: RequestItem = new RequestItem(); - reasearcherAutocompleteRequestItem.criteria = new ResearcherCriteria; - reasearcherAutocompleteRequestItem.criteria.name = query; - return this.externalSourcesService.searchDMPResearchers(reasearcherAutocompleteRequestItem); - } - - searchDatasets(query: string) { - let fields: Array = new Array(); - const datasetsAutocompleteRequestItem: DataTableRequest = new DataTableRequest(0, 25, { fields: fields }); - datasetsAutocompleteRequestItem.criteria = new DatasetCriteria(); - datasetsAutocompleteRequestItem.criteria.like = query; - return this.datasetService.getPaged(datasetsAutocompleteRequestItem).pipe(map(item => item.data)); - } - - searchDmps(query: string) { - let fields: Array = new Array(); - const dmpsAutocompleteRequestItem: DataTableRequest = new DataTableRequest(0, 25, { fields: fields }); - dmpsAutocompleteRequestItem.criteria = new DmpCriteria(); - dmpsAutocompleteRequestItem.criteria.like = query; - return this.dmpService.getPaged(dmpsAutocompleteRequestItem).pipe(map(item => item.data)); - } - - makeAutocompleteConfiguration(myfunc: Function, title: string, subtitle?: string): void { - if (!(this.form.controls['data'].value.multiAutoComplete)) { - this.singleAutoCompleteConfiguration = { - filterFn: myfunc.bind(this), - initialItems: (extraData) => myfunc(''), - displayFn: (item) => { try { return (item != null && item.length > 1) ? JSON.parse(item)[title] : item[title] } catch { return '' } }, - titleFn: (item) => { try { return item[title] } catch { return '' } }, - valueAssign: (item) => JSON.stringify(item), - subtitleFn: (item) => { try { return item[subtitle] } catch { return '' } } - }; - } - else { - this.multipleAutoCompleteConfiguration = { - filterFn: myfunc.bind(this), - initialItems: (extraData) => myfunc(''), - displayFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)[title] : item[title] } catch { return '' } }, - titleFn: (item) => { try { return typeof (item) == 'string' ? JSON.parse(item)[title] : item[title] } catch { return '' } }, - valueAssign: (item) => { try { return typeof (item) == 'string' ? item : JSON.stringify(item) } catch { return '' } }, - subtitleFn: (item) => { try { return item[subtitle] } catch { return '' } } - } - } - } - - searchDatasetExternalDatasets(query: string): Observable { - // const requestItem: RequestItem = new RequestItem(); - // requestItem.criteria = new ExternalDatasetCriteria(); - // requestItem.criteria.like = query; - // requestItem.criteria.type = ''; - // //return this.externalSourcesService.searchDatasetSExternalDatasetservice(requestItem); - // return this.externalSourcesService.listExternal(ReferenceType.Datasets, requestItem.criteria.like, requestItem.criteria.type); - const lookup = new ReferenceSearchLookup(); - lookup.like = query; - lookup.key = ''; - lookup.type = ReferenceType.Datasets; - return this.referenceService.search(lookup); - } - - searchDatasetExternalDataRepositories(query: string): Observable { - // const requestItem: RequestItem = new RequestItem(); - // requestItem.criteria = new DataRepositoryCriteria(); - // requestItem.criteria.like = query; - // requestItem.criteria.type = ''; - // return this.externalSourcesService.listExternal(ReferenceType.DataRepositories, requestItem.criteria.like, requestItem.criteria.type); - const lookup = new ReferenceSearchLookup(); - lookup.like = query; - lookup.key = ''; - lookup.type = ReferenceType.DataRepositories; - return this.referenceService.search(lookup); - } - searchDatasetExternalPubRepositories(query: string): Observable { - // const requestItem: RequestItem = new RequestItem(); - // requestItem.criteria = new DataRepositoryCriteria(); - // requestItem.criteria.like = query; - // requestItem.criteria.type = ''; - // return this.externalSourcesService.listExternal(ReferenceType.PubRepositories, requestItem.criteria.like, requestItem.criteria.type); - const lookup = new ReferenceSearchLookup(); - lookup.like = query; - lookup.key = ''; - lookup.type = ReferenceType.PubRepositories; - return this.referenceService.search(lookup); - } - searchDatasetExternalJournalRepositories(query: string): Observable { - // const requestItem: RequestItem = new RequestItem(); - // requestItem.criteria = new DataRepositoryCriteria(); - // requestItem.criteria.like = query; - // requestItem.criteria.type = ''; - // return this.externalSourcesService.listExternal(ReferenceType.Journals, requestItem.criteria.like, requestItem.criteria.type); - const lookup = new ReferenceSearchLookup(); - lookup.like = query; - lookup.key = ''; - lookup.type = ReferenceType.Journals; - return this.referenceService.search(lookup); - } - searchDatasetExternalTaxonomies(query: string): Observable { - const requestItem: RequestItem = new RequestItem(); - requestItem.criteria = new TaxonomyCriteria(); - requestItem.criteria.like = query; - requestItem.criteria.type = ''; - return this.externalSourcesService.listExternal(ReferenceType.Taxonomies, requestItem.criteria.like, requestItem.criteria.type); - } - searchDatasetExternalLicences(query: string): Observable { - // const requestItem: RequestItem = new RequestItem(); - // requestItem.criteria = new LicenseCriteria(); - // requestItem.criteria.like = query; - // requestItem.criteria.type = ''; - // return this.externalSourcesService.listExternal(ReferenceType.Licenses, requestItem.criteria.like, requestItem.criteria.type); - const lookup = new ReferenceSearchLookup(); - lookup.like = query; - lookup.key = ''; - lookup.type = ReferenceType.Licenses; - return this.referenceService.search(lookup); - } - searchDatasetExternalPublications(query: string): Observable { - // const requestItem: RequestItem = new RequestItem(); - // requestItem.criteria = new PublicationCriteria(); - // requestItem.criteria.like = query; - // requestItem.criteria.type = ''; - //return this.externalSourcesService.listExternal(ReferenceType.Publications, requestItem.criteria.like, requestItem.criteria.type); - - const lookup = new ReferenceSearchLookup(); - lookup.like = query; - lookup.key = ''; - lookup.type = ReferenceType.Publications; - return this.referenceService.search(lookup); - } - - searchDatasetExternalRegistries(query: string): Observable { - const requestItem: RequestItem = new RequestItem(); - requestItem.criteria = new RegistryCriteria(); - requestItem.criteria.like = query; - requestItem.criteria.type = ''; - return this.externalSourcesService.listExternal(ReferenceType.Registries, requestItem.criteria.like, requestItem.criteria.type); - } - - searchDatasetExternalServices(query: string): Observable { - const requestItem: RequestItem = new RequestItem(); - requestItem.criteria = new ServiceCriteria(); - requestItem.criteria.like = query; - requestItem.criteria.type = ''; - return this.externalSourcesService.listExternal(ReferenceType.Services, requestItem.criteria.like, requestItem.criteria.type); - } - - searchDatasetTags(query: string): Observable { - const requestItem: RequestItem = new RequestItem(); - requestItem.criteria = new TagCriteria(); - requestItem.criteria.like = query; - requestItem.criteria.type = ''; - return this.externalSourcesService.searchDatasetTags(requestItem); - } - - parseTags() { - try { - - - let stringValue = this.form.get('value').value; - if (typeof stringValue === 'string') { - stringValue = (stringValue).replace(new RegExp('{', 'g'), '{"').replace(new RegExp('=', 'g'), '":"').replace(new RegExp(',', 'g'), '",').replace(new RegExp(', ', 'g'), ', "').replace(new RegExp('}', 'g'), '"}'); - stringValue = stringValue.replace(new RegExp('}"', 'g'), '}').replace(new RegExp('"{', 'g'), '{'); - } else if (stringValue instanceof Array) { - const tempArray = new Array(); - for (let stringTag of stringValue) { - tempArray.push(JSON.parse(stringTag)); - } - stringValue = JSON.stringify(tempArray); - } - const tagArray = JSON.parse(stringValue); - this.form.patchValue({ 'value': tagArray }); - } catch (e) { - console.warn('Could not parse tags'); - } - } - - filterTags(value: string): Observable { - const requestItem: RequestItem = new RequestItem(); - const criteria: TagCriteria = new TagCriteria(); - criteria.like = value; - requestItem.criteria = criteria; - return this.externalSourcesService.searchDatasetTags(requestItem); - } - - showTag(ev: any) { - if (typeof ev === 'string') { - return ev; - } else { - return ev.name; - } - } - - addTag(ev: any) { - let item: ExternalTagEditorModel; - //this.filteredTags = this.formGroup.get('tags').value; - if (typeof ev === 'string') { - item = new ExternalTagEditorModel('', ev); - } else { - item = ev; - } - if (item.name !== '') { - return item; - } - } - - filterOrganisations(value: string): Observable { - //return this.externalSourcesService.searchDMPOrganizations(value); - //return this.externalSourcesService.listExternal(ReferenceType.Organizations, value, ''); - const lookup = new ReferenceSearchLookup(); - lookup.like = value; - lookup.key = ''; - lookup.type = ReferenceType.Organizations; - return this.referenceService.search(lookup); - } - - filterResearchers(value: string): Observable { - //return this.externalSourcesService.searchDMPResearchers({ criteria: { name: value, like: null } }); - //return this.externalSourcesService.listExternal(ReferenceType.Researcher, value, ''); - const lookup = new ReferenceSearchLookup(); - lookup.like = value; - lookup.key = ''; - lookup.type = ReferenceType.Researcher; - return this.referenceService.search(lookup); - } - - getDatasetIdControl(name: string): UntypedFormControl { - return this.form.get('value').get(name) as UntypedFormControl; - } - - searchCurrency(query: string): Observable { - return this.currencyService.get(query); - } - - validateId() { - const identifier = this.getDatasetIdControl('identifier').value; - const type = this.getDatasetIdControl('type').value; - this.validationIcon = 'loading'; - this.externalSourcesService.validateIdentifier(identifier, type).pipe(takeUntil(this._destroyed)).subscribe(result => { - this.validationIcon = result === true ? 'done' : 'clear'; - }); - - } - - public upload() { - this.fileService.upload(this.filesToUpload[0], this.datasetProfileId.id, this.form.value.id).subscribe((fileId: string) => { - this.form.get("value").patchValue( - {"name": this.filesToUpload[0].name, "id": fileId+"", "type": this.filesToUpload[0].type}); - this.cdr.detectChanges(); - }, error => { - this.onCallbackUploadFail(error.error); - }) - } - - - private onCallbackUploadFail(error: any) { - this.makeFilesNull(); - this.uiNotificationService.snackBarNotification(this.language.instant(error.message), SnackBarNotificationLevel.Error); - } - - fileChangeEvent(fileInput: any, dropped: boolean = false) { - if(this.form.value.value) { - this.onRemove(false); - } - - if(dropped) { - this.filesToUpload = fileInput.addedFiles; - } else { - this.filesToUpload = fileInput.target.files; - } - - - let messages: string[] = []; - if (this.filesToUpload.length == 0) { - messages.push(this.language.instant('DATASET-WIZARD.MESSAGES.NO-FILES-SELECTED')); - return; - } else { - let fileToUpload = this.filesToUpload[0]; - if (this.form.get("data") && this.form.get("data").value.types - && this.form.get("data").value.types.map(type => type.value).includes(fileToUpload.type) - && this.form.get("data").value.maxFileSizeInMB - && this.form.get("data").value.maxFileSizeInMB*1048576 >= fileToUpload.size) { - this.upload(); - } else { - this.filesToUpload = null; - messages.push(this.language.instant('DATASET-WIZARD.MESSAGES.LARGE-FILE-OR-UNACCEPTED-TYPE')); - messages.push(this.language.instant('DATASET-WIZARD.MESSAGES.MAX-FILE-SIZE', {'maxfilesize': this.form.get("data").value.maxFileSizeInMB})); - messages.push(this.language.instant('DATASET-WIZARD.MESSAGES.ACCEPTED-FILE-TYPES')+ this.form.get("data").value.types.map(type => type.value).join(", ")); - } - - if(messages && messages.length > 0) { - this.dialog.open(FormValidationErrorsDialogComponent, { - data: { - errorMessages: messages - } - }) - } - } - } - - onRemove(makeFilesNull: boolean = true) { - // delete from tmp folder - subscribe call - this.fileService.deleteFromTempFolder(this.form.value.value.id).subscribe(res => { - if(makeFilesNull) { - this.makeFilesNull(); - } - this.cdr.detectChanges(); - }, error => { - if(makeFilesNull) { - this.makeFilesNull(); - } - }) - } - - makeFilesNull() { - this.filesToUpload = null; - this.form.value.value = null; - this.form.get("value").patchValue(null); - } - - typesToString() { - return this.form.get("data").value.types.map(type => type.value).toString(); - } - - download(): void { - this.fileService.download(this.form.value.value.id) - .pipe(takeUntil(this._destroyed)) - .subscribe(response => { - const blob = new Blob([response.body], {type: this.form.value.value.type}); - const filename = this.fileUtils.getFilenameFromContentDispositionHeader(response.headers.get('Content-Disposition')); - - FileSaver.saveAs(blob, filename); - }); - } - - // isImageFile(fileType: string) { - // if(!fileType) { - // return false; - // } - // return fileType.startsWith("image/"); - // } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.html deleted file mode 100644 index 56966d9ab..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.html +++ /dev/null @@ -1,5 +0,0 @@ -
-
{{progressSoFar}} {{'GENERAL.PREPOSITIONS.OF' | translate}} {{total}}
- -
{{value}}%
-
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.scss deleted file mode 100644 index a15510639..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.scss +++ /dev/null @@ -1,16 +0,0 @@ -.percentage { - color: #212121; - opacity: 0.7; - font-weight: 400; - font-size: 0.875rem; -} - -.progress-bar { - border-radius: 20px; - height: 11px; - -} - -::ng-deep .mat-progress-bar .mat-progress-bar-fill::after { - border-radius: 20px !important; -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.ts deleted file mode 100644 index 68c83b2d9..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.component.ts +++ /dev/null @@ -1,211 +0,0 @@ -import {ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core'; -import { AbstractControl, UntypedFormArray, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; -import { BaseComponent } from '@common/base/base.component'; -import { takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-form-progress-indication', - templateUrl: './form-progress-indication.component.html', - styleUrls: ['./form-progress-indication.component.scss'] -}) -export class FormProgressIndicationComponent extends BaseComponent implements OnInit, OnChanges { - @Input() formGroup: UntypedFormGroup; - @Input() isDmpEditor: boolean; - @Input() isDatasetEditor: boolean; - @Input() public progressValueAccuracy = 2; - determinateProgressValue: number; - progressSoFar: number; - total: number; - percent: number; - - constructor(private visibilityRulesService: VisibilityRulesService) { super(); } - - public value = 0; - ngOnInit() { - this.init(); - } - - ngOnChanges(changes: SimpleChanges) { - if(changes.formGroup) { - this.init(); - } - } - - init() { - setTimeout(() => {this.calculateValueForProgressbar();}); - this.formGroup - .valueChanges - .pipe(takeUntil(this._destroyed)) - .subscribe(control => { - setTimeout(() => {this.calculateValueForProgressbar();}); - }); - } - - calculateValueForProgressbar() { - if (this.isDmpEditor) { - this.progressSoFar = this.countFormControlsValidForProgress(this.formGroup); - this.total = this.countFormControlsRequiredFieldsForTotal(this.formGroup); - } else if (this.isDatasetEditor) { - this.progressSoFar = this.countFormControlsValidForProgress(this.formGroup) + this.countFormControlsWithValueForProgress(this.formGroup); - this.total = this.countFormControlsRequiredFieldsForTotal(this.formGroup, true) + this.CountFormControlDepthLengthFotTotal(this.formGroup); - } else { - this.progressSoFar = this.countFormControlsWithValueForProgress(this.formGroup); - this.total = this.CountFormControlDepthLengthFotTotal(this.formGroup); - } - this.percent = (this.progressSoFar / this.total) * 100; - this.value = Number.parseFloat(this.percent.toPrecision(this.progressValueAccuracy)); - } - - countFormControlsWithValueForProgress(formControl: AbstractControl): number { - let valueCurent = 0; - if (formControl instanceof UntypedFormGroup) { - if (this.checkFormsIfIsFieldsAndVisible(formControl) && this.checkIfIsRequired((formControl as UntypedFormGroup))) { - if (this.hasValue(formControl)) - valueCurent++; - } - if (this.chechFieldIfIsFieldSetAndVisible((formControl as UntypedFormGroup)) && this.checkIfIsRequired((formControl as UntypedFormGroup))) { - valueCurent = valueCurent + this.compositeFieldsGetChildsForProgress(formControl); - } else { - Object.keys(formControl.controls).forEach(item => { - const control = formControl.get(item); - valueCurent = valueCurent + this.countFormControlsWithValueForProgress(control); - }); - } - } else if (formControl instanceof UntypedFormArray) { - formControl.controls.forEach(item => { - valueCurent = valueCurent + this.countFormControlsWithValueForProgress(item); - }); - } - return valueCurent; - } - private hasValue(formGroup: UntypedFormGroup): boolean { - return formGroup.get('value').valid && formGroup.get('value').value != null && formGroup.get('value').value !== '' && this.visibilityRulesService.checkElementVisibility(formGroup.get('id').value); - } - - private compositeFieldsGetChildsForProgress(formGroup: UntypedFormGroup): number { - let valueCurent = 0; - if (this.visibilityRulesService.checkElementVisibility(formGroup.get('id').value)) { - (formGroup.get('fields') as UntypedFormArray).controls.forEach((element: UntypedFormGroup) => { - valueCurent = valueCurent + this.countFormControlsWithValueForProgress(element); - }); - - (formGroup.get('multiplicityItems') as UntypedFormArray).controls.forEach((element: UntypedFormGroup) => { - valueCurent = valueCurent + this.countFormControlsWithValueForProgress(element); - }); - } - return valueCurent; - } - - private checkIfIsRequired(formControl: UntypedFormGroup): boolean { - return !!(formControl.get('validationRequired') && formControl.get('validationRequired').value); - - } - - private checkFormsIfIsFieldsAndVisible(formControl: UntypedFormGroup): boolean { - if (formControl.contains('id') && formControl.contains('value')) { - return true; - } - return false; - } - private chechFieldIfIsFieldSetAndVisible(formControl: UntypedFormGroup): boolean { - if (formControl.contains('id') && formControl.contains('fields')) { - return true; - } - return false; - } - - CountFormControlDepthLengthFotTotal(formControl: AbstractControl): number { - let valueCurent = 0; - if (formControl instanceof UntypedFormArray) { - formControl.controls.forEach(item => { - valueCurent = valueCurent + this.CountFormControlDepthLengthFotTotal(item); - }); - } else if (formControl instanceof UntypedFormGroup) { - if ((formControl as UntypedFormGroup).contains('id') && (formControl as UntypedFormGroup).contains('value') && (this.visibilityRulesService.checkElementVisibility((formControl as UntypedFormGroup).get('id').value)) && this.checkIfIsRequired((formControl as UntypedFormGroup))) { - valueCurent++; - } else if ((formControl as UntypedFormGroup).contains('id') && (formControl as UntypedFormGroup).contains('fields')) { - valueCurent = valueCurent + this.compositeFieldsGetChildsForTotal(formControl); - } else { - Object.keys(formControl.controls).forEach(item => { - const control = formControl.get(item); - valueCurent = valueCurent + this.CountFormControlDepthLengthFotTotal(control); - }); - } - } - - return valueCurent; - } - - private compositeFieldsGetChildsForTotal(formGroup: UntypedFormGroup): number { - let valueCurent = 0; - if (this.visibilityRulesService.checkElementVisibility(formGroup.get('id').value)) { - (formGroup.get('fields') as UntypedFormArray).controls.forEach((element: UntypedFormGroup) => { - valueCurent = valueCurent + this.CountFormControlDepthLengthFotTotal(element); - }); - (formGroup.get('multiplicityItems') as UntypedFormArray).controls.forEach((element: UntypedFormGroup) => { - valueCurent = valueCurent + this.CountFormControlDepthLengthFotTotal(element); - }); - } - return valueCurent; - } - - countFormControlsValidForProgress(formControl: AbstractControl): number { - let valueCurrent = 0; - if (formControl instanceof UntypedFormControl) { - if (this.controlRequired(formControl) && this.controlEnabled(formControl) && formControl.valid) { - valueCurrent++; - } - } else if (formControl instanceof UntypedFormGroup) { - Object.keys(formControl.controls).forEach(item => { - const control = formControl.get(item); - valueCurrent = valueCurrent + this.countFormControlsValidForProgress(control); - }); - } else if (formControl instanceof UntypedFormArray) { - formControl.controls.forEach(item => { - valueCurrent = valueCurrent + this.countFormControlsValidForProgress(item); - }); - } - return valueCurrent; - } - - countFormControlsRequiredFieldsForTotal(formControl: AbstractControl, checkVisibility = false): number { - let valueCurrent = 0; - if (formControl instanceof UntypedFormControl) { - if (this.controlRequired(formControl) && this.controlEnabled(formControl)) { - valueCurrent++; - } - } else if (formControl instanceof UntypedFormGroup) { - if(!checkVisibility || (!formControl.get('id')?.value || this.visibilityRulesService.checkElementVisibility(formControl.get('id').value))) { - Object.keys(formControl.controls).forEach(item => { - const control = formControl.get(item); - valueCurrent = valueCurrent + this.countFormControlsRequiredFieldsForTotal(control, checkVisibility); - }); - } - } else if (formControl instanceof UntypedFormArray) { - formControl.controls.forEach(item => { - valueCurrent = valueCurrent + this.countFormControlsRequiredFieldsForTotal(item, checkVisibility); - }); - } - return valueCurrent; - } - - controlRequired(formControl: AbstractControl) { - if (formControl.validator) { - const validator = formControl.validator({} as AbstractControl); - if (validator && validator.required) { - return true; - } - } else { return false } - } - - controlEnabled(formControl: AbstractControl) { - if (formControl.enabled) { - return true; - } else { return false } - } - - isEditor(): boolean { - return this.isDmpEditor || this.isDatasetEditor; - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.module.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.module.ts deleted file mode 100644 index f287d329d..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-progress-indication/form-progress-indication.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonFormsModule } from '@common/forms/common-forms.module'; -import { CommonUiModule } from '@common/ui/common-ui.module'; -import { FormProgressIndicationComponent } from './form-progress-indication.component'; - -@NgModule({ - imports: [ - CommonUiModule, - CommonFormsModule - ], - declarations: [ - FormProgressIndicationComponent - ], - exports: [ - FormProgressIndicationComponent - ] -}) -export class FormProgressIndicationModule { } diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.html deleted file mode 100644 index f620d2d6c..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.html +++ /dev/null @@ -1,80 +0,0 @@ - -
- -
- -
-
- -
- -
-
- -
-
- - - - - - - - - - - - - - -
{{fieldFormGroup.get('data').value.label}}
- - - {{compositeFieldFormGroup.get('multiplicity').value.placeholder}} - {{('DATASET-PROFILE-EDITOR.STEPS.FORM.COMPOSITE-FIELD.FIELDS.MULTIPLICITY-ADD-ONE-FIELD' + (compositeFieldFormGroup.get('multiplicity').value.tableView?'-TABLEVIEW':'')) | translate}} - -
-
-
- -
-
-
-
- -
-
-
- - - {{compositeFieldFormGroup.get('multiplicity').value.placeholder}} - {{('DATASET-PROFILE-EDITOR.STEPS.FORM.COMPOSITE-FIELD.FIELDS.MULTIPLICITY-ADD-ONE-FIELD' + (compositeFieldFormGroup.get('multiplicity').value.tableView?'-TABLEVIEW':'')) | translate}} - -
- - - - - - - -
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.scss deleted file mode 100644 index 7d7f80f08..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.scss +++ /dev/null @@ -1,49 +0,0 @@ -.dynamic-form-section { - .expansion-panel { - // background-color: #eeeeee54; - background-color: white; - margin-top: 1em; - margin-bottom: 1em; - // margin-bottom: 1em; - } - .addOneFieldButton { - margin-top: -15px; - margin-left: -11px; - color: var(--primary-color); - } - .panel-title, - .panel-desc { - text-align: left; - font-weight: 700; - font-size: 1rem; - letter-spacing: 0px; - color: #212121; - opacity: 0.81; - margin-top: 1.625rem; - margin-bottom: 0.625rem; - } - - .panel-desc { - text-transform: capitalize; - font-weight: 400; - margin-top: .5rem; - } -} -.styleBorder { - border: 0.2em solid lightgray; - border-radius: 0.5em; - margin-bottom: 0.5em; -} -.mat-expansion-panel-header-description { - padding-bottom: 18px; - color: black; -} - -::ng-deep .mat-expansion-panel-header { - height: auto !important; - min-height: 48px; -} - -.actions { - width: 110px; -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.ts deleted file mode 100644 index 122fdc6c6..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section-inner/form-section-inner.component.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'; -import { UntypedFormArray, UntypedFormGroup } from '@angular/forms'; -import { BaseComponent } from '@common/base/base.component'; -import { takeUntil } from 'rxjs/operators'; -import { DatasetDescriptionCompositeFieldEditorModel } from '../../../dataset-description-form.model'; -import { FormFocusService } from '../../../form-focus/form-focus.service'; -import { LinkToScroll } from '../../../tableOfContentsMaterial/table-of-contents'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; - -@Component({ - selector: 'app-form-section-inner', - templateUrl: './form-section-inner.component.html', - styleUrls: ['./form-section-inner.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class FormSectionInnerComponent extends BaseComponent implements OnInit, OnChanges { - - //@Input() section: DatasetDescriptionSectionEditorModel; - @Input() datasetProfileId: String; - // @Input() compositeFieldFormGroup: FormGroup; - @Input() form: UntypedFormGroup; - @Input() pathName: string; - @Input() path: string; - // @Input() i: number; - @Input() linkToScroll: LinkToScroll; - @Input() tableView: boolean = false; - //trackByFn = (index, item) => item ? item['id'] : null; - panelExpanded = true; - // sub = true; - subsectionLinkToScroll: LinkToScroll; - - constructor( - public visibilityRulesService: VisibilityRulesService, - private changeDetector: ChangeDetectorRef, - private formFocusService: FormFocusService - ) { - super(); - this.visibilityRulesService.getElementVisibilityMapObservable().pipe(takeUntil(this._destroyed)).subscribe(x => { - this.changeDetector.markForCheck(); - }); - } - - ngOnInit() { - // if (this.section) { - // this.form = this.visibilityRulesService.getFormGroup(this.section.id); - // } - } - - ngOnChanges(changes: SimpleChanges) { - - // if (changes['linkToScroll']) { - // if (changes['linkToScroll'].currentValue && changes['linkToScroll'].currentValue.section) { - - // if (this.pathName === changes['linkToScroll'].currentValue.section) { - // this.panelExpanded = true; - // } else if (changes['linkToScroll'].currentValue.section.includes(this.pathName)) { - // this.subsectionLinkToScroll = changes['linkToScroll'].currentValue; - // this.panelExpanded = true; - // } - // } - // } - } - - // ngAfterViewInit() { - // this.visibilityRulesService.triggerVisibilityEvaluation(); - // } - - addMultipleField(fieldsetIndex: number) { - const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldsetIndex) as UntypedFormGroup).getRawValue(); - const multiplicityItemsArray = ((this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))); - const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned, multiplicityItemsArray.length); - multiplicityItemsArray.push(compositeField.buildForm()); - } - - deleteCompositeFieldFormGroup(compositeFildIndex: number) { - const numberOfItems = this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems').get('' + 0).get('fields').value.length; - for (let i = 0; i < numberOfItems; i++) { - const multiplicityItem = this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems').get('' + 0).get('fields').get('' + i).value; - this.form.get('compositeFields').get('' + compositeFildIndex).get('fields').get('' + i).patchValue(multiplicityItem); - } - ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))).removeAt(0); - } - - deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) { - const multiplicityItemsArray = ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))) - multiplicityItemsArray.removeAt(fildIndex); - multiplicityItemsArray.controls.forEach((control, i) => { - try { - control.get('ordinal').setValue(i); - } catch { - throw 'Could not find ordinal'; - } - }); - } - - // isElementVisible(fieldSet: CompositeField): boolean { - // return fieldSet && fieldSet.fields && fieldSet.fields.length > 0 - // } - - // next(compositeField: CompositeField) { - // this.formFocusService.focusNext(compositeField); - // } - visibleControls(controls: any[]) { - return controls.filter(control => this.visibilityRulesService.checkElementVisibility(control.get('id').value)); - } -} 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 deleted file mode 100644 index 43c45f710..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.html +++ /dev/null @@ -1,188 +0,0 @@ -
- - - - -
{{tocentry? tocentry.numbering :form.get('numbering').value}}. {{form.get('title').value}}
-
-
- -
-
- -
- - -
- -
-
- -
-
- -
-
-
-
- -
-
-
- - - {{compositeFieldFormGroup.get('multiplicity').value.placeholder}} - {{('DATASET-PROFILE-EDITOR.STEPS.FORM.COMPOSITE-FIELD.FIELDS.MULTIPLICITY-ADD-ONE-FIELD' + (compositeFieldFormGroup.get('multiplicity').value.tableView?'-TABLEVIEW':'')) | translate}} - -
-
- - - - -
- -
-
- -
-
-
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - -
- - -
- -
-
- -
- -
-
- -
-
- - - - - - - - - - - - - - -
{{fieldFormGroup.get('data').value.label}}
- - - {{fieldsetEntry.form.get('multiplicity').value.placeholder}} - {{('DATASET-PROFILE-EDITOR.STEPS.FORM.COMPOSITE-FIELD.FIELDS.MULTIPLICITY-ADD-ONE-FIELD' + (fieldsetEntry.form.get('multiplicity').value.tableView?'-TABLEVIEW':'')) | translate}} - -
-
-
- -
-
-
-
- -
-
-
- - - {{fieldsetEntry.form.get('multiplicity').value.placeholder}} - {{('DATASET-PROFILE-EDITOR.STEPS.FORM.COMPOSITE-FIELD.FIELDS.MULTIPLICITY-ADD-ONE-FIELD' + (fieldsetEntry.form.get('multiplicity').value.tableView?'-TABLEVIEW':'')) | translate}} - -
-
- - - - -
- -
-
- -
-
- -
- - - - -
- -
- -
-
-
-
- -
- -
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.scss deleted file mode 100644 index cb676cf4c..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.scss +++ /dev/null @@ -1,46 +0,0 @@ -.dynamic-form-section { - .expansion-panel { - // background-color: #eeeeee54; - background-color: white; - margin-top: 1em; - margin-bottom: 1em; - // margin-bottom: 1em; - } - .addOneFieldButton { - margin-top: -15px; - margin-left: -11px; - color: var(--primary-color); - } - .panel-title, - .panel-desc { - text-align: left; - font-weight: 700; - font-size: 1rem; - letter-spacing: 0px; - color: #212121; - opacity: 0.81; - margin-top: 1.625rem; - margin-bottom: 0.625rem; - } - - .panel-desc { - // text-transform: capitalize; - text-transform: none; - font-weight: 400; - margin-top: .5rem; - } -} -.styleBorder { - border: 0.2em solid lightgray; - border-radius: 0.5em; - margin-bottom: 0.5em; -} -.mat-expansion-panel-header-description { - padding-bottom: 18px; - color: black; -} - -::ng-deep .mat-expansion-panel-header { - height: auto !important; - min-height: 48px; -} 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 deleted file mode 100644 index e9f44beba..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-section/form-section.component.ts +++ /dev/null @@ -1,276 +0,0 @@ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - EventEmitter, - Input, - OnChanges, - OnInit, - Output, - SimpleChanges -} from '@angular/core'; -import {UntypedFormArray, UntypedFormGroup} from '@angular/forms'; -import {Rule} from '@app/core/model/dataset-profile-definition/rule'; -import {BaseComponent} from '@common/base/base.component'; -import {takeUntil} from 'rxjs/operators'; -import {DatasetDescriptionCompositeFieldEditorModel} from '../../dataset-description-form.model'; -import {ToCEntry, ToCEntryType} from '../../dataset-description.component'; -import {FormFocusService} from '../../form-focus/form-focus.service'; -import {LinkToScroll} from '../../tableOfContentsMaterial/table-of-contents'; -import {VisibilityRuleSource} from '../../visibility-rules/models/visibility-rule-source'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; - - -@Component({ - selector: 'app-form-section', - templateUrl: './form-section.component.html', - styleUrls: ['./form-section.component.scss'], - changeDetection: ChangeDetectionStrategy.OnPush -}) -export class FormSectionComponent extends BaseComponent implements OnInit, OnChanges { - - //@Input() section: DatasetDescriptionSectionEditorModel; - @Input() datasetProfileId: String; - @Input() form: UntypedFormGroup; - @Input() tocentry: ToCEntry; - @Input() pathName: string; - @Input() path: string; - @Input() linkToScroll: LinkToScroll; - @Input() hiddenEntriesIds: string[] = []; - //trackByFn = (index, item) => item ? item['id'] : null; - panelExpanded = true; - // sub = true; - subsectionLinkToScroll: LinkToScroll; - - - @Output() askedToScroll = new EventEmitter(); - - tocentriesType = ToCEntryType; - @Input() TOCENTRY_ID_PREFIX = ""; - - constructor( - public visibilityRulesService: VisibilityRulesService, - private formFocusService: FormFocusService, - private changeDetector: ChangeDetectorRef - ) { - super(); - this.visibilityRulesService.getElementVisibilityMapObservable().pipe(takeUntil(this._destroyed)).subscribe(x => { - this.changeDetector.markForCheck(); - }); - } - - ngOnInit() { - // if (this.section) { - // this.form = this.visibilityRulesService.getFormGroup(this.section.id); - // } - - if (this.tocentry) {//maybe not needed as well - this.form = this.tocentry.form as UntypedFormGroup; - } - this.initMultipleFieldsVisibility(); - } - - ngOnChanges(changes: SimpleChanges) { - - if (changes['linkToScroll']) { - if (changes['linkToScroll'].currentValue && changes['linkToScroll'].currentValue.section) { - - if (this.pathName === changes['linkToScroll'].currentValue.section) { - this.panelExpanded = true; - } else if (changes['linkToScroll'].currentValue.section.includes(this.pathName)) { - this.subsectionLinkToScroll = changes['linkToScroll'].currentValue; - this.panelExpanded = true; - } - } - } - } - - // ngAfterViewInit() { - // this.visibilityRulesService.triggerVisibilityEvaluation(); - // } - - setMultipleFieldVisibility(parentCompositeField, compositeField: DatasetDescriptionCompositeFieldEditorModel, idMappings: { old: string, new: string }[]) { - // ** COMPOSITE FIELD IS SHOWN OR HIDDEN FROM ANOTHER ELEMENT - const compositeFieldVisibilityDependencies = this.visibilityRulesService.getVisibilityDependency(parentCompositeField); - if (compositeFieldVisibilityDependencies && compositeFieldVisibilityDependencies.length) { - - compositeFieldVisibilityDependencies.forEach(x => { - const visRule: Rule = { - targetField: compositeField.id, - sourceField: x.sourceControlId, - requiredValue: x.sourceControlValue - } - this.visibilityRulesService.addNewRule(visRule); - }); - } - - // console.log('idMappings ', idMappings); - parentCompositeField.fields.forEach(element => { - // console.log(this.visibilityRulesService.getVisibilityDependency(element.id)); - const dependency = this.visibilityRulesService.getVisibilityDependency(element.id); - if (dependency && dependency.length) { - // * INNER VISIBILITY DEPENDENCIES - // * IF INNER INPUT HIDES ANOTHER INNER INPUT - const innerDependency = parentCompositeField.fields.reduce((innerD, currentElement) => { - const innerDependecies = dependency.filter(d => d.sourceControlId === currentElement.id); - return [...innerD, ...innerDependecies]; - }, []) as VisibilityRuleSource[]; - if (innerDependency.length) { - //Build visibility source - const updatedRules = innerDependency.map(x => { - const newId = idMappings.find(y => y.old === x.sourceControlId); - return {...x, sourceControlId: newId.new}; - }); - // const visRule: VisibilityRule = { - // targetControlId: idMappings.find(x => x.old === element.id).new, - // sourceVisibilityRules: updatedRules - // } - - - const rules = updatedRules.map(x => { - return { - requiredValue: x.sourceControlValue, - sourceField: x.sourceControlId, - targetField: idMappings.find(l => l.old === element.id).new, - type: '' - } as Rule; - }); - - rules.forEach(rule => { - this.visibilityRulesService.addNewRule(rule); - }) - - // this.visibilityRulesService.appendVisibilityRule(visRule); - } - - } - - - // * OUTER DEPENDENCIES - - // * IF INNER INPUT HIDES OUTER INPUTS - const innerIds = idMappings.map(x => x.old) as string[]; - - const outerTargets = this.visibilityRulesService.getVisibilityTargets(element.id).filter(x => !innerIds.includes(x)); - - outerTargets.forEach(target => { - - const outerRules = (this.visibilityRulesService.getVisibilityDependency(target) as VisibilityRuleSource[]).filter(x => x.sourceControlId === element.id); - const updatedRules = outerRules.map(x => { - return {...x, sourceControlId: idMappings.find(y => y.old === element.id).new}; - }); - - // const visRule: VisibilityRule = { - // targetControlId: target, - // sourceVisibilityRules: updatedRules - // } - - - const rules = updatedRules.map(x => { - return { - requiredValue: x.sourceControlValue, - sourceField: x.sourceControlId, - targetField: target, - type: '' - } as Rule; - }) - rules.forEach(rule => { - this.visibilityRulesService.addNewRule(rule); - }) - // this.visibilityRulesService.appendVisibilityRule(visRule); - }); - // * IF INNER INPUT IS HIDDEN BY OUTER INPUT - if (dependency && dependency.length) { - const fieldsThatHideInnerElement = dependency.filter(x => !innerIds.includes(x.sourceControlId)); - if (fieldsThatHideInnerElement.length) { - fieldsThatHideInnerElement.forEach(x => { - const visRule: Rule = { - targetField: idMappings.find(l => l.old === element.id).new, - sourceField: x.sourceControlId, - requiredValue: x.sourceControlValue - } - const shouldBeVisibile = this.visibilityRulesService.checkTargetVisibilityProvidedBySource(x.sourceControlId, element.id); - this.visibilityRulesService.addNewRule(visRule, shouldBeVisibile); - }); - } - } - // console.log(`for ${element.id} targets are`, outerTargets); - }); - } - - initMultipleFieldsVisibility() { - (this.form.get('compositeFields') as UntypedFormArray).controls.forEach(control => { - let parentCompositeField = (control as UntypedFormGroup).getRawValue(); - if (parentCompositeField.multiplicityItems && parentCompositeField.multiplicityItems.length > 0) { - parentCompositeField.multiplicityItems.forEach(compositeField => { - let idMappings: { old: string, new: string }[] = [{old: parentCompositeField.id, new: compositeField.id}]; - parentCompositeField.fields.forEach((field, index) => { - idMappings.push({ old: field.id, new: compositeField.fields[index].id }); - }); - this.setMultipleFieldVisibility(parentCompositeField, compositeField, idMappings); - }) - } - }); - } - - addMultipleField(fieldsetIndex: number) { - if(this.form.get('compositeFields').get('' + fieldsetIndex).disabled) { - return; - } - const compositeFieldToBeCloned = (this.form.get('compositeFields').get('' + fieldsetIndex) as UntypedFormGroup).getRawValue(); - const multiplicityItemsArray = ((this.form.get('compositeFields').get('' + fieldsetIndex).get('multiplicityItems'))); - - const ordinal = multiplicityItemsArray.length ? multiplicityItemsArray.controls.reduce((ordinal, currentControl) => { - const currentOrdinal = currentControl.get('ordinal').value as number; - - if (currentOrdinal >= ordinal) { - return currentOrdinal + 1; - } - return ordinal as number; - }, 0) : 0; - const idMappings = [] as { old: string, new: string }[]; - const compositeField: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel().cloneForMultiplicity(compositeFieldToBeCloned, ordinal, idMappings); - - this.setMultipleFieldVisibility(compositeFieldToBeCloned, compositeField, idMappings); - multiplicityItemsArray.push(compositeField.buildForm()); - } - - deleteCompositeFieldFormGroup(compositeFildIndex: number) { - const numberOfItems = this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems').get('' + 0).get('fields').value.length; - for (let i = 0; i < numberOfItems; i++) { - const multiplicityItem = this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems').get('' + 0).get('fields').get('' + i).value; - this.form.get('compositeFields').get('' + compositeFildIndex).get('fields').get('' + i).patchValue(multiplicityItem); - } - ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))).removeAt(0); - } - - deleteMultipeFieldFromCompositeFormGroup(compositeFildIndex: number, fildIndex: number) { - const multiplicityItemsArray = ((this.form.get('compositeFields').get('' + compositeFildIndex).get('multiplicityItems'))); - multiplicityItemsArray.removeAt(fildIndex); - multiplicityItemsArray.controls.forEach((control, i) => { - try { - control.get('ordinal').setValue(i); - } catch { - throw 'Could not find ordinal'; - } - }); - } - - // isElementVisible(fieldSet: CompositeField): boolean { - // return fieldSet && fieldSet.fields && fieldSet.fields.length > 0 - // } - - // next(compositeField: CompositeField) { - // this.formFocusService.focusNext(compositeField); - // } - - - onAskedToScroll(id: string) { - this.panelExpanded = true; - this.askedToScroll.emit(id); - } - - visibleControls(controls: any[]) { - return controls.filter(control => this.visibilityRulesService.checkElementVisibility(control.get('id').value)); - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.html deleted file mode 100644 index dc09daefb..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.html +++ /dev/null @@ -1,25 +0,0 @@ -
- {{'DMP-EDITOR.DATASET-DESCRIPTION.INTRO' | translate}} -
-
- -
-
-
- -
-
- - {{pageFormGroup.get('title').value}} - -
- -
-
-
-
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.scss deleted file mode 100644 index 955e5fed6..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.scss +++ /dev/null @@ -1,31 +0,0 @@ -@media (max-width: 768px) { - .dynamic-form-editor { - .form-container { - padding: 0px; - } - } -} - -.form-container { -} - -.intro { - text-align: left; - font-weight: 400; - letter-spacing: 0px; - color: #212121; - opacity: 1; - margin: 3rem 0rem 3rem 0rem; -} - -.dynamic-form-editor { - mat-vertical-stepper { - background-color: #ffffff; - } -} - -.mat-step-header .mat-step-icon-selected, -.mat-step-header .mat-step-icon-state-done, -.mat-step-header .mat-step-icon-state-edit { - background-color: var(--primary-color) !important; -} 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 deleted file mode 100644 index c4029e35d..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.component.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { AfterViewInit, Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { MatStepper } from '@angular/material/stepper'; -import { Rule } from '@app/core/model/dataset-profile-definition/rule'; -import { LinkToScroll } from '@app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; -import { BaseComponent } from '@common/base/base.component'; - -@Component({ - selector: 'app-dataset-description-form', - templateUrl: './dataset-description-form.component.html', - styleUrls: ['./dataset-description-form.component.scss'] -}) -export class DatasetDescriptionFormComponent extends BaseComponent implements OnInit, AfterViewInit, OnChanges { - - @ViewChild('stepper') stepper: MatStepper; - @Input() path: string; - @Input() form: UntypedFormGroup; - @Input() visibilityRules: Rule[] = []; - @Input() datasetProfileId: String; - @Input() linkToScroll: LinkToScroll; - - constructor( - private visibilityRulesService: VisibilityRulesService, - ) { - super(); - } - - ngOnInit() { - this.visibilityRulesService.buildVisibilityRules(this.visibilityRules, this.form); - } - - ngOnChanges(changes: SimpleChanges) { - - // When the form is changed set stepper index to 0. - if (this.stepper && changes['form'] && !changes['form'].isFirstChange()) { - this.stepper.selectedIndex = 0; - } else if (this.stepper && changes['linkToScroll'] && changes['linkToScroll'].currentValue) { - if (changes['linkToScroll'].currentValue.page >= 0) { - this.stepper.selectedIndex = changes['linkToScroll'].currentValue.page; - } - } - } - - ngAfterViewInit() { - - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.model.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.model.ts deleted file mode 100644 index 030196340..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.model.ts +++ /dev/null @@ -1,375 +0,0 @@ -import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, ValidatorFn, Validators } from "@angular/forms"; -import { Guid } from '@common/types/guid'; -import { ValidationType, ValidatorURL } from "../../../core/common/enum/validation-type"; -import { BaseFormModel } from "../../../core/model/base-form-model"; -import { CompositeField } from "../../../core/model/dataset-profile-definition/composite-field"; -import { DatasetProfileDefinitionModel } from "../../../core/model/dataset-profile-definition/dataset-profile-definition"; -import { DefaultValue } from "../../../core/model/dataset-profile-definition/default-value"; -import { Field } from "../../../core/model/dataset-profile-definition/field"; -import { Multiplicity } from "../../../core/model/dataset-profile-definition/multiplicity"; -import { Page } from "../../../core/model/dataset-profile-definition/page"; -import { Rule } from "../../../core/model/dataset-profile-definition/rule"; -import { Section } from "../../../core/model/dataset-profile-definition/section"; -import { ViewStyle } from "../../../core/model/dataset-profile-definition/view-style"; -import { BackendErrorValidator } from '@common/forms/validation/custom-validator'; -import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model'; - -export class DatasetDescriptionFormEditorModel extends BaseFormModel { - - public status: number; - public pages: Array = []; - public rules: Rule[] = []; - public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); - - fromModel(item: DatasetProfileDefinitionModel): DatasetDescriptionFormEditorModel { - this.status = item.status; - this.rules = item.rules; - if (item.pages) { item.pages.map(x => this.pages.push(new DatasetDescriptionPageEditorModel().fromModel(x))); } - return this; - } - - buildForm(): UntypedFormGroup { - const formGroup: UntypedFormGroup = new UntypedFormBuilder().group({ - rules: [{ value: this.rules, disabled: false }, BackendErrorValidator(this.validationErrorModel, 'rules')] - }); - const pagesFormArray = new Array(); - - this.pages.forEach(item => { - const form: UntypedFormGroup = item.buildForm(); - pagesFormArray.push(form); - }); - formGroup.addControl('pages', this.formBuilder.array(pagesFormArray)); - return formGroup; - } -} - -export class DatasetDescriptionPageEditorModel extends BaseFormModel { - public ordinal: number; - public title: string; - public sections: DatasetDescriptionSectionEditorModel[] = []; - - fromModel(item: Page): DatasetDescriptionPageEditorModel { - this.ordinal = item.ordinal; - this.title = item.title; - if (item.sections) { item.sections.map(x => this.sections.push(new DatasetDescriptionSectionEditorModel().fromModel(x))); } - return this; - } - - buildForm(): UntypedFormGroup { - const formGroup: UntypedFormGroup = new UntypedFormBuilder().group({}); - const sectionsFormArray = new Array(); - this.sections.forEach(item => { - const form: UntypedFormGroup = item.buildForm(); - sectionsFormArray.push(form); - }); - formGroup.addControl('sections', this.formBuilder.array(sectionsFormArray)); - formGroup.addControl('title', new UntypedFormControl({ value: this.title, disabled: true })); - formGroup.addControl('ordinal', new UntypedFormControl({ value: this.ordinal, disabled: true })); - return formGroup; - } -} - -export class DatasetDescriptionSectionEditorModel extends BaseFormModel { - - sections: Array = new Array(); - defaultVisibility: boolean; - page: number; - numbering: string; - ordinal: number; - id: string; - title: string; - description: string; - compositeFields: Array = new Array(); - - fromModel(item: Section): DatasetDescriptionSectionEditorModel { - if (item.sections) { item.sections.map(x => this.sections.push(new DatasetDescriptionSectionEditorModel().fromModel(x))); } - this.page = item.page; - this.defaultVisibility = item.defaultVisibility; - this.numbering = item.numbering; - this.id = item.id; - this.title = item.title; - this.ordinal = item.ordinal; - this.description = item.description; - if (item.compositeFields) { item.compositeFields.map(x => this.compositeFields.push(new DatasetDescriptionCompositeFieldEditorModel().fromModel(x))); } - return this; - } - - buildForm(): UntypedFormGroup { - const formGroup: UntypedFormGroup = new UntypedFormBuilder().group({}); - const sectionsFormArray = new Array(); - if (this.sections) { - this.sections.forEach(item => { - const form: UntypedFormGroup = item.buildForm(); - sectionsFormArray.push(form); - }); - } - const compositeFieldsFormArray = new Array(); - if (this.compositeFields) { - this.compositeFields.forEach(item => { - const form: UntypedFormGroup = item.buildForm(); - compositeFieldsFormArray.push(form); - }); - } - formGroup.addControl('compositeFields', this.formBuilder.array(compositeFieldsFormArray)); - formGroup.addControl('sections', this.formBuilder.array(sectionsFormArray)); - formGroup.addControl('description', new UntypedFormControl({ value: this.description, disabled: true })); - formGroup.addControl('numbering', new UntypedFormControl({ value: this.numbering, disabled: true })); - formGroup.addControl('title', new UntypedFormControl({ value: this.title, disabled: true })); - formGroup.addControl('id', new UntypedFormControl({ value: this.id, disabled: false })); - formGroup.addControl('ordinal', new UntypedFormControl({ value: this.ordinal, disabled: true })); - return formGroup; - } -} - -export class DatasetDescriptionCompositeFieldEditorModel extends BaseFormModel { - - fields: Array = new Array(); - ordinal: number; - id: string; - numbering: string; - multiplicity: DatasetDescriptionMultiplicityEditorModel; - multiplicityItems: DatasetDescriptionCompositeFieldEditorModel[] = []; - title: string; - description: string; - extendedDescription: string; - additionalInformation: string; - hasCommentField: boolean; - commentFieldValue: string; - - fromModel(item: CompositeField): DatasetDescriptionCompositeFieldEditorModel { - - if (item.fields) { item.fields.map(x => this.fields.push(new DatasetDescriptionFieldEditorModel().fromModel(x))); } - this.ordinal = item.ordinal; - this.id = item.id; - this.title = item.title; - this.numbering = item.numbering; - this.description = item.description; - this.extendedDescription = item.extendedDescription; - this.additionalInformation = item.additionalInformation; - this.hasCommentField = item.hasCommentField; - this.commentFieldValue = item.commentFieldValue; - if (item.multiplicity) this.multiplicity = new DatasetDescriptionMultiplicityEditorModel().fromModel(item.multiplicity); - if (item.multiplicityItems) { item.multiplicityItems.map(x => this.multiplicityItems.push(new DatasetDescriptionCompositeFieldEditorModel().fromModel(x))); } - return this; - } - - buildForm(): UntypedFormGroup { - const formGroup = this.formBuilder.group({ - id: this.id, - ordinal: this.ordinal, - extendedDescription: this.extendedDescription, - additionalInformation: this.additionalInformation, - hasCommentField: this.hasCommentField, - commentFieldValue: this.commentFieldValue, - multiplicity: [{ value: this.multiplicity, disabled: true }], - title: [{ value: this.title, disabled: true }], - description: [{ value: this.description, disabled: true }], - numbering: [{ value: this.numbering, disabled: true }], - }); - - const fieldsFormArray = new Array(); - this.fields.forEach(item => { - const form: UntypedFormGroup = item.buildForm(); - fieldsFormArray.push(form); - }); - formGroup.addControl('fields', this.formBuilder.array(fieldsFormArray)); - - const multiplicityItemsFormArray = new Array(); - this.multiplicityItems.forEach(item => { - const form: UntypedFormGroup = item.buildForm(); - multiplicityItemsFormArray.push(form); - }); - formGroup.addControl('multiplicityItems', this.formBuilder.array(multiplicityItemsFormArray)); - - return formGroup; - } - - // cloneForMultiplicity(index: number): DatasetDescriptionCompositeFieldEditorModel { - // const newItem: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel(); - // newItem.id = 'multiple_' + this.id + '_' + index; - // this.fields.forEach(field => { - // newItem.fields.push(field.cloneForMultiplicity(this.fields.indexOf(field), newItem.id + '_')); - // }); - // newItem.ordinal = this.ordinal; - // return newItem; - // } - - cloneForMultiplicity(item: CompositeField, ordinal: number, idMappings: { old: string, new: string }[] = []): DatasetDescriptionCompositeFieldEditorModel { - const newItem: DatasetDescriptionCompositeFieldEditorModel = new DatasetDescriptionCompositeFieldEditorModel(); - newItem.id = 'multiple_' + item.id + '_' + Guid.create() + '_' + ordinal; - - idMappings.push({ old: item.id, new: newItem.id }); - item.fields.forEach((field, index) => { - - const clonedItem = new DatasetDescriptionFieldEditorModel().cloneForMultiplicity(field, newItem.id) - newItem.fields.push(clonedItem); - - idMappings.push({ old: field.id, new: clonedItem.id }); - }); - newItem.ordinal = ordinal; - return newItem; - } -} - -export class DatasetDescriptionFieldEditorModel extends BaseFormModel { - - public id: string; - public title: string; - public value: any; - public defaultValue: DefaultValue; - public description: string; - public numbering: string; - public extendedDescription: string; - public additionalInformation: string; - public viewStyle: ViewStyle; - public defaultVisibility: boolean; - public page: number; - public multiplicity: DatasetDescriptionMultiplicityEditorModel; - public multiplicityItems: Array = new Array(); - public data: any; - public validations: Array; - public validationRequired = false; - public validationURL = false; - public ordinal: number; - - fromModel(item: Field): DatasetDescriptionFieldEditorModel { - this.id = item.id; - this.ordinal = item.ordinal; - this.title = item.title; - this.numbering = item.numbering; - this.description = item.description; - this.extendedDescription = item.extendedDescription; - this.additionalInformation = item.additionalInformation; - this.viewStyle = item.viewStyle; - this.defaultVisibility = item.defaultVisibility; - this.page = item.page; - this.validations = item.validations; - if (item.multiplicity) this.multiplicity = new DatasetDescriptionMultiplicityEditorModel().fromModel(item.multiplicity); - if (item.defaultValue) this.defaultValue = new DatasetDescriptionDefaultValueEditorModel().fromModel(item.defaultValue); - this.value = item.value ? item.value : (this.defaultValue.value ? this.defaultValue.value : undefined); - if (this.viewStyle.renderStyle === 'checkBox' && (item.value !== true)) { this.value = this.value === 'true'; } //Cover both posibilites of boolean true or false and string 'true' or 'false' - if (item.multiplicityItems) { item.multiplicityItems.map(x => this.multiplicityItems.push(new DatasetDescriptionFieldEditorModel().fromModel(x))); } - this.data = item.data; - return this; - } - - buildForm(): UntypedFormGroup { - if (this.validations) { - this.validations.forEach(validation => { - if (validation === ValidationType.Required) { - this.validationRequired = true; - } else if (validation === ValidationType.URL) { - this.validationURL = true; - } - }); - } - let validators: any[] = []; - if (this.validationRequired) { - validators.push(Validators.required) - } - if (this.validationURL) { - validators.push(ValidatorURL.validator); - } - const formGroup = this.formBuilder.group({ - value: [this.value, validators], - id: [{ value: this.id, disabled: false }], - viewStyle: [{ value: this.viewStyle, disabled: true }], - data: [{ value: this.data, disabled: true }], - validationRequired: [{ value: this.validationRequired, disabled: true }], - validationURL: [{ value: this.validationURL, disabled: true }], - description: [{ value: this.description, disabled: true }], - extendedDescription: [{ value: this.extendedDescription, disabled: true }], - additionalInformation: [{ value: this.additionalInformation, disabled: true }], - title: [{ value: this.title, disabled: true }], - defaultValue: [{ value: this.defaultValue, disabled: true }], - ordinal: [{ value: this.ordinal, disabled: true }] - }); - - const multiplicityItemsFormArray = new Array(); - this.multiplicityItems.forEach(item => { - const form: UntypedFormGroup = item.buildForm(); - multiplicityItemsFormArray.push(form); - }); - formGroup.addControl('multiplicityItems', this.formBuilder.array(multiplicityItemsFormArray)); - - return formGroup; - } - - // cloneForMultiplicity(index: number, idPath: string): DatasetDescriptionFieldEditorModel { - // const newItem: DatasetDescriptionFieldEditorModel = new DatasetDescriptionFieldEditorModel(); - - // newItem.id = idPath ? idPath + index : 'multiple_' + this.id + '_' + index; - // newItem.title = this.title; - // newItem.description = this.description; - // newItem.extendedDescription = this.extendedDescription; - // newItem.viewStyle = this.viewStyle; - // newItem.defaultVisibility = this.defaultVisibility; - // newItem.page = this.page; - // newItem.multiplicity = null; - // newItem.data = this.data; - - // return newItem; - // } - cloneForMultiplicity(item: Field, idPath: string): DatasetDescriptionFieldEditorModel { - const newItem: DatasetDescriptionFieldEditorModel = new DatasetDescriptionFieldEditorModel(); - - //newItem.id = idPath ? idPath : 'multiple_' + item.id + '_' + Guid.create(); - newItem.id = idPath ? idPath + '_' + item.id : 'multiple_' + Guid.create() + '_' + item.id; - newItem.title = item.title; - newItem.description = item.description; - newItem.extendedDescription = item.extendedDescription; - newItem.additionalInformation = item.additionalInformation; - newItem.viewStyle = item.viewStyle; - newItem.defaultVisibility = item.defaultVisibility; - newItem.page = item.page; - newItem.multiplicity = null; - newItem.data = item.data; - - return newItem; - } -} - - -export class DatasetDescriptionMultiplicityEditorModel extends BaseFormModel { - public min: number; - public max: number; - public placeholder: string; - public tableView: boolean; - - fromModel(item: Multiplicity): DatasetDescriptionMultiplicityEditorModel { - this.min = item.min; - this.max = item.max; - this.placeholder = item.placeholder; - this.tableView = item.tableView; - return this; - } - - buildForm(): UntypedFormGroup { - const formGroup = this.formBuilder.group({ - min: [this.min], - max: [this.max], - placeholder: [this.placeholder], - tableView: [this.tableView] - }); - return formGroup; - } -} - -export class DatasetDescriptionDefaultValueEditorModel extends BaseFormModel { - public type: string; - public value: string; - - fromModel(item: DefaultValue): DatasetDescriptionDefaultValueEditorModel { - this.type = item.type; - this.value = item.value; - return this; - } - - buildForm(): UntypedFormGroup { - const formGroup = this.formBuilder.group({ - type: [this.type], - value: [this.value] - }); - return formGroup; - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.module.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.module.ts deleted file mode 100644 index 3df559ca9..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description-form.module.ts +++ /dev/null @@ -1,68 +0,0 @@ -import {NgModule} from '@angular/core'; -import {AutoCompleteModule} from '@app/library/auto-complete/auto-complete.module'; -import { - FormCompositeFieldComponent -} from '@app/ui/misc/dataset-description-form/components/form-composite-field/form-composite-field.component'; -import {FormFieldComponent} from '@app/ui/misc/dataset-description-form/components/form-field/form-field.component'; -import { - FormSectionComponent -} from '@app/ui/misc/dataset-description-form/components/form-section/form-section.component'; -import { - DatasetDescriptionFormComponent -} from '@app/ui/misc/dataset-description-form/dataset-description-form.component'; -import {FormFocusService} from '@app/ui/misc/dataset-description-form/form-focus/form-focus.service'; -import {CommonFormsModule} from '@common/forms/common-forms.module'; -import {CommonUiModule} from '@common/ui/common-ui.module'; -import {FormCompositeTitleComponent} from './components/form-composite-title/form-composite-title.component'; -import {ExternalSourcesModule} from '../external-sources/external-sources.module'; -import {DatasetDescriptionComponent} from './dataset-description.component'; -import {FormProgressIndicationModule} from './components/form-progress-indication/form-progress-indication.module'; -import {FormSectionInnerComponent} from './components/form-section/form-section-inner/form-section-inner.component'; -import {RichTextEditorModule} from "@app/library/rich-text-editor/rich-text-editor.module"; -// import {TableEditorModule} from "@app/library/table-editor/table-editor.module"; -import {FileService} from "@app/core/services/file/file.service"; -import {NgxDropzoneModule} from "ngx-dropzone"; -import { - FormCompositeFieldDialogComponent -} from "@app/ui/misc/dataset-description-form/components/form-composite-field-dialog/form-composite-field-dialog.component"; -import {FormattingModule} from "@app/core/formatting.module"; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; - - -@NgModule({ - imports: [ - CommonUiModule, - CommonFormsModule, - AutoCompleteModule, - ExternalSourcesModule, - FormProgressIndicationModule, - RichTextEditorModule, - // TableEditorModule, - NgxDropzoneModule, - FormattingModule - ], - declarations: [ - DatasetDescriptionFormComponent, - DatasetDescriptionComponent, - FormSectionComponent, - FormSectionInnerComponent, - FormCompositeFieldComponent, - FormFieldComponent, - FormCompositeTitleComponent, - FormCompositeFieldDialogComponent - ], - exports: [ - DatasetDescriptionFormComponent, - DatasetDescriptionComponent, - FormCompositeFieldComponent, - FormFieldComponent, - FormSectionInnerComponent - ], - providers: [ - VisibilityRulesService, - FormFocusService, - FileService - ] -}) -export class DatasetDescriptionFormModule { } - diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.html deleted file mode 100644 index ca244cf88..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.html +++ /dev/null @@ -1,56 +0,0 @@ - - - -
-
-
-
-
- -
-
-
- -
-
-
-
- - - - - - - - - - -

- {{pageEntry.numbering}}. {{pageEntry.label |uppercase}} -

-
-
- - -
- -
-
-
-
-
-
- -
-
-
-
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.scss deleted file mode 100644 index 3b8872d71..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.scss +++ /dev/null @@ -1,47 +0,0 @@ -@media (max-width: 768px) { - .dynamic-form-editor { - .form-container { - padding: 0px; - } - } -} - -.form-container { -} - -.intro { - text-align: left; - font-weight: 400; - letter-spacing: 0px; - color: #212121; - opacity: 1; - margin: 3rem 0rem 3rem 0rem; -} - -.dynamic-form-editor { - mat-vertical-stepper { - background-color: #ffffff; - } -} - -// ::ng-deep .mat-form-field-flex > .mat-form-field-infix {padding: 0.4em 0px !important;} -// ::ng-deep .mat-form-field-label-wrapper { -// top: -1.5em; -// } - -// ::ng-deep -// .mat-form-field-appearance-outline.mat-form-field-can-float.mat-form-field-should-float -// .mat-form-field-label { -// transform: translateY(-1.1em) scale(0.75); -// width: 133.33333%; -// } - -// ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline { -// background: #fafafa !important; -// } - -// ::ng-deep .mat-step-header .mat-step-icon-selected, -// .mat-step-header .mat-step-icon-state-done, -// .mat-step-header .mat-step-icon-state-edit { -// background-color: var(--primary-color) !important; -// } diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.ts deleted file mode 100644 index 76910c75d..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/dataset-description.component.ts +++ /dev/null @@ -1,418 +0,0 @@ -import { AfterViewInit, Component, Input, OnChanges, OnInit, SimpleChanges, ViewChild, Output, EventEmitter } from '@angular/core'; -import { AbstractControl, AbstractControlOptions, UntypedFormArray, UntypedFormGroup } from '@angular/forms'; -import { MatExpansionPanel } from '@angular/material/expansion'; -import { MatStepper } from '@angular/material/stepper'; -import { CompositeField } from '@app/core/model/dataset-profile-definition/composite-field'; -import { Field } from '@app/core/model/dataset-profile-definition/field'; -import { Rule } from '@app/core/model/dataset-profile-definition/rule'; -import { DatasetProfileTableOfContentsInternalSection } from '@app/ui/admin/dataset-profile/table-of-contents/table-of-contents-internal-section/table-of-contents-internal-section'; -import { LinkToScroll } from '@app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; -import { BaseComponent } from '@common/base/base.component'; -import { debounceTime, takeUntil } from 'rxjs/operators'; -import { VisibilityRuleSource } from './visibility-rules/models/visibility-rule-source'; - -@Component({ - selector: 'app-dataset-description', - templateUrl: './dataset-description.component.html', - styleUrls: ['./dataset-description.component.scss'] -}) -export class DatasetDescriptionComponent extends BaseComponent implements OnInit, AfterViewInit, OnChanges { - - // @ViewChild('stepper', { static: false }) stepper: MatStepper; - @Input() path: string; - @Input() visibilityRules: Rule[] = []; - @Input() datasetProfileId: String; - @Input() datasetDescription: String; - @Input() linkToScroll: LinkToScroll; - @Output() formChanged: EventEmitter = new EventEmitter(); - @Output() fieldsetFocusChange: EventEmitter = new EventEmitter(); - - tocentries: ToCEntry[]; - @Input() form: UntypedFormGroup; - - @Input() TOCENTRY_ID_PREFIX=""; - @Output() visibilityRulesInstance = new EventEmitter(); - - public hiddenEntriesIds:string[] = []; - - constructor( - private visibilityRulesService: VisibilityRulesService, - ) { - super(); - - } - - ngOnInit() { - this.init(); - } - - ngOnChanges(changes: SimpleChanges) { - this.init(); - // When the form is changed set stepper index to 0. - // if (this.stepper && changes['form'] && !changes['form'].isFirstChange()) { - // this.stepper.selectedIndex = 0; - // } else if (this.stepper && changes['linkToScroll'] && changes['linkToScroll'].currentValue) { - // if (changes['linkToScroll'].currentValue.page >= 0) { - // this.stepper.selectedIndex = changes['linkToScroll'].currentValue.page; - // } - // } - } - - ngAfterViewInit() { - - } - - init() { - this.tocentries = this.getTocEntries(); - const rules_to_append = this._enrichWithMultiplicityRules(this.tocentries); - - this.visibilityRulesService.buildVisibilityRules([...this.visibilityRules, ...rules_to_append ], this.form); - - // if (this.form) { - // this.form.valueChanges - // .pipe(takeUntil(this._destroyed)) - // .subscribe(val => { - // this.formChanged.emit(val); - // }); - // } - this.visibilityRulesInstance.emit(this.visibilityRulesService); - - - - - this.hiddenEntriesIds = this._findHiddenEntries(this.tocentries); - - this.visibilityRulesService.visibilityChange - .pipe( - takeUntil(this._destroyed), - debounceTime(100) - ) - .subscribe(_=>{ - this.hiddenEntriesIds = this._findHiddenEntries(this.tocentries); - }) - } - - onAskedToScroll(panel: MatExpansionPanel, id?:string){ - panel.open(); - this.fieldsetFocusChange.emit(id); - } - - - - private _enrichWithMultiplicityRules(tocentries: ToCEntry[]) : Rule[] { - if (tocentries){ - return tocentries.map(entry => { - if(entry.type === ToCEntryType.Field) return []; // * TODO Me to tora implementation den tha ftasei pote edo - - - if(entry.type === ToCEntryType.FieldSet){ - // if(multiplicity: ) - try { - // TODO OTAN KANW HIDE MULTIPLE PEDIO TOTE STO ON SHOW HANO TA VALUES (AUTO MPOREI NA EINAI KAI LEGIT) ('NA DOUME AN ONTOS DIAGRAFONTAI I APLA DEN TA DEIXNOUME') - // * UPDATE KANEI DESTROY TO COMPONENT H NGIF . PITHANOTATA NA XREIASTEI NA TO KANOUME HIDDEN AN THELOUME KATI ALLO - const multiplicity = entry.form.get('multiplicity').value; - if( (multiplicity.max > 1 ) && (multiplicity.min> 0) && (multiplicity.max >= multiplicity.min)){ // has valid multiplicity - return this._createAndAppendVisibilityRule(entry); - } - } catch { - - } - return []; - } - - if(entry.subEntries){ - return this._enrichWithMultiplicityRules(entry.subEntries); - } - }) - .reduce((r,c)=>{ return [...c, ...r]},[]); - } - return []; - } - - private _createAndAppendVisibilityRule(entry: ToCEntry): Rule[]{ - - - const rules_to_append = []; - - if(entry && (entry.type === ToCEntryType.FieldSet)){ - - //childs that are either target or source - const childIdsWithVisRules = (entry.form.get('fields') as UntypedFormArray).controls.reduce((all, s) => - { - const sval = s.value as Field; - return this.visibilityRules.find(x => (x.targetField === sval.id) || (x.sourceField === sval.id)) ? [...all, sval] : all; - },[]) as Field[]; - - - const innerCompositeFieldOriginalIds = (entry.form.get('fields') as UntypedFormArray).controls.map( x=> x.get('id').value) as string[]; - - //multiplicity items - const multiplicityItemsValue = entry.form.get('multiplicityItems').value as CompositeField[]; - - - // ********* FIELDS OF FIELDSET ARE EITHER TARGETS OR SOURCES ***** - - - if( childIdsWithVisRules.length && multiplicityItemsValue && multiplicityItemsValue.length ){ - //check each multiplicity item composite field - multiplicityItemsValue.forEach( mi =>{ - - const multiplicityCompositeFieldIds = mi.fields.map(x => x.id); - const idMappings = multiplicityCompositeFieldIds.map(x => { - return { - original: innerCompositeFieldOriginalIds.find( l => x.includes(l)), - multiplicityIdValue: x - } - }) as {original: string, multiplicityIdValue: string}[]; - - //each field of mutliplicity item - mi.fields.forEach(field =>{ - - - //get original visibility rules (original field) - - //original id - const original_id = childIdsWithVisRules.find(x=> field.id.includes(x.id)).id; - - - //get vis rules - - //as source - const original_as_source = this.visibilityRules.filter( x => x.sourceField === original_id); - const original_as_target = this.visibilityRules.filter( x => x.targetField === original_id); - - - - if(original_as_source.length){ - - //inner dependencies - const innerDep = original_as_source.filter(x => innerCompositeFieldOriginalIds.includes(x.targetField)); - innerDep.forEach(x =>{ - const newRule = {...x, sourceField: field.id, targetField: idMappings.find(l => l.original === x.targetField).multiplicityIdValue} as Rule; - rules_to_append.push(newRule); - }) - - - //outer dependencies - const outerDep = original_as_source.filter(x => !innerCompositeFieldOriginalIds.includes(x.targetField)); - outerDep.forEach(x =>{ - const newRule = {...x, sourceField: field.id}; - rules_to_append.push(newRule); - }) - } - - - - if( original_as_target.length){ - - //inner dependencies - const innerDep = original_as_target.filter( x=> innerCompositeFieldOriginalIds.includes(x.sourceField)); - innerDep.forEach(x =>{ - const newRule = {...x, targetField: field.id, sourceField: idMappings.find(l => l.original === x.sourceField).multiplicityIdValue} as Rule; - rules_to_append.push(newRule); - }) - - //outer dependencies - const outerDep = original_as_target.filter( x=> !innerCompositeFieldOriginalIds.includes(x.sourceField)); - outerDep.forEach(x=>{ - const newRule = {...x, targetField: field.id} as Rule; - rules_to_append.push(newRule); - }) - } - - }) - }); - } - - - - - // ** FIELDSET ITSELF IS TARGET - // ** source it can never be - - const compositeFieldAsTargetRules = this.visibilityRules.filter(x => x.targetField === entry.id); - const idCompositeFieldMappings = multiplicityItemsValue.map(x =>{ - return { - originalValue: entry.id, - newValue:x.id - } - }) as {originalValue: string, newValue: string}[]; - - - if(compositeFieldAsTargetRules.length){ - - compositeFieldAsTargetRules.forEach(x =>{ - idCompositeFieldMappings.forEach(l=>{ - const newRule = {...x, targetField: l.newValue}; - rules_to_append.push(newRule); - }); - }); - } - - - } - - return rules_to_append; - } - - private _buildRecursively(form: UntypedFormGroup,whatAmI:ToCEntryType):ToCEntry{ - if(!form) return null; - - switch(whatAmI){ - case ToCEntryType.Section: - const sections = form.get('sections') as UntypedFormArray; - const fieldsets = form.get('compositeFields') as UntypedFormArray; - - - const tempResult:ToCEntry[] = []; - - if(sections &§ions.length){ - sections.controls.forEach(section=>{ - tempResult.push(this._buildRecursively(section as UntypedFormGroup, ToCEntryType.Section)); - }); - - }else if(fieldsets && fieldsets.length){ - fieldsets.controls.forEach(fieldset=>{ - tempResult.push(this._buildRecursively(fieldset as UntypedFormGroup, ToCEntryType.FieldSet)); - }); - } - return { - form: form, - id: form.get('id').value, - label: form.get('title').value, - numbering: '', - subEntries:tempResult, - subEntriesType: sections &§ions.length? ToCEntryType.Section: ToCEntryType.FieldSet, - type: ToCEntryType.Section, - ordinal: form.get('ordinal').value - } - case ToCEntryType.FieldSet: - return { - form: form, - label:form.get('title').value, - id: form.get('id').value, - numbering:'s', - subEntries:[], - subEntriesType: ToCEntryType.Field, - type: ToCEntryType.FieldSet, - ordinal: form.get('ordinal').value - } - } - } - - private _sortByOrdinal(tocentries: ToCEntry[]){ - - if(!tocentries || !tocentries.length) return; - - tocentries.sort(this._customCompare); - tocentries.forEach(entry=>{ - this._sortByOrdinal(entry.subEntries); - }); - } - - private _customCompare(a,b){ - return a.ordinal - b.ordinal; - } - - private _calculateNumbering(tocentries: ToCEntry[], depth:number[] = []){ - if(!tocentries || !tocentries.length){ - return; - } - - let prefixNumbering = depth.length? depth.join('.'): ''; - - if(depth.length) prefixNumbering = prefixNumbering+"."; - tocentries.forEach((entry,i)=>{ - entry.numbering = prefixNumbering + (i+1); - this._calculateNumbering(entry.subEntries, [...depth, i+1]) - }); - } - - getTocEntries(): ToCEntry[] { - if (!this.form) { return []; } - const result: ToCEntry[] = []; - - //build parent pages - (this.form.get('pages') as UntypedFormArray).controls.forEach((pageElement, i) => { - result.push({ - id: i+'id', - label: pageElement.get('title').value, - type: ToCEntryType.Page, - form: pageElement, - numbering: (i + 1).toString(), - subEntriesType: ToCEntryType.Section, - subEntries:[], - ordinal: pageElement.get('ordinal').value - } as ToCEntry) - }); - - - - result.forEach((entry,i)=>{ - - const sections = entry.form.get('sections') as UntypedFormArray; - - sections.controls.forEach(section=>{ - const tempResults = this._buildRecursively(section as UntypedFormGroup,ToCEntryType.Section); - entry.subEntries.push(tempResults); - }); - - }); - - this._sortByOrdinal(result); - //calculate numbering - this._calculateNumbering(result); - return result; - - } - private _findHiddenEntries(tocentries:ToCEntry[]):string[]{ - if(!tocentries) return []; - - const invisibleEntries:string[] = [] - tocentries.forEach(entry=>{ - if(entry.type === ToCEntryType.FieldSet){ - const isVisible = this.visibilityRulesService.checkElementVisibility(entry.id); - if(!isVisible){ - invisibleEntries.push(entry.id); - }else{ - //check field inputs - const fields = entry.form.get('fields') as UntypedFormArray; - - const oneFieldAtLeastIsVisible = fields.controls.some(field=> this.visibilityRulesService.checkElementVisibility(field.get('id').value)); - if(!oneFieldAtLeastIsVisible){ - invisibleEntries.push(entry.id); - } - } - }else{ - const hiddenEntries = this._findHiddenEntries(entry.subEntries); - - if(entry.subEntries&& (entry.subEntries.every(e=> hiddenEntries.includes(e.id)))){ - //all children all hidden then hide parent node; - invisibleEntries.push(entry.id); - }else{ - invisibleEntries.push(...hiddenEntries); - } - } - }) - - return invisibleEntries; - } - -} -export interface ToCEntry { - id: string; - label: string; - subEntriesType: ToCEntryType; - subEntries: ToCEntry[]; - type: ToCEntryType; - form: AbstractControl; - numbering: string; - ordinal: number; -} -export enum ToCEntryType { - Page = 0, - Section = 1, - FieldSet = 2, - Field = 3 -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/form-focus/form-focus.service.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/form-focus/form-focus.service.ts deleted file mode 100644 index 83ac3113b..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/form-focus/form-focus.service.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Injectable } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; -import { Pair } from '../../../../../common/types/pair'; -import { CompositeField } from '../../../../core/model/dataset-profile-definition/composite-field'; -import { groupBy } from 'lodash'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; - -@Injectable() -export class FormFocusService { - - private compositeFields: Pair[] = []; - - constructor( - private router: Router, - private route: ActivatedRoute, - private visibilityService: VisibilityRulesService - ) { - - } - - setFields(compositeFields: Pair[]) { - this.compositeFields = compositeFields; - } - - focusNext(field: CompositeField) { - const flattenedCompositeFields = groupBy(this.compositeFields, x => x.right) - .map(x => x.reduce((first: Pair, second: Pair) => - (new Pair(first.left.concat(second.left), first.right)))); - const page = flattenedCompositeFields.filter(x => x['left'].map(y => y.id).indexOf(field.id) !== -1)[0]; - let pageIndex = page['right']; - const currentFields = page['left'].filter(x => this.visibilityService.checkElementVisibility(x.id)).map(x => x.id); - const fieldIndex = currentFields.indexOf(field.id); - if (fieldIndex === currentFields.length - 1) { pageIndex = pageIndex + 1; } - this.router.navigate(['datasets/' + this.route.snapshot.url[0] + '/' + this.route.snapshot.url[1]], { fragment: page['left'].filter(x => this.visibilityService.checkElementVisibility(x.id))[fieldIndex].id, queryParams: { page: pageIndex } }); - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.html deleted file mode 100644 index 8f25dd2bf..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.html +++ /dev/null @@ -1,4 +0,0 @@ -
- - -
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.ts deleted file mode 100644 index 59628e26d..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/helpers/dynamic-form-pending-questions/dynamic-form-pending-questions-display.component.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { FormGroup } from '@angular/forms'; -import { CompositeField } from '../../../../../core/model/dataset-profile-definition/composite-field'; -import { DatasetProfileDefinitionModel } from '../../../../../core/model/dataset-profile-definition/dataset-profile-definition'; -import { Rule } from '../../../../../core/model/dataset-profile-definition/rule'; -import { Section } from '../../../../../core/model/dataset-profile-definition/section'; -import { DatasetWizardModel } from '../../../../../core/model/dataset/dataset-wizard'; -import { MarkForConsiderationService } from '../../mark-for-consideration/mark-for-consideration.service'; -import { VisibilityRulesService } from '../../visibility-rules/visibility-rules.service'; - -// @Component({ -// selector: 'app-dynamic-form-pending-questions-display', -// templateUrl: './dynamic-form-pending-questions-display.component.html', -// styleUrls: ['./dynamic-form-pending-questions-display.component.scss'] -// }) -export class DynamicFormPendingQuestionsDisplayComponent implements OnInit { - - constructor( - private visibilityRulesService: VisibilityRulesService, - public markForConsideration: MarkForConsiderationService) { - } - - datasetProfileDefinitionModel: DatasetProfileDefinitionModel; - - @Input() - form: FormGroup; - - @Input() dataModel: DatasetWizardModel; - - fields: CompositeField[]; - - ngOnInit(): void { - const rules: Rule[] = this.dataModel.datasetProfileDefinition.rules; - this.datasetProfileDefinitionModel = this.dataModel.datasetProfileDefinition; - const sections: Section[] = this.datasetProfileDefinitionModel.pages.flatMap(page => page.sections).filter(x => x); - const compositeFields: CompositeField[] = sections.flatMap(section => section.compositeFields).filter(x => x); - const nestedSections: Section[] = sections.flatMap(section => section.sections).filter(x => x); - const nestedCompositeFiels: CompositeField[] = nestedSections.flatMap(section => section.compositeFields).filter(x => x); - const compositeFieldsUnion = compositeFields.concat(nestedCompositeFiels); - //const fields: Field[] = compositeFields.flatMap(composite => composite.fields).concat(nestedCompositeFiels.flatMap(composite => composite.fields)); - // const fields = compositeFieldsUnion.filter(compositeField => this.visibilityRulesService.checkElementVisibility(compositeField.id)) - // .filter(compositeField => compositeField.fields.filter(x => x && x.validationRequired && this.visibilityRulesService.getFormGroup(x.id).value == null).length > 0); - // fields.forEach(x => this.markForConsideration.markForConsideration(x)); - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/mark-for-consideration/mark-for-consideration.service.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/mark-for-consideration/mark-for-consideration.service.ts deleted file mode 100644 index 30673abeb..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/mark-for-consideration/mark-for-consideration.service.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Injectable } from '@angular/core'; -import { CompositeField } from '../../../../core/model/dataset-profile-definition/composite-field'; - -@Injectable() -export class MarkForConsiderationService { - - private compositeFields: CompositeField[] = []; - - markForConsideration(field: CompositeField) { - if (this.exists(field)) { - this.compositeFields.push(field); - } - } - - getFields() { - return this.compositeFields; - } - - exists(field: CompositeField) { - return this.compositeFields.map(x => x.id).indexOf(field.id) === -1; - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/base-table-of-content.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/base-table-of-content.component.ts deleted file mode 100644 index 05a0bd107..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/base-table-of-content.component.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { ActivatedRouteSnapshot, Router, ActivatedRoute } from '@angular/router'; - -export class BaseTableOfContent { - constructor(public router: Router, public route: ActivatedRoute) { } - - scrollToId(elementId, page: number) { - //this.paginationService.setCurrentIndex(page-1); - this.router.navigate([this.route.snapshot.url[0] + '/' + this.route.snapshot.url[1]], { fragment: elementId, queryParams: { page: page } }); - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-field/table-of-content-field.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-field/table-of-content-field.component.html deleted file mode 100644 index 991aa1a51..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-field/table-of-content-field.component.html +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-field/table-of-content-field.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-field/table-of-content-field.component.ts deleted file mode 100644 index 85af69dcb..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-field/table-of-content-field.component.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; -import { Field } from '../../../../../core/model/dataset-profile-definition/field'; -import { BaseTableOfContent } from '../base-table-of-content.component'; - - -// @Component({ -// selector: 'app-table-of-contents-field', -// templateUrl: './table-of-content-field.component.html' -// }) -export class TableOfContentsFieldComponent extends BaseTableOfContent { - @Input() model: Field; - @Input() index: number; - @Input() public path: string; - @Input() public page: number; - constructor(public router: Router, public route: ActivatedRoute, ) { - super(router, route); - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.html deleted file mode 100644 index 0e42a2a00..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.ts deleted file mode 100644 index e3b181e94..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-fieldset/table-of-content-fieldset.component.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; -import { CompositeField } from '../../../../../core/model/dataset-profile-definition/composite-field'; -import { BaseTableOfContent } from '../base-table-of-content.component'; - -// @Component({ -// selector: 'app-table-of-contents-fieldset', -// templateUrl: './table-of-content-fieldset.component.html' -// }) -export class TableOfContentsFieldSetComponent extends BaseTableOfContent { - - @Input() model: CompositeField; - @Input() index: number; - @Input() public path: string; - @Input() public page: number; - constructor(public router: Router, public route: ActivatedRoute) { - super(router, route); - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-group/table-of-content-group.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-group/table-of-content-group.component.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-group/table-of-content-group.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-group/table-of-content-group.component.ts deleted file mode 100644 index 6b1a5428c..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-group/table-of-content-group.component.ts +++ /dev/null @@ -1,24 +0,0 @@ -// import { Component, Input } from '@angular/core'; -// import { ActivatedRoute, Router } from '@angular/router'; -// import { BaseTableOfContent } from '../base-table-of-content.component'; - -// @Component({ -// selector: 'app-table-of-contents-group', -// templateUrl: './table-of-content-group.component.html' -// }) -// export class TableOfContentsGroupComponent extends BaseTableOfContent { - -// @Input() model: FieldGroup; -// @Input() index: number; -// @Input() public path: string; -// @Input() public page: number; -// /* @Output() -// setPage:EventEmitter = new EventEmitter(); - -// */ -// constructor(public router: Router, public route: ActivatedRoute) { -// super(router, route); -// } - - -// } diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-section/table-of-content-section.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-section/table-of-content-section.component.html deleted file mode 100644 index 8c8c36131..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-section/table-of-content-section.component.html +++ /dev/null @@ -1,10 +0,0 @@ - -{{path + ' ' + model.title}} - - - -
    -
  • - -
  • -
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-section/table-of-content-section.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-section/table-of-content-section.component.ts deleted file mode 100644 index 2819e461f..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-content-section/table-of-content-section.component.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; -import { Section } from '../../../../../core/model/dataset-profile-definition/section'; -import { BaseTableOfContent } from '../base-table-of-content.component'; - -// @Component({ -// selector: 'app-table-of-contents-section', -// templateUrl: './table-of-content-section.component.html' -// }) -export class TableOfContentsSectionComponent extends BaseTableOfContent implements OnInit { - - @Input() model: Section; - @Input() index: number; - @Input() public path: string; - @Input() public page: number; - constructor(public router: Router, public route: ActivatedRoute) { - super(router, route); - } - ngOnInit() { - - } - -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-contents.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-contents.component.html deleted file mode 100644 index d4bf4f719..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-contents.component.html +++ /dev/null @@ -1,7 +0,0 @@ - -
    -
  • - - -
  • -
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-contents.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-contents.component.ts deleted file mode 100644 index ffb9c7fc3..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/table-of-contents.component.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Component, Input, OnInit } from '@angular/core'; -import { DatasetProfileDefinitionModel } from '../../../../core/model/dataset-profile-definition/dataset-profile-definition'; - -// @Component({ -// selector: 'app-table-of-content', -// templateUrl: './table-of-contents.component.html', -// styleUrls: ['./toc.component.css'] -// }) -export class TableOfContentsComponent implements OnInit { - - @Input() - public model: DatasetProfileDefinitionModel; - public path = ''; - - ngOnInit() { - - } - -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/toc.component.css b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/toc.component.css deleted file mode 100644 index 50768fefa..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContents/toc.component.css +++ /dev/null @@ -1,10 +0,0 @@ -.cursor-hand{ - cursor: pointer; -} - -.toc-toggler { - position: absolute; - left: 0%; - top: 50%; - transform: translate(-50%, -50%); -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.html deleted file mode 100644 index f78625aa2..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.html +++ /dev/null @@ -1,49 +0,0 @@ -
- - - - - - - - - {{entry.numbering}}. {{entry.label}} - - - - - -
- - - -
-
- - - -
- -
\ No newline at end of file diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.scss deleted file mode 100644 index 91152786d..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.scss +++ /dev/null @@ -1,33 +0,0 @@ - -.internal-table{ - margin-left: 1em; - padding-left: 0.2rem; - -} -.table-entry{ - - text-overflow: ellipsis; - overflow: hidden; - padding-left: 0.2rem; - color: rgba(0, 0, 0, 0.54); - transition: color 100ms; - - display: block; - span{ - white-space: nowrap; - } -} - -.table-entry:hover{ - background-color: #ececec; - border-radius: 6px; -} -.selected { - color: #212121 !important; - font-weight: 700 !important; - opacity: 1 !important; -} - -.section{ - line-height: 1.7em; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.ts deleted file mode 100644 index 4290acae2..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents-internal/table-of-contents-internal.ts +++ /dev/null @@ -1,165 +0,0 @@ -import {Component, EventEmitter, Inject, OnInit, Output, Input, ViewChildren, QueryList} from '@angular/core'; -import { SimpleChanges } from '@angular/core'; -import { UntypedFormArray } from '@angular/forms'; -import { ToCEntry, ToCEntryType } from '../../dataset-description.component'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; - -@Component({ - selector: 'table-of-contents-internal', - styleUrls: ['./table-of-contents-internal.scss'], - templateUrl: './table-of-contents-internal.html' -}) -export class TableOfContentsInternal implements OnInit { - - @Input() tocentries: ToCEntry[] = null; - @Input() selected: ToCEntry = null; - // @Input() visibilityRules:Rule[] = []; - @Output() entrySelected = new EventEmitter(); - - expandChildren:boolean[]; - tocEntryTypeEnum = ToCEntryType; - @Input() TOCENTRY_ID_PREFIX=""; - @Input() showErrors: boolean = false; - @Input() hiddenEntries: string[] =[]; - @Input() visibilityRulesService: VisibilityRulesService; - @ViewChildren(TableOfContentsInternal) internalTables: QueryList; - - constructor(){ - } - ngOnInit(): void { - // console.log('component created'); - if(this.tocentries){ - this.expandChildren = this.tocentries.map(()=>false); - if(this.selected){ - for(let i=0; i 0) { - // this.links.forEach(link => { - // link.selected = false; - // }) - // this.links[0].selected = true; - // } - } - - toggleExpand(index){ - this.expandChildren[index] = !this.expandChildren[index]; - // console.log(this.expandChildren); - } - - navigateToFieldSet(entry:ToCEntry, event){ - if(entry.type === ToCEntryType.FieldSet){ - - const fieldSetId = entry.id; - const element = document.getElementById(this.TOCENTRY_ID_PREFIX+fieldSetId); - if(element){ - element.click();//open mat expansion panel - - //scroll asyn in 200 ms so the expansion panel is expanded and the element coordinates are updated - setTimeout(() => { - const element = document.getElementById(this.TOCENTRY_ID_PREFIX+fieldSetId); - if(element){ - element.scrollIntoView({behavior:'smooth'}); - } - }, 300); - } - - } - } - - - onEntrySelected(entry:ToCEntry){ - this.entrySelected.emit(entry); - } - - - calculateStyle(entry: ToCEntry){ - const style = {}; - style['font-size'] = entry.type ===this.tocEntryTypeEnum.FieldSet? '.9em': '1em'; - return style; - } - - calculateClass(entry:ToCEntry){ - const myClass= {}; - - if(this.selected && entry.id === this.selected.id){ - myClass['selected'] = true; - } - - if(entry.type != this.tocEntryTypeEnum.FieldSet){ - myClass['section'] = true; - } - - return myClass; - } - - private _findTocEntryById(id: string, tocentries: ToCEntry[]): ToCEntry{ - if(!tocentries || !tocentries.length){ - return null; - } - - let tocEntryFound = tocentries.find(entry=>entry.id === id); - - if(tocEntryFound){ - return tocEntryFound; - } - - for(let entry of tocentries){ - const result = this._findTocEntryById(id, entry.subEntries); - if(result){ - tocEntryFound = result; - break; - } - } - - return tocEntryFound? tocEntryFound: null; - } - public invalidChildsVisible(entry: ToCEntry):boolean { - if(!entry || !this.visibilityRulesService){ - return false; - } - - if(entry.type!= this.tocEntryTypeEnum.FieldSet){ - return entry.subEntries.some(_ => this.invalidChildsVisible(_)); - } - if(entry.type === this.tocEntryTypeEnum.FieldSet){ - const id = entry.form.get('id').value - if(!this.visibilityRulesService.checkElementVisibility(id)){ - return false; - } - const fieldsArray = entry.form.get('fields') as UntypedFormArray; - const hasError = !fieldsArray.controls.every(field=>{//every invalid field should be invisible - if(field.invalid){ - const id = field.get('id').value; - const isVisible = this.visibilityRulesService.checkElementVisibility(id); - if(isVisible){ - return false; - } - } - return true; - }); - return hasError; - } - return false; - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.html deleted file mode 100644 index 6a10aeaac..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.html +++ /dev/null @@ -1,40 +0,0 @@ -
- - - -
- - {{link.name}} - - -
-
- - - -
- -
- - - -
-
\ No newline at end of file diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.module.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.module.ts deleted file mode 100644 index 47b3a1069..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.module.ts +++ /dev/null @@ -1,15 +0,0 @@ -import {CommonModule} from '@angular/common'; -import {NgModule} from '@angular/core'; -import {TableOfContents} from './table-of-contents'; -import {RouterModule} from '@angular/router'; -import { TableOfContentsInternal } from './table-of-contents-internal/table-of-contents-internal'; -import { MatIconModule } from '@angular/material/icon'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; - -@NgModule({ - imports: [CommonModule, RouterModule, MatIconModule], - declarations: [TableOfContents, TableOfContentsInternal], - exports: [TableOfContents], - providers: [VisibilityRulesService] -}) -export class TableOfContentsModule { } diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.scss b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.scss deleted file mode 100644 index 7dbc877af..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.scss +++ /dev/null @@ -1,80 +0,0 @@ -.docs-toc-container { - width: 100%; - padding: 5px 0 10px 0px; - cursor: pointer; - // border-left: solid 4px #0c7489; - - .scroll-container { - overflow-y: auto; - // calc(100vh - 250px) - // height: calc(100vh - 250px); - } - - .docs-link { - color: rgba(0, 0, 0, 0.54); - // color: mat-color($app-blue-theme-foreground, secondary-text); - transition: color 100ms; - - &:hover, - &.docs-active { - .link-name { - background-color: #ececec; - border-radius: 6px; - // color: #0c7489; - } - // color: mat-color($primary, if($is-dark-theme, 200, default)); - } - } -} - -.docs-toc-heading { - margin: 0; - padding: 0; - font-size: 13px; - font-weight: bold; -} - -span { - line-height: 16px; - margin: 6px 0 0; - position: relative; - text-decoration: none; - display: block; - overflow: hidden; - color: #21212194; - font-weight: 400; - max-width: 290px; - min-width: 290px; - padding: 0rem .4rem; - span { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - display: inline-block; - width: 100%; - } -} - -.selected { - color: #212121 !important; - font-weight: 700 !important; - opacity: 1 !important; -} - -// .docs-level-mat-expansion-panel { -// margin-left: 12px; -// } - -.docs-level-h5 { - margin-left: 24px; -} - -// .internal-table-outer{ -// padding-left: 1.1em; -// width: 100%; -// } - -.internal-table{ - max-width: 320px; - min-width: 320px; -} \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.ts deleted file mode 100644 index cc65be560..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/tableOfContentsMaterial/table-of-contents.ts +++ /dev/null @@ -1,512 +0,0 @@ -import { DOCUMENT } from '@angular/common'; -import { Component, EventEmitter, Inject, OnInit, Output, Input, OnChanges, ViewChild } from '@angular/core'; -import { BaseComponent } from '@common/base/base.component'; -import { interval, Subject, Subscription } from 'rxjs'; -import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators'; -import { type } from 'os'; -import { SimpleChanges } from '@angular/core'; -import { ToCEntry, ToCEntryType } from '../dataset-description.component'; -import { UntypedFormArray, UntypedFormGroup } from '@angular/forms'; -import { Rule } from '@app/core/model/dataset-profile-definition/rule'; -import { TableOfContentsInternal } from './table-of-contents-internal/table-of-contents-internal'; -import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service'; - -export interface Link { - /* id of the section*/ - id: string; - /* header type h3/h4 */ - type: string; - /* If the anchor is in view of the page */ - active: boolean; - /* name of the anchor */ - name: string; - /* top offset px of the anchor */ - top: number; - page: number; - section: number; - show: boolean; - selected: boolean; -} - -@Component({ - selector: 'table-of-contents', - styleUrls: ['./table-of-contents.scss'], - templateUrl: './table-of-contents.html' -}) -export class TableOfContents extends BaseComponent implements OnInit, OnChanges { - - @ViewChild('internalTable') internalTable: TableOfContentsInternal; - - - @Input() links: Link[]; - container: string; - headerSelectors = '.toc-page-header, .toc-section-header, .toc-compositeField-header'; - @Output() stepFound = new EventEmitter(); - @Output() currentLinks = new EventEmitter(); - @Output() entrySelected = new EventEmitter(); - subscription: Subscription; - linksSubject: Subject = new Subject(); - - @Input() isActive: boolean; - - tocentries: ToCEntry[] = null; - @Input() TOCENTRY_ID_PREFIX = ''; - // visibilityRules:Rule[] = []; - @Input() visibilityRules: Rule[] = []; - @Input() showErrors: boolean = false; - @Input() selectedFieldsetId: string; - - private _tocentrySelected: ToCEntry = null; - private isSelecting: boolean = false; - private _intersectionObserver: IntersectionObserver; - private _actOnObservation: boolean = true; - public hiddenEntries: string[] = []; - get tocentrySelected() { - return this.hasFocus ? this._tocentrySelected : null; - } - set tocentrySelected(value) { - this._tocentrySelected = value; - } - - @Input() formGroup: UntypedFormGroup; - @Input() hasFocus: boolean = false; - @Input() visibilityRulesService: VisibilityRulesService; - show: boolean = false; - - constructor( - @Inject(DOCUMENT) private _document: Document, - // public visibilityRulesService: VisibilityRulesService - ) { - super(); - } - - - ngOnInit(): void { - - // this.visibilityRulesService.visibilityChange - // .pipe(takeUntil(this._destroyed)) - // .pipe(debounceTime(200)) - // .subscribe(_=>{ - // if(this.hasFocus){ - // this._resetObserver(); - // this.hiddenEntries = this._findHiddenEntries(this.tocentries); - // } - // }) - - if (this.formGroup) { - this.tocentries = this.getTocEntries(this.formGroup.get('datasetProfileDefinition')); - const fg = this.formGroup.get('datasetProfileDefinition'); - // this.visibilityRulesService.buildVisibilityRules(this.visibilityRules, fg); - if (this.visibilityRulesService) { - this.hiddenEntries = this._findHiddenEntries(this.tocentries); - } - - } else { - - //emit value every 500ms - const source = interval(500); - this.subscription = source.subscribe(val => { - const headers = Array.from(this._document.querySelectorAll(this.headerSelectors)) as HTMLElement[]; - this.linksSubject.next(headers); - }); - - if (!this.links || this.links.length === 0) { - this.linksSubject.asObservable() - .pipe(distinctUntilChanged((p: HTMLElement[], q: HTMLElement[]) => JSON.stringify(p) == JSON.stringify(q))) - .subscribe(headers => { - const links: Array = []; - - if (headers.length) { - let page; - let section; - let show - for (const header of headers) { - let name; - let id; - if (header.classList.contains('toc-page-header')) { // deprecated after removing stepper - name = header.innerText.trim().replace(/^link/, ''); - id = header.id; - page = header.id.split('_')[1]; - section = undefined; - show = true; - } else if (header.classList.contains('toc-section-header')) { - name = header.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].nodeValue.trim().replace(/^link/, ''); - id = header.id; - page = header.id.split('.')[1]; - section = header.id; - if (header.id.split('.')[4]) { show = false; } - else { show = true; } - } else if (header.classList.contains('toc-compositeField-header')) { - name = (header.childNodes[0]).nodeValue.trim().replace(/^link/, ''); - id = header.id; - // id = header.parentElement.parentElement.parentElement.id; - show = false; - } - const { top } = header.getBoundingClientRect(); - links.push({ - name, - id, - type: header.tagName.toLowerCase(), - top: top, - active: false, - page: page, - section: section, - show: show, - selected: false - }); - } - } - this.links = links; - // Initialize selected for button next on dataset wizard component editor - this.links.length > 0 ? this.links[0].selected = true : null; - }) - } - } - - } - - private _findHiddenEntries(tocentries: ToCEntry[]): string[] { - if (!tocentries) return []; - - const invisibleEntries: string[] = [] - tocentries.forEach(entry => { - if (entry.type === ToCEntryType.FieldSet) { - const isVisible = this.visibilityRulesService.checkElementVisibility(entry.id); - if (!isVisible) { - invisibleEntries.push(entry.id); - } else { - //check field inputs - const fields = entry.form.get('fields') as UntypedFormArray; - - const oneFieldAtLeastIsVisible = fields.controls.some(field => this.visibilityRulesService.checkElementVisibility(field.get('id').value)); - if (!oneFieldAtLeastIsVisible) { - invisibleEntries.push(entry.id); - } - } - } else { - const hiddenEntries = this._findHiddenEntries(entry.subEntries); - - if (entry.subEntries && (entry.subEntries.every(e => hiddenEntries.includes(e.id)))) { - //all children all hidden then hide parent node; - invisibleEntries.push(entry.id); - } else { - invisibleEntries.push(...hiddenEntries); - } - } - }) - - return invisibleEntries; - } - - private _visibilityRulesSubscription: Subscription; - ngOnChanges(changes: SimpleChanges) { - - if (this.selectedFieldsetId) { - this.onToCentrySelected(this._findTocEntryById(this.selectedFieldsetId, this.tocentries), false); - this._actOnObservation = false; - setTimeout(() => { - this._actOnObservation = true; - }, 1000); - - } - - - if (changes['hasFocus'] && changes.hasFocus.currentValue) { - this._resetObserver(); - - } - - if ('visibilityRulesService') { - if (this._visibilityRulesSubscription) { - this._visibilityRulesSubscription.unsubscribe(); - this._visibilityRulesSubscription = null; - } - - if (!this.visibilityRulesService) return; - - this._visibilityRulesSubscription = this.visibilityRulesService.visibilityChange - .pipe(takeUntil(this._destroyed)) - .pipe(debounceTime(200)) - .subscribe(_ => { - if (this.hasFocus) { - this._resetObserver(); - this.hiddenEntries = this._findHiddenEntries(this.tocentries); - } - }); - this.hiddenEntries = this._findHiddenEntries(this.tocentries); - } - // if (!this.isActive && this.links && this.links.length > 0) { - // this.links.forEach(link => { - // link.selected = false; - // }) - // this.links[0].selected = true; - // } - } - - - private _resetObserver() { - if (this._intersectionObserver) {//clean up - this._intersectionObserver.disconnect(); - this._intersectionObserver = null; - } - - const options = { - root: null, - rootMargin: '-38% 0px -60% 0px', - threshold: 0 - } - - this._intersectionObserver = new IntersectionObserver((entries, observer) => { - if (!this._actOnObservation) { - return; - } - - entries.forEach(ie => { - if (ie.isIntersecting) { - try { - const target_id = ie.target.id.replace(this.TOCENTRY_ID_PREFIX, ''); - if (this.visibilityRulesService.checkElementVisibility(target_id)) { - this.onToCentrySelected(this._findTocEntryById(target_id, this.tocentries)); - } - } catch { - - } - } - }) - }, options); - - const fieldsetsEtries = this._getAllFieldSets(this.tocentries); - - fieldsetsEtries.forEach(e => { - if (e.type === ToCEntryType.FieldSet) { - try { - const targetElement = document.getElementById(this.TOCENTRY_ID_PREFIX + e.id); - this._intersectionObserver.observe(targetElement); - } catch { - console.log('element not found'); - } - } - }); - } - - goToStep(link: Link) { - this.stepFound.emit({ - page: link.page, - section: link.section - }); - this.currentLinks.emit(this.links); - - setTimeout(() => { - const target = document.getElementById(link.id); - target.scrollIntoView(true); - - var scrolledY = window.scrollY; - if (scrolledY) { - window.scroll(0, scrolledY - 70); - } - }, 500); - } - - toggle(headerLink: Link) { - const headerPage = +headerLink.name.split(" ", 1); - let innerPage; - for (const link of this.links) { - link.selected = false; - if (link.type === 'mat-expansion-panel') { - innerPage = +link.name.split(".", 1)[0]; - if (isNaN(innerPage)) { innerPage = +link.name.split(" ", 1) } - } else if (link.type === 'h5') { - innerPage = +link.name.split(".", 1)[0]; - } - if (headerPage === innerPage && (link.type !== 'mat-expansion-panel' || (link.type === 'mat-expansion-panel' && link.id.split(".")[4]))) { - link.show = !link.show; - } - } - headerLink.selected = true; - } - - // getIndex(link: Link): number { - // return +link.id.split("_", 2)[1]; - // } - - - private _buildRecursively(form: UntypedFormGroup, whatAmI: ToCEntryType): ToCEntry { - if (!form) return null; - - switch (whatAmI) { - case ToCEntryType.Section: - const sections = form.get('sections') as UntypedFormArray; - const fieldsets = form.get('compositeFields') as UntypedFormArray; - - - const tempResult: ToCEntry[] = []; - - if (sections && sections.length) { - sections.controls.forEach(section => { - tempResult.push(this._buildRecursively(section as UntypedFormGroup, ToCEntryType.Section)); - }); - - } else if (fieldsets && fieldsets.length) { - fieldsets.controls.forEach(fieldset => { - tempResult.push(this._buildRecursively(fieldset as UntypedFormGroup, ToCEntryType.FieldSet)); - }); - } - return { - form: form, - id: form.get('id').value, - label: form.get('title').value, - numbering: '', - subEntries: tempResult, - subEntriesType: sections && sections.length ? ToCEntryType.Section : ToCEntryType.FieldSet, - type: ToCEntryType.Section, - ordinal: form.get('ordinal').value - } - case ToCEntryType.FieldSet: - return { - form: form, - label: form.get('title').value, - id: form.get('id').value, - numbering: 's', - subEntries: [], - subEntriesType: ToCEntryType.Field, - type: ToCEntryType.FieldSet, - ordinal: form.get('ordinal').value - } - } - } - - private _sortByOrdinal(tocentries: ToCEntry[]) { - - if (!tocentries || !tocentries.length) return; - - tocentries.sort(this._customCompare); - tocentries.forEach(entry => { - this._sortByOrdinal(entry.subEntries); - }); - } - - private _customCompare(a, b) { - return a.ordinal - b.ordinal; - } - - private _calculateNumbering(tocentries: ToCEntry[], depth: number[] = []) { - if (!tocentries || !tocentries.length) { - return; - } - - let prefixNumbering = depth.length ? depth.join('.') : ''; - - if (depth.length) prefixNumbering = prefixNumbering + "."; - tocentries.forEach((entry, i) => { - entry.numbering = prefixNumbering + (i + 1); - this._calculateNumbering(entry.subEntries, [...depth, i + 1]) - }); - } - - - getTocEntries(form): ToCEntry[] { - if (form == null) { return []; } - const result: ToCEntry[] = []; - - //build parent pages - (form.get('pages') as UntypedFormArray).controls.forEach((pageElement, i) => { - result.push({ - id: i + 'id', - label: pageElement.get('title').value, - type: ToCEntryType.Page, - form: pageElement, - numbering: (i + 1).toString(), - subEntriesType: ToCEntryType.Section, - subEntries: [], - ordinal: pageElement.get('ordinal').value - } as ToCEntry) - }); - - - - result.forEach((entry, i) => { - - const sections = entry.form.get('sections') as UntypedFormArray; - - sections.controls.forEach(section => { - const tempResults = this._buildRecursively(section as UntypedFormGroup, ToCEntryType.Section); - entry.subEntries.push(tempResults); - }); - - }); - - this._sortByOrdinal(result); - //calculate numbering - this._calculateNumbering(result); - return result; - - } - - onToCentrySelected(entry: ToCEntry = null, execute: boolean = true) { - if (!this.isSelecting) { - this.isSelecting = true; - this.tocentrySelected = entry; - this.entrySelected.emit({ entry: entry, execute: execute }); - setTimeout(() => { - this.isSelecting = false; - }, 600); - } - } - - private _findTocEntryById(id: string, tocentries: ToCEntry[]): ToCEntry { - if (!tocentries || !tocentries.length) { - return null; - } - - let tocEntryFound = tocentries.find(entry => entry.id === id); - - if (tocEntryFound) { - return tocEntryFound; - } - - for (let entry of tocentries) { - const result = this._findTocEntryById(id, entry.subEntries); - if (result) { - tocEntryFound = result; - break; - } - } - - return tocEntryFound ? tocEntryFound : null; - } - /** - * Get all filedsets in a tocentry array; - * @param entries Tocentries to search in - * @returns The tocentries that are Fieldsets provided in the entries - */ - private _getAllFieldSets(entries: ToCEntry[]): ToCEntry[] { - - const fieldsets: ToCEntry[] = []; - if (!entries || !entries.length) return fieldsets; - - - entries.forEach(e => { - if (e.type === ToCEntryType.FieldSet) { - fieldsets.push(e); - } else { - fieldsets.push(...this._getAllFieldSets(e.subEntries)); - } - }); - return fieldsets; - } - - - public hasVisibleInvalidFields(): boolean { - if (!this.internalTable || !this.tocentries) { - return false; - } - return this.tocentries.some(e => this.internalTable.invalidChildsVisible(e)); - } - - protected readonly console = console; -} - -export interface LinkToScroll { - page: number; - section: number; -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rule-source.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rule-source.ts deleted file mode 100644 index 2db9978a3..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rule-source.ts +++ /dev/null @@ -1,4 +0,0 @@ -export class VisibilityRuleSource { - public sourceControlId: string; - public sourceControlValue: string; -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rule.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rule.ts deleted file mode 100644 index b2fba603b..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rule.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { VisibilityRuleSource } from "./visibility-rule-source"; - -export class VisibilityRule { - public targetControlId: string; - public sourceVisibilityRules: Array; -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rules-context.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rules-context.ts deleted file mode 100644 index 2eba9ff10..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/models/visibility-rules-context.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Rule } from "../../../../../core/model/dataset-profile-definition/rule"; -import { VisibilityRule } from "./visibility-rule"; - -export class VisibilityRulesContext { - - public rules: Array = new Array(); - - constructor() { } - - public getRulesFromKey(id: string): VisibilityRule { - - for (let i = 0; i < this.rules.length; i++) { - if (id === this.rules[i].targetControlId) { return this.rules[i]; } - } - return null; - } - - public buildVisibilityRuleContext(items: Array) { - items.forEach(item => { - this.addToVisibilityRulesContext(item); - }); - } - - public addToVisibilityRulesContext(item: Rule): void { - for (let i = 0; i < this.rules.length; i++) { - if (this.rules[i].targetControlId === item.targetField) { - - const newRule = { sourceControlId: item.sourceField, sourceControlValue: item.requiredValue }; - const ruleExists = this.rules[i].sourceVisibilityRules.find(x =>{ - return Object.keys(x).reduce((exact, key)=>{ - if(!exact) return false; - return x[key] === newRule[key]; - },true); - }) - - if(!ruleExists){ - this.rules[i].sourceVisibilityRules.push(newRule); - } - - return; - } - } - const newVisibilityRuleArray = [({ sourceControlId: item.sourceField, sourceControlValue: item.requiredValue })]; - this.rules.push({ targetControlId: item.targetField, sourceVisibilityRules: newVisibilityRuleArray }); - return; - } -} diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service.ts deleted file mode 100644 index 2d5ad4d68..000000000 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/visibility-rules/visibility-rules.service.ts +++ /dev/null @@ -1,407 +0,0 @@ -// import { ApplicationRef, Injectable, NgZone } from '@angular/core'; -// import { AbstractControl, UntypedFormArray, UntypedFormGroup } from '@angular/forms'; -// import { DatasetProfileFieldViewStyle } from '@app/core/common/enum/dataset-profile-field-view-style'; -// import { isNumeric } from '@app/utilities/enhancers/utils'; -// import { Observable, Subject } from 'rxjs'; -// import { Rule } from '../../../../core/model/dataset-profile-definition/rule'; -// import { VisibilityRule } from './models/visibility-rule'; -// import { VisibilityRuleSource } from './models/visibility-rule-source'; -// import { VisibilityRulesContext } from './models/visibility-rules-context'; -// import { DescriptionTemplate, DescriptionTemplateSection } from '@app/core/model/description-template/description-template'; - -// @Injectable() -// export class VisibilityRulesService { - -// private readonly VISIBILITY_RULE_LOGIC: 'OR' | 'AND' = 'OR'; -// private readonly DEFAULTVISIBILITY = false; - -// private visibilityRuleContext: VisibilityRulesContext; -// private form: AbstractControl; -// public elementVisibilityMap = new Map(); -// private elementVisibilityMapSubject = new Subject>(); -// private elementComputationalMap = new Map>(); /// keep saved the values of each form control validity value -// private _changeMade$ = new Subject(); - - -// constructor( -// public applicationReference: ApplicationRef, -// public ngZone: NgZone -// ) { - -// } - -// getElementVisibilityMapObservable(): Observable> { -// return this.elementVisibilityMapSubject.asObservable(); -// } - -// public checkElementVisibility(id: string): boolean { -// if (this.visibilityRuleContext.rules.filter(item => item.targetControlId === id).length === 0) { return true; } -// return this.elementVisibilityMap.has(id) ? this.elementVisibilityMap.get(id) : false; -// } - -// public buildVisibilityRules(item: Array, form: AbstractControl) { -// this.visibilityRuleContext = new VisibilityRulesContext(); -// this.visibilityRuleContext.buildVisibilityRuleContext(item || []); -// this.form = form; -// this.resetVisibilityRules(); -// } - -// public updateValueAndVisibility(id: string, value: any) { -// const visibilityRules = this.visibilityRuleContext.rules.filter(item => item.sourceVisibilityRules.filter(source => source.sourceControlId === id).length > 0); -// if (visibilityRules.length > 0) { -// visibilityRules.forEach(item => this.evaluateVisibility(item, value, id)); -// this.elementVisibilityMapSubject.next(this.elementVisibilityMap); -// } -// } - -// private evaluateVisibility(visibilityRule: VisibilityRule, value: any, sourceId: string) {// source controlId is the same - -// const targetId = visibilityRule.targetControlId; -// const visibilityMap = this.elementComputationalMap.get(targetId) ? this.elementComputationalMap.get(targetId) : new Map(); - - -// if (value instanceof Array) { - -// const parsedSourceControlValues = visibilityRule.sourceVisibilityRules.map(e => this.parseValue(e.sourceControlValue)); -// const parsedValues = value.map(e => this.parseValue(e)); - -// const isVisible = parsedValues.map(v => parsedSourceControlValues.includes(v)).reduce((acc, current) => acc || current, false); - - -// // if(isVisible){ -// // this._emitChangesIfNeeded(visibilityRule.targetControlId, true); -// // this.elementVisibilityMap.set(visibilityRule.targetControlId, true); -// // return; -// // } -// visibilityMap.set(sourceId, isVisible); - -// } else { -// const visibilityDependencySource = visibilityRule.sourceVisibilityRules.filter(x => x.sourceControlId === sourceId); - -// const shouldBeVisible = visibilityDependencySource.reduce((isVisible, x) => { - -// const shouldBeHidden = value !== null && (this.parseValue(value) !== this.parseValue(x.sourceControlValue)); -// return this.VISIBILITY_RULE_LOGIC === 'OR' ? (isVisible || !shouldBeHidden) : (isVisible && !shouldBeHidden); -// // if(value !== null && ) -// }, this.VISIBILITY_RULE_LOGIC === 'AND'); -// visibilityMap.set(sourceId, shouldBeVisible); -// } - - -// this.elementComputationalMap.set(targetId, visibilityMap);// unnessecary - - -// const isVisible = this._computeVisibility(targetId); -// this._emitChangesIfNeeded(targetId, isVisible); -// const previousVisibility = this.elementVisibilityMap.get(targetId); -// this.elementVisibilityMap.set(targetId, isVisible); - -// if (!isVisible && previousVisibility !== isVisible) { -// this.resetControlWithId(this.form, targetId); -// } - - -// // for (let i = 0; i < visibilityRule.sourceVisibilityRules.length; i++) { -// // if (value != null && (this.parseValue(value) !== this.parseValue(visibilityRule.sourceVisibilityRules[i].sourceControlValue))) { -// // this._emitChangesIfNeeded(visibilityRule.targetControlId, false); -// // this.elementVisibilityMap.set(visibilityRule.targetControlId, false); -// // this.resetControlWithId(this.form, visibilityRule.targetControlId); -// // //this.updateValueAndVisibility(visibilityRule.targetControlId, null); -// // // this.clearValues(targetPathKey); -// // return; -// // } -// // } -// // this._emitChangesIfNeeded(visibilityRule.targetControlId, true); -// // this.elementVisibilityMap.set(visibilityRule.targetControlId, true); - -// // this.updateValueAndVisibility(visibilityRule.targetControlId, null); -// } - - -// private _computeVisibility(targetId: string): boolean { -// const visibilityMap = this.elementComputationalMap.get(targetId); -// const values = visibilityMap.values(); -// let currentVal = values.next(); -// let visibilityValues: boolean[] = []; -// while (!currentVal.done) { -// visibilityValues.push(currentVal.value); -// currentVal = values.next(); -// } - - -// if (visibilityValues.length) { -// return visibilityValues.reduce((r, c) => { -// if (this.VISIBILITY_RULE_LOGIC === 'OR') { -// return r || c; -// } else { -// return r && c; -// } -// }, visibilityValues[0]); -// } - -// return this.DEFAULTVISIBILITY; -// } - -// private resetVisibilityRules() { -// this.elementVisibilityMap.clear(); -// this.elementVisibilityMap = new Map(); -// this.elementComputationalMap.clear(); -// this.elementComputationalMap = new Map>(); -// this._populateComputationMap(); /// !IMPORTANT FOR THE AND LOGIC -// this._changeMade$.next(); -// } - -// private _populateComputationMap(): void { -// this.visibilityRuleContext.rules.forEach(rule => { -// const targetId = rule.targetControlId; -// const visibilityMap = this.elementComputationalMap.get(targetId) ? this.elementComputationalMap.get(targetId) : new Map(); -// rule.sourceVisibilityRules.forEach(vr => { -// visibilityMap.set(vr.sourceControlId, this.DEFAULTVISIBILITY); -// }); -// this.elementComputationalMap.set(targetId, visibilityMap); -// }); -// } - -// parseValue(value: any) { -// if (typeof value === 'string') { -// if (isNumeric(value)) { return value; } -// else if (value === 'true') { -// return true; -// } -// else if (value === 'false') { -// return false; -// } -// else { return this.translate(value); } -// } else { return value; } -// } - -// search(path, obj, target) { -// for (const k in obj) { -// if (obj.hasOwnProperty(k)) { -// if (obj[k] === target) { -// return path + '.' + k; -// } else if (typeof obj[k] === 'object') { -// const result = this.search(path + '.' + k, obj[k], target); -// if (result) { -// return result; -// } -// } -// } -// } -// return false; -// } - -// scanIfChildsOfCompositeFieldHasVisibleItems(compositeFieldParent: UntypedFormGroup): boolean { -// let isVisible = false; -// ((compositeFieldParent.get('fields'))).controls.forEach(element => { -// if (this.checkElementVisibility(element.get('id').value)) { -// isVisible = true; -// } -// }); -// return isVisible; -// } - -// private translate(item: any) { -// try { -// return JSON.parse(item).value; -// } catch (error) { -// return item; -// } -// } - -// private resetControlWithId(formControl: AbstractControl, id: string) { -// if (formControl instanceof UntypedFormGroup) { -// if ((formControl as UntypedFormGroup).contains('id') && (formControl as UntypedFormGroup).contains('value') && (formControl as UntypedFormGroup).get('id').value === id) { -// this.resetFieldFormGroup(formControl); -// } if ((formControl as UntypedFormGroup).contains('id') && (formControl as UntypedFormGroup).contains('fields') && (formControl as UntypedFormGroup).get('id').value === id) { -// this.resetCompositeFieldFormGroup(formControl); -// } else { -// Object.keys(formControl.controls).forEach(item => { -// const control = formControl.get(item); -// this.resetControlWithId(control, id); -// }); -// } -// } else if (formControl instanceof UntypedFormArray) { -// formControl.controls.forEach(item => { -// this.resetControlWithId(item, id); -// }); -// } -// } - -// private resetFieldFormGroup(formGroup: UntypedFormGroup) { -// const renderStyle = formGroup.getRawValue().viewStyle.renderStyle; -// if (renderStyle === DatasetProfileFieldViewStyle.Validation || renderStyle === DatasetProfileFieldViewStyle.DatasetIdentifier) { -// formGroup.get('value').setValue({ identifier: '', type: '' }); -// } else { -// formGroup.get('value').setValue(formGroup.get('defaultValue').value ? this.parseValue(formGroup.get('defaultValue').value.value) : undefined); -// } - -// } - -// private resetCompositeFieldFormGroup(formGroup: UntypedFormGroup) { -// (formGroup.get('fields') as UntypedFormArray).controls.forEach((element: UntypedFormGroup) => { -// this.resetFieldFormGroup(element); -// }); -// (formGroup.get('multiplicityItems') as UntypedFormArray).controls.splice(0); -// } -// private _emitChangesIfNeeded(id: string, valueToBeSet: boolean) { -// if (this.elementVisibilityMap.has(id)) { -// if (this.elementVisibilityMap.get(id) != valueToBeSet) { -// this._changeMade$.next(); -// } -// } else { -// this._changeMade$.next(); -// } -// } -// public get visibilityChange() { -// return this._changeMade$.asObservable(); -// } -// public getVisibilityDependency(targetId: string): VisibilityRuleSource[] | null { -// return this.visibilityRuleContext.rules.reduce((hasDependency, rule) => { -// if (hasDependency) return hasDependency; - -// if (rule.targetControlId === targetId) { -// return rule.sourceVisibilityRules; -// } - -// return null; -// }, null) as VisibilityRuleSource[]; -// } - -// public getVisibilityTargets(sourceId: string): string[] { -// return this.visibilityRuleContext.rules.filter(x => { -// const result = x.sourceVisibilityRules.filter(y => y.sourceControlId === sourceId); -// return result.length; -// }).map(x => x.targetControlId); -// } - -// // public appendVisibilityRule(rule: VisibilityRule): void{ - -// // const existingTargetRule = this.visibilityRuleContext.rules.find( r => r.targetControlId === rule.targetControlId); - -// // if(existingTargetRule){ -// // rule.sourceVisibilityRules.forEach(svr =>{ -// // existingTargetRule.sourceVisibilityRules.push(svr); -// // }); -// // }else{ -// // this.visibilityRuleContext.rules.push(rule); -// // } - - -// // } - - -// //removes rule that has the specific id either as a source either as a target -// public removeAllIdReferences(id: string): void { - -// // * Remove from visibility rues and visibility rules context - -// //remove as a target -// const temp = this.visibilityRuleContext.rules.map((x, i) => (x.targetControlId === id) ? i : null); -// const indexes = temp.filter(x => x !== null); -// indexes.reverse().forEach(index => this.visibilityRuleContext.rules.splice(index, 1)); -// this.elementVisibilityMap.delete(id); - - - -// //remove as a source -// const tbd = this.visibilityRuleContext.rules.reduce((to_be_deleted, rule, ruleIdx) => { -// const idxs = rule.sourceVisibilityRules.map((x, i) => (x.sourceControlId === id) ? i : null).filter(x => x !== null); -// idxs.reverse().forEach(index => rule.sourceVisibilityRules.splice(index, 1)); - -// if (!rule.sourceVisibilityRules.length) { -// to_be_deleted.push(ruleIdx); -// } -// return to_be_deleted -// }, []); - - -// //clean up empty -// tbd.reverse().forEach(index => { -// this.visibilityRuleContext.rules.splice(index, 1); -// }); - - - -// // * Remove from computational map - -// // as a target -// if (this.elementComputationalMap.get(id)) { -// this.elementComputationalMap.delete(id); -// } - - -// // as a source -// const keyIterator = this.elementComputationalMap.keys(); -// let currentKey = keyIterator.next(); - - -// while (!currentKey.done) { -// const currentVals = this.elementComputationalMap.get(currentKey.value); -// currentVals.delete(id); -// currentKey = keyIterator.next(); -// } -// } - - -// public addNewRule(rule: Rule, currentVisibility = this.DEFAULTVISIBILITY): void { -// const targetId = rule.targetField; -// const sourceId = rule.sourceField; -// this.visibilityRuleContext.addToVisibilityRulesContext(rule); - - -// let visibilityMap = this.elementComputationalMap.get(targetId); - -// if (!visibilityMap) { -// visibilityMap = new Map(); -// this.elementComputationalMap.set(targetId, visibilityMap); -// } - -// visibilityMap.set(sourceId, currentVisibility); -// const isVisible = this._computeVisibility(targetId); - -// this._emitChangesIfNeeded(targetId, isVisible); -// this.elementVisibilityMap.set(targetId, isVisible); -// this.elementVisibilityMapSubject.next(this.elementVisibilityMap); -// } - - -// /** -// * Check what sourceId hides or shows the target field -// * return true if no rule found -// */ -// public checkTargetVisibilityProvidedBySource(sourceId: string, targetId: string): boolean { - -// const computationalMap = this.elementComputationalMap.get(targetId); -// if (computationalMap) { -// return !!computationalMap.get(sourceId); -// } - -// return true; -// } - -// public getVisibilityRulesFromDescriptionTempalte(descriptionTemplate: DescriptionTemplate): Rule[] { -// const result: Rule[] = this.getVisibilityRulesFromDescriptionTempalteSections(descriptionTemplate?.definition?.sections); -// return result; -// } - -// public getVisibilityRulesFromDescriptionTempalteSections(sections: DescriptionTemplateSection[]): Rule[] { -// const result: Rule[] = []; - -// sections.forEach(section => { -// if (section.sections != null) { result.push(...this.getVisibilityRulesFromDescriptionTempalteSections(section.sections)); }; -// section?.fieldSets?.forEach(fieldSet => { -// fieldSet?.fields?.forEach(field => { -// field.visibilityRules?.forEach(visibilityRule => { -// result.push({ -// sourceField: field.id.toString(), -// targetField: visibilityRule.target, -// requiredValue: visibilityRule.value -// }) -// }); -// }); -// }); -// }); -// return result; -// } -// } 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 deleted file mode 100644 index 5ca816123..000000000 --- a/dmp-frontend/src/app/ui/misc/help-content/help-content.component.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Created by stefania on 7/17/17. - */ -import { Component, Input, OnInit } from '@angular/core'; -import { ActivatedRoute, NavigationStart, Router } from '@angular/router'; -import { PageHelpContent } from '@app/core/model/help-content/page-help-content'; -import { HelpContentService } from '@app/core/services/help-content/help-content.service'; -import { BaseComponent } from '@common/base/base.component'; -import { takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-help-content', - template: ` - - -
-
-
- `, -}) -export class HelpContentComponent extends BaseComponent implements OnInit { - @Input() position: string; - contents: any[]; - errorMessage: string = null; - constructor(private _helpContentService: HelpContentService, private route: ActivatedRoute, private router: Router) { - super(); - } - - ngOnInit() { - this.errorMessage = null; - this.router.events - .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)); - } - }); - } - shiftThroughContent(pageContent: PageHelpContent) { - this.contents = pageContent.content[this.position]; - } - isPresent() { - return (this.contents && this.contents.length > 0); - } - handleError(error) { - this.contents = []; - this.errorMessage = 'System error retrieving page content (Server responded: ' + error + ')'; - } -} - -// @Component({ -// selector: 'app-aside-help-content', -// template: ` -// -// -//
-//
-//
-// `, -// }) -// export class AsideHelpContentComponent extends HelpContentComponent { -// } diff --git a/dmp-frontend/src/app/ui/misc/help-content/help-content.module.ts b/dmp-frontend/src/app/ui/misc/help-content/help-content.module.ts deleted file mode 100644 index de7863976..000000000 --- a/dmp-frontend/src/app/ui/misc/help-content/help-content.module.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { NgModule } from '@angular/core'; -import { HelpContentComponent } from '@app/ui/misc/help-content/help-content.component'; -import { CommonUiModule } from '@common/ui/common-ui.module'; - -@NgModule({ - imports: [ - CommonUiModule - ], - declarations: [ - HelpContentComponent - ], - exports: [HelpContentComponent] -}) -export class HelpContentModule { } diff --git a/dmp-frontend/src/app/ui/misc/navigation/navigation.component.html b/dmp-frontend/src/app/ui/misc/navigation/navigation.component.html deleted file mode 100644 index 08e41f183..000000000 --- a/dmp-frontend/src/app/ui/misc/navigation/navigation.component.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - -
- - -
- - - - -
-
- -
diff --git a/dmp-frontend/src/app/ui/misc/navigation/navigation.component.scss b/dmp-frontend/src/app/ui/misc/navigation/navigation.component.scss deleted file mode 100644 index 01d53a206..000000000 --- a/dmp-frontend/src/app/ui/misc/navigation/navigation.component.scss +++ /dev/null @@ -1,45 +0,0 @@ -@use '@angular/material' as mat; -@mixin navigation-component-theme($theme) { - $accent: map-get($theme, accent); - - .navigation-bar { - overflow: hidden; - position: fixed; - width: 100%; - top: 0; - left: 0; - z-index: 1000; - - .active { - color: mat.get-color-from-palette($accent); - } - - .user-label { - font-size: 14px; - } - - .app-logo { - margin-right: 30px; - margin-left: 20px; - } - } - - .progress-bar { - top: 64px; - left: 0; - position: fixed; - width: 100%; - z-index: 4; - } -} -.two-line-mat-option { - // height: 3.5em; - line-height: 1.2em; -} -.buttonNav:hover { - color: aliceblue; -} - -.login-label { - text-transform: uppercase; -} diff --git a/dmp-frontend/src/app/ui/misc/navigation/navigation.component.ts b/dmp-frontend/src/app/ui/misc/navigation/navigation.component.ts deleted file mode 100644 index f6a999dc3..000000000 --- a/dmp-frontend/src/app/ui/misc/navigation/navigation.component.ts +++ /dev/null @@ -1,126 +0,0 @@ - -import { Component, OnInit } from '@angular/core'; -import { UntypedFormControl } from '@angular/forms'; -import { MatDialog } from '@angular/material/dialog'; -import { Router } from '@angular/router'; -import { AppRole } from '@app/core/common/enum/app-role'; -import { SearchBarItem } from '@app/core/model/dashboard/search-bar-item'; -import { GrantCriteria } from '@app/core/query/grant/grant-criteria'; -import { RequestItem } from '@app/core/query/request-item'; -import { AuthService } from '@app/core/services/auth/auth.service'; -import { GrantService } from '@app/core/services/grant/grant.service'; -import { ProgressIndicationService } from '@app/core/services/progress-indication/progress-indication-service'; -import { SearchBarService } from '@app/core/services/search-bar/search-bar.service'; -import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; -import { UserDialogComponent } from '@app/ui/misc/navigation/user-dialog/user-dialog.component'; -import { BaseComponent } from '@common/base/base.component'; -import { Observable } from 'rxjs'; -import { debounceTime, distinctUntilChanged, mergeMap, takeUntil } from 'rxjs/operators'; - -export enum SearchBarType { - Dataset = 0, - Dmp = 1, - Grant = 2 -} - -@Component({ - selector: 'app-navigation', - templateUrl: 'navigation.component.html', - styleUrls: ['./navigation.component.scss'] -}) -export class NavigationComponent extends BaseComponent implements OnInit { - progressIndication = false; - public search = false; - grantAutoCompleteConfiguration: SingleAutoCompleteConfiguration; - public searchControl = new UntypedFormControl(); - filteredOptions: Observable; - - events: string[] = []; - opened: boolean; - constructor( - private authentication: AuthService, - private dialog: MatDialog, - private grantService: GrantService, - private searchBarService: SearchBarService, - private router: Router, - private progressIndicationService: ProgressIndicationService - ) { - super(); - } - - ngOnInit() { - this.progressIndicationService.getProgressIndicationObservable().pipe(takeUntil(this._destroyed)).subscribe(x => { - setTimeout(() => { this.progressIndication = x; }); - }); - - this.grantAutoCompleteConfiguration = { - filterFn: this.searchGrant.bind(this), - initialItems: (extraData) => this.searchGrant(''), - displayFn: (item) => item['label'], - titleFn: (item) => item['label'] - }; - - this.filteredOptions = this.searchControl.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), mergeMap(x => { - return this.searchBarService.search(x); - })); - } - - searchGrant(query: string) { - const grantRequestItem: RequestItem = new RequestItem(); - grantRequestItem.criteria = new GrantCriteria(); - grantRequestItem.criteria.like = query; - return this.grantService.getWithExternal(grantRequestItem); - } - - public logout(): void { - this.router.navigate(['/logout']); - } - - public isAuthenticated(): boolean { - return this.authentication.currentAccountIsAuthenticated(); - } - - public isAdmin(): boolean { - return this.authentication.hasRole(AppRole.Admin); - } - - public principalHasAvatar(): boolean { - return this.authentication.getUserProfileAvatarUrl() && this.authentication.getUserProfileAvatarUrl().length > 0; - } - - public getPrincipalAvatar(): string { - return this.authentication.getUserProfileAvatarUrl(); - } - - public getDefaultAvatar(): string { - return 'assets/images/profile-placeholder.png'; - } - - openProfile() { - const dialogRef = this.dialog.open(UserDialogComponent, { - hasBackdrop: true, - autoFocus: false, - closeOnNavigation: true, - disableClose: false, - position: { top: '64px', right: '1em' }, - panelClass: 'custom-userbox' - }); - } - - onOptionSelected(event: any) { - this.search = false; - this.searchControl.patchValue(null); - const selectedSearchBarItem = event.option.value; - if (selectedSearchBarItem.type === SearchBarType.Dataset) { this.router.navigate(['datasets/edit/' + selectedSearchBarItem.id]); } - if (selectedSearchBarItem.type === SearchBarType.Grant) { this.router.navigate(['grants/edit/' + selectedSearchBarItem.id]); } - if (selectedSearchBarItem.type === SearchBarType.Dmp) { this.router.navigate(['plans/edit/' + selectedSearchBarItem.id]); } - } - - transformType(type) { - switch (type) { - case SearchBarType.Dataset: return 'Dataset'; - case SearchBarType.Dmp: return 'DMP'; - case SearchBarType.Grant: return 'Grant'; - } - } -} diff --git a/dmp-frontend/src/app/ui/misc/navigation/navigation.module.ts b/dmp-frontend/src/app/ui/misc/navigation/navigation.module.ts deleted file mode 100644 index f5ac2ff9d..000000000 --- a/dmp-frontend/src/app/ui/misc/navigation/navigation.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; -import { NavigationComponent } from '@app/ui/misc/navigation/navigation.component'; -import { UserDialogComponent } from '@app/ui/misc/navigation/user-dialog/user-dialog.component'; -import { CommonFormsModule } from '@common/forms/common-forms.module'; -import { CommonUiModule } from '@common/ui/common-ui.module'; - -@NgModule({ - imports: [ - CommonUiModule, - CommonFormsModule, - RouterModule, - ], - declarations: [ - NavigationComponent, - UserDialogComponent - ], - exports: [NavigationComponent] -}) -export class NavigationModule { } diff --git a/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.html b/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.html deleted file mode 100644 index 492232686..000000000 --- a/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.html +++ /dev/null @@ -1,48 +0,0 @@ -
- - -
- - - - - - - diff --git a/dmp-frontend/src/app/ui/misc/search/search.component.css b/dmp-frontend/src/app/ui/misc/search/search.component.css deleted file mode 100644 index d16d59fd3..000000000 --- a/dmp-frontend/src/app/ui/misc/search/search.component.css +++ /dev/null @@ -1,28 +0,0 @@ -.input-search { - width: 150px; - /* width: 300px; */ - border: 1px solid rgb(218, 218, 218); - border-radius: 6px; - padding-left: 10px; - margin-right: 20px; -} - -.input-search input { - padding-top: 15px; -} - -.option { - line-height: inherit; - height: 50px; -} - - -@media screen and (max-width: 1136px) { - .input-search { - width: 150px; - border: 1px solid rgb(218, 218, 218); - border-radius: 6px; - padding-left: 10px; - margin-right: 20px; - } -} diff --git a/dmp-frontend/src/app/ui/misc/search/search.component.html b/dmp-frontend/src/app/ui/misc/search/search.component.html deleted file mode 100644 index 47230806e..000000000 --- a/dmp-frontend/src/app/ui/misc/search/search.component.html +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/dmp-frontend/src/app/ui/misc/search/search.component.spec.ts b/dmp-frontend/src/app/ui/misc/search/search.component.spec.ts deleted file mode 100644 index fc21494f0..000000000 --- a/dmp-frontend/src/app/ui/misc/search/search.component.spec.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; - -import { SearchComponent } from './search.component'; - -describe('SearchComponent', () => { - let component: SearchComponent; - let fixture: ComponentFixture; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [SearchComponent], - teardown: { destroyAfterEach: false } -}) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(SearchComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/dmp-frontend/src/app/ui/misc/search/search.component.ts b/dmp-frontend/src/app/ui/misc/search/search.component.ts deleted file mode 100644 index e9afb7306..000000000 --- a/dmp-frontend/src/app/ui/misc/search/search.component.ts +++ /dev/null @@ -1,81 +0,0 @@ - -import { mergeMap, distinctUntilChanged, debounceTime } from 'rxjs/operators'; -import { Component, OnInit } from "@angular/core"; -import { AuthService } from '../../../core/services/auth/auth.service'; -import { UntypedFormControl } from "@angular/forms"; -import { SearchBarService } from '../../../core/services/search-bar/search-bar.service'; -import { Router } from '@angular/router'; -import { Observable } from "rxjs"; -import { SearchBarItem } from "../../../core/model/dashboard/search-bar-item"; -import { TranslateService } from "@ngx-translate/core"; - -export enum SearchBarType { - Dataset = 0, - Dmp = 1, - Grant = 2 -} - -@Component({ - selector: "app-search", - templateUrl: "./search.component.html", - styleUrls: ["./search.component.css"] -}) -export class SearchComponent implements OnInit { - public search = false; - public searchControl = new UntypedFormControl(); - filteredOptions: Observable; - - constructor( - private authentication: AuthService, - private router: Router, - private searchBarService: SearchBarService, - private language: TranslateService - ) { } - - ngOnInit() { - this.filteredOptions = this.searchControl.valueChanges.pipe(debounceTime(500), distinctUntilChanged(), mergeMap(x => { - return this.searchBarService.search(x); - })); - } - - public isAuthenticated(): boolean { - return this.authentication.currentAccountIsAuthenticated(); - } - - onOptionSelected(event: any) { - this.search = false; - this.searchControl.patchValue(null); - const selectedSearchBarItem = event.option.value; - if (!selectedSearchBarItem.isPublished) { - if (selectedSearchBarItem.type === SearchBarType.Dataset) { this.router.navigate(['datasets/edit/' + selectedSearchBarItem.id]); } - if (selectedSearchBarItem.type === SearchBarType.Grant) { this.router.navigate(['plans/grant/' + selectedSearchBarItem.id]); } - if (selectedSearchBarItem.type === SearchBarType.Dmp) { this.router.navigate(['plans/overview/' + selectedSearchBarItem.id]); } - } else { - if (selectedSearchBarItem.type === SearchBarType.Dataset) { this.router.navigate(['datasets/publicEdit/' + selectedSearchBarItem.id]); } - if (selectedSearchBarItem.type === SearchBarType.Dmp) { this.router.navigate(['explore-plans/overview/' + selectedSearchBarItem.id]); } - } - } - - transformType(type, isPublished) { - let subtitle: string; - switch (type) { - case SearchBarType.Dataset: { - subtitle = this.language.instant('NAV-BAR.SEARCH.DATASET'); - break; - } - case SearchBarType.Dmp: { - subtitle = this.language.instant('NAV-BAR.SEARCH.DMP'); - break; - } - case SearchBarType.Grant: { - subtitle = this.language.instant('NAV-BAR.SEARCH.GRANT'); - break; - } - } - if (isPublished) { - return subtitle + " - " + this.language.instant('NAV-BAR.SEARCH.PUBLISHED') - } else { - return subtitle; - } - } -} diff --git a/dmp-frontend/src/app/ui/navbar/navbar.component.ts b/dmp-frontend/src/app/ui/navbar/navbar.component.ts index 68c251ad7..d46499f7d 100644 --- a/dmp-frontend/src/app/ui/navbar/navbar.component.ts +++ b/dmp-frontend/src/app/ui/navbar/navbar.component.ts @@ -1,24 +1,22 @@ import { Location } from '@angular/common'; -import { HttpClient } from '@angular/common/http'; import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { MatMenuTrigger } from '@angular/material/menu'; import { Router } from '@angular/router'; import { AppRole } from '@app/core/common/enum/app-role'; -import { UserListingModel } from '@app/core/model/user/user-listing'; +import { User } from '@app/core/model/user/user'; import { AuthService } from '@app/core/services/auth/auth.service'; -import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; import { LanguageService } from '@app/core/services/language/language.service'; import { MatomoService } from '@app/core/services/matomo/matomo-service'; import { ProgressIndicationService } from '@app/core/services/progress-indication/progress-indication-service'; import { SideNavService } from '@app/core/services/sidenav/side-nav.sevice'; -import { UserServiceOld } from '@app/core/services/user/user.service-old'; import { BaseComponent } from '@common/base/base.component'; import { takeUntil } from 'rxjs/operators'; import { StartNewDmpDialogComponent } from '../dmp/new/start-new-dmp-dialogue/start-new-dmp-dialog.component'; import { FaqDialogComponent } from '../faq/dialog/faq-dialog.component'; -import { UserDialogComponent } from '../misc/navigation/user-dialog/user-dialog.component'; +import { UserDialogComponent } from './user-dialog/user-dialog.component'; import { DATASETS_ROUTES, DMP_ROUTES, GENERAL_ROUTES } from '../sidebar/sidebar.component'; + @Component({ selector: 'app-navbar', templateUrl: './navbar.component.html', @@ -34,7 +32,7 @@ export class NavbarComponent extends BaseComponent implements OnInit { languages = []; currentRoute: string; selectedLanguage: string; - private user: UserListingModel; + private user: User; @Output() sidebarToggled: EventEmitter = new EventEmitter(); @ViewChild(MatMenuTrigger) trigger: MatMenuTrigger; @@ -45,11 +43,8 @@ export class NavbarComponent extends BaseComponent implements OnInit { private dialog: MatDialog, private progressIndicationService: ProgressIndicationService, private languageService: LanguageService, - public userService: UserServiceOld, - private httpClient: HttpClient, private matomoService: MatomoService, private sidenavService: SideNavService, - private configurationService: ConfigurationService ) { super(); this.location = location; diff --git a/dmp-frontend/src/app/ui/navbar/navbar.module.ts b/dmp-frontend/src/app/ui/navbar/navbar.module.ts index f0be977ae..21ffdf8f3 100644 --- a/dmp-frontend/src/app/ui/navbar/navbar.module.ts +++ b/dmp-frontend/src/app/ui/navbar/navbar.module.ts @@ -1,10 +1,10 @@ import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; -import { SearchComponent } from '@app/ui/misc/search/search.component'; import { NavbarComponent } from '@app/ui/navbar/navbar.component'; import { CommonFormsModule } from '@common/forms/common-forms.module'; import { CommonUiModule } from '@common/ui/common-ui.module'; import { LanguageModule } from '../language/language.module'; +import { UserDialogComponent } from './user-dialog/user-dialog.component'; @NgModule({ imports: [ @@ -15,7 +15,7 @@ import { LanguageModule } from '../language/language.module'; ], declarations: [ NavbarComponent, - SearchComponent + UserDialogComponent ], exports: [NavbarComponent] }) diff --git a/dmp-frontend/src/app/ui/navbar/user-dialog/user-dialog.component.html b/dmp-frontend/src/app/ui/navbar/user-dialog/user-dialog.component.html new file mode 100644 index 000000000..2f9d7bdad --- /dev/null +++ b/dmp-frontend/src/app/ui/navbar/user-dialog/user-dialog.component.html @@ -0,0 +1,16 @@ +
+ + +
diff --git a/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.scss b/dmp-frontend/src/app/ui/navbar/user-dialog/user-dialog.component.scss similarity index 100% rename from dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.scss rename to dmp-frontend/src/app/ui/navbar/user-dialog/user-dialog.component.scss diff --git a/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.ts b/dmp-frontend/src/app/ui/navbar/user-dialog/user-dialog.component.ts similarity index 95% rename from dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.ts rename to dmp-frontend/src/app/ui/navbar/user-dialog/user-dialog.component.ts index 8d0a66187..0c68bc7fc 100644 --- a/dmp-frontend/src/app/ui/misc/navigation/user-dialog/user-dialog.component.ts +++ b/dmp-frontend/src/app/ui/navbar/user-dialog/user-dialog.component.ts @@ -2,7 +2,7 @@ import { Component, Inject, OnInit } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { Router } from '@angular/router'; -import { AuthService } from '../../../../core/services/auth/auth.service'; +import { AuthService } from '../../../core/services/auth/auth.service'; @Component({ selector: 'app-user-dialog-component', diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.html b/dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.html deleted file mode 100644 index 2367cc238..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.html +++ /dev/null @@ -1,28 +0,0 @@ -
-
-
- {{'DATASET-REFERENCED-MODELS.DATA-REPOSITORY.TITLE' | translate}} -
-
- close -
-
-
- - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.scss b/dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.scss deleted file mode 100644 index b1538a730..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -.close-btn { - cursor: pointer; -} diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.ts b/dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.ts deleted file mode 100644 index 9c53aa709..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/data-repository/dataset-external-data-repository-dialog-editor.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Component, Inject, OnInit } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { ExternalDataRepositoryService } from '@app/core/services/external-sources/data-repository/extternal-data-repository.service'; -import { ExternalDataRepositoryEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.model'; -import { BaseComponent } from '@common/base/base.component'; -import { FormService } from '@common/forms/form-service'; -import { takeUntil } from 'rxjs/operators'; - -@Component({ - templateUrl: 'dataset-external-data-repository-dialog-editor.component.html', - styleUrls: ['./dataset-external-data-repository-dialog-editor.component.scss'] -}) -export class DatasetExternalDataRepositoryDialogEditorComponent extends BaseComponent implements OnInit { - public formGroup: UntypedFormGroup; - - constructor( - private externalDataRepositoryService: ExternalDataRepositoryService, - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: any, - private formService: FormService - ) { super(); } - - ngOnInit(): void { - const datarepo = new ExternalDataRepositoryEditorModel(); - this.formGroup = datarepo.buildForm(); - } - - send(value: any) { - this.formService.touchAllFormFields(this.formGroup); - if (!this.formGroup.valid) { return; } - this.externalDataRepositoryService.create(this.formGroup.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - (item) => this.dialogRef.close(item) - ); - } - - close() { - this.dialogRef.close(false); - } -} diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.html b/dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.html deleted file mode 100644 index 530a33bd4..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.html +++ /dev/null @@ -1,24 +0,0 @@ -
-
-
- {{'DATASET-REFERENCED-MODELS.EXTERNAL-DATASET.TITLE' | translate}} -
-
- close -
-
-
- - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.scss b/dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.scss deleted file mode 100644 index b1538a730..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -.close-btn { - cursor: pointer; -} diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.ts b/dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.ts deleted file mode 100644 index 676181d56..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/external-dataset/dataset-external-dataset-dialog-editor.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Component, Inject, OnInit } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { ExternalDatasetService } from '@app/core/services/external-sources/dataset/external-dataset.service'; -import { ExternalDatasetEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.model'; -import { BaseComponent } from '@common/base/base.component'; -import { takeUntil } from 'rxjs/operators'; -import { FormService } from '@common/forms/form-service'; - -@Component({ - templateUrl: 'dataset-external-dataset-dialog-editor.component.html', - styleUrls: ['./dataset-external-dataset-dialog-editor.component.scss'] -}) -export class DatasetExternalDatasetDialogEditorComponent extends BaseComponent implements OnInit { - public formGroup: UntypedFormGroup; - - constructor( - private externalDatasetService: ExternalDatasetService, - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: any, - private formService: FormService - ) { super(); } - - ngOnInit(): void { - const externalDatasetModel = new ExternalDatasetEditorModel(); - this.formGroup = externalDatasetModel.buildForm(); - } - - send(value: any) { - this.formService.touchAllFormFields(this.formGroup); - if (!this.formGroup.valid) { return; } - this.externalDatasetService.create(this.formGroup.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - (item) => this.dialogRef.close(item) - ); - } - - close() { - this.dialogRef.close(false); - } -} diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.html b/dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.html deleted file mode 100644 index 111e52fc6..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.html +++ /dev/null @@ -1,28 +0,0 @@ -
-
-
- {{'DATASET-REFERENCED-MODELS.REGISTRY.TITLE' | translate}} -
-
- close -
-
-
- - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.scss b/dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.scss deleted file mode 100644 index b1538a730..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -.close-btn { - cursor: pointer; -} diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.ts b/dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.ts deleted file mode 100644 index 9179bdbc7..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/registry/dataset-external-registry-dialog-editor.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Component, Inject, OnInit } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { ExternalRegistryService } from '@app/core/services/external-sources/registry/external-registry.service'; -import { ExternalRegistryEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.model'; -import { BaseComponent } from '@common/base/base.component'; -import { FormService } from '@common/forms/form-service'; -import { takeUntil } from 'rxjs/operators'; - -@Component({ - templateUrl: 'dataset-external-registry-dialog-editor.component.html', - styleUrls: ['./dataset-external-registry-dialog-editor.component.scss'] -}) -export class DatasetExternalRegistryDialogEditorComponent extends BaseComponent implements OnInit { - public formGroup: UntypedFormGroup; - - constructor( - private externalRegistryService: ExternalRegistryService, - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: any, - private formService: FormService - ) { super(); } - - ngOnInit(): void { - const registryModel = new ExternalRegistryEditorModel(); - this.formGroup = registryModel.buildForm(); - } - - send(value: any) { - this.formService.touchAllFormFields(this.formGroup); - if (!this.formGroup.valid) { return; } - this.externalRegistryService.create(this.formGroup.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - (item) => this.dialogRef.close(item) - ); - } - - close() { - this.dialogRef.close(false); - } -} diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.html b/dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.html deleted file mode 100644 index 994c214e7..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.html +++ /dev/null @@ -1,28 +0,0 @@ -
-
-
- {{'DATASET-REFERENCED-MODELS.SERVICES.TITLE' | translate}} -
-
- close -
-
-
- - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - - - - {{'GENERAL.VALIDATION.REQUIRED' | translate}} - -
-
-
-
-
-
diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.scss b/dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.scss deleted file mode 100644 index b1538a730..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.scss +++ /dev/null @@ -1,3 +0,0 @@ -.close-btn { - cursor: pointer; -} diff --git a/dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.ts b/dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.ts deleted file mode 100644 index 5da9f1b59..000000000 --- a/dmp-frontend/src/app/ui/reference/reference-field/editors/service/dataset-external-service-dialog-editor.component.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Component, Inject, OnInit } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { ExternalServiceService } from '@app/core/services/external-sources/service/external-service.service'; -import { ExternalServiceEditorModel } from '@app/ui/dataset/dataset-wizard/dataset-wizard-editor.model'; -import { BaseComponent } from '@common/base/base.component'; -import { takeUntil } from 'rxjs/operators'; -import { FormService } from '@common/forms/form-service'; - -@Component({ - templateUrl: 'dataset-external-service-dialog-editor.component.html', - styleUrls: ['./dataset-external-service-dialog-editor.component.scss'] -}) -export class DatasetExternalServiceDialogEditorComponent extends BaseComponent implements OnInit { - public formGroup: UntypedFormGroup; - - constructor( - private externalServiceService: ExternalServiceService, - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: any, - private formService: FormService - ) { super(); } - - ngOnInit(): void { - const serviceModel = new ExternalServiceEditorModel(); - this.formGroup = serviceModel.buildForm(); - } - - send() { - this.formService.touchAllFormFields(this.formGroup); - if (!this.formGroup.valid) { return; } - this.externalServiceService.create(this.formGroup.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - (item) => this.dialogRef.close(item) - ); - } - - close() { - this.dialogRef.close(false); - } -} diff --git a/dmp-frontend/src/app/ui/sidebar/sidebar.component.ts b/dmp-frontend/src/app/ui/sidebar/sidebar.component.ts index 2bbfb7f7c..76c6c70f6 100644 --- a/dmp-frontend/src/app/ui/sidebar/sidebar.component.ts +++ b/dmp-frontend/src/app/ui/sidebar/sidebar.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core'; 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'; +import { UserDialogComponent } from '../navbar/user-dialog/user-dialog.component'; import { AppRole } from '../../core/common/enum/app-role'; import { Router } from '@angular/router'; import { Location } from '@angular/common'; diff --git a/dmp-frontend/src/app/ui/user-profile/add-account/add-account-dialog.component.ts b/dmp-frontend/src/app/ui/user-profile/add-account/add-account-dialog.component.ts index 1a98e1de5..ad4712467 100644 --- a/dmp-frontend/src/app/ui/user-profile/add-account/add-account-dialog.component.ts +++ b/dmp-frontend/src/app/ui/user-profile/add-account/add-account-dialog.component.ts @@ -1,9 +1,6 @@ import { Component, Inject, OnInit } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { UserMergeRequestModel } from '@app/core/model/merge/user-merge-request'; -import { MergeLoginService } from '@app/ui/auth/login/utilities/merge-login.service'; -import { DatasetDescriptionFormEditorModel } from '@app/ui/misc/dataset-description-form/dataset-description-form.model'; @Component({ selector: 'app-add-account-dialog-component', @@ -12,14 +9,15 @@ import { DatasetDescriptionFormEditorModel } from '@app/ui/misc/dataset-descript }) export class AddAccountDialogComponent implements OnInit { - datasetProfileDefinitionModel: DatasetDescriptionFormEditorModel; + //TODO: refactor + datasetProfileDefinitionModel: any; datasetProfileDefinitionFormGroup: UntypedFormGroup; progressIndication = false; public hasEmail = true; - private request: UserMergeRequestModel; + //TODO: refactor + private request: any; constructor( - private mergeLoginService: MergeLoginService, public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: any ) { @@ -27,16 +25,17 @@ export class AddAccountDialogComponent implements OnInit { } ngOnInit(): void { - this.mergeLoginService.getObservable().subscribe(result => { - if (result !== undefined) { - if (!(result.email !== undefined && result.email !== null)) { - this.request = result; - this.hasEmail = false; - } else { - this.dialogRef.close(result); - } - } - }); + //TODO refactor + // this.mergeLoginService.getObservable().subscribe(result => { + // if (result !== undefined) { + // if (!(result.email !== undefined && result.email !== null)) { + // this.request = result; + // this.hasEmail = false; + // } else { + // this.dialogRef.close(result); + // } + // } + // }); } add(): void { diff --git a/dmp-frontend/src/app/ui/user-profile/user-profile-editor.model.ts b/dmp-frontend/src/app/ui/user-profile/user-profile-editor.model.ts index 6856a565e..f5fcd46b7 100644 --- a/dmp-frontend/src/app/ui/user-profile/user-profile-editor.model.ts +++ b/dmp-frontend/src/app/ui/user-profile/user-profile-editor.model.ts @@ -1,25 +1,26 @@ import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms'; import { RoleOrganizationType } from '@app/core/common/enum/role-organization-type'; -import { OrganizationModel } from '@app/core/model/organisation/organization'; -import { UserListingModel } from '@app/core/model/user/user-listing'; +import { Reference } from '@app/core/model/reference/reference'; +import { User } from '@app/core/model/user/user'; +import { Guid } from '@common/types/guid'; export class UserProfileEditorModel { - public id: String; + public id: Guid; public name: String; public language: any; public culture: any; public timezone: String; - public organization: OrganizationModel; + public organization: Reference; public roleOrganization: RoleOrganizationType; - fromModel(item: UserListingModel): UserProfileEditorModel { + fromModel(item: User): UserProfileEditorModel { this.id = item.id; this.name = item.name; - this.language = item.language; - this.timezone = item.timezone; - this.culture = item.culture; - this.organization = item.organization; - this.roleOrganization = item.roleOrganization; + this.language = item.additionalInfo.language; + this.timezone = item.additionalInfo.timezone; + this.culture = item.additionalInfo.culture; + this.organization = item.additionalInfo.organization; + this.roleOrganization = item.additionalInfo.roleOrganization; return this; } diff --git a/dmp-frontend/src/app/ui/user-profile/user-profile.component.html b/dmp-frontend/src/app/ui/user-profile/user-profile.component.html index 81472e5dd..c8bb717cb 100644 --- a/dmp-frontend/src/app/ui/user-profile/user-profile.component.html +++ b/dmp-frontend/src/app/ui/user-profile/user-profile.component.html @@ -7,13 +7,9 @@
-
{{formGroup.get('name').value}}
-
@@ -26,7 +22,6 @@
- {{'GENERAL.VALIDATION.REQUIRED' | translate}}
@@ -34,7 +29,8 @@ -
+ +
{{userCredential.email}}
@@ -58,7 +53,6 @@ - @@ -74,7 +68,7 @@
- + -->
@@ -85,8 +79,6 @@
-
@@ -193,134 +185,4 @@
- - - - + \ No newline at end of file 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 d9c547946..5091cfe19 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 @@ -1,38 +1,31 @@ +import { HttpClient, HttpErrorResponse } from '@angular/common/http'; import { Component, OnDestroy, OnInit } from '@angular/core'; -import { UntypedFormArray, FormBuilder, FormControl, UntypedFormGroup, Validators } from '@angular/forms'; +import { UntypedFormArray, UntypedFormGroup } from '@angular/forms'; +import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Params, Router } from '@angular/router'; +import { RoleOrganizationType } from '@app/core/common/enum/role-organization-type'; import { CultureInfo } from '@app/core/model/culture-info'; -import { DmpModel } from '@app/core/model/dmp/dmp'; -import { UserListingModel } from '@app/core/model/user/user-listing'; +import { Reference } from '@app/core/model/reference/reference'; +import { User } from '@app/core/model/user/user'; import { AuthService } from '@app/core/services/auth/auth.service'; +import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; import { CultureService } from '@app/core/services/culture/culture-service'; -import { UserServiceOld } from '@app/core/services/user/user.service-old'; +import { LanguageService } from '@app/core/services/language/language.service'; +import { MatomoService } from '@app/core/services/matomo/matomo-service'; +import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; +import { UserService } from '@app/core/services/user/user.service'; +import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; +import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; +import { PopupNotificationDialogComponent } from "@app/library/notification/popup/popup-notification.component"; import { BaseComponent } from '@common/base/base.component'; +import { FormValidationErrorsDialogComponent } from '@common/forms/form-validation-errors-dialog/form-validation-errors-dialog.component'; +import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component'; import { TranslateService } from '@ngx-translate/core'; import * as moment from 'moment-timezone'; import { Observable, of } from 'rxjs'; import { map, takeUntil } from 'rxjs/operators'; -import { LanguageService } from '@app/core/services/language/language.service'; -import { ConfigurationService } from '@app/core/services/configuration/configuration.service'; -import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; -import { ExternalSourceItemModel } from '@app/core/model/external-sources/external-source-item'; -import { ExternalSourcesService } from '@app/core/services/external-sources/external-sources.service'; -import { UserProfileEditorModel } from './user-profile-editor.model'; -import { RoleOrganizationType } from '@app/core/common/enum/role-organization-type'; -import { EnumUtils } from '@app/core/services/utilities/enum-utils.service'; import { AddAccountDialogComponent } from './add-account/add-account-dialog.component'; -import { MatDialog } from '@angular/material/dialog'; -import { UserCredentialModel } from '@app/core/model/user/user-credential'; -import { AuthProvider } from '@app/core/common/enum/auth-provider'; -import { MergeEmailConfirmationService } from '@app/core/services/merge-email-confirmation/merge-email-confirmation.service'; -import { FormValidationErrorsDialogComponent } from '@common/forms/form-validation-errors-dialog/form-validation-errors-dialog.component'; -import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; -import { MatomoService } from '@app/core/services/matomo/matomo-service'; -import { HttpClient, HttpErrorResponse } from '@angular/common/http'; -import { PopupNotificationDialogComponent } from "@app/library/notification/popup/popup-notification.component"; -import { UnlinkAccountRequestModel } from '@app/core/model/unlink-account/unlink-account'; -import { UnlinkAccountEmailConfirmationService } from '@app/core/services/unlink-account-email-confirmation/unlink-account-email-confirmation.service'; -import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component'; +import { UserProfileEditorModel } from './user-profile-editor.model'; @Component({ selector: 'app-user-profile', @@ -42,16 +35,15 @@ import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog export class UserProfileComponent extends BaseComponent implements OnInit, OnDestroy { userProfileEditorModel: UserProfileEditorModel; - user: Observable; - userCredentials: UserCredentialModel[]; + user: Observable; + //TODO: refactor + // userCredentials: UserCredentialModel[]; currentUserId: string; cultures: Observable; timezones: Observable; editMode = false; languages = []; roleOrganizationEnum = RoleOrganizationType; - authProviderEnum = AuthProvider; - private oauthLock: boolean; errorMessages = []; nestedCount = []; nestedIndex = 0; @@ -66,21 +58,18 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes formGroup: UntypedFormGroup; constructor( - private userService: UserServiceOld, + private userService: UserService, private route: ActivatedRoute, private router: Router, private authService: AuthService, private language: TranslateService, private cultureService: CultureService, - private externalSourcesService: ExternalSourcesService, private authentication: AuthService, private languageService: LanguageService, private configurationService: ConfigurationService, private uiNotificationService: UiNotificationService, private dialog: MatDialog, public enumUtils: EnumUtils, - private mergeEmailConfirmation: MergeEmailConfirmationService, - private unlinkAccountEmailConfirmation: UnlinkAccountEmailConfirmationService, private httpClient: HttpClient, private matomoService: MatomoService ) { @@ -95,7 +84,7 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes .subscribe((params: Params) => { this.currentUserId = this.authService.userId()?.toString(); const userId = !params['id'] ? 'me' : params['id']; - this.user = this.userService.getUser(userId).pipe(map(result => { + this.user = this.userService.getSingle(userId).pipe(map(result => { //result['additionalinfo'] = JSON.parse(result['additionalinfo']); this.userProfileEditorModel = new UserProfileEditorModel().fromModel(result); @@ -118,14 +107,16 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes return result; })); - this.userService.getEmails(userId).pipe(takeUntil(this._destroyed)) - .subscribe(result => { - this.user.subscribe(x => { - const mainEmail = result.filter(el => el.email === x.email) - const otherEmails = result.filter(el => el.email !== x.email) - this.userCredentials = [...mainEmail, ...otherEmails]; - } - )}); + //TODO: refactor + // this.userService.getEmails(userId).pipe(takeUntil(this._destroyed)) + // .subscribe(result => { + // this.user.subscribe(x => { + // const mainEmail = result.filter(el => el.email === x.email) + // const otherEmails = result.filter(el => el.email !== x.email) + // this.userCredentials = [...mainEmail, ...otherEmails]; + // } + // ) + // }); }); } @@ -133,28 +124,10 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes ngOnDestroy(): void { } - logout(): void { - this.router.navigate(['/logout']); - } - - getUserRole(dmp: DmpModel) { - if (dmp.creator.id === this.currentUserId) { - return this.language.instant('USER-PROFILE.DMPS.CREATOR'); - } else if (dmp.associatedUsers.map(x => x.id).indexOf(this.currentUserId) !== -1) { - return this.language.instant('USER-PROFILE.DMPS.MEMBER'); - } - } - - showAllDmps() { - this.router.navigate(['/plans']); - } - - navigateToDmp(dmp: DmpModel) { - this.router.navigate(['/plans/edit/' + dmp.id]); - } - - private filterOrganisations(value: string): Observable { - return this.externalSourcesService.searchDMPOrganizations(value); + private filterOrganisations(value: string): Observable { + //TODO: refactor + // return this.externalSourcesService.searchDMPOrganizations(value); + return null; } private _filterTimezone(value: string): Observable { @@ -180,31 +153,32 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes } save() { - if (!this.formGroup.valid) { - this.printErrors(this.formGroup); - this.showValidationErrorsDialog(); - this.nestedCount = []; - this.nestedIndex = 0; - this.errorMessages = []; - return; - } - this.userService.updateUserSettings(this.formGroup.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - x => { - this.editMode = false; - this.languageService.changeLanguage(this.formGroup.value.language.value); - this.authService.refresh() - .pipe(takeUntil(this._destroyed)) - .subscribe(result => { - this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); - this.router.navigate(['/profile']); - }); - // .subscribe(result => window.location.reload()); - }, - error => { - console.log(error); - }); + //TODO: refactor + // if (!this.formGroup.valid) { + // this.printErrors(this.formGroup); + // this.showValidationErrorsDialog(); + // this.nestedCount = []; + // this.nestedIndex = 0; + // this.errorMessages = []; + // return; + // } + // this.userService.updateUserSettings(this.formGroup.value) + // .pipe(takeUntil(this._destroyed)) + // .subscribe( + // x => { + // this.editMode = false; + // this.languageService.changeLanguage(this.formGroup.value.language.value); + // this.authService.refresh() + // .pipe(takeUntil(this._destroyed)) + // .subscribe(result => { + // this.uiNotificationService.snackBarNotification(this.language.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); + // this.router.navigate(['/profile']); + // }); + // // .subscribe(result => window.location.reload()); + // }, + // error => { + // console.log(error); + // }); } public unlock() { @@ -218,21 +192,22 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes public lock() { if (!this.formGroup.valid) { return; } - this.userService.updateUserSettings(this.formGroup.value) - .pipe(takeUntil(this._destroyed)) - .subscribe( - x => { - this.editMode = false; - this.languageService.changeLanguage(this.formGroup.value.language.value); - this.formGroup.disable(); - this.authService.refresh() - .pipe(takeUntil(this._destroyed)) - .subscribe(result => this.router.navigate(['/profile'])); - // .subscribe(result => window.location.reload()); - }, - error => { - console.log(error); - }); + //TODO: refactor + // this.userService.updateUserSettings(this.formGroup.value) + // .pipe(takeUntil(this._destroyed)) + // .subscribe( + // x => { + // this.editMode = false; + // this.languageService.changeLanguage(this.formGroup.value.language.value); + // this.formGroup.disable(); + // this.authService.refresh() + // .pipe(takeUntil(this._destroyed)) + // .subscribe(result => this.router.navigate(['/profile'])); + // // .subscribe(result => window.location.reload()); + // }, + // error => { + // console.log(error); + // }); } private showValidationErrorsDialog(projectOnly?: boolean) { @@ -251,36 +226,37 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes (ev.target as HTMLImageElement).src = 'assets/images/profile-placeholder.png'; } - public removeAccount(userCredential :UserCredentialModel) { + public removeAccount(userCredential: any) { this.dialog.open(ConfirmationDialogComponent, { - data:{ + data: { message: this.language.instant('USER-PROFILE.UNLINK-ACCOUNT-DIALOG.MESSAGE'), confirmButton: this.language.instant('USER-PROFILE.UNLINK-ACCOUNT-DIALOG.CONFIRM'), cancelButton: this.language.instant('USER-PROFILE.UNLINK-ACCOUNT-DIALOG.CANCEL') }, - maxWidth:'35em' + maxWidth: '35em' }) - .afterClosed() - .subscribe(confirm=>{ - if(confirm){ - const unlinkAccountModel: UnlinkAccountRequestModel = { - userId: this.currentUserId, - email: userCredential.email, - provider: userCredential.provider - }; - this.unlinkAccountEmailConfirmation.sendConfirmationEmail(unlinkAccountModel).pipe(takeUntil(this._destroyed)).subscribe( - result => { - this.dialog.open(PopupNotificationDialogComponent, { - data: { - title: this.language.instant('USER-PROFILE.UNLINK-ACCOUNT.TITLE'), - message: this.language.instant('USER-PROFILE.UNLINK-ACCOUNT.MESSAGE', {'accountToBeUnlinked': userCredential.email}) - }, maxWidth: '35em' - }); - }, - error => { this.onCallbackError(error); } - ); - } - }); + .afterClosed() + .subscribe(confirm => { + if (confirm) { + //TODO: refactor + // const unlinkAccountModel: UnlinkAccountRequestModel = { + // userId: this.currentUserId, + // email: userCredential.email, + // provider: userCredential.provider + // }; + // this.unlinkAccountEmailConfirmation.sendConfirmationEmail(unlinkAccountModel).pipe(takeUntil(this._destroyed)).subscribe( + // result => { + // this.dialog.open(PopupNotificationDialogComponent, { + // data: { + // title: this.language.instant('USER-PROFILE.UNLINK-ACCOUNT.TITLE'), + // message: this.language.instant('USER-PROFILE.UNLINK-ACCOUNT.MESSAGE', { 'accountToBeUnlinked': userCredential.email }) + // }, maxWidth: '35em' + // }); + // }, + // error => { this.onCallbackError(error); } + // ); + } + }); } onCallbackError(errorResponse: HttpErrorResponse) { @@ -298,15 +274,16 @@ export class UserProfileComponent extends BaseComponent implements OnInit, OnDes }); dialogRef.afterClosed().pipe(takeUntil(this._destroyed)).subscribe(result => { if (result) { - this.mergeEmailConfirmation.sendConfirmationEmail(result).pipe(takeUntil(this._destroyed)) - .subscribe(res => { - this.dialog.open(PopupNotificationDialogComponent, { - data: { - title: this.language.instant('USER-PROFILE.MERGING-EMAILS-DIALOG.TITLE'), - message: this.language.instant('USER-PROFILE.MERGING-EMAILS-DIALOG.MESSAGE') - }, maxWidth: '30em' - }); - }, err => { }); + //TODO refactor + // this.mergeEmailConfirmation.sendConfirmationEmail(result).pipe(takeUntil(this._destroyed)) + // .subscribe(res => { + // this.dialog.open(PopupNotificationDialogComponent, { + // data: { + // title: this.language.instant('USER-PROFILE.MERGING-EMAILS-DIALOG.TITLE'), + // message: this.language.instant('USER-PROFILE.MERGING-EMAILS-DIALOG.MESSAGE') + // }, maxWidth: '30em' + // }); + // }, err => { }); } }); } diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index 587a42ea0..d76411232 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -1746,6 +1746,40 @@ "MESSAGE": "Somebody else is modifying the DMP at this moment. You may view the dataset but you cannot make any changes." } }, + "DMP-CLONE-DIALOG": { + "TITLE": "Clone", + "FIELDS": { + "LABEL": "Title of DMP", + "DESCRIPTION": "Description", + "DESCRIPTION-HINT": "A brief description of what the DMP is about, it’s scope and objectives.", + "DESCRIPTION-PLACEHOLDER": "Fill with Description", + "DESCRIPTIONS": "Descriptions", + "DESCRIPTIONS-HINT": "Select which descriptions to include in the new DMP. Selected descriptions will be editable." + }, + "NO-DESCRIPTIONS": "Not available Descriptions for this DMP.", + "ACTIONS": { + "CANCEL": "Cancel", + "CLONE": "Clone" + } + }, + "DMP-NEW-VERSION-DIALOG": { + "TITLE": "New Version", + "FIELDS": { + "LABEL": "Title of DMP", + "DESCRIPTION": "Description", + "DESCRIPTION-HINT": "A brief description of what the DMP is about, it’s scope and objectives.", + "DESCRIPTION-PLACEHOLDER": "Fill with Description", + "DESCRIPTIONS": "Descriptions", + "DESCRIPTIONS-HINT": "Select which descriptions to include in the new DMP. Selected descriptions will be editable.", + "BLUEPRINT": "DMP Blueprint", + "BLUEPRINT-PLACEHOLDER": "DMP Blueprint" + }, + "NO-DESCRIPTIONS": "Not available Descriptions for this DMP.", + "ACTIONS": { + "CANCEL": "Cancel", + "NEW-VERSION": "Create New Version" + } + }, "DMP-BLUEPRINT-LISTING": { "TITLE": "DMP Blueprints", "CREATE-DMP-BLUEPRINT": "Create DMP Blueprint", diff --git a/dmp-frontend/src/assets/scss/blue-theme.scss b/dmp-frontend/src/assets/scss/blue-theme.scss index 1c770e3e2..f7fd23ce1 100644 --- a/dmp-frontend/src/assets/scss/blue-theme.scss +++ b/dmp-frontend/src/assets/scss/blue-theme.scss @@ -1,5 +1,4 @@ @use '@angular/material' as mat; -@import "app/ui/misc/navigation/navigation.component.scss"; @import "@angular/material/theming"; // @import '../../../node_modules/@angular/material/theming'; $app-blue-theme-primary-palette: ( @@ -134,7 +133,6 @@ $custom-typography: mat.define-legacy-typography-config( @include mat.legacy-core(); @include mat.all-legacy-component-themes($custom-theme); - @include navigation-component-theme($custom-theme); // Override typography CSS classes (e.g., mat-h1, mat-display-1, mat-typography, etc.). @include mat.legacy-typography-hierarchy($custom-typography); diff --git a/dmp-frontend/src/assets/scss/green-theme.scss b/dmp-frontend/src/assets/scss/green-theme.scss index e61bf71f9..84da95ce6 100644 --- a/dmp-frontend/src/assets/scss/green-theme.scss +++ b/dmp-frontend/src/assets/scss/green-theme.scss @@ -1,5 +1,4 @@ @use '@angular/material' as mat; -@import "app/ui/misc/navigation/navigation.component.scss"; @import "@angular/material/theming"; // @import '../../../node_modules/@angular/material/theming'; $app-green-theme-primary-palette: ( @@ -134,7 +133,6 @@ $custom-typography: mat.define-legacy-typography-config( @include mat.legacy-core(); @include mat.all-legacy-component-themes($custom-theme); - @include navigation-component-theme($custom-theme); // Override typography CSS classes (e.g., mat-h1, mat-display-1, mat-typography, etc.). @include mat.legacy-typography-hierarchy($custom-typography);