From 3fb05c2e6eb205af86f248954e5e8b891ed4e073 Mon Sep 17 00:00:00 2001 From: Edi Cziszter Date: Thu, 20 Jan 2022 13:12:18 +0200 Subject: [PATCH 1/4] 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}}", From e69a6b64bd9d75ba6a9047d5265c96bad405b2c0 Mon Sep 17 00:00:00 2001 From: Edi Cziszter Date: Tue, 25 Jan 2022 21:07:14 +0200 Subject: [PATCH 2/4] get by placeholder method for report templates --- .../dossier-attributes-listing-screen.component.ts | 8 +++++++- apps/red-ui/src/app/services/report-template.service.ts | 5 +++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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 7c10f6897..a9e2ddd5e 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 @@ -16,6 +16,7 @@ import { UserService } from '@services/user.service'; import { DossierAttributeConfig, IDossierAttributeConfig } from '@red/domain'; import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { firstValueFrom } from 'rxjs'; +import { ReportTemplateService } from '../../../../services/report-template.service'; @Component({ templateUrl: './dossier-attributes-listing-screen.component.html', @@ -45,6 +46,7 @@ export class DossierAttributesListingScreenComponent extends ListingComponent { this._loadingService.start(); const ids = dossierAttribute ? [dossierAttribute.id] : this.listingService.selected.map(item => item.id); diff --git a/apps/red-ui/src/app/services/report-template.service.ts b/apps/red-ui/src/app/services/report-template.service.ts index 72083e60e..ac9418e1d 100644 --- a/apps/red-ui/src/app/services/report-template.service.ts +++ b/apps/red-ui/src/app/services/report-template.service.ts @@ -43,6 +43,11 @@ export class ReportTemplateService extends GenericService { return this._getOne([dossierTemplateId], 'placeholders'); } + @Validate() + getTemplatesByPlaceholder(@RequiredParam() dossierTemplateId: string, @RequiredParam() attributeId: string) { + return this._post({ value: attributeId }, `/templates/${dossierTemplateId}`); + } + downloadReportTemplate(dossierTemplateId: string, templateId: string, observe: 'response'): Observable>; downloadReportTemplate(dossierTemplateId: string, templateId: string, observe: 'body'): Observable; @Validate() From b0d088fc7ae602c0fb9a0f31cdaf92b1a34819b4 Mon Sep 17 00:00:00 2001 From: Edi Cziszter Date: Wed, 26 Jan 2022 13:05:31 +0200 Subject: [PATCH 3/4] report count in dialog --- ...irm-delete-attribute-dialog.component.html | 15 +++---- ...nfirm-delete-attribute-dialog.component.ts | 42 ++++++++++++------- ...ier-attributes-listing-screen.component.ts | 7 ++-- ...ile-attributes-listing-screen.component.ts | 12 ++++-- .../app/services/report-template.service.ts | 2 +- apps/red-ui/src/assets/i18n/de.json | 9 ++-- apps/red-ui/src/assets/i18n/en.json | 2 +- 7 files changed, 55 insertions(+), 34 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html index ad958d2ae..a6ac8607a 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-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: attribute?.label + name: data.attribute?.label } }} @@ -20,14 +20,11 @@
- - {{ checkbox.label | translate: { type: type } }} - + + + {{ checkbox.label }} + +
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 index f6a7db47d..bbc92d62c 100644 --- 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 @@ -1,17 +1,21 @@ 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'; +import { TranslateService } from '@ngx-translate/core'; -const isFileAttributeConfig = (value: DossierAttributeConfig | FileAttributeConfig): value is FileAttributeConfig => { - return value instanceof FileAttributeConfig; -}; +const isFileAttributeConfig = (value: DossierAttributeConfig | FileAttributeConfig): value is FileAttributeConfig => + value instanceof FileAttributeConfig; interface CheckBox { value: boolean; label: string; } +interface DialogData { + attribute: FileAttributeConfig | DossierAttributeConfig; + count: number; +} + @Component({ selector: 'redaction-confirm-delete-attribute-dialog', templateUrl: './confirm-delete-attribute-dialog.component.html', @@ -22,32 +26,42 @@ export class ConfirmDeleteAttributeDialogComponent { showToast = false; constructor( + private readonly _translateService: TranslateService, public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public attribute: FileAttributeConfig | DossierAttributeConfig, + @Inject(MAT_DIALOG_DATA) public data: DialogData, ) { this.checkboxes = this.checkBoxConfig; } get checkBoxConfig(): CheckBox[] { - return isFileAttributeConfig(this.attribute) + const checkBoxes = isFileAttributeConfig(this.data.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: this._translateService.instant('confirm-delete-file-attribute.file-impacted-documents', { type: this.type }), + }, + { value: false, label: this._translateService.instant('confirm-delete-file-attribute.file-lost-details') }, ] : [ - { 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') }, + { value: false, label: this._translateService.instant('confirm-delete-file-attribute.dossier-impacted-documents') }, + { value: false, label: this._translateService.instant('confirm-delete-file-attribute.dossier-lost-details') }, ]; + if (this.data.count !== 0) { + checkBoxes.push({ + value: false, + label: this._translateService.instant('confirm-delete-file-attribute.impacted-report', { count: this.data.count }), + }); + } + + return checkBoxes; } get valid() { - return this.checkboxes[0].value && this.checkboxes[1].value; + return this.checkboxes.reduce((initialValue, currentValue) => initialValue && currentValue.value, true); } get type(): 'bulk' | 'single' { - return this.attribute ? 'single' : 'bulk'; + return this.data.attribute ? 'single' : 'bulk'; } deleteFileAttribute() { 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 a9e2ddd5e..50f43dc35 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 @@ -57,10 +57,11 @@ export class DossierAttributesListingScreenComponent extends ListingComponent { + this._dialogService.openDialog('deleteAttribute', $event, { attribute: dossierAttribute, count: resp.length }, 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 a1b0a7d20..74774974a 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 @@ -18,6 +18,7 @@ import { FileAttributesService } from '@services/entity-services/file-attributes import { DossierTemplatesService } from '@services/entity-services/dossier-templates.service'; import { HttpStatusCode } from '@angular/common/http'; import { firstValueFrom } from 'rxjs'; +import { ReportTemplateService } from '../../../../services/report-template.service'; @Component({ templateUrl: './file-attributes-listing-screen.component.html', @@ -60,6 +61,7 @@ export class FileAttributesListingScreenComponent extends ListingComponent { + async openConfirmDeleteAttributeDialog($event: MouseEvent, fileAttribute?: FileAttributeConfig) { + const dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId; + const resp = await firstValueFrom( + this._reportTemplateService.getTemplatesByPlaceholder(dossierTemplateId, fileAttribute.placeholder), + ); + + this._dialogService.openDialog('deleteAttribute', $event, { attribute: fileAttribute, count: resp.length }, async () => { this._loadingService.start(); - const dossierTemplateId = this._dossierTemplatesService.activeDossierTemplateId; if (fileAttribute) { await firstValueFrom(this._fileAttributesService.deleteFileAttributes([fileAttribute.id], dossierTemplateId)); } else { diff --git a/apps/red-ui/src/app/services/report-template.service.ts b/apps/red-ui/src/app/services/report-template.service.ts index ac9418e1d..585f4c36a 100644 --- a/apps/red-ui/src/app/services/report-template.service.ts +++ b/apps/red-ui/src/app/services/report-template.service.ts @@ -45,7 +45,7 @@ export class ReportTemplateService extends GenericService { @Validate() getTemplatesByPlaceholder(@RequiredParam() dossierTemplateId: string, @RequiredParam() attributeId: string) { - return this._post({ value: attributeId }, `/templates/${dossierTemplateId}`); + return this._post({ value: attributeId }, `templates/${dossierTemplateId}`); } downloadReportTemplate(dossierTemplateId: string, templateId: string, observe: 'response'): Observable>; diff --git a/apps/red-ui/src/assets/i18n/de.json b/apps/red-ui/src/assets/i18n/de.json index 262c2d514..7dd9ec900 100644 --- a/apps/red-ui/src/assets/i18n/de.json +++ b/apps/red-ui/src/assets/i18n/de.json @@ -395,11 +395,14 @@ "confirm-delete-file-attribute": { "cancel": "{type, select, single{Attribut} bulk{Attribute} other{}} behalten", "delete": "{type, select, single{Attribut} bulk{Attribute} other{}} löschen", - "impacted-documents": "Alle Dokumente {type, select, single{ist} bulk{sind} other{}} betroffen", - "lost-details": "Alle in die Dokumente eingegebenen Daten gehen verloren", + "file-impacted-documents": "Alle Dokumente {type, select, single{ist} bulk{sind} other{}} betroffen", + "dossier-impacted-documents": "", + "file-lost-details": "Alle in die Dokumente eingegebenen Daten gehen verloren", + "dossier-lost-details": "", "title": "{type, select, single{{name}} bulk{Datei-Attribute} other{}} löschen", "toast-error": "Bitte bestätigen Sie, dass Ihnen die Konsequenzen dieser Aktion bewusst sind!", - "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!" + "warning": "Achtung: Diese Aktion kann nicht rückgängig gemacht werden!", + "impacted-report": "{count}" }, "confirm-delete-users": { "cancel": "{usersCount, plural, one{Benutzer} other{Benutzer}} behalten", diff --git a/apps/red-ui/src/assets/i18n/en.json b/apps/red-ui/src/assets/i18n/en.json index a11542768..5df64f861 100644 --- a/apps/red-ui/src/assets/i18n/en.json +++ b/apps/red-ui/src/assets/i18n/en.json @@ -402,7 +402,7 @@ "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!", - "impacted-report": "<#reports> reports use the placeholder for this attribute and need to be adjusted" + "impacted-report": "{count} reports use the placeholder for this attribute and need to be adjusted" }, "confirm-delete-users": { "cancel": "Keep {usersCount, plural, one{User} other{Users}}", From 46cec7e6b82bd63112af0603063f24a698db4e97 Mon Sep 17 00:00:00 2001 From: Edi Cziszter Date: Wed, 26 Jan 2022 20:48:15 +0200 Subject: [PATCH 4/4] refactoring && update common --- ...irm-delete-attribute-dialog.component.html | 11 +---- ...nfirm-delete-attribute-dialog.component.ts | 45 +++++++++++-------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html index a6ac8607a..b7442e49a 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html +++ b/apps/red-ui/src/app/modules/admin/dialogs/confirm-delete-attribute-dialog/confirm-delete-attribute-dialog.component.html @@ -1,13 +1,6 @@
- {{ - 'confirm-delete-file-attribute.title' - | translate - : { - type: type, - name: data.attribute?.label - } - }} + {{ 'confirm-delete-file-attribute.title' | translate: translateArgs }}
@@ -32,7 +25,7 @@ {{ 'confirm-delete-file-attribute.delete' | translate: { type: type } }}
, + readonly dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: DialogData, ) { this.checkboxes = this.checkBoxConfig; } get checkBoxConfig(): CheckBox[] { - const checkBoxes = isFileAttributeConfig(this.data.attribute) - ? [ - { - value: false, - label: this._translateService.instant('confirm-delete-file-attribute.file-impacted-documents', { type: this.type }), - }, - { value: false, label: this._translateService.instant('confirm-delete-file-attribute.file-lost-details') }, - ] - : [ - { value: false, label: this._translateService.instant('confirm-delete-file-attribute.dossier-impacted-documents') }, - { value: false, label: this._translateService.instant('confirm-delete-file-attribute.dossier-lost-details') }, - ]; + const checkBoxes = isFileAttributeConfig(this.data.attribute) ? this._fileAttributeCheckboxes : this._dossierAttributeCheckboxes; if (this.data.count !== 0) { checkBoxes.push({ value: false, @@ -57,13 +46,37 @@ export class ConfirmDeleteAttributeDialogComponent { } get valid() { - return this.checkboxes.reduce((initialValue, currentValue) => initialValue && currentValue.value, true); + return this.checkboxes.reduce((acc, currentValue) => acc && currentValue.value, true); } get type(): 'bulk' | 'single' { return this.data.attribute ? 'single' : 'bulk'; } + get translateArgs() { + return { + type: this.type, + name: this.data.attribute?.label, + }; + } + + private get _fileAttributeCheckboxes(): CheckBox[] { + return [ + { + value: false, + label: this._translateService.instant('confirm-delete-file-attribute.file-impacted-documents', { type: this.type }), + }, + { value: false, label: this._translateService.instant('confirm-delete-file-attribute.file-lost-details') }, + ]; + } + + private get _dossierAttributeCheckboxes(): CheckBox[] { + return [ + { value: false, label: this._translateService.instant('confirm-delete-file-attribute.dossier-impacted-documents') }, + { value: false, label: this._translateService.instant('confirm-delete-file-attribute.dossier-lost-details') }, + ]; + } + deleteFileAttribute() { if (this.valid) { this.dialogRef.close(true); @@ -71,8 +84,4 @@ export class ConfirmDeleteAttributeDialogComponent { this.showToast = true; } } - - cancel() { - this.dialogRef.close(); - } }