diff --git a/src/frontend/app/notes/notes-list.component.html b/src/frontend/app/notes/notes-list.component.html index 8594fa8a2abd94e4e09852145131dc295af710f8..b33a27d1360f0ca5b47ee12742d29e3220ac40f9 100644 --- a/src/frontend/app/notes/notes-list.component.html +++ b/src/frontend/app/notes/notes-list.component.html @@ -13,6 +13,11 @@ <mat-card-subtitle>{{note.entity_label}}</mat-card-subtitle> <mat-card-subtitle title='{{note.creation_date | fullDate}}' class="dateNote">{{note.creation_date | timeAgo}}</mat-card-subtitle> + <mat-card-subtitle *ngIf="note.user_id == headerService.user.id" class="removeNote"> + <button matSuffix mat-icon-button title='{{lang.removeNote}}' (click)="removeNote(note)"> + <mat-icon fontSet="far" fontIcon="fa-trash-alt fa-2x"></mat-icon> + </button> + </mat-card-subtitle> </mat-card-header> <mat-card-content> <p class="noteTextContent"> diff --git a/src/frontend/app/notes/notes-list.component.scss b/src/frontend/app/notes/notes-list.component.scss index b114542d7df3d50fddd61b1cce670fb41bd98e14..2f52bd4f41ae2358c48390d0e12479a08e597f6f 100644 --- a/src/frontend/app/notes/notes-list.component.scss +++ b/src/frontend/app/notes/notes-list.component.scss @@ -46,6 +46,15 @@ color: $primary; } +.removeNote { + position: absolute; + font-size: 12px; + margin: 0; + top: 22px; + color: red; + right: 0px; +} + .noteTextContent { white-space: pre-line; padding: 30px; diff --git a/src/frontend/app/notes/notes.component.ts b/src/frontend/app/notes/notes.component.ts index d13baca84509376705e8fa51ecb4878c5435d79b..a76ddf16eca29f85ffaeafb1e12df40ea55dfc77 100644 --- a/src/frontend/app/notes/notes.component.ts +++ b/src/frontend/app/notes/notes.component.ts @@ -2,8 +2,11 @@ import { Component, Input, OnInit, EventEmitter, Output } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { LANG } from '../translate.component'; import { NotificationService } from '../notification.service'; -import { tap, finalize, catchError } from 'rxjs/operators'; +import { tap, finalize, catchError, exhaustMap, filter } from 'rxjs/operators'; import { of } from 'rxjs'; +import { HeaderService } from '../../service/header.service'; +import { ConfirmComponent } from '../../plugins/modal/confirm.component'; +import { MatDialogRef, MatDialog } from '@angular/material'; @Component({ selector: 'app-notes-list', @@ -25,9 +28,13 @@ export class NotesListComponent implements OnInit { @Output('reloadBadgeNotes') reloadBadgeNotes = new EventEmitter<string>(); + dialogRef: MatDialogRef<any>; + constructor( public http: HttpClient, - private notify: NotificationService + private notify: NotificationService, + private headerService: HeaderService, + public dialog: MatDialog ) { } ngOnInit(): void { @@ -56,4 +63,20 @@ export class NotesListComponent implements OnInit { this.loading = false; }); } + + removeNote(note: any) { + this.dialogRef = this.dialog.open(ConfirmComponent, { autoFocus: false, disableClose: false, data: { title: this.lang.confirmRemoveNote, msg: this.lang.confirmAction } }); + + this.dialogRef.afterClosed().pipe( + filter((data: string) => data === 'ok'), + exhaustMap(() => this.http.request('DELETE', '../../rest/notes/' + note.id)), + tap(() => { + var index = this.notes.findIndex(elem => elem.id == note.id) + if (index > -1) { + this.notes.splice(index, 1); + } + this.notify.success(this.lang.noteRemoved); + }) + ).subscribe(); + } } diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index 664414be5387ec4b4c7b285852302dc94372037c..f09c432a95f1efaafd845d75da4e3249bca24ad1 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -1470,6 +1470,9 @@ export const LANG_EN = { "visaNote": "Order", "chooseBAN": "Choose a BAN", "click": "Click", + "removeNote" : "Remove note", + "noteRemoved" : "Note deleted", + "confirmRemoveNote" : "Note deletion", "inSignatureBook_doc" : "Put the main document in signature book", "inShipping_doc" : "Put the main document in send Maileva", "preRequisiteMissing": "Prerequisite missing for OnlyOffice : netcat", diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index 6edc1937aa979a1d0080d7ce08c66dbde277e9e6..e39b787dd461a6524330bc9111a111c6cc0d303e 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -1509,6 +1509,9 @@ export const LANG_FR = { "visaNote": "Consigne", "chooseBAN": "Choisissez une BAN", "click": "Cliquez", + "removeNote" : "Supprimer l'annotation", + "noteRemoved" : "Annotation supprimée", + "confirmRemoveNote" : "Suppression de l'annotation", "inSignatureBook_doc" : "Intégrer le document principal au parapheur", "inShipping_doc" : "Intégrer le document principal à l'envoi Maileva", "preRequisiteMissing": "Prérequis manquant pour OnlyOffice : netcat", diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index f53f8ee87f59eb0aa40cacecf4f4a4a4f8cd2844..7a6beaa5e55e17e833da23610e7a2e552056d789 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -1495,6 +1495,9 @@ export const LANG_NL = { "visaNote": "Order", //_TO_TRANSLATE "chooseBAN": "Choose a BAN", //_TO_TRANSLATE "click": "Click", //_TO_TRANSLATE + "removeNote" : "Remove note", //_TO_TRANSLATE + "noteRemoved" : "Note deleted", //_TO_TRANSLATE + "confirmRemoveNote" : "Note deletion", //_TO_TRANSLATE "inSignatureBook_doc" : "Put the main document in signature book", //_TO_TRANSLATE "inShipping_doc" : "Intégrer le document principal in send Maileva", //_TO_TRANSLATE "preRequisiteMissing": "Prerequisite missing for OnlyOffice : netcat", //_TO_TRANSLATE