From 825a9ea424a220a692eb92ee9275bf2a645c67fe Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Tue, 11 Feb 2020 18:30:42 +0100 Subject: [PATCH] FEAT #12071 TIME 1:20 Front delete note --- .../app/notes/notes-list.component.html | 5 ++++ .../app/notes/notes-list.component.scss | 9 +++++++ src/frontend/app/notes/notes.component.ts | 27 +++++++++++++++++-- src/frontend/lang/lang-en.ts | 3 +++ src/frontend/lang/lang-fr.ts | 3 +++ src/frontend/lang/lang-nl.ts | 3 +++ 6 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/frontend/app/notes/notes-list.component.html b/src/frontend/app/notes/notes-list.component.html index 8594fa8a2ab..b33a27d1360 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 b114542d7df..2f52bd4f41a 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 d13baca8450..a76ddf16eca 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 664414be538..f09c432a95f 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 6edc1937aa9..e39b787dd46 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 f53f8ee87f5..7a6beaa5e55 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 -- GitLab