59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
import { FormBuilder, FormGroup } from '@angular/forms';
|
|
import { AppRole } from '@app/core/common/enum/app-role';
|
|
import { UserCriteria } from '@app/core/query/user/user-criteria';
|
|
import { EnumUtils } from '@app/core/services/utilities/enum-utils.service';
|
|
import { BaseCriteriaComponent } from '@app/ui/misc/criteria/base-criteria.component';
|
|
import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model';
|
|
import { debounceTime, takeUntil } from 'rxjs/operators';
|
|
|
|
@Component({
|
|
selector: 'app-user-criteria-component',
|
|
templateUrl: './user-criteria.component.html',
|
|
styleUrls: ['./user-criteria.component.scss']
|
|
})
|
|
export class UserCriteriaComponent extends BaseCriteriaComponent implements OnInit {
|
|
|
|
public rolesEnum = this.enumUtils.getEnumValues(AppRole);
|
|
public criteria: UserCriteria = new UserCriteria();
|
|
|
|
constructor(
|
|
private formBuilder: FormBuilder,
|
|
public enumUtils: EnumUtils
|
|
) {
|
|
super(new ValidationErrorModel());
|
|
}
|
|
|
|
ngOnInit() {
|
|
super.ngOnInit();
|
|
if (this.criteria == null) { this.criteria = new UserCriteria(); }
|
|
if (this.formGroup == null) { this.formGroup = this.buildForm(); }
|
|
this.registerListeners();
|
|
}
|
|
|
|
setCriteria(criteria: UserCriteria): void {
|
|
this.criteria = criteria;
|
|
this.formGroup = this.buildForm();
|
|
this.registerListeners();
|
|
}
|
|
|
|
registerListeners() {
|
|
this.formGroup.valueChanges
|
|
.pipe(takeUntil(this._destroyed), debounceTime(300))
|
|
.subscribe(x => this.controlModified());
|
|
}
|
|
public fromJSONObject(item: any): UserCriteria {
|
|
this.criteria = new UserCriteria();
|
|
this.criteria.label = item.Label;
|
|
this.criteria.appRoles = item.appRoles;
|
|
return this.criteria;
|
|
}
|
|
|
|
buildForm(): FormGroup {
|
|
return this.formBuilder.group({
|
|
like: [this.criteria.label, []],
|
|
appRoles: [this.criteria.appRoles, []],
|
|
});
|
|
}
|
|
}
|