From 15cc2d16ca8d495c82ff1e77567d7eb7cd9b3729 Mon Sep 17 00:00:00 2001 From: Diamantis Tziotzios Date: Fri, 22 Mar 2024 13:06:10 +0200 Subject: [PATCH 1/2] small ui fixes --- .../field-set-title/field-set-title.component.html | 4 ++-- .../form-field-set/form-field-set.component.html | 6 +++--- .../overview/description-overview.component.html | 2 +- .../dmp-editor-blueprint/dmp-editor.component.html | 2 +- dmp-frontend/src/assets/i18n/en.json | 12 +++++++++--- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field-set/field-set-title/field-set-title.component.html b/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field-set/field-set-title/field-set-title.component.html index bd01cfe40..912cd2d99 100644 --- a/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field-set/field-set-title/field-set-title.component.html +++ b/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field-set/field-set-title/field-set-title.component.html @@ -13,12 +13,12 @@
- {{'DATASET-EDITOR.QUESTION.EXTENDED-DESCRIPTION.VIEW-MORE' | translate}} + {{'DESCRIPTION-EDITOR.ACTIONS.VIEW-MORE' | translate}}
- {{'DATASET-EDITOR.QUESTION.EXTENDED-DESCRIPTION.VIEW-LESS' | translate}} + {{'DESCRIPTION-EDITOR.ACTIONS.VIEW-LESS' | translate}}
\ No newline at end of file diff --git a/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field-set/form-field-set.component.html b/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field-set/form-field-set.component.html index a81d198b5..e8f96ed06 100644 --- a/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field-set/form-field-set.component.html +++ b/dmp-frontend/src/app/ui/description/editor/description-form/components/form-field-set/form-field-set.component.html @@ -37,7 +37,7 @@ add_circle {{fieldSet.multiplicity.placeholder}} - {{('DATASET-PROFILE-EDITOR.STEPS.FORM.COMPOSITE-FIELD.FIELDS.MULTIPLICITY-ADD-ONE-FIELD' + (fieldSet.multiplicity.tableView?'-TABLEVIEW':'')) | translate}} + {{('DESCRIPTION-EDITOR.ACTIONS.MULTIPLICITY-ADD-ONE-FIELD' + (fieldSet.multiplicity.tableView?'-TABLEVIEW':'')) | translate}} @@ -65,7 +65,7 @@ add_circle {{fieldSet.multiplicity.placeholder}} - {{('DATASET-PROFILE-EDITOR.STEPS.FORM.COMPOSITE-FIELD.FIELDS.MULTIPLICITY-ADD-ONE-FIELD' + (fieldSet.multiplicity.tableView?'-TABLEVIEW':'')) | translate}} + {{('DESCRIPTION-EDITOR.ACTIONS.MULTIPLICITY-ADD-ONE-FIELD' + (fieldSet.multiplicity.tableView?'-TABLEVIEW':'')) | translate}} @@ -75,6 +75,6 @@
- +
\ No newline at end of file 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 7be667a40..a0cd183bc 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 @@ -12,7 +12,7 @@

{{ description.label }}

-
+

{{ enumUtils.toDmpUserRolesString(dmpService.getCurrentUserRolesInDmp(description?.dmp?.dmpUsers)) }}

diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html index 05862add9..fb0859a81 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor.component.html @@ -90,7 +90,7 @@
  • {{'DMP-EDITOR.DESCRIPTION' | translate}}: {{ description.label }}
    - close + close check
  • diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index 168636ec9..05c32f3af 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -383,7 +383,6 @@ "MULTIPLICITY-ADD-ONE-FIELD": "Add more", "MULTIPLICITY-ADD-ONE-FIELD-TABLEVIEW": "Add row", "ORDER": "Order", - "COMMENT-PLACEHOLDER": "Please Specify", "COMMENT-HINT": "Provide additional information or justification about your selection", "SEMANTICS": "Semantics", "EXPORT": "Include in Export" @@ -859,6 +858,9 @@ "DESCRIPTION-TEMPLATE-VERSION": "Version" } }, + "FIELDS": { + "COMMENT-PLACEHOLDER": "Please Specify" + }, "ACTIONS": { "BACK-TO": "Back to", "EXPORT": "Export", @@ -871,9 +873,13 @@ "REVERSE": "Undo Finalization", "UNDO-FINALIZATION-QUESTION": "Undo finalization?", "CONFIRM": "Yes", - "REJECT": "No" + "REJECT": "No", + "MULTIPLICITY-ADD-ONE-FIELD": "Add more", + "MULTIPLICITY-ADD-ONE-FIELD-TABLEVIEW": "Add row", + "VIEW-MORE": "View more", + "VIEW-LESS": "View less" }, - "MESSAGES":{ + "MESSAGES": { "MISSING-FIELDS": "There are some required fields left unfilled. Please check the Plan and make sure that all required questions are answered and URLs are provided with valid input. (Missing fields are marked in red color)" }, "LOCKED-DIALOG": { From 704c9f2018e92b5fc598535609f17c0116b61527 Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Fri, 22 Mar 2024 13:49:26 +0200 Subject: [PATCH 2/2] file transformer changes --- .../DescriptionCommonModelBuilder.java | 8 ++- .../description/FieldCommonModelBuilder.java | 2 +- .../dmp/DmpCommonModelBuilder.java | 2 +- .../model/file/RepositoryFileFormat.java | 49 +++++++++++++++++++ .../eudat/query/DescriptionTemplateQuery.java | 2 + .../repository/TransformerRepository.java | 12 +++-- .../service/deposit/DepositClientImpl.java | 10 ++-- .../service/deposit/DepositServiceImpl.java | 9 +--- .../description/DescriptionServiceImpl.java | 2 +- .../transformer/FileTransformerService.java | 5 +- .../FileTransformerServiceImpl.java | 30 ++++++------ .../visibility/VisibilityServiceImpl.java | 2 +- .../FileTransformerController.java | 10 ++-- .../web/src/main/resources/config/deposit.yml | 8 +-- .../src/main/resources/config/transformer.yml | 23 +++------ .../app/core/model/file/file-format.model.ts | 3 +- .../description/description.service.ts | 1 - .../file-transformer.http.service.ts | 14 +++--- .../file-transformer.service.ts | 14 +++--- .../ui/dashboard/drafts/drafts.component.ts | 13 +++-- .../recent-edited-activity.component.ts | 11 ++--- .../recent-edited-dmp-activity.component.ts | 11 ++--- .../listing/description-listing.component.ts | 1 - .../description-listing-item.component.html | 2 +- .../description-overview.component.html | 2 +- .../dmp-listing-item.component.html | 2 +- .../dmp/overview/dmp-overview.component.html | 4 +- .../ui/dmp/overview/dmp-overview.component.ts | 10 +++- 28 files changed, 158 insertions(+), 104 deletions(-) create mode 100644 dmp-backend/core/src/main/java/eu/eudat/model/file/RepositoryFileFormat.java diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java index b9bd932af..c3ac2a087 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/DescriptionCommonModelBuilder.java @@ -48,6 +48,7 @@ public class DescriptionCommonModelBuilder extends BaseCommonModelBuilder authorize = EnumSet.of(AuthorizationFlags.None); + private String repositoryId; @Autowired public DescriptionCommonModelBuilder( @@ -73,6 +74,11 @@ public class DescriptionCommonModelBuilder extends BaseCommonModelBuilder> buildInternal(List data) throws MyApplicationException { this.logger.debug("building for {}", Optional.ofNullable(data).map(List::size).orElse(0)); @@ -154,7 +160,7 @@ public class DescriptionCommonModelBuilder extends BaseCommonModelBuilder itemMap; DmpQuery q = this.queryFactory.query(DmpQuery.class).authorize(this.authorize).ids(data.stream().map(DescriptionEntity::getDmpId).distinct().collect(Collectors.toList())); - itemMap = this.builderFactory.builder(DmpCommonModelBuilder.class).useSharedStorage(useSharedStorage).setDisableDescriptions(true).authorize(this.authorize).asForeignKey(q, DmpEntity::getId); + itemMap = this.builderFactory.builder(DmpCommonModelBuilder.class).setRepositoryId(repositoryId).useSharedStorage(useSharedStorage).setDisableDescriptions(true).authorize(this.authorize).asForeignKey(q, DmpEntity::getId); return itemMap; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/FieldCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/FieldCommonModelBuilder.java index be82ab1a7..db9359d3a 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/FieldCommonModelBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/description/FieldCommonModelBuilder.java @@ -149,7 +149,7 @@ public class FieldCommonModelBuilder extends BaseCommonModelBuilder itemMap; - ReferenceQuery q = this.queryFactory.query(ReferenceQuery.class).authorize(this.authorize).ids(data.stream().map(FieldEntity::getTextListValue).flatMap(List::stream).map(UUID::fromString).distinct().collect(Collectors.toList())); + ReferenceQuery q = this.queryFactory.query(ReferenceQuery.class).authorize(this.authorize).ids(data.stream().filter(x-> x.getTextListValue() != null).map(FieldEntity::getTextListValue).flatMap(List::stream).filter(x-> !this.conventionService.isNullOrEmpty(x)).map(UUID::fromString).distinct().collect(Collectors.toList())); itemMap = this.builderFactory.builder(ReferenceCommonModelBuilder.class).authorize(this.authorize).asForeignKey(q, ReferenceEntity::getId); return itemMap; diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/dmp/DmpCommonModelBuilder.java b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/dmp/DmpCommonModelBuilder.java index bad3c1ea0..6f5729bef 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/dmp/DmpCommonModelBuilder.java +++ b/dmp-backend/core/src/main/java/eu/eudat/model/builder/commonmodels/dmp/DmpCommonModelBuilder.java @@ -195,7 +195,7 @@ public class DmpCommonModelBuilder extends BaseCommonModelBuilder> itemMap; DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).isActive(IsActive.Active).authorize(this.authorize).dmpIds(data.stream().map(DmpEntity::getId).distinct().collect(Collectors.toList())); - itemMap = this.builderFactory.builder(DescriptionCommonModelBuilder.class).useSharedStorage(useSharedStorage).authorize(this.authorize).asMasterKey(query, DescriptionEntity::getDmpId); + itemMap = this.builderFactory.builder(DescriptionCommonModelBuilder.class).setRepositoryId(repositoryId).useSharedStorage(useSharedStorage).authorize(this.authorize).asMasterKey(query, DescriptionEntity::getDmpId); return itemMap; } diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/file/RepositoryFileFormat.java b/dmp-backend/core/src/main/java/eu/eudat/model/file/RepositoryFileFormat.java new file mode 100644 index 000000000..21779ae1d --- /dev/null +++ b/dmp-backend/core/src/main/java/eu/eudat/model/file/RepositoryFileFormat.java @@ -0,0 +1,49 @@ +package eu.eudat.model.file; + +import eu.eudat.file.transformer.models.misc.FileFormat; + +public class RepositoryFileFormat { + private String format; + private Boolean hasLogo; + private String icon; + private String repositoryId; + + public RepositoryFileFormat(String repositoryId, FileFormat format) { + this.repositoryId = repositoryId; + this.format = format.getFormat(); + this.hasLogo = format.getHasLogo(); + this.icon = format.getIcon(); + } + + public String getFormat() { + return format; + } + + public void setFormat(String format) { + this.format = format; + } + + public Boolean getHasLogo() { + return hasLogo; + } + + public void setHasLogo(Boolean hasLogo) { + this.hasLogo = hasLogo; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getRepositoryId() { + return repositoryId; + } + + public void setRepositoryId(String repositoryId) { + this.repositoryId = repositoryId; + } +} diff --git a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java index acdf587f9..4cea81ea5 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java +++ b/dmp-backend/core/src/main/java/eu/eudat/query/DescriptionTemplateQuery.java @@ -349,6 +349,8 @@ public class DescriptionTemplateQuery extends QueryBase uriBuilder.queryParam("format", format).build()).bodyValue(dmpModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block(); + return transformerClient.post().uri("/export/dmp", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(dmpModel).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block(); } @Override public DmpModel importDmp(FileEnvelopeModel fileEnvelope) { - return transformerClient.post().uri("/import/dmp").bodyValue(fileEnvelope).exchangeToMono(mono -> mono.bodyToMono(DmpModel.class)).block(); + return transformerClient.post().uri("/import/dmp").bodyValue(fileEnvelope).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(DmpModel.class)).block(); } @Override public FileEnvelopeModel exportDescription(DescriptionModel descriptionModel, String format) { - return transformerClient.post().uri("/export/description", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(descriptionModel).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block(); + return transformerClient.post().uri("/export/description", uriBuilder -> uriBuilder.queryParam("format", format).build()).bodyValue(descriptionModel).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(FileEnvelopeModel.class)).block(); } @Override public DescriptionModel importDescription(FileEnvelopeModel fileEnvelope) { - return transformerClient.post().uri("/import/description").bodyValue(fileEnvelope).exchangeToMono(mono -> mono.bodyToMono(DescriptionModel.class)).block(); + return transformerClient.post().uri("/import/description").bodyValue(fileEnvelope).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(DescriptionModel.class)).block(); } @Override public FileTransformerConfiguration getConfiguration() { - return transformerClient.get().uri("/formats").exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference() {})).block(); + return transformerClient.get().uri("/formats").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference() {})).block(); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositClientImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositClientImpl.java index e255d3aa8..ce4ad1129 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositClientImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositClientImpl.java @@ -3,6 +3,8 @@ package eu.eudat.service.deposit; import eu.eudat.depositinterface.repository.DepositClient; import eu.eudat.depositinterface.repository.DepositConfiguration; import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; import org.springframework.web.reactive.function.client.WebClient; import eu.eudat.commonmodels.models.dmp.DmpModel; @@ -17,21 +19,21 @@ public class DepositClientImpl implements DepositClient { @Override public String deposit(DmpModel dmpDepositModel, String repositoryAccessToken) throws Exception { - return depositClient.post().uri("/", uriBuilder -> uriBuilder.queryParam("authToken", repositoryAccessToken).build()).bodyValue(dmpDepositModel).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); + return depositClient.post().uri("/", uriBuilder -> uriBuilder.queryParam("authToken", repositoryAccessToken).build()).bodyValue(dmpDepositModel).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); } @Override public String authenticate(String code) { - return depositClient.get().uri("/authenticate/", uriBuilder -> uriBuilder.queryParam("authToken", code).build()).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); + return depositClient.get().uri("/authenticate/", uriBuilder -> uriBuilder.queryParam("authToken", code).build()).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); } @Override public DepositConfiguration getConfiguration() { - return depositClient.get().uri("/configuration").exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference() {})).block(); + return depositClient.get().uri("/configuration").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(new ParameterizedTypeReference() {})).block(); } @Override public String getLogo() { - return depositClient.get().uri("/logo/").exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); + return depositClient.get().uri("/logo/").header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE).accept(MediaType.APPLICATION_JSON).exchangeToMono(mono -> mono.bodyToMono(String.class)).block(); } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositServiceImpl.java index cf844c57b..440bf3e81 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/deposit/DepositServiceImpl.java @@ -58,7 +58,6 @@ public class DepositServiceImpl implements DepositService { private final Map clients; private final TokenExchangeCacheService tokenExchangeCacheService; private final AuthorizationService authorizationService; - private final WebClient.Builder webClientBuilder; private final EntityDoiService doiService; private final QueryFactory queryFactory; private final MessageSource messageSource; @@ -69,21 +68,18 @@ public class DepositServiceImpl implements DepositService { private final UserScope userScope; private final ValidatorFactory validatorFactory; private final StorageFileProperties storageFileProperties; - private final ConventionService conventionService; private final AuthorizationContentResolver authorizationContentResolver; @Autowired public DepositServiceImpl(DepositProperties depositProperties, TokenExchangeCacheService tokenExchangeCacheService, - WebClient.Builder builder, AuthorizationService authorizationService, EntityDoiService doiService, QueryFactory queryFactory, MessageSource messageSource, - BuilderFactory builderFactory, DepositConfigurationCacheService depositConfigurationCacheService, FileTransformerService fileTransformerService, StorageFileService storageFileService, UserScope userScope, ValidatorFactory validatorFactory, StorageFileProperties storageFileProperties, ConventionService conventionService, AuthorizationContentResolver authorizationContentResolver) { + BuilderFactory builderFactory, DepositConfigurationCacheService depositConfigurationCacheService, FileTransformerService fileTransformerService, StorageFileService storageFileService, UserScope userScope, ValidatorFactory validatorFactory, StorageFileProperties storageFileProperties, AuthorizationContentResolver authorizationContentResolver) { this.depositProperties = depositProperties; this.tokenExchangeCacheService = tokenExchangeCacheService; this.authorizationService = authorizationService; - this.webClientBuilder = builder; this.doiService = doiService; this.queryFactory = queryFactory; this.messageSource = messageSource; @@ -94,7 +90,6 @@ public class DepositServiceImpl implements DepositService { this.userScope = userScope; this.validatorFactory = validatorFactory; this.storageFileProperties = storageFileProperties; - this.conventionService = conventionService; this.authorizationContentResolver = authorizationContentResolver; this.clients = new HashMap<>(); } @@ -108,7 +103,7 @@ public class DepositServiceImpl implements DepositService { String host = URI.create(source.getUrl()).getHost(); TokenExchangeModel tokenExchangeModel = new TokenExchangeModel("deposit:" + source.getRepositoryId(), source.getIssuerUrl(), source.getClientId(), source.getClientSecret(), source.getScope()); TokenExchangeFilterFunction apiKeyExchangeFilterFunction = new TokenExchangeFilterFunction(this.tokenExchangeCacheService, tokenExchangeModel); - WebClient webClient = webClientBuilder.baseUrl(source.getUrl() + "/api/deposit").filters(exchangeFilterFunctions -> exchangeFilterFunctions.add(apiKeyExchangeFilterFunction)).build(); + WebClient webClient = WebClient.builder().baseUrl(source.getUrl() + "/api/deposit").filters(exchangeFilterFunctions -> exchangeFilterFunctions.add(apiKeyExchangeFilterFunction)).build(); DepositClientImpl repository = new DepositClientImpl(webClient); this.clients.put(source.getRepositoryId(), repository); return repository; diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java index df697bb84..cdce26d26 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/description/DescriptionServiceImpl.java @@ -780,7 +780,7 @@ public class DescriptionServiceImpl implements DescriptionService { public ResponseEntity export(UUID id, String exportType) throws InvalidApplicationException, IOException { HttpHeaders headers = new HttpHeaders(); - FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(id, exportType); + FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(id, null, exportType); //TODO get repo from config headers.add("Content-Disposition", "attachment;filename=" + fileEnvelope.getFilename()); byte[] data = fileEnvelope.getFile(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java index 674259823..487bd4347 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerService.java @@ -1,14 +1,15 @@ package eu.eudat.service.transformer; import eu.eudat.file.transformer.models.misc.FileFormat; +import eu.eudat.model.file.RepositoryFileFormat; import java.util.List; import java.util.UUID; public interface FileTransformerService { - List getAvailableExportFileFormats(); + List getAvailableExportFileFormats(); eu.eudat.model.file.FileEnvelope exportDmp(UUID dmpId, String repositoryId, String format); - eu.eudat.model.file.FileEnvelope exportDescription(UUID descriptionId, String format); + eu.eudat.model.file.FileEnvelope exportDescription(UUID descriptionId, String repositoryId, String format); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java index dff99f04b..88143c9b6 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/transformer/FileTransformerServiceImpl.java @@ -13,6 +13,7 @@ import eu.eudat.model.Description; import eu.eudat.model.Dmp; import eu.eudat.model.builder.commonmodels.description.DescriptionCommonModelBuilder; import eu.eudat.model.builder.commonmodels.dmp.DmpCommonModelBuilder; +import eu.eudat.model.file.RepositoryFileFormat; import eu.eudat.model.file.TransformerCacheModel; import eu.eudat.query.DescriptionQuery; import eu.eudat.query.DmpQuery; @@ -47,20 +48,18 @@ public class FileTransformerServiceImpl implements FileTransformerService { private final TokenExchangeCacheService tokenExchangeCacheService; private final FileTransformerConfigurationCache fileTransformerConfigurationCache; private final AuthorizationService authorizationService; - private final WebClient.Builder webClientBuilder; private final QueryFactory queryFactory; private final BuilderFactory builderFactory; private final StorageFileService storageFileService; private final MessageSource messageSource; @Autowired - public FileTransformerServiceImpl(TransformerProperties transformerProperties, TokenExchangeCacheService tokenExchangeCacheService, FileTransformerConfigurationCache fileTransformerConfigurationCache, WebClient.Builder builder, AuthorizationService authorizationService, + public FileTransformerServiceImpl(TransformerProperties transformerProperties, TokenExchangeCacheService tokenExchangeCacheService, FileTransformerConfigurationCache fileTransformerConfigurationCache, AuthorizationService authorizationService, QueryFactory queryFactory, BuilderFactory builderFactory, StorageFileService storageFileService, MessageSource messageSource) { this.transformerProperties = transformerProperties; this.tokenExchangeCacheService = tokenExchangeCacheService; this.fileTransformerConfigurationCache = fileTransformerConfigurationCache; this.authorizationService = authorizationService; - this.webClientBuilder = builder; this.queryFactory = queryFactory; this.builderFactory = builderFactory; this.storageFileService = storageFileService; @@ -72,16 +71,17 @@ public class FileTransformerServiceImpl implements FileTransformerService { if (this.clients.containsKey(repoId)) return this.clients.get(repoId); //GK: It's register time - TransformerProperties.TransformerSource source = transformerProperties.getSources().stream().filter(depositSource -> depositSource.getCodes().contains(repoId)).findFirst().orElse(null); + TransformerProperties.TransformerSource source = transformerProperties.getSources().stream().filter(depositSource -> depositSource.getTransformerId().equals(repoId)).findFirst().orElse(null); if (source != null) { String host = URI.create(source.getUrl()).getHost(); TokenExchangeModel tokenExchangeModel = new TokenExchangeModel(host + "_" + source.getClientId(), source.getIssuerUrl(), source.getClientId(), source.getClientSecret(), source.getScope()); TokenExchangeFilterFunction tokenExchangeFilterFunction = new TokenExchangeFilterFunction(this.tokenExchangeCacheService, tokenExchangeModel); - TransformerRepository repository = new TransformerRepository(webClientBuilder.baseUrl(source.getUrl() + "/api/file-transformer").filters(exchangeFilterFunctions -> { + + TransformerRepository repository = new TransformerRepository(WebClient.builder().baseUrl(source.getUrl() + "/api/file-transformer").filters(exchangeFilterFunctions -> { exchangeFilterFunctions.add(tokenExchangeFilterFunction); exchangeFilterFunctions.add(logRequest()); }).build()); - source.getCodes().forEach(code -> this.clients.put(code, repository)); + this.clients.put(source.getTransformerId(), repository); return repository; } return null; @@ -89,12 +89,12 @@ public class FileTransformerServiceImpl implements FileTransformerService { @Override - public List getAvailableExportFileFormats() { - List formats = new ArrayList<>(); + public List getAvailableExportFileFormats() { + List formats = new ArrayList<>(); List configurations = this.getAvailableConfigurations(); if(configurations != null){ for (FileTransformerConfiguration configuration : configurations){ - if (configuration != null && configuration.getExportVariants() != null) formats.addAll(configuration.getExportVariants()); + if (configuration != null && configuration.getExportVariants() != null) formats.addAll(configuration.getExportVariants().stream().map(x-> new RepositoryFileFormat(configuration.getFileTransformerId(), x)).toList()); } } return formats; @@ -105,7 +105,7 @@ public class FileTransformerServiceImpl implements FileTransformerService { if (configs == null) { List configurations = new ArrayList<>(); //GK: So much for lazy loading - List repositories = transformerProperties.getSources().stream().map(depositSource -> getRepository(depositSource.getCodes().getFirst())).toList(); + List repositories = transformerProperties.getSources().stream().map(depositSource -> getRepository(depositSource.getTransformerId())).toList(); repositories = new ArrayList<>(repositories); repositories.forEach((client) -> { @@ -131,10 +131,10 @@ public class FileTransformerServiceImpl implements FileTransformerService { this.authorizationService.authorize(Permission.EditDmp); //GK: First get the right client TransformerRepository repository = getRepository(repositoryId); - if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{repositoryId, TransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); + if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{format, TransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); //GK: Second get the Target Data Management Plan DmpQuery query = this.queryFactory.query(DmpQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).ids(dmpId); - DmpModel dmpFileTransformerModel = this.builderFactory.builder(DmpCommonModelBuilder.class).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(query.first()); + DmpModel dmpFileTransformerModel = this.builderFactory.builder(DmpCommonModelBuilder.class).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).setRepositoryId(repository.getConfiguration().getFileTransformerId()).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(query.first()); if (dmpFileTransformerModel == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{dmpId, Dmp.class.getSimpleName()}, LocaleContextHolder.getLocale())); FileEnvelopeModel fileEnvelope = repository.exportDmp(dmpFileTransformerModel, format); @@ -147,15 +147,15 @@ public class FileTransformerServiceImpl implements FileTransformerService { } @Override - public eu.eudat.model.file.FileEnvelope exportDescription(UUID descriptionId, String format) { + public eu.eudat.model.file.FileEnvelope exportDescription(UUID descriptionId, String repositoryId, String format) { this.authorizationService.authorize(Permission.EditDmp); //GK: First get the right client - TransformerRepository repository = getRepository(format); + TransformerRepository repository = getRepository(repositoryId); if (repository == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{format, TransformerRepository.class.getSimpleName()}, LocaleContextHolder.getLocale())); //GK: Second get the Target Data Management Plan DescriptionQuery query = this.queryFactory.query(DescriptionQuery.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).ids(descriptionId); - DescriptionModel descriptionFileTransformerModel = this.builderFactory.builder(DescriptionCommonModelBuilder.class).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(query.first()); + DescriptionModel descriptionFileTransformerModel = this.builderFactory.builder(DescriptionCommonModelBuilder.class).setRepositoryId(repository.getConfiguration().getFileTransformerId()).useSharedStorage(repository.getConfiguration().isUseSharedStorage()).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermission).build(query.first()); if (descriptionFileTransformerModel == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{descriptionId, Description.class.getSimpleName()}, LocaleContextHolder.getLocale())); FileEnvelopeModel fileEnvelope = repository.exportDescription(descriptionFileTransformerModel, format); diff --git a/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java b/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java index c1289bdfc..44d9bd58f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java +++ b/dmp-backend/core/src/main/java/eu/eudat/service/visibility/VisibilityServiceImpl.java @@ -26,7 +26,7 @@ public class VisibilityServiceImpl implements VisibilityService { } private void initRules(){ - if (this.rulesBySources == null) return; + if (this.rulesBySources != null) return; rulesBySources = new HashMap<>(); for (FieldEntity fieldEntity : this.definition.getAllField()){ if (fieldEntity.getVisibilityRules() != null && !fieldEntity.getVisibilityRules().isEmpty()) { diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/FileTransformerController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/FileTransformerController.java index a06b1642b..524f2fc7c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/FileTransformerController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/FileTransformerController.java @@ -1,9 +1,9 @@ package eu.eudat.controllers; import eu.eudat.audit.AuditableAction; -import eu.eudat.file.transformer.models.misc.FileFormat; import eu.eudat.model.file.ExportRequestModel; import eu.eudat.model.file.FileEnvelope; +import eu.eudat.model.file.RepositoryFileFormat; import eu.eudat.service.transformer.FileTransformerService; import gr.cite.tools.auditing.AuditService; import gr.cite.tools.logging.LoggerService; @@ -37,10 +37,10 @@ public class FileTransformerController { } @GetMapping("/available") - public List getAvailableConfigurations() { + public List getAvailableConfigurations() { logger.debug(new MapLogEntry("getAvailableConfigurations")); - List model = this.fileTransformerService.getAvailableExportFileFormats(); + List model = this.fileTransformerService.getAvailableExportFileFormats(); this.auditService.track(AuditableAction.FileTransformer_GetAvailableConfigurations); //this.auditService.trackIdentity(AuditableAction.IdentityTracking_Action); @@ -60,11 +60,11 @@ public class FileTransformerController { } @PostMapping("/export-description") - public ResponseEntity exportDescription(@RequestBody ExportRequestModel requestModel) throws InvalidApplicationException, IOException { + public ResponseEntity exportDescription(@RequestBody ExportRequestModel requestModel) { logger.debug(new MapLogEntry("exporting dmp")); HttpHeaders headers = new HttpHeaders(); - FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(requestModel.getId(), requestModel.getFormat()); + FileEnvelope fileEnvelope = this.fileTransformerService.exportDescription(requestModel.getId(), requestModel.getRepositoryId(), requestModel.getFormat()); headers.add("Content-Disposition", "attachment;filename=" + fileEnvelope.getFilename()); byte[] data = fileEnvelope.getFile(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); diff --git a/dmp-backend/web/src/main/resources/config/deposit.yml b/dmp-backend/web/src/main/resources/config/deposit.yml index 46cb35c1a..3521465bf 100644 --- a/dmp-backend/web/src/main/resources/config/deposit.yml +++ b/dmp-backend/web/src/main/resources/config/deposit.yml @@ -4,7 +4,7 @@ deposit: repositoryId: zenodo pdfTransformerId: docx-file-transformer rdaTransformerId: rda-file-transformer - issuer-url: ${ZENODO_ISSUER_URI:IDP_APIKEY_ISSUER_URI}/protocol/openid-connect/token - client-id: ${ZENODO_DEPOSIT_CLIENT_ID:} - client-secret: ${ZENODO_DEPOSIT_CLIENT_SECRET:} - scope: ${ZENODO_DEPOSIT_SCOPE:} \ No newline at end of file + issuer-url: ${IDP_ISSUER_URI_TOKEN} + client-id: ${ZENODO_DEPOSIT_CLIENT_ID} + client-secret: ${ZENODO_DEPOSIT_CLIENT_SECRET} + scope: ${ZENODO_DEPOSIT_SCOPE} \ No newline at end of file diff --git a/dmp-backend/web/src/main/resources/config/transformer.yml b/dmp-backend/web/src/main/resources/config/transformer.yml index 0b7659490..5d88f95c0 100644 --- a/dmp-backend/web/src/main/resources/config/transformer.yml +++ b/dmp-backend/web/src/main/resources/config/transformer.yml @@ -3,21 +3,14 @@ transformer: - url: http://dev04.local.cite.gr:55330/file/docx transformerId: docx-file-transformer codes: [ docx, pdf ] - issuer-url: ${IDP_ISSUER_URI_TOKEN:} - client-id: ${IDP_APIKEY_CLIENT_ID:} - client-secret: ${IDP_APIKEY_CLIENT_SECRET:} - scope: ${IDP_APIKEY_SCOPE:} + issuer-url: ${IDP_ISSUER_URI_TOKEN} + client-id: ${IDP_APIKEY_CLIENT_ID} + client-secret: ${IDP_APIKEY_CLIENT_SECRET} + scope: ${IDP_APIKEY_SCOPE} - url: http://dev04.local.cite.gr:55330/file/rdajson transformerId: rda-file-transformer codes: [ json ] - issuer-url: ${IDP_ISSUER_URI_TOKEN:} - client-id: ${IDP_APIKEY_CLIENT_ID:} - client-secret: ${IDP_APIKEY_CLIENT_SECRET:} - scope: ${IDP_APIKEY_SCOPE:} - - url: http://localhost:8087 - transformerId: import-export-file-transformer - codes: [ xml ] - issuer-url: ${IDP_ISSUER_URI_TOKEN:} - client-id: ${IDP_APIKEY_CLIENT_ID:} - client-secret: ${IDP_APIKEY_CLIENT_SECRET:} - scope: ${IDP_APIKEY_SCOPE:} + issuer-url: ${IDP_ISSUER_URI_TOKEN} + client-id: ${IDP_APIKEY_CLIENT_ID} + client-secret: ${IDP_APIKEY_CLIENT_SECRET} + scope: ${IDP_APIKEY_SCOPE} \ No newline at end of file diff --git a/dmp-frontend/src/app/core/model/file/file-format.model.ts b/dmp-frontend/src/app/core/model/file/file-format.model.ts index 98f9ff5e5..5d78198e5 100644 --- a/dmp-frontend/src/app/core/model/file/file-format.model.ts +++ b/dmp-frontend/src/app/core/model/file/file-format.model.ts @@ -1,5 +1,6 @@ -export interface FileFormat { +export interface RepositoryFileFormat { format: string; hasLogo: boolean; icon: string; + repositoryId: string; } 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 3c07826e3..f45ae4bb7 100644 --- a/dmp-frontend/src/app/core/services/description/description.service.ts +++ b/dmp-frontend/src/app/core/services/description/description.service.ts @@ -13,7 +13,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 { FileFormat } from '@app/core/model/file/file-format.model'; import { BaseHttpParams } from '@common/http/base-http-params'; import { InterceptorType } from '@common/http/interceptors/interceptor-type'; import { DescriptionValidationResult } from '@app/ui/dmp/dmp-finalize-dialog/dmp-finalize-dialog.component'; 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 index e7db03436..4c14ea2ec 100644 --- 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 @@ -1,12 +1,12 @@ 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'; +import { RepositoryFileFormat } from '@app/core/model/file/file-format.model'; @Injectable() export class FileTransformerHttpService extends BaseService { @@ -20,20 +20,20 @@ export class FileTransformerHttpService extends BaseService { private get apiBase(): string { return `${this.configurationService.server}file-transformer`; } - getAvailableConfigurations(): Observable { + getAvailableConfigurations(): Observable { const url = `${this.apiBase}/available`; - return this.http.get(url).pipe(catchError((error: any) => throwError(error))); + return this.http.get(url).pipe(catchError((error: any) => throwError(error))); } - exportDmp(dmpId: Guid, format: string): Observable { + exportDmp(dmpId: Guid, repositoryId: string, format: string): Observable { //TODO: implement const url = `${this.apiBase}/export-dmp`; - return this.http.post(url, {id: dmpId, format: format}, {responseType: 'blob', observe: 'response'}).pipe(catchError((error: any) => throwError(error))); + return this.http.post(url, {id: dmpId, repositoryId: repositoryId, format: format}, {responseType: 'blob', observe: 'response'}).pipe(catchError((error: any) => throwError(error))); } - exportDescription(id: Guid, format: string): Observable { + exportDescription(id: Guid, repositoryId: string, format: string): Observable { //TODO: implement const url = `${this.apiBase}/export-description`; - return this.http.post(url, {id: id, format: format}, {responseType: 'blob', observe: 'response'}).pipe(catchError((error: any) => throwError(error))); + return this.http.post(url, {id: id, repositoryId: repositoryId, format: format}, {responseType: 'blob', observe: 'response'}).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 index 604c4a516..e2a5df34e 100644 --- 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 @@ -1,5 +1,4 @@ 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'; @@ -8,6 +7,7 @@ import * as FileSaver from 'file-saver'; import { MatomoService } from '../matomo/matomo-service'; import { FileUtils } from '../utilities/file-utils.service'; import { AuthService } from '../auth/auth.service'; +import { RepositoryFileFormat } from '@app/core/model/file/file-format.model'; @Injectable() export class FileTransformerService extends BaseService { @@ -22,8 +22,8 @@ export class FileTransformerService extends BaseService { private _initialized: boolean = false; private _loading: boolean = false; - private _availableFormats: FileFormat[] = []; - get availableFormats(): FileFormat[] { + private _availableFormats: RepositoryFileFormat[] = []; + get availableFormats(): RepositoryFileFormat[] { if (!this.authentication.currentAccountIsAuthenticated()){ return; } @@ -46,9 +46,9 @@ export class FileTransformerService extends BaseService { }); } - exportDmp(id: Guid, format: string) { + exportDmp(id: Guid, repositoryId: string, format: string) { this._loading = true; - this.fileTransformerHttpService.exportDmp(id, format).pipe(takeUntil(this._destroyed), catchError((error) => { + this.fileTransformerHttpService.exportDmp(id, repositoryId, format).pipe(takeUntil(this._destroyed), catchError((error) => { this._loading = false; return null; })).subscribe(result => { @@ -62,9 +62,9 @@ export class FileTransformerService extends BaseService { }); } - exportDescription(id: Guid, format: string) { + exportDescription(id: Guid, repositoryId: string, format: string) { this._loading = true; - this.fileTransformerHttpService.exportDescription(id, format).pipe(takeUntil(this._destroyed), catchError((error) => { + this.fileTransformerHttpService.exportDescription(id, repositoryId, format).pipe(takeUntil(this._destroyed), catchError((error) => { this._loading = false; return null; })).subscribe(result => { 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 fad3eda39..c39e08b43 100644 --- a/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/drafts/drafts.component.ts @@ -8,7 +8,6 @@ import { DescriptionTemplate } from '@app/core/model/description-template/descri import { Description } from '@app/core/model/description/description'; import { Dmp, DmpUser } 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 { RecentActivityItemLookup } from '@app/core/query/recent-activity-item-lookup.lookup'; import { DashboardService } from "@app/core/services/dashboard/dashboard.service"; @@ -175,7 +174,7 @@ export class DraftsComponent extends BaseComponent implements OnInit { }; this.getItems(); - + this.formGroup.get('like').valueChanges .pipe(takeUntil(this._destroyed), debounceTime(500)) .subscribe(x => this.refresh()); @@ -186,14 +185,14 @@ export class DraftsComponent extends BaseComponent implements OnInit { loadMore() { this.pageSize = this.pageSize + this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; - this.getItems(); + this.lookup.page = { size: this.pageSize, offset: 0 }; + this.getItems(); } loadLess() { this.pageSize = this.pageSize - this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; - this.getItems(); + this.lookup.page = { size: this.pageSize, offset: 0 }; + this.getItems(); } private getItems(){ @@ -208,7 +207,7 @@ export class DraftsComponent extends BaseComponent implements OnInit { if (item.dmp.descriptions) { if (item.dmp.status == DmpStatus.Finalized) { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status === DescriptionStatus.Finalized); - } else { + } else { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status != DescriptionStatus.Canceled); } } 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 a669539d9..3fe14e807 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 @@ -11,7 +11,6 @@ import { DescriptionTemplate } from '@app/core/model/description-template/descri import { Description } from '@app/core/model/description/description'; import { Dmp, DmpUser } 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 { ReferenceType } from '@app/core/model/reference-type/reference-type'; import { Reference } from '@app/core/model/reference/reference'; import { RecentActivityItemLookup } from '@app/core/query/recent-activity-item-lookup.lookup'; @@ -184,14 +183,14 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn loadMore() { this.pageSize = this.pageSize + this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; - this.getItems(); + this.lookup.page = { size: this.pageSize, offset: 0 }; + this.getItems(); } loadLess() { this.pageSize = this.pageSize - this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; - this.getItems(); + this.lookup.page = { size: this.pageSize, offset: 0 }; + this.getItems(); } private getItems(){ @@ -206,7 +205,7 @@ export class RecentEditedActivityComponent extends BaseComponent implements OnIn if (item.dmp.descriptions) { if (item.dmp.status == DmpStatus.Finalized) { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status === DescriptionStatus.Finalized); - } else { + } else { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status != DescriptionStatus.Canceled); } } diff --git a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts index f48a3c8ac..b8dfac478 100644 --- a/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts +++ b/dmp-frontend/src/app/ui/dashboard/recent-edited-dmp-activity/recent-edited-dmp-activity.component.ts @@ -10,7 +10,6 @@ import { RecentActivityItem } from '@app/core/model/dashboard/recent-activity-it import { Description } from '@app/core/model/description/description'; import { Dmp, DmpUser } 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 { ReferenceType } from '@app/core/model/reference-type/reference-type'; import { Reference } from '@app/core/model/reference/reference'; import { RecentActivityItemLookup } from '@app/core/query/recent-activity-item-lookup.lookup'; @@ -156,7 +155,7 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O }; this.getItems(); - + this.formGroup.get('like').valueChanges .pipe(takeUntil(this._destroyed), debounceTime(500)) .subscribe(x => this.refresh()); @@ -167,13 +166,13 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O loadMore() { this.pageSize = this.pageSize + this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; + this.lookup.page = { size: this.pageSize, offset: 0 }; this.getItems(); } loadLess() { this.pageSize = this.pageSize - this.pageLessSize; - this.lookup.page = { size: this.pageSize, offset: 0 }; + this.lookup.page = { size: this.pageSize, offset: 0 }; this.getItems(); } @@ -190,13 +189,13 @@ export class RecentEditedDmpActivityComponent extends BaseComponent implements O if (item.dmp.descriptions) { if (item.dmp.status == DmpStatus.Finalized) { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status === DescriptionStatus.Finalized); - } else { + } else { item.dmp.descriptions = item.dmp.descriptions.filter(x => x.isActive === IsActive.Active && x.status != DescriptionStatus.Canceled); } } this.listingItems.push(item.dmp); } - + }) }); diff --git a/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts b/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts index 272d0ad8e..5b945b595 100644 --- a/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts +++ b/dmp-frontend/src/app/ui/description/listing/description-listing.component.ts @@ -14,7 +14,6 @@ import { DescriptionTemplate } from '@app/core/model/description-template/descri import { Description } from '@app/core/model/description/description'; import { Dmp, DmpDescriptionTemplate, DmpUser } 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 { ReferenceType } from '@app/core/model/reference-type/reference-type'; import { Reference } from '@app/core/model/reference/reference'; import { DescriptionLookup } from '@app/core/query/description.lookup'; diff --git a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html index 31239fb69..052c5c46f 100644 --- a/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html +++ b/dmp-frontend/src/app/ui/description/listing/listing-item/description-listing-item.component.html @@ -38,7 +38,7 @@ - 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 7be667a40..ae046ae48 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,7 +117,7 @@ {{ 'DESCRIPTION-OVERVIEW.ACTIONS.EXPORT' | translate }}

    - 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 10d6bfa4f..c5a98ad6a 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 @@ -38,7 +38,7 @@ more_horiz
    - 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 2a7907b18..336fd9783 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,9 +166,9 @@

    - 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 1e4285ee8..92726cfc0 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 @@ -175,7 +175,15 @@ export class DmpOverviewComponent extends BaseComponent implements OnInit { } }); if (this.isAuthenticated()) { - this.depositRepositoriesService.getAvailableRepos() + this.depositRepositoriesService.getAvailableRepos([ + nameof(x => x.depositType), + nameof(x => x.repositoryId), + nameof(x => x.repositoryAuthorizationUrl), + nameof(x => x.repositoryRecordUrl), + nameof(x => x.repositoryClientId), + nameof(x => x.hasLogo), + nameof(x => x.redirectUri) + ]) .pipe(takeUntil(this._destroyed)) .subscribe( repos => {