From d230ab1a5cd8a99358f4927ad4c25d0335f5f198 Mon Sep 17 00:00:00 2001 From: Edi Cziszter Date: Sun, 7 Nov 2021 13:13:00 +0200 Subject: [PATCH] _formBuilder in separate _getForm method --- .../notifications/notifications.component.ts | 20 ++++++++++----- .../add-dossier-dialog.component.ts | 8 ++++-- .../change-legal-basis-dialog.component.ts | 8 ++++++ .../edit-dossier-attributes.component.html | 11 ++++---- .../edit-dossier-attributes.component.ts | 25 ++++++------------- ...edit-dossier-download-package.component.ts | 6 ++++- .../edit-dossier-general-info.component.ts | 8 ++++-- .../force-redaction-dialog.component.ts | 6 ++++- .../manual-annotation-dialog.component.ts | 18 ++++++++++--- 9 files changed, 72 insertions(+), 38 deletions(-) diff --git a/apps/red-ui/src/app/components/notifications/notifications.component.ts b/apps/red-ui/src/app/components/notifications/notifications.component.ts index 1e4d7fbd1..fd6cdba44 100644 --- a/apps/red-ui/src/app/components/notifications/notifications.component.ts +++ b/apps/red-ui/src/app/components/notifications/notifications.component.ts @@ -39,12 +39,12 @@ export class NotificationsComponent extends AutoUnsubscribe implements OnInit { ) { super(); this.notifications$ = this._notifications$.asObservable().pipe(shareLast()); - this.groupedNotifications$ = this.notifications$.pipe(map(notifications => this._groupNotifications(notifications))); - this.hasUnreadNotifications$ = this.notifications$.pipe( - map(notifications => notifications.filter(n => !n.readDate).length > 0), - distinctUntilChanged(), - shareLast(), - ); + this.groupedNotifications$ = this._groupedNotifications$; + this.hasUnreadNotifications$ = this._hasUnreadNotifications$; + } + + async ngOnInit(): Promise { + await this._loadData(); } async ngOnInit(): Promise { @@ -58,6 +58,14 @@ export class NotificationsComponent extends AutoUnsubscribe implements OnInit { .subscribe(); } + private get _hasUnreadNotifications$(): Observable { + return this.notifications$.pipe( + map(notifications => notifications.filter(n => !n.readDate).length > 0), + distinctUntilChanged(), + shareLast(), + ); + } + async markRead($event, notifications: List = this._notifications$.getValue().map(n => n.id), isRead = true): Promise { $event.stopPropagation(); await this._notificationsService.toggleNotificationRead(notifications, isRead).toPromise(); diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts index 753241a6d..d90473966 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/add-dossier-dialog/add-dossier-dialog.component.ts @@ -16,7 +16,7 @@ import { ReportTemplateService } from '@services/report-template.service'; export class AddDossierDialogComponent { readonly iconButtonTypes = IconButtonTypes; - dossierForm: FormGroup; + readonly dossierForm: FormGroup; hasDueDate = false; downloadTypes: { key: DownloadFileType; label: string }[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'].map((type: DownloadFileType) => ({ key: type, @@ -33,7 +33,11 @@ export class AddDossierDialogComponent { readonly dialogRef: MatDialogRef, ) { this._getDossierTemplates(); - this.dossierForm = this._formBuilder.group( + this.dossierForm = this._getForm(); + } + + private _getForm(): FormGroup { + return this._formBuilder.group( { dossierName: [null, Validators.required], dossierTemplateId: [null, Validators.required], diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts index 08cd4eda4..69cd98de3 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/change-legal-basis-dialog/change-legal-basis-dialog.component.ts @@ -57,6 +57,14 @@ export class ChangeLegalBasisDialogComponent implements OnInit { }); } + private _getForm(): FormGroup { + this.isDocumentAdmin = this._permissionsService.isApprover(); + return this._formBuilder.group({ + reason: [null, Validators.required], + comment: this.isDocumentAdmin ? [null] : [null, Validators.required], + }); + } + save() { this.dialogRef.close({ legalBasis: this.legalBasisForm.get('reason').value.legalBasis, diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.html index e79710824..0f4282450 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.html @@ -10,17 +10,18 @@ icon="red:attribute" > -
+
- - + + diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts index e190bbe6d..a50ba041c 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/attributes/edit-dossier-attributes.component.ts @@ -1,6 +1,6 @@ import { Component, ElementRef, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; -import { Dossier, DossierAttributeWithValue } from '@red/domain'; +import {Dossier, DossierAttributeConfigType, DossierAttributeConfigTypes, DossierAttributeWithValue} from '@red/domain'; import { PermissionsService } from '@services/permissions.service'; import { CircleButtonTypes, IconButtonTypes, LoadingService } from '@iqser/common-ui'; import { FormBuilder, FormGroup } from '@angular/forms'; @@ -15,6 +15,7 @@ import { DossierAttributesService } from '@shared/services/controller-wrappers/d export class EditDossierAttributesComponent implements EditDossierSectionInterface, OnInit { readonly iconButtonTypes = IconButtonTypes; readonly circleButtonTypes = CircleButtonTypes; + readonly dossierAttributeConfigTypes = DossierAttributeConfigTypes; @Input() dossier: Dossier; @Output() readonly updateDossier = new EventEmitter(); @@ -34,7 +35,7 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa get changed() { for (const attr of this.attributes) { - if (this.isDate(attr) && attr.value) { + if (this.isSpecificType(attr, this.dossierAttributeConfigTypes.DATE) && attr.value) { if (!moment(attr.value).isSame(moment(this.currentAttrValue(attr)))) { return true; } @@ -75,20 +76,8 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa this._getFileInputById(attr.id).nativeElement.click(); } - isNumber(attr: DossierAttributeWithValue): boolean { - return attr.type === 'NUMBER'; - } - - isDate(attr: DossierAttributeWithValue): boolean { - return attr.type === 'DATE'; - } - - isImage(attr: DossierAttributeWithValue): boolean { - return attr.type === 'IMAGE'; - } - - isText(attr: DossierAttributeWithValue): boolean { - return attr.type === 'TEXT'; + isSpecificType(attr: DossierAttributeWithValue, type: DossierAttributeConfigType): boolean { + return attr.type === type; } async uploadImage($event, attr: DossierAttributeWithValue) { @@ -132,8 +121,8 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa private async _loadAttributes() { this.attributes = await this._dossierAttributesService.getWithValues(this.dossier); - this.customAttributes = this.attributes.filter(attr => !this.isImage(attr)); - this.imageAttributes = this.attributes.filter(attr => this.isImage(attr)); + this.customAttributes = this.attributes.filter(attr => !this.isSpecificType(attr, this.dossierAttributeConfigTypes.IMAGE)); + this.imageAttributes = this.attributes.filter(attr => this.isSpecificType(attr, this.dossierAttributeConfigTypes.IMAGE)); } private _initForm() { diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts index 9766ac1e5..7e5e49fdb 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/download-package/edit-dossier-download-package.component.ts @@ -67,7 +67,11 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS this.availableReportTypes = (await this._reportTemplateController.getAvailableReportTemplates(this.dossier.dossierTemplateId).toPromise()) || []; - this.dossierForm = this._formBuilder.group( + this.dossierForm = this._getForm(); + } + + private _getForm(): FormGroup { + return this._formBuilder.group( { reportTemplateIds: [this.dossier.reportTemplateIds], downloadFileTypes: [this.dossier.downloadFileTypes], diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts index df28a625e..7bb983b8a 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/general-info/edit-dossier-general-info.component.ts @@ -68,7 +68,12 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti ngOnInit() { this._filterInvalidDossierTemplates(); - this.dossierForm = this._formBuilder.group({ + this.dossierForm = this._getForm(); + this.hasDueDate = !!this.dossier.dueDate; + } + + private _getForm(): FormGroup { + return this._formBuilder.group({ dossierName: [this.dossier.dossierName, Validators.required], dossierTemplateId: [ { @@ -82,7 +87,6 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti watermarkEnabled: [this.dossier.watermarkEnabled], watermarkPreviewEnabled: [this.dossier.watermarkPreviewEnabled], }); - this.hasDueDate = !!this.dossier.dueDate; } revert() { diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts index ab74193d5..b6b0f0191 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/force-redaction-dialog/force-redaction-dialog.component.ts @@ -38,9 +38,13 @@ export class ForceRedactionDialogComponent implements OnInit { public dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) private readonly _data: { readonly dossier: Dossier }, ) { + this.redactionForm = this._getForm(); + } + + private _getForm(): FormGroup { this.isDocumentAdmin = this._permissionsService.isApprover(this._data.dossier); - this.redactionForm = this._formBuilder.group({ + return this._formBuilder.group({ reason: [null, Validators.required], comment: this.isDocumentAdmin ? [null] : [null, Validators.required], }); diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts index 51a87aeb4..17862b78f 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/manual-redaction-dialog/manual-annotation-dialog.component.ts @@ -44,21 +44,33 @@ export class ManualAnnotationDialogComponent implements OnInit { this.isFalsePositiveRequest = this.data.manualRedactionEntryWrapper.type === 'FALSE_POSITIVE'; this.isDictionaryRequest = this.data.manualRedactionEntryWrapper.type === 'DICTIONARY' || this.isFalsePositiveRequest; - this.redactionForm = this._formBuilder.group({ + this.redactionForm = this._getForm(); + + this.redactionDictionaries = this._redactionDictionaries; + } + + private _getForm(): FormGroup { + return this._formBuilder.group({ reason: this.isDictionaryRequest ? [null] : [null, Validators.required], dictionary: this.isDictionaryRequest ? [this.isFalsePositiveRequest ? 'false_positive' : null, Validators.required] : ['manual', Validators.required], comment: this.isDocumentAdmin ? [null] : [null, Validators.required], }); + } + + private get _redactionDictionaries(): Dictionary[] { + const redactionDictionaries: Dictionary[] = []; for (const key of Object.keys(this._appStateService.dictionaryData[data.dossier.dossierTemplateId])) { const dictionaryData = this._appStateService.getDictionary(key, data.dossier.dossierTemplateId); if (!dictionaryData.virtual && dictionaryData.addToDictionaryAction) { - this.redactionDictionaries.push(dictionaryData); + redactionDictionaries.push(dictionaryData); } } - this.redactionDictionaries.sort((a, b) => a.label.localeCompare(b.label)); + redactionDictionaries.sort((a, b) => a.label.localeCompare(b.label)); + + return redactionDictionaries; } get title() {