diff --git a/dmp-frontend/src/app/core/query/description.lookup.ts b/dmp-frontend/src/app/core/query/description.lookup.ts index a850f6ca7..bb5889232 100644 --- a/dmp-frontend/src/app/core/query/description.lookup.ts +++ b/dmp-frontend/src/app/core/query/description.lookup.ts @@ -6,6 +6,8 @@ import { DmpLookup } from './dmp.lookup'; import { DmpUserRole } from '../common/enum/dmp-user-role'; import { DescriptionTag } from '../model/description/description'; import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms'; +import { ReferenceType } from '../model/reference-type/reference-type'; +import { Reference } from '../model/reference/reference'; export class DescriptionLookup extends Lookup implements DescriptionFilter { ids: Guid[]; @@ -24,32 +26,11 @@ export class DescriptionLookup extends Lookup implements DescriptionFilter { associatedDmpIds: Guid[]; //TODO roleInDmp: DmpUserRole[]; //TODO tags: DescriptionTag[]; //TODO + references: ReferenceAndTypeLookup[]; //TODO constructor() { super(); } - - from(formGroup: UntypedFormGroup): void { - if (!formGroup) return; - - this.statuses = formGroup.get("status")?.value ? [formGroup.get("status")?.value] : []; - this.showAllVersions = formGroup.get("showAllVersions")?.value ?? false; - this.roleInDmp = formGroup.get("role")?.value ? [formGroup.get("role")?.value] : []; - this.tags = formGroup.get("tags")?.value ?? []; - this.associatedDmpIds = formGroup.get("associatedDmpIds")?.value ?? []; - this.descriptionTemplateIds = formGroup.get("descriptionTemplates")?.value ?? []; - } - - buildForm(): UntypedFormGroup { - return (new UntypedFormBuilder()).group({ - status: [this.statuses?.length > 0 ? this.statuses[0] : null], - role: [this.roleInDmp?.length > 0 ? this.roleInDmp[0] : null], - showAllVersions: [this.showAllVersions ?? false], - descriptionTemplates: [this.descriptionTemplateIds], - associatedDmpIds: [this.associatedDmpIds], - tags: [this.tags], - }); - } } export interface DescriptionFilter { @@ -63,11 +44,15 @@ export interface DescriptionFilter { dmpSubQuery: DmpLookup; isActive: IsActive[]; statuses: DescriptionStatus[]; - showAllVersions: boolean; //TODO - descriptionTemplateIds: Guid[]; //TODO - associatedDmpIds: Guid[]; //TODO - roleInDmp: DmpUserRole[]; //TODO - tags: DescriptionTag[]; //TODO - - //TODO: dynamic reference-types + showAllVersions: boolean; + descriptionTemplateIds: Guid[]; + associatedDmpIds: Guid[]; + roleInDmp: DmpUserRole[]; + tags: DescriptionTag[]; + references: ReferenceAndTypeLookup[]; +} + +export interface ReferenceAndTypeLookup { + referenceType: ReferenceType; + references: Reference[]; } 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 d4c22fd73..e0196f0a2 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 @@ -103,6 +103,19 @@ export class ReferenceTypeService { valueAssign: (item: ReferenceType) => item.id, }; + public getSingleAutocompleteConfiguration(excludedIds: Guid[] = null): SingleAutoCompleteConfiguration { + return { + initialItems: (data?: any) => this.query(this.buildAutocompleteLookup(null, excludedIds)).pipe(map(x => x.items)), + filterFn: (searchQuery: string, data?: any) => this.query(this.buildAutocompleteLookup(searchQuery, excludedIds)).pipe(map(x => x.items)), + getSelectedItem: (selectedItem: ReferenceType) => this.query(this.buildAutocompleteLookup(null, null, [selectedItem.id])).pipe(map(x => x.items[0])), + displayFn: (item: ReferenceType) => item.name, + titleFn: (item: ReferenceType) => item.name, + valueAssign: (item: ReferenceType) => item, + uniqueAssign: (item: ReferenceType) => JSON.stringify(item), + loadDataOnStart: false + }; + } + private buildAutocompleteLookup(like?: string, excludedIds?: Guid[], ids?: Guid[]): ReferenceTypeLookup { const lookup: ReferenceTypeLookup = new ReferenceTypeLookup(); lookup.page = { size: 100, offset: 0 }; 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 6ef2343e2..da939c27f 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 @@ -1,10 +1,9 @@ import { Component, OnInit, ViewChild } from '@angular/core'; -import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms'; +import { FormBuilder, UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { MatPaginator } from '@angular/material/paginator'; import { MatSort } from '@angular/material/sort'; import { ActivatedRoute, Params, Router } from '@angular/router'; -import { DescriptionStatus } from '@app/core/common/enum/description-status'; import { IsActive } from '@app/core/common/enum/is-active.enum'; import { AppPermission } from '@app/core/common/enum/permission.enum'; import { RecentActivityOrder } from '@app/core/common/enum/recent-activity-order'; @@ -15,7 +14,7 @@ import { Dmp, DmpDescriptionTemplate, DmpUser } from '@app/core/model/dmp/dmp'; import { DmpReference } from '@app/core/model/dmp/dmp-reference'; import { ReferenceType } from '@app/core/model/reference-type/reference-type'; import { Reference } from '@app/core/model/reference/reference'; -import { DescriptionFilter, DescriptionLookup } from '@app/core/query/description.lookup'; +import { DescriptionLookup } from '@app/core/query/description.lookup'; import { AuthService } from '@app/core/services/auth/auth.service'; import { DescriptionService } from '@app/core/services/description/description.service'; import { AnalyticsService } from '@app/core/services/matomo/analytics-service'; @@ -105,6 +104,7 @@ export class DescriptionListingComponent extends BaseListingComponent(x => x.label)) : this.toDescSortField(nameof(x => x.updatedAt)); @@ -213,7 +213,6 @@ export class DescriptionListingComponent extends BaseListingComponent { + if (result) { + this.updateDataFn(result); } }); } updateDataFn(filterForm: UntypedFormGroup): void { - let testLookup = this.lookup; - testLookup.from(filterForm); - // console.log('testLookup: ', testLookup); + this.lookup = this._patchLookupFromForm(this.lookup, filterForm); + this.filterChanged(this.lookup) // this.lookup.from(filterForm); // this.refresh(this.lookup); } @@ -341,7 +344,7 @@ export class DescriptionListingComponent extends BaseListingComponent reference.referenceType != null && reference.references?.length > 0) ?? null; + + return lookup; + } + + _buildFormFromLookup(lookup: DescriptionLookup): UntypedFormGroup { + + const formArray = this.formBuilder.array([]) as UntypedFormArray; + lookup.references?.forEach(reference => { + + let referenceForm = this.formBuilder.group({ + referenceType: reference.referenceType, + references: reference.references?.length > 0 ? [reference.references] : [] + }); + formArray.push(referenceForm); + }); + + return (new UntypedFormBuilder()).group({ + status: [lookup.statuses?.length > 0 ? lookup.statuses[0] : null], + role: [lookup.roleInDmp?.length > 0 ? lookup.roleInDmp[0] : null], + showAllVersions: [lookup.showAllVersions ?? false], + descriptionTemplates: [lookup.descriptionTemplateIds], + associatedDmpIds: [lookup.associatedDmpIds], + tags: [lookup.tags], + references: formArray + }); + } + private get _lookupFields(): string[] { return [ nameof(x => x.id), diff --git a/dmp-frontend/src/app/ui/description/listing/filtering/description-filter-dialogue/description-filter-dialog.component.ts b/dmp-frontend/src/app/ui/description/listing/filtering/description-filter-dialogue/description-filter-dialog.component.ts index 48f37cb96..50371c07a 100644 --- a/dmp-frontend/src/app/ui/description/listing/filtering/description-filter-dialogue/description-filter-dialog.component.ts +++ b/dmp-frontend/src/app/ui/description/listing/filtering/description-filter-dialogue/description-filter-dialog.component.ts @@ -21,7 +21,6 @@ export class DescriptionFilterDialogComponent implements OnInit { isPublic: boolean, status: Number, filterForm: UntypedFormGroup, - updateDataFn: Function, } ) { } @@ -39,6 +38,6 @@ export class DescriptionFilterDialogComponent implements OnInit { } onFilterChanged(formGroup: UntypedFormGroup) { - this.data.updateDataFn(formGroup); + this.dialogRef.close(formGroup); } } diff --git a/dmp-frontend/src/app/ui/description/listing/filtering/description-filter.component.html b/dmp-frontend/src/app/ui/description/listing/filtering/description-filter.component.html index e8903aada..21a989e09 100644 --- a/dmp-frontend/src/app/ui/description/listing/filtering/description-filter.component.html +++ b/dmp-frontend/src/app/ui/description/listing/filtering/description-filter.component.html @@ -7,47 +7,20 @@
- - -
{{ 'DESCRIPTION-LISTING.FILTERS.STATUS.NAME' | translate}}
- {{ 'DESCRIPTION-LISTING.FILTERS.STATUS.TYPES.ANY' | translate }} - {{ 'DESCRIPTION-LISTING.FILTERS.STATUS.TYPES.DRAFT' | translate }} - {{ 'DESCRIPTION-LISTING.FILTERS.STATUS.TYPES.FINALIZED' | translate }} + {{ 'DESCRIPTION-LISTING.FILTERS.STATUS.TYPES.ANY' | translate }} + {{ 'DESCRIPTION-LISTING.FILTERS.STATUS.TYPES.DRAFT' | translate }} + {{ 'DESCRIPTION-LISTING.FILTERS.STATUS.TYPES.FINALIZED' | translate }} + {{ 'DESCRIPTION-LISTING.FILTERS.STATUS.TYPES.CANCELED' | translate }}
- - - - -
{{'DESCRIPTION-LISTING.FILTERS.RELATED-DESCRIPTION-TEMPLATES.NAME' | translate}}
@@ -72,62 +45,27 @@ -
+ - - - - - - - - -
{{'DESCRIPTION-LISTING.FILTERS.ROLE.NAME' | translate }}
- {{ 'DESCRIPTION-LISTING.FILTERS.ROLE.TYPES.ANY' | translate }} + {{ 'DESCRIPTION-LISTING.FILTERS.ROLE.TYPES.ANY' | translate }} {{ 'DESCRIPTION-LISTING.FILTERS.ROLE.TYPES.OWNER' | translate }} - {{ 'DESCRIPTION-LISTING.FILTERS.ROLE.TYPES.MEMBER' | translate }} + {{ 'DESCRIPTION-LISTING.FILTERS.ROLE.TYPES.VIEWER' | translate }} + {{ 'DESCRIPTION-LISTING.FILTERS.ROLE.TYPES.DESCRIPTION-CONTRIBUTOR' | translate }} + {{ 'DESCRIPTION-LISTING.FILTERS.ROLE.TYPES.REVIEWER' | translate }}
- - - -
{{'DESCRIPTION-LISTING.FILTERS.TAGS.NAME' | translate }}
@@ -139,52 +77,56 @@
- - + +
+
{{'DESCRIPTION-LISTING.FILTERS.REFERENCE-TYPES.NAME' | translate }}
+ + + {{ referenceForm.get('referenceTypeId')?.value | json }} +
+
+ + {{'DESCRIPTION-LISTING.FILTERS.REFERENCE-TYPES.REFERENCE-TYPE' | translate}} + + + +
+
+
+ {{ referenceForm.get('references')?.value | json}} +
+ + {{'DESCRIPTION-LISTING.FILTERS.REFERENCE-TYPES.REFERENCE' | translate}} + + + +
+
+ + +
+ +
+
+ + + {{'DESCRIPTION-LISTING.ACTIONS.ADD-REFERENCE-TYPE' | translate}} + +
+
+
+ + +
+ +
- - diff --git a/dmp-frontend/src/app/ui/description/listing/filtering/description-filter.component.ts b/dmp-frontend/src/app/ui/description/listing/filtering/description-filter.component.ts index 0732d1b16..553eca352 100644 --- a/dmp-frontend/src/app/ui/description/listing/filtering/description-filter.component.ts +++ b/dmp-frontend/src/app/ui/description/listing/filtering/description-filter.component.ts @@ -1,15 +1,21 @@ import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core'; -import { UntypedFormGroup } from '@angular/forms'; +import { FormBuilder, UntypedFormArray, UntypedFormGroup } from '@angular/forms'; import { DescriptionStatus } from '@app/core/common/enum/description-status'; +import { ReferenceType } from '@app/core/model/reference-type/reference-type'; +import { Reference } from '@app/core/model/reference/reference'; import { AuthService } from '@app/core/services/auth/auth.service'; import { DescriptionTemplateTypeService } from '@app/core/services/description-template-type/description-template-type.service'; import { DmpService } from '@app/core/services/dmp/dmp.service'; +import { ReferenceTypeService } from '@app/core/services/reference-type/reference-type.service'; +import { ReferenceService } from '@app/core/services/reference/reference.service'; import { TagService } from '@app/core/services/tag/tag.service'; import { EnumUtils } from '@app/core/services/utilities/enum-utils.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 { BaseCriteriaComponent } from '@app/ui/misc/criteria/base-criteria.component'; import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model'; +import { Guid } from '@common/types/guid'; import { takeUntil } from 'rxjs/operators'; @Component({ @@ -29,18 +35,13 @@ export class DescriptionFilterComponent extends BaseCriteriaComponent implements statuses = DescriptionStatus; options: UntypedFormGroup; + selectedReferenceTypes: Guid[]; - get tagAutoCompleteConfiguration(): MultipleAutoCompleteConfiguration { - return this.tagService.multipleAutocompleteConfiguration; - }; - - get descriptionTemplateAutoCompleteConfiguration(): MultipleAutoCompleteConfiguration { - return this.descriptionTemplateTypeService.getMultipleAutoCompleteSearchConfiguration(); - }; - - get dmpAutoCompleteConfiguration(): MultipleAutoCompleteConfiguration { - return this.dmpService.multipleAutocompleteConfiguration; - }; + descriptionTemplateAutoCompleteConfiguration: MultipleAutoCompleteConfiguration; + dmpAutoCompleteConfiguration: MultipleAutoCompleteConfiguration; + tagAutoCompleteConfiguration: MultipleAutoCompleteConfiguration; + referenceTypeAutocompleteConfiguration: SingleAutoCompleteConfiguration; + referenceAutocompleteConfiguration: Map; constructor( public enumUtils: EnumUtils, @@ -48,10 +49,12 @@ export class DescriptionFilterComponent extends BaseCriteriaComponent implements private descriptionTemplateTypeService: DescriptionTemplateTypeService, private dmpService: DmpService, private tagService: TagService, + private referenceService: ReferenceService, + private referenceTypeService: ReferenceTypeService, + private formBuilder: FormBuilder, ) { super(new ValidationErrorModel()); } - ngOnInit() { super.ngOnInit(); @@ -59,28 +62,88 @@ export class DescriptionFilterComponent extends BaseCriteriaComponent implements ngOnChanges(changes: SimpleChanges): void { if (changes['filterFormGroup']) { + + this.selectedReferenceTypes = this._buildSelectedReferenceTypes(this.filterFormGroup); + this.descriptionTemplateAutoCompleteConfiguration = this.descriptionTemplateTypeService.getMultipleAutoCompleteSearchConfiguration(); + this.dmpAutoCompleteConfiguration = this.dmpService.multipleAutocompleteConfiguration; + this.tagAutoCompleteConfiguration = this.tagService.multipleAutocompleteConfiguration; + this.referenceTypeAutocompleteConfiguration = this.getReferenceTypeAutocompleteConfiguration(this.selectedReferenceTypes); + this.referenceAutocompleteConfiguration = new Map(); + this.formGroup = this.filterFormGroup; - this.formGroup.get('status')?.valueChanges - .pipe(takeUntil(this._destroyed)) - .subscribe(x => this.controlModified()); - this.formGroup.get('role')?.valueChanges - .pipe(takeUntil(this._destroyed)) - .subscribe(x => this.controlModified()); - this.formGroup.get('descriptionTemplates')?.valueChanges - .pipe(takeUntil(this._destroyed)) - .subscribe(x => this.controlModified()); - this.formGroup.get('associatedDmpIds')?.valueChanges - .pipe(takeUntil(this._destroyed)) - .subscribe(x => this.controlModified()); - this.formGroup.get('showAllVersions')?.valueChanges - .pipe(takeUntil(this._destroyed)) - .subscribe(x => this.controlModified()); - this.formGroup.get('tags')?.valueChanges - .pipe(takeUntil(this._destroyed)) - .subscribe(x => this.controlModified()); + const formArray = this.formGroup.get('references') as UntypedFormArray; + formArray?.controls.forEach(control => { + + let referenceTypeId: string = control.get('referenceType')?.value?.id; + if (referenceTypeId && referenceTypeId != '') { + let excludedReferences = control.get('references')?.value ?? []; + let referenceAutocomplete = this.getReferenceAutocompleteConfiguration(Guid.parse(referenceTypeId), excludedReferences); + this.referenceAutocompleteConfiguration.set(referenceTypeId, referenceAutocomplete); + } + + control.get('referenceType')?.valueChanges.pipe(takeUntil(this._destroyed)) + .subscribe(referenceType => { + this.selectedReferenceTypes = this._buildSelectedReferenceTypes(this.formGroup); + this.referenceTypeAutocompleteConfiguration = this.getReferenceTypeAutocompleteConfiguration(this.selectedReferenceTypes); + + if (referenceTypeId && referenceTypeId != '') { + let excludedReferences = control.get('references')?.value ?? []; + let referenceAutocomplete = this.getReferenceAutocompleteConfiguration(Guid.parse(referenceTypeId), excludedReferences); + this.referenceAutocompleteConfiguration.set(referenceTypeId, referenceAutocomplete); + } + control.get('references')?.reset() + }); + + control.get('references')?.valueChanges.pipe(takeUntil(this._destroyed)) + .subscribe(references => { + let referenceAutocomplete = this.getReferenceAutocompleteConfiguration(Guid.parse(referenceTypeId), references ?? []); + this.referenceAutocompleteConfiguration.set(referenceTypeId, referenceAutocomplete); + }); + }); } } + addReferenceType(): void { + if (!this.formGroup.get('references')) this.formGroup.addControl('references', this.formBuilder.array([])); + + const formArray = this.formGroup.get('references') as UntypedFormArray; + + const referenceForm = this.formBuilder.group({ + referenceType: null, + references: [] + }); + + referenceForm?.get('referenceType')?.valueChanges.pipe(takeUntil(this._destroyed)) + .subscribe((reference: ReferenceType) => { + this.selectedReferenceTypes = this._buildSelectedReferenceTypes(this.formGroup); + this.referenceTypeAutocompleteConfiguration = this.getReferenceTypeAutocompleteConfiguration(this.selectedReferenceTypes); + referenceForm.get('references')?.reset(); + + if (reference?.id) { + let referenceAutocomplete = this.getReferenceAutocompleteConfiguration(reference.id, []); + this.referenceAutocompleteConfiguration.set(reference?.id?.toString(), referenceAutocomplete); + } + }); + + referenceForm.get('references')?.valueChanges.pipe(takeUntil(this._destroyed)) + .subscribe(references => { + + let referenceTypeId = references?.filter(reference => reference?.type?.id != null)?.first?.type?.id ?? null; + if (!referenceTypeId) return; + + let referenceAutocomplete = this.getReferenceAutocompleteConfiguration(referenceTypeId, references ?? []); + this.referenceAutocompleteConfiguration.set(referenceTypeId, referenceAutocomplete); + }); + + formArray.push(referenceForm); + } + + deleteRow(index: number): void { + const formArray = this.formGroup.get('references') as UntypedFormArray; + + formArray.removeAt(index); + } + controlModified(): void { this.clearErrorModel(); this.filterChanged.emit(this.formGroup); @@ -94,4 +157,29 @@ export class DescriptionFilterComponent extends BaseCriteriaComponent implements isAuthenticated(): boolean { return this.authentication.currentAccountIsAuthenticated(); } + + getReferenceTypeAutocompleteConfiguration(selectedReferenceTypes: Guid[]): SingleAutoCompleteConfiguration { + return this.referenceTypeService.getSingleAutocompleteConfiguration(selectedReferenceTypes); + }; + + selectReferenceAutocompleteConfiguration(referenceTypeId: string): MultipleAutoCompleteConfiguration { + return this.referenceAutocompleteConfiguration.get(referenceTypeId); + }; + + getReferenceAutocompleteConfiguration(referenceTypeId: Guid, excludedIds: Reference[]): MultipleAutoCompleteConfiguration { + let autocomplete = this.referenceService.getMultipleAutoCompleteSearchConfiguration(referenceTypeId, excludedIds); + return autocomplete; + }; + + private _buildSelectedReferenceTypes(formGroup: UntypedFormGroup): Guid[] { + const formArray = formGroup.get('references') as UntypedFormArray; + + let selectedReferenceTypes = []; + formArray.controls.forEach(control => { + let id = control.get('referenceType')?.value?.id; + if (id) selectedReferenceTypes.push(Guid.parse(id)); + }); + + return selectedReferenceTypes; + } } diff --git a/dmp-frontend/src/assets/i18n/baq.json b/dmp-frontend/src/assets/i18n/baq.json index 204e5d8d0..896dee0ee 100644 --- a/dmp-frontend/src/assets/i18n/baq.json +++ b/dmp-frontend/src/assets/i18n/baq.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Hutsik dago oraindik.", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,9 +883,16 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" diff --git a/dmp-frontend/src/assets/i18n/de.json b/dmp-frontend/src/assets/i18n/de.json index 20fa7eba2..320009b6a 100644 --- a/dmp-frontend/src/assets/i18n/de.json +++ b/dmp-frontend/src/assets/i18n/de.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Nothing here yet.", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,9 +883,16 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index e99f77ffb..874bd01ed 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Nothing here yet.", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,12 +883,19 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" + }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" } } }, diff --git a/dmp-frontend/src/assets/i18n/es.json b/dmp-frontend/src/assets/i18n/es.json index eeb1303b9..018bd1374 100644 --- a/dmp-frontend/src/assets/i18n/es.json +++ b/dmp-frontend/src/assets/i18n/es.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Nada todavía por aquí.", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,9 +883,16 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" diff --git a/dmp-frontend/src/assets/i18n/gr.json b/dmp-frontend/src/assets/i18n/gr.json index e6b733716..44f18da55 100644 --- a/dmp-frontend/src/assets/i18n/gr.json +++ b/dmp-frontend/src/assets/i18n/gr.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Τίποτα ακόμα εδώ.", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,9 +883,16 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" diff --git a/dmp-frontend/src/assets/i18n/hr.json b/dmp-frontend/src/assets/i18n/hr.json index e526d8cd0..bc7bc1f2d 100644 --- a/dmp-frontend/src/assets/i18n/hr.json +++ b/dmp-frontend/src/assets/i18n/hr.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Ništa još nije dostupno.", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,9 +883,16 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" diff --git a/dmp-frontend/src/assets/i18n/pl.json b/dmp-frontend/src/assets/i18n/pl.json index c8dc56d8f..859842da9 100644 --- a/dmp-frontend/src/assets/i18n/pl.json +++ b/dmp-frontend/src/assets/i18n/pl.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Jeszcze nic tu nie ma", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,9 +883,16 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" diff --git a/dmp-frontend/src/assets/i18n/pt.json b/dmp-frontend/src/assets/i18n/pt.json index 5decc5da4..5957fb5f2 100644 --- a/dmp-frontend/src/assets/i18n/pt.json +++ b/dmp-frontend/src/assets/i18n/pt.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Sem informação", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,9 +883,16 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" diff --git a/dmp-frontend/src/assets/i18n/sk.json b/dmp-frontend/src/assets/i18n/sk.json index fe48a0687..0691c396b 100644 --- a/dmp-frontend/src/assets/i18n/sk.json +++ b/dmp-frontend/src/assets/i18n/sk.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Zatiaľ prázdne.", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,16 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -883,6 +888,11 @@ "MEMBER": "Member" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" diff --git a/dmp-frontend/src/assets/i18n/sr.json b/dmp-frontend/src/assets/i18n/sr.json index 7a74c4ec6..2a59390f0 100644 --- a/dmp-frontend/src/assets/i18n/sr.json +++ b/dmp-frontend/src/assets/i18n/sr.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Još uvek ništa nije dostupno.", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,9 +883,16 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags" diff --git a/dmp-frontend/src/assets/i18n/tr.json b/dmp-frontend/src/assets/i18n/tr.json index ce4f0eda4..9f2ec6f2e 100644 --- a/dmp-frontend/src/assets/i18n/tr.json +++ b/dmp-frontend/src/assets/i18n/tr.json @@ -837,6 +837,7 @@ "DMP": "Plan", "EMPTY-LIST": "Burada Henüz Bir Şey Yok.", "ACTIONS": { + "ADD-REFERENCE-TYPE": "Add a Reference Type", "ADD-DESCRIPTION": "Add Description", "TAKE-A-TOUR": "Do you need help? Take a tour..", "LOAD-MORE": "Load more", @@ -858,12 +859,14 @@ }, "FILTERS": { "NAME": "Filters", + "APPLY-FILTERS": "Apply filters", "STATUS": { "NAME": "Status", "TYPES": { "ANY": "Any", "DRAFT": "Draft", - "FINALIZED": "Finalized" + "FINALIZED": "Finalized", + "CANCELED": "Canceled" } }, "RELATED-DESCRIPTION-TEMPLATES": { @@ -880,9 +883,16 @@ "TYPES": { "ANY": "Any", "OWNER": "Owner", - "MEMBER": "Member" + "VIEWER": "Viewer", + "DESCRIPTION-CONTRIBUTOR": "Description Contributor", + "REVIEWER": "Reviewer" } }, + "REFERENCE-TYPES": { + "NAME": "Reference Types", + "REFERENCE-TYPE": "Select Reference Type", + "REFERENCE": "Select Reference" + }, "TAGS": { "NAME": "Tags", "PLACEHOLDER": "Select Tags"