Fixes
This commit is contained in:
parent
12d2b40246
commit
60545315cd
@ -18,6 +18,10 @@ export class TeamMembersManagerComponent implements OnInit {
|
||||
@Input() dossierWrapper: DossierWrapper;
|
||||
|
||||
@Output() save = new EventEmitter<Dossier>();
|
||||
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[]) {
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -24,8 +24,6 @@ export class EditDossierDownloadPackageComponent implements OnInit, EditDossierS
|
||||
@Input() dossierWrapper: DossierWrapper;
|
||||
@Output() updateDossier = new EventEmitter<any>();
|
||||
|
||||
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() {
|
||||
|
||||
@ -20,37 +20,37 @@
|
||||
</div>
|
||||
|
||||
<redaction-edit-dossier-general-info
|
||||
(updateDossier)="updatedDossier($event)"
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'dossierInfo'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
></redaction-edit-dossier-general-info>
|
||||
|
||||
<redaction-edit-dossier-download-package
|
||||
(updateDossier)="updatedDossier($event)"
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'downloadPackage'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
></redaction-edit-dossier-download-package>
|
||||
|
||||
<redaction-edit-dossier-dictionary
|
||||
(updateDossier)="updatedDossier($event)"
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'dossierDictionary'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
></redaction-edit-dossier-dictionary>
|
||||
|
||||
<redaction-edit-dossier-team-members
|
||||
(updateDossier)="updatedDossier($event)"
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'members'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
></redaction-edit-dossier-team-members>
|
||||
|
||||
<redaction-edit-dossier-attributes
|
||||
(updateDossier)="updatedDossier($event)"
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'dossierAttributes'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
></redaction-edit-dossier-attributes>
|
||||
|
||||
<redaction-edit-dossier-deleted-documents
|
||||
(updateDossier)="updatedDossier($event)"
|
||||
(updateDossier)="updatedDossier()"
|
||||
*ngIf="activeNav === 'deletedDocuments'"
|
||||
[dossierWrapper]="dossierWrapper"
|
||||
></redaction-edit-dossier-deleted-documents>
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -1 +1 @@
|
||||
<redaction-team-members-manager (save)="updatedDossier($event)" [dossierWrapper]="dossierWrapper"></redaction-team-members-manager>
|
||||
<redaction-team-members-manager (save)="updateDossier.emit()" [dossierWrapper]="dossierWrapper"></redaction-team-members-manager>
|
||||
|
||||
@ -32,10 +32,6 @@ export class EditDossierTeamMembersComponent implements EditDossierSectionInterf
|
||||
await this.managerComponent.saveMembers();
|
||||
}
|
||||
|
||||
updatedDossier($event) {
|
||||
this.updateDossier.emit($event);
|
||||
}
|
||||
|
||||
revert() {
|
||||
this.managerComponent.revert();
|
||||
}
|
||||
|
||||
@ -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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user