diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/LanguageV2Controller.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/LanguageV2Controller.java index 9e5581213..ca361c401 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/LanguageV2Controller.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/v2/LanguageV2Controller.java @@ -31,14 +31,14 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import javax.management.InvalidApplicationException; import java.io.IOException; -import java.util.AbstractMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; +import java.util.stream.Collectors; @RestController @RequestMapping(path = {"api/v2/language"}) @@ -127,6 +127,21 @@ public class LanguageV2Controller { return model; } + @PostMapping("available-languages") + public QueryResult queryLanguageCodes(@RequestBody LanguageLookup lookup) { + logger.debug("querying {}", Language.class.getSimpleName()); + + this.censorFactory.censor(LanguageCensor.class).censor(lookup.getProject(), null); + + LanguageQuery query = lookup.enrich(this.queryFactory).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic); + List data = query.collectAs(lookup.getProject()); + List models = this.builderFactory.builder(LanguageBuilder.class).authorize(AuthorizationFlags.OwnerOrDmpAssociatedOrPermissionOrPublic).build(lookup.getProject(), data); + + long count = (lookup.getMetadata() != null && lookup.getMetadata().getCountAll()) ? query.count() : models.size(); + + return new QueryResult<>(models.stream().map(x -> x.getCode()).collect(Collectors.toList()), count); + } + @PostMapping("persist") @Transactional public Language persist(@MyValidate @RequestBody LanguagePersist model, FieldSet fieldSet) throws MyApplicationException, MyForbiddenException, MyNotFoundException, InvalidApplicationException, JAXBException, JsonProcessingException, InvalidApplicationException { diff --git a/dmp-frontend/src/app/core/services/language/language-v2.service.ts b/dmp-frontend/src/app/core/services/language/language-v2.service.ts index 1648b13e4..0bbc1a824 100644 --- a/dmp-frontend/src/app/core/services/language/language-v2.service.ts +++ b/dmp-frontend/src/app/core/services/language/language-v2.service.ts @@ -44,6 +44,11 @@ export class LanguageV2Service { catchError((error: any) => throwError(error))); } + queryAvailableCodes(q: LanguageLookup): Observable> { + const url = `${this.apiBase}/available-languages`; + return this.http.post>(url, q).pipe(catchError((error: any) => throwError(error))); + } + persist(item: LanguagePersist): Observable { const url = `${this.apiBase}/persist`; @@ -83,7 +88,7 @@ export class LanguageV2Service { valueAssign: (item: Language) => item.id, }; - private buildAutocompleteLookup(like?: string, excludedIds?: Guid[], ids?: Guid[]): LanguageLookup { + public buildAutocompleteLookup(like?: string, excludedIds?: Guid[], ids?: Guid[]): LanguageLookup { const lookup: LanguageLookup = new LanguageLookup(); lookup.page = { size: 100, offset: 0 }; if (excludedIds && excludedIds.length > 0) { lookup.excludedIds = excludedIds; } diff --git a/dmp-frontend/src/app/ui/admin/language/editor/language-editor.component.html b/dmp-frontend/src/app/ui/admin/language/editor/language-editor.component.html index f4692f418..37b98b38b 100644 --- a/dmp-frontend/src/app/ui/admin/language/editor/language-editor.component.html +++ b/dmp-frontend/src/app/ui/admin/language/editor/language-editor.component.html @@ -29,7 +29,7 @@
-
+
{{'LANGUAGE-EDITOR.FIELDS.CODE' | translate}} @@ -37,6 +37,18 @@ {{'GENERAL.VALIDATION.REQUIRED' | translate}}
+
+ + {{'LANGUAGE-EDITOR.FIELDS.CODE' | translate}} + + + {{languageCode}} + + + + {{'GENERAL.VALIDATION.REQUIRED' | translate}} + +
{{'LANGUAGE-EDITOR.FIELDS.PAYLOAD' | translate}} diff --git a/dmp-frontend/src/app/ui/admin/language/editor/language-editor.component.ts b/dmp-frontend/src/app/ui/admin/language/editor/language-editor.component.ts index 96c640b95..d7f66a1ff 100644 --- a/dmp-frontend/src/app/ui/admin/language/editor/language-editor.component.ts +++ b/dmp-frontend/src/app/ui/admin/language/editor/language-editor.component.ts @@ -27,7 +27,6 @@ import { map, takeUntil } from 'rxjs/operators'; import { LanguageEditorResolver } from './language-editor.resolver'; import { LanguageEditorService } from './language-editor.service'; import { LanguageEditorModel } from './language-editor.model'; -import { MatChipEditedEvent, MatChipInputEvent } from '@angular/material/chips'; import { LanguageV2Service } from '@app/core/services/language/language-v2.service'; @@ -43,6 +42,7 @@ export class LanguageEditorComponent extends BaseEditor this.availableLanguageCodes = data.items, + ); } getItem(itemId: Guid, successFunction: (item: Language) => void) { @@ -192,4 +197,13 @@ export class LanguageEditorComponent extends BaseEditor { + this.formGroup.get('payload').patchValue(language.payload); + }); + + } + } diff --git a/dmp-frontend/src/app/ui/supportive-material-editor/supportive-material-editor.component.html b/dmp-frontend/src/app/ui/supportive-material-editor/supportive-material-editor.component.html index e7e5fd698..ad1a281e6 100644 --- a/dmp-frontend/src/app/ui/supportive-material-editor/supportive-material-editor.component.html +++ b/dmp-frontend/src/app/ui/supportive-material-editor/supportive-material-editor.component.html @@ -19,8 +19,8 @@ {{'SUPPORTIVE-MATERIAL-EDITOR.FIELDS.LANGUAGE' | translate}} - - {{vis.name | translate}} + + {{languageCode}} @@ -29,7 +29,7 @@
- + this.availableLanguageCodes = data.items, + ); + } getItem(itemId: Guid, successFunction: (item: SupportiveMaterial) => void) { this.supportiveMaterialService.getSingle(itemId, SupportiveMaterialEditorResolver.lookupFields())