From 3fb05c2e6eb205af86f248954e5e8b891ed4e073 Mon Sep 17 00:00:00 2001 From: Edi Cziszter Date: Thu, 20 Jan 2022 13:12:18 +0200 Subject: [PATCH] dossier and file attributes dialog in the same component --- .../src/app/modules/admin/admin.module.ts | 4 +- ...rm-delete-attribute-dialog.component.html} | 2 +- ...rm-delete-attribute-dialog.component.scss} | 0 ...nfirm-delete-attribute-dialog.component.ts | 64 +++++++++++++++++++ ...-delete-file-attribute-dialog.component.ts | 45 ------------- ...ier-attributes-listing-screen.component.ts | 4 +- ...ile-attributes-listing-screen.component.ts | 4 +- .../admin/services/admin-dialog.service.ts | 8 +-- apps/red-ui/src/assets/i18n/en.json | 9 ++- 9 files changed, 81 insertions(+), 59 deletions(-) rename apps/red-ui/src/app/modules/admin/dialogs/{confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.html => confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html} (96%) rename apps/red-ui/src/app/modules/admin/dialogs/{confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.scss => confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.scss} (100%) create mode 100644 apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.ts delete mode 100644 apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.ts diff --git a/apps/red-ui/src/app/modules/admin/admin.module.ts b/apps/red-ui/src/app/modules/admin/admin.module.ts index 81a7a91b0..8f417aab5 100644 --- a/apps/red-ui/src/app/modules/admin/admin.module.ts +++ b/apps/red-ui/src/app/modules/admin/admin.module.ts @@ -17,7 +17,7 @@ import { ColorPickerModule } from 'ngx-color-picker'; import { AddEditFileAttributeDialogComponent } from './dialogs/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component'; import { AddEditDossierTemplateDialogComponent } from './dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component'; import { AddEditDictionaryDialogComponent } from './dialogs/add-edit-dictionary-dialog/add-edit-dictionary-dialog.component'; -import { ConfirmDeleteFileAttributeDialogComponent } from './dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component'; +import { ConfirmDeleteAttributeDialogComponent } from './dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component'; import { EditColorDialogComponent } from './dialogs/edit-color-dialog/edit-color-dialog.component'; import { ComboChartComponent, ComboSeriesVerticalComponent } from './components/combo-chart'; import { NgxChartsModule } from '@swimlane/ngx-charts'; @@ -53,7 +53,7 @@ const dialogs = [ AddEditDossierTemplateDialogComponent, AddEditDictionaryDialogComponent, AddEditFileAttributeDialogComponent, - ConfirmDeleteFileAttributeDialogComponent, + ConfirmDeleteAttributeDialogComponent, EditColorDialogComponent, SmtpAuthDialogComponent, AddEditUserDialogComponent, diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html similarity index 96% rename from apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.html rename to apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html index d90c5f201..ad958d2ae 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html @@ -5,7 +5,7 @@ | translate : { type: type, - name: fileAttribute?.label + name: attribute?.label } }} diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.scss b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.scss similarity index 100% rename from apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.scss rename to apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.scss diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.ts new file mode 100644 index 000000000..f6a7db47d --- /dev/null +++ b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.ts @@ -0,0 +1,64 @@ +import { Component, Inject } from '@angular/core'; +import { DossierAttributeConfig, FileAttributeConfig } from '@red/domain'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; + +const isFileAttributeConfig = (value: DossierAttributeConfig | FileAttributeConfig): value is FileAttributeConfig => { + return value instanceof FileAttributeConfig; +}; + +interface CheckBox { + value: boolean; + label: string; +} + +@Component({ + selector: 'redaction-confirm-delete-attribute-dialog', + templateUrl: './confirm-delete-attribute-dialog.component.html', + styleUrls: ['./confirm-delete-attribute-dialog.component.scss'], +}) +export class ConfirmDeleteAttributeDialogComponent { + checkboxes: CheckBox[]; + showToast = false; + + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public attribute: FileAttributeConfig | DossierAttributeConfig, + ) { + this.checkboxes = this.checkBoxConfig; + } + + get checkBoxConfig(): CheckBox[] { + return isFileAttributeConfig(this.attribute) + ? [ + { value: false, label: _('confirm-delete-file-attribute.file-impacted-documents') }, + { value: false, label: _('confirm-delete-file-attribute.file-lost-details') }, + { value: false, label: _('confirm-delete-file-attribute.impacted-report') }, + ] + : [ + { value: false, label: _('confirm-delete-file-attribute.dossier-impacted-documents') }, + { value: false, label: _('confirm-delete-file-attribute.dossier-lost-details') }, + { value: false, label: _('confirm-delete-file-attribute.impacted-report') }, + ]; + } + + get valid() { + return this.checkboxes[0].value && this.checkboxes[1].value; + } + + get type(): 'bulk' | 'single' { + return this.attribute ? 'single' : 'bulk'; + } + + deleteFileAttribute() { + if (this.valid) { + this.dialogRef.close(true); + } else { + this.showToast = true; + } + } + + cancel() { + this.dialogRef.close(); + } +} diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.ts deleted file mode 100644 index 1cf2cee1b..000000000 --- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Component, Inject } from '@angular/core'; -import { IFileAttributeConfig } from '@red/domain'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; - -@Component({ - selector: 'redaction-confirm-delete-file-attribute-dialog', - templateUrl: './confirm-delete-file-attribute-dialog.component.html', - styleUrls: ['./confirm-delete-file-attribute-dialog.component.scss'], -}) -export class ConfirmDeleteFileAttributeDialogComponent { - fileAttribute: IFileAttributeConfig; - checkboxes = [ - { value: false, label: _('confirm-delete-file-attribute.impacted-documents') }, - { value: false, label: _('confirm-delete-file-attribute.lost-details') }, - ]; - showToast = false; - - constructor( - public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: IFileAttributeConfig, - ) { - this.fileAttribute = data; - } - - get valid() { - return this.checkboxes[0].value && this.checkboxes[1].value; - } - - get type(): 'bulk' | 'single' { - return this.fileAttribute ? 'single' : 'bulk'; - } - - deleteFileAttribute() { - if (this.valid) { - this.dialogRef.close(true); - } else { - this.showToast = true; - } - } - - cancel() { - this.dialogRef.close(); - } -} diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts index 490b4515e..7c10f6897 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-attributes-listing/dossier-attributes-listing-screen.component.ts @@ -53,8 +53,8 @@ export class DossierAttributesListingScreenComponent extends ListingComponent { + openConfirmDeleteAttributeDialog($event: MouseEvent, dossierAttribute?: DossierAttributeConfig) { + this._dialogService.openDialog('deleteAttribute', $event, dossierAttribute, async () => { this._loadingService.start(); const ids = dossierAttribute ? [dossierAttribute.id] : this.listingService.selected.map(item => item.id); await firstValueFrom(this._dossierAttributesService.delete(ids)); diff --git a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts index d94729b50..a1b0a7d20 100644 --- a/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/file-attributes-listing/file-attributes-listing-screen.component.ts @@ -88,8 +88,8 @@ export class FileAttributesListingScreenComponent extends ListingComponent { + openConfirmDeleteAttributeDialog($event: MouseEvent, fileAttribute?: FileAttributeConfig) { + this._dialogService.openDialog('deleteAttribute', $event, fileAttribute, async () => { this._loadingService.start(); const dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId; if (fileAttribute) { diff --git a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts index 6d161fb42..41548f39a 100644 --- a/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts +++ b/apps/red-ui/src/app/modules/admin/services/admin-dialog.service.ts @@ -3,7 +3,7 @@ import { MatDialog } from '@angular/material/dialog'; import { AddEditFileAttributeDialogComponent } from '../dialogs/add-edit-file-attribute-dialog/add-edit-file-attribute-dialog.component'; import { AddEditDictionaryDialogComponent } from '../dialogs/add-edit-dictionary-dialog/add-edit-dictionary-dialog.component'; import { AddEditDossierTemplateDialogComponent } from '../dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component'; -import { ConfirmDeleteFileAttributeDialogComponent } from '../dialogs/confirm-delete-file-attribute-dialog/confirm-delete-file-attribute-dialog.component'; +import { ConfirmDeleteAttributeDialogComponent } from '../dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component'; import { EditColorDialogComponent } from '../dialogs/edit-color-dialog/edit-color-dialog.component'; import { SmtpAuthDialogComponent } from '../dialogs/smtp-auth-dialog/smtp-auth-dialog.component'; import { AddEditUserDialogComponent } from '../dialogs/add-edit-user-dialog/add-edit-user-dialog.component'; @@ -19,7 +19,7 @@ type DialogType = | 'addEditDictionary' | 'editColor' | 'addEditFileAttribute' - | 'deleteFileAttribute' + | 'deleteAttribute' | 'importFileAttributes' | 'addEditUser' | 'deleteUsers' @@ -48,8 +48,8 @@ export class AdminDialogService extends DialogService { component: AddEditFileAttributeDialogComponent, dialogConfig: { autoFocus: true }, }, - deleteFileAttribute: { - component: ConfirmDeleteFileAttributeDialogComponent, + deleteAttribute: { + component: ConfirmDeleteAttributeDialogComponent, dialogConfig: { disableClose: false }, }, importFileAttributes: { diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index a9c81135f..a11542768 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -395,11 +395,14 @@ "confirm-delete-file-attribute": { "cancel": "Keep {type, select, single{Attribute} bulk{Attributes} other{}}", "delete": "Delete {type, select, single{Attribute} bulk{Attributes} other{}}", - "impacted-documents": "All documents {type, select, single{it is} bulk{they are} other{}} used on will be impacted", - "lost-details": "All inputted details on the documents will be lost", + "file-impacted-documents": "All documents {type, select, single{it is} bulk{they are} other{}} used on will be impacted", + "dossier-impacted-documents": "All dossiers based on this template will be affected", + "file-lost-details": "All inputted details on the documents will be lost", + "dossier-lost-details": "All values for this attribute will be lost", "title": "Delete {type, select, single{{name}} bulk{File Attributes} other{}}", "toast-error": "Please confirm that you understand the ramifications of your action!", - "warning": "Warning: this cannot be undone!" + "warning": "Warning: this cannot be undone!", + "impacted-report": "<#reports> reports use the placeholder for this attribute and need to be adjusted" }, "confirm-delete-users": { "cancel": "Keep {usersCount, plural, one{User} other{Users}}",