@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
110 lines • 16.5 kB
JavaScript
import { Component, ViewChild } from '@angular/core';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { FormControl } from '@angular/forms';
import { debounceTime } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "./services/role-assignment.service";
import * as i2 from "../../user/services/user.service";
export class AbstractRoleAssignmentComponent {
_service;
_userService;
userList;
viewport;
users;
nets;
filteredProcesses = [];
userMultiSelect;
searchUserControl = new FormControl();
searchNetControl = new FormControl();
SEARCH_DEBOUNCE_TIME = 600;
subValueChanges;
subNetValueChanges;
subUsers;
constructor(_service, _userService) {
this._service = _service;
this._userService = _userService;
this.users = this._service.userList;
this.nets = this._service.processList;
this.userMultiSelect = true;
}
ngOnInit() {
this.nets.loadProcesses().subscribe(processes => {
this.filteredProcesses = processes;
});
this.subValueChanges = this.searchUserControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
this.users.reload(searchText);
});
this.subNetValueChanges = this.searchNetControl.valueChanges.pipe(debounceTime(this.SEARCH_DEBOUNCE_TIME)).subscribe(searchText => {
this.filteredProcesses = this.nets.processes.filter(itm => itm.title.toLowerCase().includes(searchText.toLowerCase()));
});
}
ngAfterViewInit() {
this.subUsers = this.users.usersReload$.subscribe(() => {
this.userList.deselectAll();
this.userList.selectedOptions.clear();
this.autoSelectRoles();
});
}
ngOnDestroy() {
this._userService.reload();
this.subValueChanges.unsubscribe();
this.subNetValueChanges.unsubscribe();
this.subUsers.unsubscribe();
this.users = undefined;
this.nets = undefined;
this.filteredProcesses = undefined;
}
loadNextUserPage() {
if (!this.viewport) {
return;
}
this.users.nextPage(this.viewport.getRenderedRange().end, this.viewport.getDataLength());
}
autoSelectRoles() {
const all = this.userList.selectedOptions.selected.map(option => option.value.roles);
if (all.length === 0) {
this.nets.selectRoles(new Set([]));
}
const intersection = all.reduce((acc, curr) => new Set([...acc].filter(s => curr.has(s))), all[0]);
this.nets.selectRoles(intersection);
}
update(role) {
this.nets.updateSelectedRoles(role);
const selected = this.userList.selectedOptions.selected.map(option => option.value);
this.users.updateRoles(selected, this.nets.selectedRoles).subscribe(_ => {
this.autoSelectRoles();
});
}
selectAllUsers(select) {
this.userList.options.forEach(option => {
option.value.selected = select;
});
this.autoSelectRoles();
}
toggleAllRoles(net, select) {
net.roles.forEach(r => {
r.selected = select;
this.nets.updateSelectedRoles(r);
});
const selected = this.userList.selectedOptions.selected.map(option => option.value);
this.users.updateRoles(selected, this.nets.selectedRoles).subscribe(_ => {
this.autoSelectRoles();
});
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractRoleAssignmentComponent, deps: [{ token: i1.RoleAssignmentService }, { token: i2.UserService }], target: i0.ɵɵFactoryTarget.Component });
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AbstractRoleAssignmentComponent, selector: "ncc-abstract-role", viewQueries: [{ propertyName: "userList", first: true, predicate: ["userList"], descendants: true }, { propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: '', isInline: true });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AbstractRoleAssignmentComponent, decorators: [{
type: Component,
args: [{
selector: 'ncc-abstract-role',
template: ''
}]
}], ctorParameters: () => [{ type: i1.RoleAssignmentService }, { type: i2.UserService }], propDecorators: { userList: [{
type: ViewChild,
args: ['userList']
}], viewport: [{
type: ViewChild,
args: [CdkVirtualScrollViewport]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtcm9sZS1hc3NpZ25tZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvYWRtaW4vcm9sZS1hc3NpZ25tZW50L2Fic3RyYWN0LXJvbGUtYXNzaWdubWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQXFCLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVyRixPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUdoRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTzVDLE1BQU0sT0FBZ0IsK0JBQStCO0lBZ0IzQjtJQUEyQztJQWRuQyxRQUFRLENBQW1CO0lBQ2IsUUFBUSxDQUEyQjtJQUV4RSxLQUFLLENBQWtCO0lBQ3ZCLElBQUksQ0FBYztJQUNsQixpQkFBaUIsR0FBMkIsRUFBRSxDQUFDO0lBQy9DLGVBQWUsQ0FBVTtJQUN6QixpQkFBaUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3RDLGdCQUFnQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDbEMsb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0lBQzNCLGVBQWUsQ0FBZTtJQUM5QixrQkFBa0IsQ0FBZTtJQUNqQyxRQUFRLENBQWU7SUFFakMsWUFBc0IsUUFBK0IsRUFBWSxZQUF5QjtRQUFwRSxhQUFRLEdBQVIsUUFBUSxDQUF1QjtRQUFZLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBQ3RGLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxD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QUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFFLE1BQU0sQ0FBQyxLQUFzQixDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7d0dBNUZpQiwrQkFBK0I7NEZBQS9CLCtCQUErQiwwTEFHdEMsd0JBQXdCLGdEQUx6QixFQUFFOzs0RkFFTSwrQkFBK0I7a0JBSnBELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsUUFBUSxFQUFFLEVBQUU7aUJBQ2Y7b0hBR2lDLFFBQVE7c0JBQXJDLFNBQVM7dUJBQUMsVUFBVTtnQkFDdUIsUUFBUTtzQkFBbkQsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdFNlbGVjdGlvbkxpc3R9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHtDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnR9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHtVc2VyTGlzdEl0ZW0sIFVzZXJMaXN0U2VydmljZX0gZnJvbSAnLi4vLi4vdXNlci9zZXJ2aWNlcy91c2VyLWxpc3Quc2VydmljZSc7XG5pbXBvcnQge1Byb2Nlc3NMaXN0LCBFeHRlbmRlZFByb2Nlc3NSb2xlLCBQcm9jZXNzVmVyc2lvbiwgUHJvY2Vzc0xpc3RJdGVtfSBmcm9tICcuL3NlcnZpY2VzL1Byb2Nlc3NMaXN0JztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Um9sZUFzc2lnbm1lbnRTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL3JvbGUtYXNzaWdubWVudC5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclNlcnZpY2V9IGZyb20gJy4uLy4uL3VzZXIvc2VydmljZXMvdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmNjLWFic3RyYWN0LXJvbGUnLFxuICAgIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFJvbGVBc3NpZ25tZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQFZpZXdDaGlsZCgndXNlckxpc3QnKSBwdWJsaWMgdXNlckxpc3Q6IE1hdFNlbGVjdGlvbkxpc3Q7XG4gICAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHB1YmxpYyB2aWV3cG9ydDogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgcHVibGljIHVzZXJzOiBVc2VyTGlzdFNlcnZpY2U7XG4gICAgcHVibGljIG5ldHM6IFByb2Nlc3NMaXN0O1xuICAgIHB1YmxpYyBmaWx0ZXJlZFByb2Nlc3NlczogQXJyYXk8UHJvY2Vzc0xpc3RJdGVtPiA9IFtdO1xuICAgIHB1YmxpYyB1c2VyTXVsdGlTZWxlY3Q6IGJvb2xlYW47XG4gICAgcHVibGljIHNlYXJjaFVzZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgcHVibGljIHNlYXJjaE5ldENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBwcm90ZWN0ZWQgU0VBUkNIX0RFQk9VTkNFX1RJTUUgPSA2MDA7XG4gICAgcHJvdGVjdGVkIHN1YlZhbHVlQ2hhbmdlczogU3Vic2NyaXB0aW9uO1xuICAgIHByb3RlY3RlZCBzdWJOZXRWYWx1ZUNoYW5nZXM6IFN1YnNjcmlwdGlvbjtcbiAgICBwcm90ZWN0ZWQgc3ViVXNlcnM6IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfc2VydmljZTogUm9sZUFzc2lnbm1lbnRTZXJ2aWNlLCBwcm90ZWN0ZWQgX3VzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSkge1xuICAgICAgICB0aGlzLnVzZXJzID0gdGhpcy5fc2VydmljZS51c2VyTGlzdDtcbiAgICAgICAgdGhpcy5uZXRzID0gdGhpcy5fc2VydmljZS5wcm9jZXNzTGlzdDtcbiAgICAgICAgdGhpcy51c2VyTXVsdGlTZWxlY3QgPSB0cnVlO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5ldHMubG9hZFByb2Nlc3NlcygpLnN1YnNjcmliZShwcm9jZXNzZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJlZFByb2Nlc3NlcyA9IHByb2Nlc3NlcztcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3ViVmFsdWVDaGFuZ2VzID0gdGhpcy5zZWFyY2hVc2VyQ29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUodGhpcy5TRUFSQ0hfREVCT1VOQ0VfVElNRSkpLnN1YnNjcmliZShzZWFyY2hUZXh0ID0+IHtcbiAgICAgICAgICAgIHRoaXMudXNlcnMucmVsb2FkKHNlYXJjaFRleHQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdWJOZXRWYWx1ZUNoYW5nZXMgPSB0aGlzLnNlYXJjaE5ldENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuU0VBUkNIX0RFQk9VTkNFX1RJTUUpKS5zdWJzY3JpYmUoc2VhcmNoVGV4dCA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkUHJvY2Vzc2VzID0gdGhpcy5uZXRzLnByb2Nlc3Nlcy5maWx0ZXIoaXRtID0+IGl0bS50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3ViVXNlcnMgPSB0aGlzLnVzZXJzLnVzZXJzUmVsb2FkJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51c2VyTGlzdC5kZXNlbGVjdEFsbCgpO1xuICAgICAgICAgICAgdGhpcy51c2VyTGlzdC5zZWxlY3RlZE9wdGlvbnMuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMuYXV0b1NlbGVjdFJvbGVzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl91c2VyU2VydmljZS5yZWxvYWQoKTtcbiAgICAgICAgdGhpcy5zdWJWYWx1ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJOZXRWYWx1ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJVc2Vycy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnVzZXJzID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm5ldHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZmlsdGVyZWRQcm9jZXNzZXMgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGxvYWROZXh0VXNlclBhZ2UoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aWV3cG9ydCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXNlcnMubmV4dFBhZ2UodGhpcy52aWV3cG9ydC5nZXRSZW5kZXJlZFJhbmdlKCkuZW5kLCB0aGlzLnZpZXdwb3J0LmdldERhdGFMZW5ndGgoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGF1dG9TZWxlY3RSb2xlcygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYWxsID0gdGhpcy51c2VyTGlzdC5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubWFwKG9wdGlvbiA9PiAob3B0aW9uLnZhbHVlIGFzIFVzZXJMaXN0SXRlbSkucm9sZXMpO1xuICAgICAgICBpZiAoYWxsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5uZXRzLnNlbGVjdFJvbGVzKG5ldyBTZXQ8c3RyaW5nPihbXSkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGludGVyc2VjdGlvbiA9IGFsbC5yZWR1Y2UoKGFjYywgY3VycikgPT4gbmV3IFNldChbLi4uYWNjXS5maWx0ZXIocyA9PiBjdXJyLmhhcyhzKSkpLCBhbGxbMF0pO1xuICAgICAgICB0aGlzLm5ldHMuc2VsZWN0Um9sZXMoaW50ZXJzZWN0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKHJvbGU6IEV4dGVuZGVkUHJvY2Vzc1JvbGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5uZXRzLnVwZGF0ZVNlbGVjdGVkUm9sZXMocm9sZSk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy51c2VyTGlzdC5zZWxlY3RlZE9wdGlvbnMuc2VsZWN0ZWQubWFwKG9wdGlvbiA9PiAob3B0aW9uLnZhbHVlIGFzIFVzZXJMaXN0SXRlbSkpO1xuICAgICAgICB0aGlzLnVzZXJzLnVwZGF0ZVJvbGVzKHNlbGVjdGVkLCB0aGlzLm5ldHMuc2VsZWN0ZWRSb2xlcykuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgICAgICAgdGhpcy5hdXRvU2VsZWN0Um9sZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNlbGVjdEFsbFVzZXJzKHNlbGVjdDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnVzZXJMaXN0Lm9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICAgICAgKG9wdGlvbi52YWx1ZSBhcyBVc2VyTGlzdEl0ZW0pLnNlbGVjdGVkID0gc2VsZWN0O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdXRvU2VsZWN0Um9sZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9nZ2xlQWxsUm9sZXMobmV0OiBQcm9jZXNzVmVyc2lvbiwgc2VsZWN0OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIG5ldC5yb2xlcy5mb3JFYWNoKHIgPT4ge1xuICAgICAgICAgICAgci5zZWxlY3RlZCA9IHNlbGVjdDtcbiAgICAgICAgICAgIHRoaXMubmV0cy51cGRhdGVTZWxlY3RlZFJvbGVzKHIpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnVzZXJMaXN0LnNlbGVjdGVkT3B0aW9ucy5zZWxlY3RlZC5tYXAob3B0aW9uID0+IChvcHRpb24udmFsdWUgYXMgVXNlckxpc3RJdGVtKSk7XG4gICAgICAgIHRoaXMudXNlcnMudXBkYXRlUm9sZXMoc2VsZWN0ZWQsIHRoaXMubmV0cy5zZWxlY3RlZFJvbGVzKS5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgICAgICB0aGlzLmF1dG9TZWxlY3RSb2xlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=