From c4e74a264ecc94f6d320110e69464274162a1d14 Mon Sep 17 00:00:00 2001 From: Alex ORLUC <alex.orluc@maarch.org> Date: Wed, 22 Jul 2020 08:57:13 +0000 Subject: [PATCH] FEAT #14097 TIME 5 add keyword destination field (cherry picked from commit f001e1ba2f1b7c1932b37d667578247e3beebb0a) --- .../diffusions/diffusions-list.component.ts | 34 +++++++++++++++---- .../indexing-form.component.html | 2 +- .../indexing-form/indexing-form.component.ts | 27 ++++++++++----- 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/src/frontend/app/diffusions/diffusions-list.component.ts b/src/frontend/app/diffusions/diffusions-list.component.ts index 0ebd0f95aa4..61356135b92 100644 --- a/src/frontend/app/diffusions/diffusions-list.component.ts +++ b/src/frontend/app/diffusions/diffusions-list.component.ts @@ -9,6 +9,7 @@ import { of } from 'rxjs'; import { AlertComponent } from '../../plugins/modal/alert.component'; import { MatDialog } from '@angular/material'; import { FunctionsService } from '../../service/functions.service'; +import { HeaderService } from '../../service/header.service'; @Component({ selector: 'app-diffusions-list', @@ -46,6 +47,11 @@ export class DiffusionsListComponent implements OnInit { */ @Input('entityId') entityId: any = null; + /** + * Category identifier to specify the context to load listModel + */ + @Input() categoryId: any = null; + /** * For manage current loaded list */ @@ -85,24 +91,24 @@ export class DiffusionsListComponent implements OnInit { private notify: NotificationService, private renderer: Renderer2, public dialog: MatDialog, - public functions: FunctionsService + public functions: FunctionsService, + private headerService: HeaderService ) { } async ngOnInit(): Promise<void> { await this.initRoles(); - if (this.resId !== null && this.resId != 0 && this.target !== 'redirect') { this.loadListinstance(this.resId); } else if ((this.resId === null || this.resId == 0) && !this.functions.empty(this.entityId)) { - this.loadListModel(this.entityId); + this.loadListModel(this.entityId, false, this.categoryId === 'outgoing'); } this.loading = false; } drop(event: CdkDragDrop<string[]>) { if (event.previousContainer === event.container) { - //moveItemInArray(event.container.data, event.previousIndex, event.currentIndex); + // moveItemInArray(event.container.data, event.previousIndex, event.currentIndex); } else if (event.container.id != 'dest') { transferArrayItem(event.previousContainer.data, event.container.data, @@ -119,19 +125,35 @@ export class DiffusionsListComponent implements OnInit { return true; } - async loadListModel(entityId: number, destResource: boolean = false) { + async loadListModel(entityId: number, destResource: boolean = false, destCurrentUser: boolean = false) { this.loading = true; this.currentEntityId = entityId; this.userDestList = []; const listTemplates: any = await this.getListModel(entityId); this.removeAllItems(); - if (listTemplates.length > 0) { listTemplates[0].forEach((element: any) => { this.diffList[element.item_mode].items.push(element); }); } + + // CASE IF CURRENT USER IS DEST (IN OUTGOING CATEGORY CASE) + if (destCurrentUser && this.headerService.user.entities[0].id === entityId) { + this.diffList['dest'].items = [ + { + item_mode: 'dest', + item_type: 'user', + itemSerialId: this.headerService.user.id, + itemId: '', + itemLabel: `${this.headerService.user.firstname} ${this.headerService.user.lastname}`, + itemSubLabel: this.headerService.user.entities[0].entity_label, + difflist_type: 'entity_id', + process_date: null, + process_comment: null, + } + ]; + } if (this.resId !== null) { const listInstance: any = await this.getListinstance(this.resId); diff --git a/src/frontend/app/indexation/indexing-form/indexing-form.component.html b/src/frontend/app/indexation/indexing-form/indexing-form.component.html index 2dd5a5474f4..1aa758fadad 100644 --- a/src/frontend/app/indexation/indexing-form/indexing-form.component.html +++ b/src/frontend/app/indexation/indexing-form/indexing-form.component.html @@ -186,7 +186,7 @@ <i class="fas fa-check fieldFull" *ngIf="!adminMode && arrFormControl['diffusionList'].valid && !isEmptyField(field)"></i> </div> </div> - <app-diffusions-list #appDiffusionsList [resId]="resId" [entityId]="arrFormControl[field.identifier].value" [diffFormControl]="arrFormControl['diffusionList']" [allowedEntities]="field.allowedEntities" [target]="'indexation'" (triggerEvent)="changeDestination($event,field.allowedEntities)"> + <app-diffusions-list #appDiffusionsList [resId]="resId" [entityId]="arrFormControl[field.identifier].value" [diffFormControl]="arrFormControl['diffusionList']" [allowedEntities]="field.allowedEntities" [target]="'indexation'" [categoryId]="currentCategory" (triggerEvent)="changeDestination($event,field.allowedEntities)"> </app-diffusions-list> <mat-divider></mat-divider> </div> diff --git a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts index 3f640ca998e..9622995c3b2 100755 --- a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts +++ b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts @@ -466,7 +466,15 @@ export class IndexingFormComponent implements OnInit { tap((data: any) => { if (this.adminMode) { let title = ''; - elem.values = data.entities.map((entity: any) => { + elem.values = [ + { + id: '#myPrimaryEntity', + title: this.lang.myPrimaryEntity, + label: `<i class="fa fa-hashtag"></i> ${this.lang.myPrimaryEntity}`, + disabled: false + } + ]; + elem.values = elem.values.concat(data.entities.map((entity: any) => { title = entity.entity_label; for (let index = 0; index < entity.level; index++) { @@ -477,15 +485,18 @@ export class IndexingFormComponent implements OnInit { title: title, label: entity.entity_label, disabled: false - } - }); - + }; + })); } else { let title = ''; - - let defaultVal = data.entities.filter((entity: any) => entity.enabled === true && entity.id === elem.default_value); - elem.default_value = defaultVal.length > 0 ? defaultVal[0].id : null; - this.arrFormControl[elem.identifier].setValue(defaultVal.length > 0 ? defaultVal[0].id : ''); + if (elem.default_value === '#myPrimaryEntity') { + elem.default_value = this.headerService.user.entities[0].id; + this.arrFormControl[elem.identifier].setValue(elem.default_value); + } else { + const defaultVal = data.entities.filter((entity: any) => entity.enabled === true && entity.id === elem.default_value); + elem.default_value = defaultVal.length > 0 ? defaultVal[0].id : null; + this.arrFormControl[elem.identifier].setValue(defaultVal.length > 0 ? defaultVal[0].id : ''); + } elem.values = data.entities.map((entity: any) => { title = entity.entity_label; -- GitLab