Browse Source

UI: Add allow created/view relation to rule chain

pull/13501/head
Vladyslav_Prykhodko 1 year ago
parent
commit
dfac02b14e
  1. 1
      ui-ngx/src/app/modules/home/components/relation/relation-dialog.component.html
  2. 23
      ui-ngx/src/app/modules/home/components/relation/relation-dialog.component.ts
  3. 1
      ui-ngx/src/app/shared/components/entity/entity-list-select.component.html
  4. 3
      ui-ngx/src/app/shared/components/entity/entity-list-select.component.ts

1
ui-ngx/src/app/modules/home/components/relation/relation-dialog.component.html

@ -38,6 +38,7 @@
'relation.to-entity' : 'relation.from-entity') | translate}}</small>
<tb-entity-list-select
formControlName="targetEntityIds"
[additionEntityTypes]="additionEntityTypes"
required="true">
</tb-entity-list-select>
<tb-json-object-edit

23
ui-ngx/src/app/modules/home/components/relation/relation-dialog.component.ts

@ -19,7 +19,7 @@ import { ErrorStateMatcher } from '@angular/material/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, FormGroupDirective, NgForm, Validators } from '@angular/forms';
import { FormBuilder, FormControl, FormGroup, FormGroupDirective, NgForm, Validators } from '@angular/forms';
import {
CONTAINS_TYPE,
EntityRelation,
@ -33,6 +33,9 @@ import { JsonObjectEditComponent } from '@shared/components/json-object-edit.com
import { Router } from '@angular/router';
import { DialogComponent } from '@shared/components/dialog.component';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { getCurrentAuthUser } from '@core/auth/auth.selectors';
import { Authority } from '@shared/models/authority.enum';
import { EntityType } from '@shared/models/entity-type.models';
export interface RelationDialogData {
isAdd: boolean;
@ -48,25 +51,29 @@ export interface RelationDialogData {
})
export class RelationDialogComponent extends DialogComponent<RelationDialogComponent, boolean> implements OnInit, ErrorStateMatcher {
relationFormGroup: UntypedFormGroup;
relationFormGroup: FormGroup;
additionEntityTypes: {[key in string]: string} = {};
isAdd: boolean;
direction: EntitySearchDirection;
entitySearchDirection = EntitySearchDirection;
additionalInfo: UntypedFormControl;
additionalInfo: FormControl;
@ViewChild('additionalInfoEdit', {static: true}) additionalInfoEdit: JsonObjectEditComponent;
submitted = false;
private authUser = getCurrentAuthUser(this.store);
constructor(protected store: Store<AppState>,
protected router: Router,
@Inject(MAT_DIALOG_DATA) public data: RelationDialogData,
private entityRelationService: EntityRelationService,
@SkipSelf() private errorStateMatcher: ErrorStateMatcher,
public dialogRef: MatDialogRef<RelationDialogComponent, boolean>,
public fb: UntypedFormBuilder,
public fb: FormBuilder,
private destroyRef: DestroyRef) {
super(store, router, dialogRef);
this.isAdd = data.isAdd;
@ -74,13 +81,17 @@ export class RelationDialogComponent extends DialogComponent<RelationDialogCompo
}
ngOnInit(): void {
if (this.authUser.authority === Authority.TENANT_ADMIN) {
this.additionEntityTypes = {[EntityType.RULE_CHAIN]: null};
}
this.relationFormGroup = this.fb.group({
type: [this.isAdd ? CONTAINS_TYPE : this.data.relation.type, [Validators.required]],
targetEntityIds: [this.isAdd ? null :
[this.direction === EntitySearchDirection.FROM ? this.data.relation.to : this.data.relation.from],
[Validators.required]]
});
this.additionalInfo = new UntypedFormControl(this.data.relation.additionalInfo ? {...this.data.relation.additionalInfo} : null);
this.additionalInfo = new FormControl(this.data.relation.additionalInfo ? {...this.data.relation.additionalInfo} : null);
if (!this.isAdd) {
this.relationFormGroup.get('type').disable();
this.relationFormGroup.get('targetEntityIds').disable();
@ -94,7 +105,7 @@ export class RelationDialogComponent extends DialogComponent<RelationDialogCompo
);
}
isErrorState(control: UntypedFormControl | null, form: FormGroupDirective | NgForm | null): boolean {
isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
const originalErrorState = this.errorStateMatcher.isErrorState(control, form);
const customErrorState = !!(control && control.invalid && this.submitted);
return originalErrorState || customErrorState;

1
ui-ngx/src/app/shared/components/entity/entity-list-select.component.html

@ -26,6 +26,7 @@
[useAliasEntityTypes]="useAliasEntityTypes"
[allowedEntityTypes]="allowedEntityTypes"
[filterAllowedEntityTypes]="filterAllowedEntityTypes"
[additionEntityTypes]="additionEntityTypes"
formControlName="entityType">
</tb-entity-type-select>
<tb-entity-list

3
ui-ngx/src/app/shared/components/entity/entity-list-select.component.ts

@ -65,6 +65,9 @@ export class EntityListSelectComponent implements ControlValueAccessor, OnInit {
@Input()
predefinedEntityType: EntityType | AliasEntityType;
@Input()
additionEntityTypes: {[key in string]: string} = {};
displayEntityTypeSelect: boolean;
private defaultEntityType: EntityType | AliasEntityType = null;

Loading…
Cancel
Save