From 38d406ec85f3bc9d64b81d85800c41f01749d542 Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Sat, 25 Sep 2021 22:42:03 +0300 Subject: [PATCH] rename DossierTemplateModelWrapper, rename dossierWrapper --- .../file/dossier-template-model.wrapper.ts | 57 ------------------- .../src/app/models/file/dossier-template.ts | 36 ++++++++++++ ...-edit-dossier-template-dialog.component.ts | 4 +- ...sier-templates-listing-screen.component.ts | 8 +-- .../dossier-details-stats.component.ts | 10 ++-- .../dossier-listing-actions.component.ts | 6 +- .../team-members-manager.component.ts | 18 +++--- .../add-dossier-dialog.component.ts | 9 ++- .../edit-dossier-attributes.component.ts | 14 ++--- ...edit-dossier-download-package.component.ts | 28 +++++---- .../edit-dossier-dialog.component.html | 8 +-- .../edit-dossier-dialog.component.ts | 4 +- .../edit-dossier-general-info.component.html | 2 +- .../edit-dossier-general-info.component.ts | 57 +++++++++---------- .../edit-dossier-team-members.component.html | 2 +- .../edit-dossier-team-members.component.ts | 9 ++- .../dossier-listing-screen.component.ts | 2 +- .../dossier-overview-screen.component.ts | 6 +- .../red-ui/src/app/state/app-state.service.ts | 16 +++--- apps/red-ui/src/app/state/model/dossier.ts | 2 + apps/red-ui/src/assets/config/config.json | 4 +- .../api/dossierTemplateController.service.ts | 50 +++++++--------- ...ierTemplateModel.ts => dossierTemplate.ts} | 37 +++++------- libs/red-ui-http/src/lib/model/models.ts | 2 +- libs/red-ui-http/src/lib/red-types.ts | 4 ++ 25 files changed, 178 insertions(+), 217 deletions(-) delete mode 100644 apps/red-ui/src/app/models/file/dossier-template-model.wrapper.ts create mode 100644 apps/red-ui/src/app/models/file/dossier-template.ts rename libs/red-ui-http/src/lib/model/{dossierTemplateModel.ts => dossierTemplate.ts} (59%) diff --git a/apps/red-ui/src/app/models/file/dossier-template-model.wrapper.ts b/apps/red-ui/src/app/models/file/dossier-template-model.wrapper.ts deleted file mode 100644 index fdc531af3..000000000 --- a/apps/red-ui/src/app/models/file/dossier-template-model.wrapper.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { DossierTemplateModel, FileAttributesConfig } from '@redaction/red-ui-http'; -import { IListable } from '@iqser/common-ui'; - -export class DossierTemplateModelWrapper implements IListable { - dictionariesCount = 0; - totalDictionaryEntries = 0; - - constructor(public dossierTemplateModel: DossierTemplateModel, public fileAttributesConfig: FileAttributesConfig) {} - - get id() { - return this.dossierTemplateModel.dossierTemplateId; - } - - get createdBy() { - return this.dossierTemplateModel.createdBy; - } - - get dateAdded() { - return this.dossierTemplateModel.dateAdded; - } - - get dateModified() { - return this.dossierTemplateModel.dateModified; - } - - get description() { - return this.dossierTemplateModel.description; - } - - get dossierTemplateId() { - return this.dossierTemplateModel.dossierTemplateId; - } - - get downloadFileTypes() { - return this.dossierTemplateModel.downloadFileTypes; - } - - get modifiedBy() { - return this.dossierTemplateModel.modifiedBy; - } - - get name() { - return this.dossierTemplateModel.name; - } - - get reportTemplateIds() { - return this.dossierTemplateModel.reportTemplateIds; - } - - get validFrom() { - return this.dossierTemplateModel.validFrom; - } - - get validTo() { - return this.dossierTemplateModel.validTo; - } -} diff --git a/apps/red-ui/src/app/models/file/dossier-template.ts b/apps/red-ui/src/app/models/file/dossier-template.ts new file mode 100644 index 000000000..38928dd6c --- /dev/null +++ b/apps/red-ui/src/app/models/file/dossier-template.ts @@ -0,0 +1,36 @@ +import { DownloadFileType, FileAttributesConfig, IDossierTemplate, List } from '@redaction/red-ui-http'; +import { IListable } from '@iqser/common-ui'; + +export class DossierTemplate implements IDossierTemplate, IListable { + readonly createdBy?: string; + readonly dateAdded?: string; + readonly dateModified?: string; + readonly description?: string; + readonly dossierTemplateId?: string; + readonly downloadFileTypes?: List; + readonly modifiedBy?: string; + readonly name?: string; + readonly reportTemplateIds?: List; + readonly validFrom?: string; + readonly validTo?: string; + dictionariesCount = 0; + totalDictionaryEntries = 0; + + constructor(dossierTemplateModel: IDossierTemplate, public fileAttributesConfig: FileAttributesConfig) { + this.createdBy = dossierTemplateModel.createdBy; + this.dateAdded = dossierTemplateModel.dateAdded; + this.dateModified = dossierTemplateModel.dateModified; + this.description = dossierTemplateModel.description; + this.dossierTemplateId = dossierTemplateModel.dossierTemplateId; + this.downloadFileTypes = dossierTemplateModel.downloadFileTypes; + this.modifiedBy = dossierTemplateModel.modifiedBy; + this.name = dossierTemplateModel.name; + this.reportTemplateIds = dossierTemplateModel.reportTemplateIds; + this.validFrom = dossierTemplateModel.validFrom; + this.validTo = dossierTemplateModel.validTo; + } + + get id(): string { + return this.dossierTemplateId; + } +} diff --git a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts index 60e155798..fd062b7b8 100644 --- a/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts +++ b/apps/red-ui/src/app/modules/admin/dialogs/add-edit-dossier-template-dialog/add-edit-dossier-template-dialog.component.ts @@ -6,8 +6,8 @@ import * as moment from 'moment'; import { Moment } from 'moment'; import { DossierTemplateControllerService, - DossierTemplateModel, DownloadFileType, + IDossierTemplate, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http'; @@ -39,7 +39,7 @@ export class AddEditDossierTemplateDialogComponent implements OnInit { private readonly _dossierTemplateController: DossierTemplateControllerService, private readonly _reportTemplateController: ReportTemplateControllerService, public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public dossierTemplate: DossierTemplateModel + @Inject(MAT_DIALOG_DATA) readonly dossierTemplate: IDossierTemplate ) { this.dossierTemplateForm = this._formBuilder.group({ name: [this.dossierTemplate?.name, Validators.required], diff --git a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts index ab5ceccdf..a3db5f62a 100644 --- a/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/admin/screens/dossier-template-listing/dossier-templates-listing-screen.component.ts @@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, forwardRef, Injector, OnInit, Templ import { AppStateService } from '@state/app-state.service'; import { UserPreferenceService } from '@services/user-preference.service'; import { AdminDialogService } from '../../services/admin-dialog.service'; -import { DossierTemplateModelWrapper } from '@models/file/dossier-template-model.wrapper'; +import { DossierTemplate } from '@models/file/dossier-template'; import { CircleButtonTypes, DefaultListingServices, @@ -26,12 +26,12 @@ import { RouterHistoryService } from '@services/router-history.service'; { provide: ListingComponent, useExisting: forwardRef(() => DossierTemplatesListingScreenComponent) } ] }) -export class DossierTemplatesListingScreenComponent extends ListingComponent implements OnInit { +export class DossierTemplatesListingScreenComponent extends ListingComponent implements OnInit { readonly iconButtonTypes = IconButtonTypes; readonly circleButtonTypes = CircleButtonTypes; readonly currentUser = this._userService.currentUser; readonly tableHeaderLabel = _('dossier-templates-listing.table-header.title'); - tableColumnConfigs: TableColumnConfig[]; + tableColumnConfigs: TableColumnConfig[]; @ViewChild('nameTemplate', { static: true }) nameTemplate: TemplateRef; @ViewChild('userTemplate', { static: true }) userTemplate: TemplateRef; @ViewChild('dateAddedTemplate', { static: true }) dateAddedTemplate: TemplateRef; @@ -52,7 +52,7 @@ export class DossierTemplatesListingScreenComponent extends ListingComponent [dossierTemplate.dossierTemplateId, 'dictionaries']; + routerLinkFn = (dossierTemplate: DossierTemplate) => [dossierTemplate.dossierTemplateId, 'dictionaries']; ngOnInit(): void { this._configureTableColumns(); diff --git a/apps/red-ui/src/app/modules/dossier/components/dossier-details-stats/dossier-details-stats.component.ts b/apps/red-ui/src/app/modules/dossier/components/dossier-details-stats/dossier-details-stats.component.ts index f7151e91c..045dec7e8 100644 --- a/apps/red-ui/src/app/modules/dossier/components/dossier-details-stats/dossier-details-stats.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/dossier-details-stats/dossier-details-stats.component.ts @@ -1,8 +1,8 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { DossierAttributeWithValue } from '@models/dossier-attributes.model'; import { AppStateService } from '@state/app-state.service'; -import { Dossier } from '../../../../state/model/dossier'; -import { DossierTemplateModel } from '@redaction/red-ui-http'; +import { Dossier } from '@state/model/dossier'; +import { IDossierTemplate } from '@redaction/red-ui-http'; import { DossiersDialogService } from '../../services/dossiers-dialog.service'; @Component({ @@ -13,7 +13,7 @@ import { DossiersDialogService } from '../../services/dossiers-dialog.service'; export class DossierDetailsStatsComponent { attributesExpanded = false; @Input() dossierAttributes: DossierAttributeWithValue[]; - @Output() openDossierDictionaryDialog = new EventEmitter(); + @Output() readonly openDossierDictionaryDialog = new EventEmitter(); constructor(private readonly _appStateService: AppStateService, private readonly _dialogService: DossiersDialogService) {} @@ -21,13 +21,13 @@ export class DossierDetailsStatsComponent { return this._appStateService.activeDossier; } - get dossierTemplate(): DossierTemplateModel { + get dossierTemplate(): IDossierTemplate { return this._appStateService.getDossierTemplateById(this.activeDossier.dossierTemplateId); } openEditDossierAttributesDialog() { this._dialogService.openDialog('editDossier', null, { - dossierWrapper: this.activeDossier, + dossier: this.activeDossier, section: 'dossierAttributes' }); } diff --git a/apps/red-ui/src/app/modules/dossier/components/dossier-listing-actions/dossier-listing-actions.component.ts b/apps/red-ui/src/app/modules/dossier/components/dossier-listing-actions/dossier-listing-actions.component.ts index 979bd3e22..9493e4fee 100644 --- a/apps/red-ui/src/app/modules/dossier/components/dossier-listing-actions/dossier-listing-actions.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/dossier-listing-actions/dossier-listing-actions.component.ts @@ -18,7 +18,7 @@ export class DossierListingActionsComponent { readonly currentUser = this._userService.currentUser; @Input() dossier: Dossier; - @Output() actionPerformed = new EventEmitter(); + @Output() readonly actionPerformed = new EventEmitter(); constructor( readonly permissionsService: PermissionsService, @@ -27,9 +27,9 @@ export class DossierListingActionsComponent { private readonly _userService: UserService ) {} - openEditDossierDialog($event: MouseEvent, dossierWrapper: Dossier): void { + openEditDossierDialog($event: MouseEvent, dossier: Dossier): void { this._dialogService.openDialog('editDossier', $event, { - dossierWrapper, + dossier, afterSave: () => this.actionPerformed.emit() }); } diff --git a/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts b/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts index 5fb78db5e..be0aef561 100644 --- a/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts +++ b/apps/red-ui/src/app/modules/dossier/components/team-members-manager/team-members-manager.component.ts @@ -16,9 +16,9 @@ export class TeamMembersManagerComponent implements OnInit { teamForm: FormGroup; searchQuery = ''; - @Input() dossierWrapper: Dossier; - + @Input() dossier: Dossier; @Output() readonly save = new EventEmitter(); + readonly ownersSelectOptions = this.userService.managerUsers.map(m => m.id); selectedReviewersList: string[] = []; membersSelectOptions: string[] = []; @@ -58,7 +58,7 @@ export class TeamMembersManagerComponent implements OnInit { const memberIds = this.selectedMembersList; const approverIds = this.selectedApproversList; const dw = { - ...this.dossierWrapper, + ...this.dossier, memberIds, approverIds, ownerId @@ -120,15 +120,15 @@ export class TeamMembersManagerComponent implements OnInit { } private _updateChanged() { - if (this.dossierWrapper.ownerId !== this.selectedOwnerId) { + if (this.dossier.ownerId !== this.selectedOwnerId) { this.changed = true; return; } - const initialMembers = [...this.dossierWrapper.memberIds].sort(); + const initialMembers = [...this.dossier.memberIds].sort(); const currentMembers = this.selectedMembersList.sort(); - const initialApprovers = [...this.dossierWrapper.approverIds].sort(); + const initialApprovers = [...this.dossier.approverIds].sort(); const currentApprovers = this.selectedApproversList.sort(); this.changed = this._compareLists(initialMembers, currentMembers) || this._compareLists(initialApprovers, currentApprovers); @@ -147,9 +147,9 @@ export class TeamMembersManagerComponent implements OnInit { private _loadData() { this.teamForm = this._formBuilder.group({ - owner: [this.dossierWrapper?.ownerId, Validators.required], - approvers: [[...this.dossierWrapper?.approverIds]], - members: [[...this.dossierWrapper?.memberIds]] + owner: [this.dossier?.ownerId, Validators.required], + approvers: [[...this.dossier?.approverIds]], + members: [[...this.dossier?.memberIds]] }); this.teamForm.get('owner').valueChanges.subscribe(owner => { if (!this.isApprover(owner)) { 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 9ab120ed7..0aee65cd9 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 @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; import { MatDialogRef } from '@angular/material/dialog'; -import { DossierTemplateModel, DownloadFileType, IDossier, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http'; +import { DownloadFileType, IDossier, IDossierTemplate, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { AppStateService } from '@state/app-state.service'; import * as moment from 'moment'; @@ -16,12 +16,11 @@ export class AddDossierDialogComponent { dossierForm: FormGroup; hasDueDate = false; - downloadTypesEnum: DownloadFileType[] = ['ORIGINAL', 'PREVIEW', 'REDACTED']; - downloadTypes: { key: DownloadFileType; label: string }[] = this.downloadTypesEnum.map(type => ({ + downloadTypes: { key: DownloadFileType; label: string }[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'].map((type: DownloadFileType) => ({ key: type, label: downloadTypesTranslations[type] })); - dossierTemplates: DossierTemplateModel[]; + dossierTemplates: IDossierTemplate[]; availableReportTypes = []; reportTemplateValueMapper = (reportTemplate: ReportTemplate) => reportTemplate.templateId; @@ -29,7 +28,7 @@ export class AddDossierDialogComponent { private readonly _appStateService: AppStateService, private readonly _formBuilder: FormBuilder, private readonly _reportTemplateController: ReportTemplateControllerService, - public dialogRef: MatDialogRef + readonly dialogRef: MatDialogRef ) { this._filterInvalidDossierTemplates(); this.dossierForm = this._formBuilder.group( 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 fe1ff8aac..df38cf707 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,7 +1,6 @@ import { Component, ElementRef, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren } from '@angular/core'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { Dossier } from '../../../../../state/model/dossier'; -import { AppStateService } from '@state/app-state.service'; import { PermissionsService } from '@services/permissions.service'; import { CircleButtonTypes, IconButtonTypes, LoadingService } from '@iqser/common-ui'; import { FormBuilder, FormGroup } from '@angular/forms'; @@ -18,8 +17,8 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa readonly iconButtonTypes = IconButtonTypes; readonly circleButtonTypes = CircleButtonTypes; - @Input() dossierWrapper: Dossier; - @Output() updateDossier = new EventEmitter(); + @Input() dossier: Dossier; + @Output() readonly updateDossier = new EventEmitter(); customAttributes: DossierAttributeWithValue[] = []; imageAttributes: DossierAttributeWithValue[] = []; attributes: DossierAttributeWithValue[] = []; @@ -28,7 +27,6 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa @ViewChildren('fileInput') private _fileInputs: QueryList; constructor( - private readonly _appStateService: AppStateService, private readonly _permissionsService: PermissionsService, private readonly _dossierAttributesService: DossierAttributesService, private readonly _loadingService: LoadingService, @@ -50,11 +48,11 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa } get disabled() { - return !this._permissionsService.isOwner(this.dossierWrapper); + return !this._permissionsService.isOwner(this.dossier); } get canEdit(): boolean { - return this._permissionsService.isOwner(this.dossierWrapper); + return this._permissionsService.isOwner(this.dossier); } async ngOnInit() { @@ -70,7 +68,7 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa dossierAttributeId: attr.id, value: this.currentAttrValue(attr) })); - await this._dossierAttributesService.setValues(this.dossierWrapper, dossierAttributeList); + await this._dossierAttributesService.setValues(this.dossier, dossierAttributeList); await this._loadAttributes(); this.updateDossier.emit(); this._loadingService.stop(); @@ -136,7 +134,7 @@ export class EditDossierAttributesComponent implements EditDossierSectionInterfa } private async _loadAttributes() { - this.attributes = await this._dossierAttributesService.getValues(this.dossierWrapper); + this.attributes = await this._dossierAttributesService.getValues(this.dossier); this.customAttributes = this.attributes.filter(attr => !this.isImage(attr)); this.imageAttributes = this.attributes.filter(attr => this.isImage(attr)); } 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 3b246057f..7e0f91e9f 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 @@ -1,8 +1,8 @@ import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { DossierTemplateModel, DownloadFileType, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http'; +import { DownloadFileType, ReportTemplate, ReportTemplateControllerService } from '@redaction/red-ui-http'; import { FormBuilder, FormGroup } from '@angular/forms'; import { AppStateService } from '@state/app-state.service'; -import { Dossier } from '../../../../../state/model/dossier'; +import { Dossier } from '@state/model/dossier'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { downloadTypesTranslations } from '../../../../../translations/download-types-translations'; @@ -13,16 +13,14 @@ import { downloadTypesTranslations } from '../../../../../translations/download- }) export class EditDossierDownloadPackageComponent implements OnInit, EditDossierSectionInterface { dossierForm: FormGroup; - downloadTypesEnum: DownloadFileType[] = ['ORIGINAL', 'PREVIEW', 'REDACTED']; - downloadTypes: { key: DownloadFileType; label: string }[] = this.downloadTypesEnum.map(type => ({ + downloadTypes: { key: DownloadFileType; label: string }[] = ['ORIGINAL', 'PREVIEW', 'REDACTED'].map((type: DownloadFileType) => ({ key: type, label: downloadTypesTranslations[type] })); - dossierTemplates: DossierTemplateModel[]; availableReportTypes: ReportTemplate[] = []; - @Input() dossierWrapper: Dossier; - @Output() updateDossier = new EventEmitter(); + @Input() dossier: Dossier; + @Output() readonly updateDossier = new EventEmitter(); constructor( private readonly _appStateService: AppStateService, @@ -41,11 +39,11 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS get changed() { if (this.dossierForm) { for (const key of Object.keys(this.dossierForm.getRawValue())) { - if (this.dossierWrapper[key].length !== this.dossierForm.get(key).value.length) { + if (this.dossier[key].length !== this.dossierForm.get(key).value.length) { return true; } - const originalItems = [...this.dossierWrapper[key]].sort(); + const originalItems = [...this.dossier[key]].sort(); const newItems = [...this.dossierForm.get(key).value].sort(); for (let idx = 0; idx < originalItems.length; ++idx) { @@ -67,12 +65,12 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS async ngOnInit() { this.availableReportTypes = - (await this._reportTemplateController.getAvailableReportTemplates(this.dossierWrapper.dossierTemplateId).toPromise()) || []; + (await this._reportTemplateController.getAvailableReportTemplates(this.dossier.dossierTemplateId).toPromise()) || []; this.dossierForm = this._formBuilder.group( { - reportTemplateIds: [this.dossierWrapper.reportTemplateIds], - downloadFileTypes: [this.dossierWrapper.downloadFileTypes] + reportTemplateIds: [this.dossier.reportTemplateIds], + downloadFileTypes: [this.dossier.downloadFileTypes] }, { validators: control => @@ -85,7 +83,7 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS async save() { const dossier = { - ...this.dossierWrapper, + ...this.dossier, downloadFileTypes: this.dossierForm.get('downloadFileTypes').value, reportTemplateIds: this.dossierForm.get('reportTemplateIds').value }; @@ -95,8 +93,8 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS revert() { this.dossierForm.reset({ - downloadFileTypes: this.dossierWrapper.downloadFileTypes, - reportTemplateIds: this.dossierWrapper.reportTemplateIds + downloadFileTypes: this.dossier.downloadFileTypes, + reportTemplateIds: this.dossier.reportTemplateIds }); } } diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.html index 043898afa..48eb7f0b9 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.html @@ -22,13 +22,13 @@ (); + @Input() dossier: Dossier; + @Output() readonly updateDossier = new EventEmitter(); constructor( readonly permissionsService: PermissionsService, @@ -43,13 +42,13 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti get changed() { for (const key of Object.keys(this.dossierForm.getRawValue())) { if (key === 'dueDate') { - if (this.hasDueDate !== !!this.dossierWrapper.dueDate) { + if (this.hasDueDate !== !!this.dossier.dueDate) { return true; } - if (this.hasDueDate && !moment(this.dossierWrapper.dueDate).isSame(moment(this.dossierForm.get(key).value))) { + if (this.hasDueDate && !moment(this.dossier.dueDate).isSame(moment(this.dossierForm.get(key).value))) { return true; } - } else if (this.dossierWrapper[key] !== this.dossierForm.get(key).value) { + } else if (this.dossier[key] !== this.dossierForm.get(key).value) { return true; } } @@ -68,34 +67,34 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti ngOnInit() { this._filterInvalidDossierTemplates(); this.dossierForm = this._formBuilder.group({ - dossierName: [this.dossierWrapper.dossierName, Validators.required], + dossierName: [this.dossier.dossierName, Validators.required], dossierTemplateId: [ { - value: this.dossierWrapper.dossierTemplateId, - disabled: this.dossierWrapper.hasFiles + value: this.dossier.dossierTemplateId, + disabled: this.dossier.hasFiles }, Validators.required ], - description: [this.dossierWrapper.description], - dueDate: [this.dossierWrapper.dueDate], - watermarkEnabled: [this.dossierWrapper.watermarkEnabled] + description: [this.dossier.description], + dueDate: [this.dossier.dueDate], + watermarkEnabled: [this.dossier.watermarkEnabled] }); - this.hasDueDate = !!this.dossierWrapper.dueDate; + this.hasDueDate = !!this.dossier.dueDate; } revert() { this.dossierForm.reset({ - dossierName: this.dossierWrapper.dossierName, - dossierTemplateId: this.dossierWrapper.dossierTemplateId, - description: this.dossierWrapper.description, - watermarkEnabled: this.dossierWrapper.watermarkEnabled, - dueDate: this.dossierWrapper.dueDate + dossierName: this.dossier.dossierName, + dossierTemplateId: this.dossier.dossierTemplateId, + description: this.dossier.description, + watermarkEnabled: this.dossier.watermarkEnabled, + dueDate: this.dossier.dueDate }); } async save() { const dossier = { - ...this.dossierWrapper, + ...this.dossier, dossierName: this.dossierForm.get('dossierName').value, description: this.dossierForm.get('description').value, watermarkEnabled: this.dossierForm.get('watermarkEnabled').value, @@ -116,12 +115,12 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti requireInput: true, denyText: _('confirmation-dialog.delete-dossier.deny-text'), translateParams: { - dossierName: this.dossierWrapper.dossierName, + dossierName: this.dossier.dossierName, dossiersCount: 1 } }); this._dialogService.openDialog('confirm', null, data, async () => { - await this._appStateService.deleteDossier(this.dossierWrapper); + await this._appStateService.deleteDossier(this.dossier); this._editDossierDialogRef.componentInstance.afterSave(); this._editDossierDialogRef.close(); this._router.navigate(['main', 'dossiers']).then(() => this._notifyDossierDeleted()); @@ -129,12 +128,12 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti } private _notifyDossierDeleted() { - this._toaster.success(_('edit-dossier-dialog.delete-successful'), { params: { dossierName: this.dossierWrapper.dossierName } }); + this._toaster.success(_('edit-dossier-dialog.delete-successful'), { params: { dossierName: this.dossier.dossierName } }); } private _filterInvalidDossierTemplates() { this.dossierTemplates = this._appStateService.dossierTemplates.filter(r => { - if (this.dossierWrapper?.dossierTemplateId === r.dossierTemplateId) { + if (this.dossier?.dossierTemplateId === r.dossierTemplateId) { return true; } const notYetValid = !!r.validFrom && moment(r.validFrom).isAfter(moment()); diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.html b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.html index 55f62235e..cb8de7e94 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.html +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.html @@ -1 +1 @@ - + diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.ts index 9fa943ec8..00bed1c3f 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/team-members/edit-dossier-team-members.component.ts @@ -1,6 +1,5 @@ import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'; -import { AppStateService } from '@state/app-state.service'; -import { Dossier } from '../../../../../state/model/dossier'; +import { Dossier } from '@state/model/dossier'; import { EditDossierSectionInterface } from '../edit-dossier-section.interface'; import { TeamMembersManagerComponent } from '../../../components/team-members-manager/team-members-manager.component'; import { UserService } from '@services/user.service'; @@ -13,12 +12,12 @@ import { UserService } from '@services/user.service'; export class EditDossierTeamMembersComponent implements EditDossierSectionInterface { readonly currentUser = this._userService.currentUser; - @Input() dossierWrapper: Dossier; - @Output() updateDossier = new EventEmitter(); + @Input() dossier: Dossier; + @Output() readonly updateDossier = new EventEmitter(); @ViewChild(TeamMembersManagerComponent) managerComponent: TeamMembersManagerComponent; - constructor(private readonly _appStateService: AppStateService, private readonly _userService: UserService) {} + constructor(private readonly _userService: UserService) {} get changed() { return this.managerComponent.changed; diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-listing-screen/dossier-listing-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-listing-screen/dossier-listing-screen.component.ts index 02e04ed36..65262d6c5 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-listing-screen/dossier-listing-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-listing-screen/dossier-listing-screen.component.ts @@ -134,7 +134,7 @@ export class DossierListingScreenComponent await this._router.navigate([`/main/dossiers/${addResponse.dossier.id}`]); if (addResponse.addMembers) { this._dialogService.openDialog('editDossier', null, { - dossierWrapper: addResponse.dossier, + dossier: addResponse.dossier, section: 'members' }); } diff --git a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview-screen/dossier-overview-screen.component.ts b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview-screen/dossier-overview-screen.component.ts index 984770673..219663381 100644 --- a/apps/red-ui/src/app/modules/dossier/screens/dossier-overview-screen/dossier-overview-screen.component.ts +++ b/apps/red-ui/src/app/modules/dossier/screens/dossier-overview-screen/dossier-overview-screen.component.ts @@ -314,17 +314,17 @@ export class DossierOverviewScreenComponent extends ListingComponent await this.reloadDossiers()); } openDossierDictionaryDialog() { - const data = { dossierWrapper: this.currentDossier, section: 'dossierDictionary' }; + const data = { dossier: this.currentDossier, section: 'dossierDictionary' }; this._dialogService.openDialog('editDossier', null, data, async () => { await this.reloadDossiers(); }); diff --git a/apps/red-ui/src/app/state/app-state.service.ts b/apps/red-ui/src/app/state/app-state.service.ts index 3f4ab516a..07f8844da 100644 --- a/apps/red-ui/src/app/state/app-state.service.ts +++ b/apps/red-ui/src/app/state/app-state.service.ts @@ -19,14 +19,14 @@ import { FALLBACK_COLOR, hexToRgb } from '@utils/functions'; import { FileStatusWrapper } from '@models/file/file-status.wrapper'; import { Dossier } from './model/dossier'; import { TypeValue } from '@models/file/type-value'; -import { DossierTemplateModelWrapper } from '@models/file/dossier-template-model.wrapper'; +import { DossierTemplate } from '@models/file/dossier-template'; import { DossiersService } from '../modules/dossier/services/dossiers.service'; import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { UserPreferenceService } from '@services/user-preference.service'; export interface AppState { dossiers: Dossier[]; - dossierTemplates: DossierTemplateModelWrapper[]; + dossierTemplates: DossierTemplate[]; activeDossierId: string; activeFileId: string; activeDossierTemplateId: string; @@ -43,7 +43,7 @@ export class AppStateService { readonly fileChanged$ = new Subject(); readonly fileReanalysed$ = new Subject(); readonly dossierChanged$ = new Subject(); - readonly dossierTemplateChanged$ = new Subject(); + readonly dossierTemplateChanged$ = new Subject(); private _appState: AppState; @@ -99,11 +99,11 @@ export class AppStateService { return this._appState.activeDossierTemplateId; } - get activeDossierTemplate(): DossierTemplateModelWrapper { + get activeDossierTemplate(): DossierTemplate { return this.getDossierTemplateById(this.activeDossierTemplateId); } - get dossierTemplates(): DossierTemplateModelWrapper[] { + get dossierTemplates(): DossierTemplate[] { return this._appState.dossierTemplates; } @@ -187,7 +187,7 @@ export class AppStateService { return color ?? this._dictionaryData[dossierTemplateId]['default'].hexColor; } - getDossierTemplateById(id: string): DossierTemplateModelWrapper { + getDossierTemplateById(id: string): DossierTemplate { return this.dossierTemplates.find(rs => rs.dossierTemplateId === id); } @@ -374,7 +374,7 @@ export class AppStateService { async loadAllDossierTemplates() { const dossierTemplates = await this._dossierTemplateControllerService.getAllDossierTemplates().toPromise(); - this._appState.dossierTemplates = dossierTemplates.map(dossierTemplate => new DossierTemplateModelWrapper(dossierTemplate, null)); + this._appState.dossierTemplates = dossierTemplates.map(dossierTemplate => new DossierTemplate(dossierTemplate, null)); for (const dossierTemplate of this._appState.dossierTemplates) { dossierTemplate.fileAttributesConfig = await this._fileAttributesService .getFileAttributesConfiguration(dossierTemplate.dossierTemplateId) @@ -393,7 +393,7 @@ export class AppStateService { Object.assign( this._appState.dossierTemplates.find(d => d.dossierTemplateId === dossierTemplateId), - new DossierTemplateModelWrapper(dossierTemplate, fileAttributesConfigs) + new DossierTemplate(dossierTemplate, fileAttributesConfigs) ); await this.refreshDossierTemplateDictionaryData(dossierTemplateId); diff --git a/apps/red-ui/src/app/state/model/dossier.ts b/apps/red-ui/src/app/state/model/dossier.ts index acfd7d9ac..f5fa74681 100644 --- a/apps/red-ui/src/app/state/model/dossier.ts +++ b/apps/red-ui/src/app/state/model/dossier.ts @@ -4,6 +4,7 @@ import { IListable } from '@iqser/common-ui'; export class Dossier implements IDossier, IListable { readonly id: string; + readonly dossierId: string; readonly ownerId: string; readonly memberIds: List; readonly approverIds: List; @@ -37,6 +38,7 @@ export class Dossier implements IDossier, IListable { constructor(dossier: IDossier, private _files: FileStatusWrapper[] = []) { this.id = dossier.dossierId; + this.dossierId = dossier.dossierId; this.approverIds = dossier.approverIds; this.date = dossier.date; this.description = dossier.description; diff --git a/apps/red-ui/src/assets/config/config.json b/apps/red-ui/src/assets/config/config.json index 22b208d48..d1e68990c 100644 --- a/apps/red-ui/src/assets/config/config.json +++ b/apps/red-ui/src/assets/config/config.json @@ -1,7 +1,7 @@ { "ADMIN_CONTACT_NAME": null, "ADMIN_CONTACT_URL": null, - "API_URL": "https://demo.redactmanager.com/redaction-gateway-v1", + "API_URL": "https://red-staging.iqser.cloud/redaction-gateway-v1", "APP_NAME": "RedactManager", "AUTO_READ_TIME": 1.5, "BACKEND_APP_VERSION": "4.4.40", @@ -17,7 +17,7 @@ "MAX_RETRIES_ON_SERVER_ERROR": 3, "OAUTH_CLIENT_ID": "redaction", "OAUTH_IDP_HINT": null, - "OAUTH_URL": "https://demo.redactmanager.com/auth/realms/redaction", + "OAUTH_URL": "https://red-staging.iqser.cloud/auth/realms/redaction", "RECENT_PERIOD_IN_HOURS": 24, "SELECTION_MODE": "structural" } diff --git a/libs/red-ui-http/src/lib/api/dossierTemplateController.service.ts b/libs/red-ui-http/src/lib/api/dossierTemplateController.service.ts index 6276e3e9f..6a8f20a86 100644 --- a/libs/red-ui-http/src/lib/api/dossierTemplateController.service.ts +++ b/libs/red-ui-http/src/lib/api/dossierTemplateController.service.ts @@ -10,15 +10,15 @@ * Do not edit the class manually. */ /* tslint:disable:no-unused-variable member-ordering */ -import { Inject, Injectable, Optional } from '@angular/core'; -import { HttpClient, HttpEvent, HttpHeaders, HttpResponse } from '@angular/common/http'; +import { Inject, Injectable, Optional } from "@angular/core"; +import { HttpClient, HttpEvent, HttpHeaders, HttpResponse } from "@angular/common/http"; -import { Observable } from 'rxjs'; +import { Observable } from "rxjs"; -import { DossierTemplateModel } from '../model/dossierTemplateModel'; +import { IDossierTemplate } from "../model/dossierTemplate"; -import { BASE_PATH } from '../variables'; -import { Configuration } from '../configuration'; +import { BASE_PATH } from "../variables"; +import { Configuration } from "../configuration"; @Injectable() export class DossierTemplateControllerService { @@ -47,29 +47,21 @@ export class DossierTemplateControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public createOrUpdateDossierTemplate( - body: DossierTemplateModel, - observe?: 'body', - reportProgress?: boolean - ): Observable; + public createOrUpdateDossierTemplate(body: IDossierTemplate, observe?: 'body', reportProgress?: boolean): Observable; public createOrUpdateDossierTemplate( - body: DossierTemplateModel, + body: IDossierTemplate, observe?: 'response', reportProgress?: boolean - ): Observable>; + ): Observable>; public createOrUpdateDossierTemplate( - body: DossierTemplateModel, + body: IDossierTemplate, observe?: 'events', reportProgress?: boolean - ): Observable>; + ): Observable>; - public createOrUpdateDossierTemplate( - body: DossierTemplateModel, - observe: any = 'body', - reportProgress: boolean = false - ): Observable { + public createOrUpdateDossierTemplate(body: IDossierTemplate, observe: any = 'body', reportProgress: boolean = false): Observable { if (body === null || body === undefined) { throw new Error('Required parameter body was null or undefined when calling createOrUpdateDossierTemplate.'); } @@ -97,7 +89,7 @@ export class DossierTemplateControllerService { headers = headers.set('Content-Type', httpContentTypeSelected); } - return this.httpClient.request('post', `${this.basePath}/dossier-template`, { + return this.httpClient.request('post', `${this.basePath}/dossier-template`, { body: body, withCredentials: this.configuration.withCredentials, headers: headers, @@ -205,11 +197,11 @@ export class DossierTemplateControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public getAllDossierTemplates(observe?: 'body', reportProgress?: boolean): Observable>; + public getAllDossierTemplates(observe?: 'body', reportProgress?: boolean): Observable>; - public getAllDossierTemplates(observe?: 'response', reportProgress?: boolean): Observable>>; + public getAllDossierTemplates(observe?: 'response', reportProgress?: boolean): Observable>>; - public getAllDossierTemplates(observe?: 'events', reportProgress?: boolean): Observable>>; + public getAllDossierTemplates(observe?: 'events', reportProgress?: boolean): Observable>>; public getAllDossierTemplates(observe: any = 'body', reportProgress: boolean = false): Observable { let headers = this.defaultHeaders; @@ -228,7 +220,7 @@ export class DossierTemplateControllerService { headers = headers.set('Accept', httpHeaderAcceptSelected); } - return this.httpClient.request>('get', `${this.basePath}/dossier-template`, { + return this.httpClient.request>('get', `${this.basePath}/dossier-template`, { withCredentials: this.configuration.withCredentials, headers: headers, observe: observe, @@ -243,19 +235,19 @@ export class DossierTemplateControllerService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public getDossierTemplate(dossierTemplateId: string, observe?: 'body', reportProgress?: boolean): Observable; + public getDossierTemplate(dossierTemplateId: string, observe?: 'body', reportProgress?: boolean): Observable; public getDossierTemplate( dossierTemplateId: string, observe?: 'response', reportProgress?: boolean - ): Observable>; + ): Observable>; public getDossierTemplate( dossierTemplateId: string, observe?: 'events', reportProgress?: boolean - ): Observable>; + ): Observable>; public getDossierTemplate(dossierTemplateId: string, observe: any = 'body', reportProgress: boolean = false): Observable { if (dossierTemplateId === null || dossierTemplateId === undefined) { @@ -278,7 +270,7 @@ export class DossierTemplateControllerService { headers = headers.set('Accept', httpHeaderAcceptSelected); } - return this.httpClient.request( + return this.httpClient.request( 'get', `${this.basePath}/dossier-template/${encodeURIComponent(String(dossierTemplateId))}`, { diff --git a/libs/red-ui-http/src/lib/model/dossierTemplateModel.ts b/libs/red-ui-http/src/lib/model/dossierTemplate.ts similarity index 59% rename from libs/red-ui-http/src/lib/model/dossierTemplateModel.ts rename to libs/red-ui-http/src/lib/model/dossierTemplate.ts index 77146e580..911014429 100644 --- a/libs/red-ui-http/src/lib/model/dossierTemplateModel.ts +++ b/libs/red-ui-http/src/lib/model/dossierTemplate.ts @@ -9,61 +9,52 @@ * https://github.com/swagger-api/swagger-codegen.git * Do not edit the class manually. */ +import { DownloadFileType } from './dossier'; +import { List } from '../red-types'; -export interface DossierTemplateModel { +export interface IDossierTemplate { /** * The userId of the user who created this DossierTemplate. Set by the system. */ - createdBy?: string; + readonly createdBy?: string; /** * The date when this dossierTemplate was created. Set by System on create. */ - dateAdded?: string; + readonly dateAdded?: string; /** * The date when this dossierTemplate was last modified. Set by System on create. */ - dateModified?: string; + readonly dateModified?: string; /** * The description of this dossierTemplate */ - description?: string; + readonly description?: string; /** * The Rule Set Id. Generated by the system on create. */ - dossierTemplateId?: string; + readonly dossierTemplateId?: string; /** * Download File Types for this dossierTemplate's dossiers submission package. */ - downloadFileTypes?: Array; + readonly downloadFileTypes?: List; /** * The userId of the user who last modified this DossierTemplate. Set by the system. */ - modifiedBy?: string; + readonly modifiedBy?: string; /** * The name of this dossierTemplate. Must be set on create / update requests */ - name?: string; + readonly name?: string; /** * Report File Types for this dossierTemplate's dossiers submission package. */ - reportTemplateIds?: string[]; + readonly reportTemplateIds?: List; /** * Validity of start this dossierTemplate. */ - validFrom?: string; + readonly validFrom?: string; /** * Validity of end this dossierTemplate. */ - validTo?: string; -} - -export namespace DossierTemplateModel { - export type DownloadFileTypesEnum = 'ANNOTATED' | 'FLATTEN' | 'ORIGINAL' | 'PREVIEW' | 'REDACTED'; - export const DownloadFileTypesEnum = { - ANNOTATED: 'ANNOTATED' as DownloadFileTypesEnum, - FLATTEN: 'FLATTEN' as DownloadFileTypesEnum, - ORIGINAL: 'ORIGINAL' as DownloadFileTypesEnum, - PREVIEW: 'PREVIEW' as DownloadFileTypesEnum, - REDACTED: 'REDACTED' as DownloadFileTypesEnum - }; + readonly validTo?: string; } diff --git a/libs/red-ui-http/src/lib/model/models.ts b/libs/red-ui-http/src/lib/model/models.ts index 5600d88f2..d81199479 100644 --- a/libs/red-ui-http/src/lib/model/models.ts +++ b/libs/red-ui-http/src/lib/model/models.ts @@ -23,7 +23,7 @@ export * from './dossierAttributesConfig'; export * from './dossierAttributesReq'; export * from './dossierAttributesRes'; export * from './dossierRequest'; -export * from './dossierTemplateModel'; +export * from './dossierTemplate'; export * from './downloadDetails'; export * from './downloadResponse'; export * from './downloadStatus'; diff --git a/libs/red-ui-http/src/lib/red-types.ts b/libs/red-ui-http/src/lib/red-types.ts index 114f10ebc..5ead52e51 100644 --- a/libs/red-ui-http/src/lib/red-types.ts +++ b/libs/red-ui-http/src/lib/red-types.ts @@ -1 +1,5 @@ +/** + * Custom list type to hold readonly arrays. + * Defaults to readonly string list + */ export type List = readonly T[];