81 lines
2.8 KiB
TypeScript
81 lines
2.8 KiB
TypeScript
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
|
|
import { Component, Input, OnInit } from '@angular/core';
|
|
import { FormArray } from '@angular/forms';
|
|
import { DmpUserRole } from '@app/core/common/enum/dmp-user-role';
|
|
import { DmpUserType } from '@app/core/common/enum/dmp-user-type';
|
|
import { DmpBlueprintDefinitionSection } from '@app/core/model/dmp-blueprint/dmp-blueprint';
|
|
import { UserService } from '@app/core/services/user/user.service';
|
|
import { EnumUtils } from '@app/core/services/utilities/enum-utils.service';
|
|
import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration';
|
|
import { BaseComponent } from '@common/base/base.component';
|
|
import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model';
|
|
import { DmpEditorModel, DmpUserEditorModel } from '../dmp-editor-blueprint/dmp-editor.model';
|
|
|
|
@Component({
|
|
selector: 'app-user-field-component',
|
|
templateUrl: 'user-field.component.html',
|
|
styleUrls: ['./user-field.component.scss']
|
|
})
|
|
export class UserFieldComponent extends BaseComponent implements OnInit {
|
|
|
|
@Input() form;
|
|
@Input() validationErrorModel: ValidationErrorModel;
|
|
@Input() label: string = null;
|
|
@Input() required: boolean = false;
|
|
@Input() placeholder: string;
|
|
@Input() sections: DmpBlueprintDefinitionSection[] = null;
|
|
@Input() initializeUsers: boolean = false;
|
|
@Input() enableSorting: boolean = true;
|
|
|
|
dmpUserTypeEnum = DmpUserType;
|
|
dmpUserTypeEnumValues = this.enumUtils.getEnumValues<DmpUserType>(DmpUserType);
|
|
dmpUserRoleEnumValues = this.enumUtils.getEnumValues<DmpUserRole>(DmpUserRole);
|
|
|
|
multipleAutoCompleteSearchConfiguration: MultipleAutoCompleteConfiguration;
|
|
|
|
constructor(
|
|
public enumUtils: EnumUtils,
|
|
public userService: UserService
|
|
) { super(); }
|
|
|
|
ngOnInit() {
|
|
console.log('sorting mode: ', this.enableSorting);
|
|
if(this.initializeUsers) {
|
|
this.addUser();
|
|
}
|
|
}
|
|
|
|
addUser(): void {
|
|
const userArray = this.form.get('users') as FormArray;
|
|
const dmpUser: DmpUserEditorModel = new DmpUserEditorModel(this.validationErrorModel);
|
|
userArray.push(dmpUser.buildForm({ rootPath: "users[" + userArray.length + "]." }));
|
|
}
|
|
|
|
removeUser(userIndex: number): void {
|
|
(this.form.get('users') as FormArray).removeAt(userIndex);
|
|
|
|
DmpEditorModel.reApplyPropertiesValidators(
|
|
{
|
|
formGroup: this.form,
|
|
validationErrorModel: this.validationErrorModel
|
|
}
|
|
);
|
|
this.form.get('users').markAsDirty();
|
|
}
|
|
|
|
dropUsers(event: CdkDragDrop<string[]>) {
|
|
const usersFormArray = (this.form.get('users') as FormArray);
|
|
|
|
moveItemInArray(usersFormArray.controls, event.previousIndex, event.currentIndex);
|
|
usersFormArray.updateValueAndValidity();
|
|
|
|
DmpEditorModel.reApplyPropertiesValidators(
|
|
{
|
|
formGroup: this.form,
|
|
validationErrorModel: this.validationErrorModel
|
|
}
|
|
);
|
|
this.form.get('users').markAsDirty();
|
|
}
|
|
}
|