From 60545315cda9ddfbaeb2f6f3bb579a6a41a92063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adina=20=C8=9Aeudan?= Date: Sun, 15 Aug 2021 20:56:04 +0300 Subject: [PATCH] Fixes --- .../team-members-manager.component.ts | 76 +++++++++++-------- .../edit-dossier-dictionary.component.ts | 8 +- ...edit-dossier-download-package.component.ts | 8 +- .../edit-dossier-dialog.component.html | 12 +-- .../edit-dossier-dialog.component.ts | 11 +-- .../edit-dossier-general-info.component.ts | 4 +- .../edit-dossier-team-members.component.html | 2 +- .../edit-dossier-team-members.component.ts | 4 - .../red-ui/src/app/state/app-state.service.ts | 16 ++-- 9 files changed, 77 insertions(+), 64 deletions(-) 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 227ef9b76..bf5f37939 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 @@ -18,6 +18,10 @@ export class TeamMembersManagerComponent implements OnInit { @Input() dossierWrapper: DossierWrapper; @Output() save = new EventEmitter(); + ownersSelectOptions: string[] = this.userService.managerUsers.map(m => m.id); + selectedReviewersList: string[] = []; + membersSelectOptions: string[] = []; + changed = false; constructor( readonly userService: UserService, @@ -34,44 +38,14 @@ export class TeamMembersManagerComponent implements OnInit { return this.teamForm.get('approvers').value; } - get selectedReviewersList(): string[] { - return this.selectedMembersList.filter(m => this.selectedApproversList.indexOf(m) === -1); - } - get selectedMembersList(): string[] { return this.teamForm.get('members').value; } - get ownersSelectOptions() { - return this.userService.managerUsers.map(m => m.id); - } - - get membersSelectOptions() { - const searchQuery = this.searchForm.get('query').value; - return this.userService.eligibleUsers - .filter(user => this.userService.getNameForId(user.id).toLowerCase().includes(searchQuery.toLowerCase())) - .filter(user => this.selectedOwnerId !== user.id) - .map(user => user.id); - } - get valid(): boolean { return this.teamForm.valid; } - get changed(): boolean { - if (this.dossierWrapper.ownerId !== this.selectedOwnerId) { - return true; - } - - const initialMembers = this.dossierWrapper.memberIds.sort(); - const currentMembers = this.selectedMembersList.sort(); - - const initialApprovers = this.dossierWrapper.approverIds.sort(); - const currentApprovers = this.selectedApproversList.sort(); - - return this._compareLists(initialMembers, currentMembers) || this._compareLists(initialApprovers, currentApprovers); - } - isOwner(userId: string): boolean { return userId === this.selectedOwnerId; } @@ -90,6 +64,7 @@ export class TeamMembersManagerComponent implements OnInit { }; result = await this._appStateService.createOrUpdateDossier(dw); this.save.emit(result); + this._updateChanged(); } catch (error) { this._toaster.error('Failed: ' + error.error ? error.error.message : error); } @@ -118,6 +93,8 @@ export class TeamMembersManagerComponent implements OnInit { this.toggleSelected(userId); } } + + this._updateLists(); } toggleSelected(userId: string) { @@ -130,6 +107,7 @@ export class TeamMembersManagerComponent implements OnInit { } else { this.selectedMembersList.push(userId); } + this._updateLists(); } async ngOnInit() { @@ -140,6 +118,33 @@ export class TeamMembersManagerComponent implements OnInit { this._loadData(); } + private _updateChanged() { + if (this.dossierWrapper.ownerId !== this.selectedOwnerId) { + this.changed = true; + return; + } + + const initialMembers = this.dossierWrapper.memberIds.sort(); + const currentMembers = this.selectedMembersList.sort(); + + const initialApprovers = this.dossierWrapper.approverIds.sort(); + const currentApprovers = this.selectedApproversList.sort(); + + this.changed = this._compareLists(initialMembers, currentMembers) || this._compareLists(initialApprovers, currentApprovers); + } + + private _setSelectedReviewersList() { + this.selectedReviewersList = this.selectedMembersList.filter(m => this.selectedApproversList.indexOf(m) === -1); + } + + private _setMembersSelectOptions() { + const searchQuery = this.searchForm.get('query').value; + this.membersSelectOptions = this.userService.eligibleUsers + .filter(user => this.userService.getNameForId(user.id).toLowerCase().includes(searchQuery.toLowerCase())) + .filter(user => this.selectedOwnerId !== user.id) + .map(user => user.id); + } + private _loadData() { this.teamForm = this._formBuilder.group({ owner: [this.dossierWrapper?.ownerId, Validators.required], @@ -154,7 +159,18 @@ export class TeamMembersManagerComponent implements OnInit { this.toggleApprover(owner); } // If it is an approver, it is already a member, no need to check + this._updateLists(); }); + this.searchForm.get('query').valueChanges.subscribe(() => { + this._setMembersSelectOptions(); + }); + this._updateLists(); + } + + private _updateLists() { + this._setSelectedReviewersList(); + this._setMembersSelectOptions(); + this._updateChanged(); } private _compareLists(l1: string[], l2: string[]) { diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts index 1a6650ffb..10eca528d 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/dictionary/edit-dossier-dictionary.component.ts @@ -8,6 +8,7 @@ import { DictionarySaveService } from '@shared/services/dictionary-save.service' import { FormBuilder } from '@angular/forms'; import { CircleButtonTypes } from '@iqser/common-ui'; import { Dictionary, DictionaryControllerService } from '@redaction/red-ui-http'; +import { LoadingService } from '@services/loading.service'; @Component({ selector: 'redaction-edit-dossier-dictionary', @@ -27,6 +28,7 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa private readonly _dictionarySaveService: DictionarySaveService, private readonly _permissionsService: PermissionsService, private readonly _dictionaryControllerService: DictionaryControllerService, + private readonly _loadingService: LoadingService, private readonly _formBuilder: FormBuilder ) { this.canEdit = this._permissionsService.isDossierMember(this.dossierWrapper) || this._permissionsService.isAdmin(); @@ -40,8 +42,10 @@ export class EditDossierDictionaryComponent implements EditDossierSectionInterfa return !this.canEdit; } - ngOnInit() { - console.log(this.dossierWrapper.type ? 'has' : "doesn't have"); + async ngOnInit() { + this._loadingService.start(); + await this._appStateService.updateDossierDictionary(this.dossierWrapper.dossierTemplateId, this.dossierWrapper.dossierId); + this._loadingService.stop(); } async updateDisplayName(label: string) { 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 20b04f482..ccd3b6fe6 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 @@ -24,8 +24,6 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS @Input() dossierWrapper: DossierWrapper; @Output() updateDossier = new EventEmitter(); - reportTemplateValueMapper = (reportTemplate: ReportTemplate) => reportTemplate.templateId; - constructor( private readonly _appStateService: AppStateService, private readonly _reportTemplateController: ReportTemplateControllerService, @@ -65,6 +63,8 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS return this.dossierForm?.invalid; } + reportTemplateValueMapper = (reportTemplate: ReportTemplate) => reportTemplate.templateId; + async ngOnInit() { this.availableReportTypes = (await this._reportTemplateController.getAvailableReportTemplates(this.dossierWrapper.dossierTemplateId).toPromise()) || []; @@ -89,8 +89,8 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS downloadFileTypes: this.dossierForm.get('downloadFileTypes').value, reportTemplateIds: this.dossierForm.get('reportTemplateIds').value }; - const updatedDossier = await this._appStateService.createOrUpdateDossier(dossier); - this.updateDossier.emit(updatedDossier); + await this._appStateService.createOrUpdateDossier(dossier); + this.updateDossier.emit(); } revert() { 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 96f78a845..d759c29a4 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 @@ -20,37 +20,37 @@ diff --git a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts index 54d8eca0b..62671d773 100644 --- a/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts +++ b/apps/red-ui/src/app/modules/dossier/dialogs/edit-dossier-dialog/edit-dossier-dialog.component.ts @@ -11,6 +11,7 @@ import { EditDossierAttributesComponent } from './attributes/edit-dossier-attrib import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker'; import { EditDossierDeletedDocumentsComponent } from './deleted-documents/edit-dossier-deleted-documents.component'; +import { AppStateService } from '@state/app-state.service'; type Section = 'dossierInfo' | 'downloadPackage' | 'dossierDictionary' | 'members' | 'dossierAttributes' | 'deletedDocuments'; @@ -32,6 +33,7 @@ export class EditDossierDialogComponent { constructor( private readonly _toaster: Toaster, + private readonly _appStateService: AppStateService, private readonly _changeRef: ChangeDetectorRef, @Inject(MAT_DIALOG_DATA) private readonly _data: { @@ -102,15 +104,10 @@ export class EditDossierDialogComponent { return !['deletedDocuments'].includes(this.activeNav); } - updatedDossier(updatedDossier: DossierWrapper) { + updatedDossier() { this._toaster.success(_('edit-dossier-dialog.change-successful')); - - if (updatedDossier) { - this.dossierWrapper = updatedDossier; - } - + this.dossierWrapper = this._appStateService.getDossierById(this.dossierWrapper.dossierId); this._changeRef.detectChanges(); - this.afterSave(); } 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 e1e9a4f6a..20b811360 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 @@ -101,8 +101,8 @@ export class EditDossierGeneralInfoComponent implements OnInit, EditDossierSecti dueDate: this.hasDueDate ? this.dossierForm.get('dueDate').value : undefined, dossierTemplateId: this.dossierForm.get('dossierTemplateId').value }; - const updatedDossier = await this._appStateService.createOrUpdateDossier(dossier); - if (updatedDossier) this.updateDossier.emit(updatedDossier); + await this._appStateService.createOrUpdateDossier(dossier); + this.updateDossier.emit(); } async deleteDossier() { 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 6fe380e42..55f62235e 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 d67674c9e..785df2e9b 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 @@ -32,10 +32,6 @@ export class EditDossierTeamMembersComponent implements EditDossierSectionInterf await this.managerComponent.saveMembers(); } - updatedDossier($event) { - this.updateDossier.emit($event); - } - revert() { this.managerComponent.revert(); } 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 45cb6980d..266d0166f 100644 --- a/apps/red-ui/src/app/state/app-state.service.ts +++ b/apps/red-ui/src/app/state/app-state.service.ts @@ -295,33 +295,33 @@ export class AppStateService { async activateFile(dossierId: string, fileId: string) { if (this.activeDossierId === dossierId && this.activeFileId === fileId) return; - this.activateDossier(dossierId); + await this.activateDossier(dossierId); if (this.activeDossier) { this._appState.activeFileId = fileId; if (!this.activeFile) { this._appState.activeFileId = null; - this._router.navigate(['/main/dossiers/' + dossierId]); + await this._router.navigate(['/main/dossiers/' + dossierId]); } } - this._updateLastActiveFileForDossier(dossierId, fileId); + await this._updateLastActiveFileForDossier(dossierId, fileId); } - activateDossierTemplate(dossierTemplateId: string) { + async activateDossierTemplate(dossierTemplateId: string) { this._appState.activeDossierTemplateId = dossierTemplateId; this._appState.activeDictionaryType = null; if (!this.activeDossierTemplate) { this._appState.activeDossierTemplateId = null; - this._router.navigate(['/main/admin/dossier-templates']); + await this._router.navigate(['/main/admin/dossier-templates']); } } - activateDictionary(dictionaryType: string, dossierTemplateId: string) { - this.activateDossierTemplate(dossierTemplateId); + async activateDictionary(dictionaryType: string, dossierTemplateId: string) { + await this.activateDossierTemplate(dossierTemplateId); if (this.activeDossierTemplate) { this._appState.activeDictionaryType = dictionaryType; if (!this.activeDictionary) { this._appState.activeDictionaryType = null; - this._router.navigate(['/main/admin/dossier-templates/' + this.activeDossierTemplateId]); + await this._router.navigate(['/main/admin/dossier-templates/' + this.activeDossierTemplateId]); } } }