RED-6176: Sorted users.

This commit is contained in:
Nicoleta Panaghiu 2023-03-01 13:32:25 +02:00
parent 6677e92be3
commit daa913c674
4 changed files with 39 additions and 5 deletions

View File

@ -306,7 +306,8 @@ export class ConfigService {
}),
);
}
allDistinctPeople.forEach(userId => {
this._sortByName([...allDistinctPeople]).forEach(userId => {
peopleFilters.push(
new NestedFilter({
id: userId,
@ -451,4 +452,8 @@ export class ConfigService {
private _openEditDossierDialog($event: MouseEvent, dossierId: string) {
this._dialogService.openDialog('editDossier', $event, { dossierId });
}
private _sortByName(ids: string[]) {
return ids.sort((a, b) => this._userService.getName(a).localeCompare(this._userService.getName(b)));
}
}

View File

@ -12,6 +12,7 @@ import { FilePreviewStateService } from '../../services/file-preview-state.servi
import { distinctUntilChanged, map } from 'rxjs/operators';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { FileAssignService } from '../../../shared-dossiers/services/file-assign.service';
import { moveElementInArray } from '@utils/functions';
@Component({
selector: 'redaction-user-management',
@ -89,7 +90,9 @@ export class UserManagementComponent {
this.usersOptions$ = combineLatest([this._canUnassignUser$, this.stateService.file$, this._dossier$]).pipe(
map(([canUnassignUser, file, dossier]) => {
const unassignUser = canUnassignUser ? [undefined] : [];
return file.isUnderApproval ? [...dossier.approverIds, ...unassignUser] : [...dossier.memberIds, ...unassignUser];
return file.isUnderApproval
? this._customSort([...dossier.approverIds, ...unassignUser], file)
: this._customSort([...dossier.memberIds, ...unassignUser], file);
}),
);
}
@ -114,4 +117,13 @@ export class UserManagementComponent {
this.toaster.success(_('assignment.reviewer'), { params: { reviewerName, filename } });
this.editingReviewer = false;
}
private _customSort(ids: string[], file: File) {
let sorted = [...ids].sort((a, b) => this.userService.getName(a).localeCompare(this.userService.getName(b)));
if (file.assignee) {
sorted = moveElementInArray(sorted, file.assignee, 0);
}
sorted = moveElementInArray(sorted, undefined, file.assignee ? 1 : 0);
return sorted;
}
}

View File

@ -9,6 +9,7 @@ import { FilesService } from '@services/files/files.service';
import { ActiveDossiersService } from '@services/dossiers/active-dossiers.service';
import { PermissionsService } from '@services/permissions.service';
import { firstValueFrom } from 'rxjs';
import { moveElementInArray } from '@utils/functions';
class DialogData {
targetStatus: WorkflowFileStatus;
@ -59,15 +60,14 @@ export class AssignReviewerApproverDialogComponent {
if (this.dossier.hasReviewers && cannotAssignUser) {
return [...unassignUser];
}
return [...this.dossier.memberIds, ...unassignUser];
return this._customSort([...this.dossier.memberIds, ...unassignUser]);
}
if (this.dossier.approverIds.length > 1 && cannotAssignUser) {
return [...unassignUser];
}
return [...this.dossier.approverIds, ...unassignUser];
return this._customSort([...this.dossier.approverIds, ...unassignUser]);
}
get changed(): boolean {
@ -140,4 +140,15 @@ export class AssignReviewerApproverDialogComponent {
user: [this._user, this._canUnassignFiles && !this._user ? Validators.required : null],
});
}
private _customSort(ids: string[]) {
let sorted = ids.sort((a, b) => this.userService.getName(a).localeCompare(this.userService.getName(b)));
if (this.data.files.length === 1 && this.data.files[0].assignee) {
sorted = moveElementInArray(sorted, this.data.files[0].assignee, 0);
}
if (this.data.withUnassignedOption) {
sorted = moveElementInArray(sorted, 'undefined', this.data.files[0].assignee && this.data.files.length === 1 ? 1 : 0);
}
return sorted;
}
}

View File

@ -104,3 +104,9 @@ export const dateWithoutTime = (date: Dayjs) => date.set('h', 0).set('m', 0).set
export function hasChanges<T>(left: T, right: T) {
return JSON.stringify(left) !== JSON.stringify(right);
}
export function moveElementInArray<T>(array: T[], element: T, index: number) {
const result = array.filter(e => e !== element);
result.splice(index, 0, element);
return result;
}