Merge pull request #10592 from opf/fix/42177/allow-assignees-from-current-project

Allow team planner assignees only from current project
pull/10598/head
Christophe Bliard 3 years ago committed by GitHub
commit dd703bcb2d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 62
      frontend/src/app/features/team-planner/team-planner/assignee/add-assignee.component.ts

@ -27,23 +27,19 @@
//++
import {
ChangeDetectionStrategy,
Component,
ElementRef,
EventEmitter,
Injector,
Input,
Output,
ChangeDetectionStrategy,
} from '@angular/core';
import { HalResourceService } from 'core-app/features/hal/services/hal-resource.service';
import { PathHelperService } from 'core-app/core/path-helper/path-helper.service';
import { I18nService } from 'core-app/core/i18n/i18n.service';
import { Observable } from 'rxjs';
import {
map,
mergeMap,
take,
} from 'rxjs/operators';
import { map } from 'rxjs/operators';
import { CurrentProjectService } from 'core-app/core/current-project/current-project.service';
import { HalResourceNotificationService } from 'core-app/features/hal/services/hal-resource-notification.service';
import { HalResource } from 'core-app/features/hal/resources/hal-resource';
@ -76,48 +72,24 @@ export class AddAssigneeComponent {
) { }
public autocomplete(term:string|null):Observable<HalResource[]> {
return this.wpTableFilters
.live$()
.pipe(
take(1),
map((queryFilters) => {
const projectFilter = queryFilters.find((queryFilter) => queryFilter.id === 'project');
const filters = new ApiV3FilterBuilder();
const selectedProjectIds = (() => {
const baseList = ((projectFilter?.values || []) as HalResource[]).map((p) => p.id);
const currentProjectId = this.currentProjectService.id;
if (baseList.includes(currentProjectId)) {
return [...baseList];
}
const currentProjectId = this.currentProjectService.id;
filters.add('member', '=', [currentProjectId] as string[]);
return [
...baseList,
currentProjectId,
];
})();
if (term) {
filters.add('typeahead', '**', [term]);
}
const filters = new ApiV3FilterBuilder();
filters.add('member', '=', selectedProjectIds as string[]);
if (term) {
filters.add('typeahead', '**', [term]);
}
return filters;
}),
mergeMap(
(filters) => this
.apiV3Service
.principals
.filtered(filters)
.get()
.pipe(
map((collection) => collection.elements.filter(
(user) => !this.alreadySelected.find((selected) => selected === user.id),
)),
),
),
return this
.apiV3Service
.principals
.filtered(filters)
.get()
.pipe(
map((collection) => collection.elements.filter(
(user) => !this.alreadySelected.find((selected) => selected === user.id),
)),
);
}

Loading…
Cancel
Save