preserve edit dialog on test
This commit is contained in:
		
							parent
							
								
									f8d88387fa
								
							
						
					
					
						commit
						9589317e97
					
				@ -39,7 +39,7 @@ import {
 | 
			
		||||
  CalculatedField,
 | 
			
		||||
  CalculatedFieldDebugDialogData,
 | 
			
		||||
  CalculatedFieldDialogData,
 | 
			
		||||
  CalculatedFieldTestScriptInputParams,
 | 
			
		||||
  CalculatedFieldTestScriptDialogData,
 | 
			
		||||
} from '@shared/models/calculated-field.models';
 | 
			
		||||
import {
 | 
			
		||||
  CalculatedFieldDebugDialogComponent,
 | 
			
		||||
@ -260,21 +260,24 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
 | 
			
		||||
    ).subscribe(() => this.updateData());
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private getTestScriptDialog(calculatedField: CalculatedField, argumentsObj?: Record<string, unknown>): Observable<string> {
 | 
			
		||||
    return this.dialog.open<CalculatedFieldScriptTestDialogComponent, CalculatedFieldTestScriptInputParams, string>(CalculatedFieldScriptTestDialogComponent,
 | 
			
		||||
  private getTestScriptDialog(calculatedField: CalculatedField, argumentsObj?: Record<string, unknown>, openCalculatedFieldEdit = true): Observable<string> {
 | 
			
		||||
    return this.dialog.open<CalculatedFieldScriptTestDialogComponent, CalculatedFieldTestScriptDialogData, string>(CalculatedFieldScriptTestDialogComponent,
 | 
			
		||||
      {
 | 
			
		||||
        disableClose: true,
 | 
			
		||||
        panelClass: ['tb-dialog', 'tb-fullscreen-dialog', 'tb-fullscreen-dialog-gt-xs'],
 | 
			
		||||
        data: {
 | 
			
		||||
          arguments: argumentsObj ?? Object.keys(calculatedField.configuration.arguments).reduce((acc, key) => { acc[key] = ''; return acc; }, {}),
 | 
			
		||||
          expression: calculatedField.configuration.expression,
 | 
			
		||||
          openCalculatedFieldEdit
 | 
			
		||||
        }
 | 
			
		||||
      }).afterClosed()
 | 
			
		||||
      .pipe(
 | 
			
		||||
        filter(Boolean),
 | 
			
		||||
        tap(expression =>
 | 
			
		||||
          this.editCalculatedField({...calculatedField, configuration: {...calculatedField.configuration, expression } }, true)
 | 
			
		||||
        ),
 | 
			
		||||
        tap(expression => {
 | 
			
		||||
          if (openCalculatedFieldEdit) {
 | 
			
		||||
            this.editCalculatedField({...calculatedField, configuration: {...calculatedField.configuration, expression } }, true)
 | 
			
		||||
          }
 | 
			
		||||
        }),
 | 
			
		||||
      );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -121,7 +121,10 @@ export class CalculatedFieldDialogComponent extends DialogComponent<CalculatedFi
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  onTestScript(): void {
 | 
			
		||||
    this.data.getTestScriptDialogFn(this.fromGroupValue).subscribe();
 | 
			
		||||
    this.data.getTestScriptDialogFn(this.fromGroupValue, null, false).subscribe(expression => {
 | 
			
		||||
      this.configFormGroup.get('expressionSCRIPT').setValue(expression);
 | 
			
		||||
      this.configFormGroup.get('expressionSCRIPT').markAsDirty();
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  private applyDialogData(): void {
 | 
			
		||||
 | 
			
		||||
@ -37,7 +37,7 @@ import { beautifyJs } from '@shared/models/beautify.models';
 | 
			
		||||
import { CalculatedFieldsService } from '@core/http/calculated-fields.service';
 | 
			
		||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
 | 
			
		||||
import { filter } from 'rxjs/operators';
 | 
			
		||||
import { CalculatedFieldTestScriptInputParams } from '@shared/models/calculated-field.models';
 | 
			
		||||
import { CalculatedFieldTestScriptDialogData } from '@shared/models/calculated-field.models';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'tb-calculated-field-script-test-dialog',
 | 
			
		||||
@ -66,7 +66,7 @@ export class CalculatedFieldScriptTestDialogComponent extends DialogComponent<Ca
 | 
			
		||||
 | 
			
		||||
  constructor(protected store: Store<AppState>,
 | 
			
		||||
              protected router: Router,
 | 
			
		||||
              @Inject(MAT_DIALOG_DATA) public data: CalculatedFieldTestScriptInputParams,
 | 
			
		||||
              @Inject(MAT_DIALOG_DATA) public data: CalculatedFieldTestScriptDialogData,
 | 
			
		||||
              protected dialogRef: MatDialogRef<CalculatedFieldScriptTestDialogComponent, string>,
 | 
			
		||||
              private dialog: MatDialog,
 | 
			
		||||
              private fb: FormBuilder,
 | 
			
		||||
@ -123,7 +123,7 @@ export class CalculatedFieldScriptTestDialogComponent extends DialogComponent<Ca
 | 
			
		||||
              }));
 | 
			
		||||
            return NEVER;
 | 
			
		||||
          } else {
 | 
			
		||||
            if (onSave) {
 | 
			
		||||
            if (onSave && this.data.openCalculatedFieldEdit) {
 | 
			
		||||
              this.dialog.closeAll();
 | 
			
		||||
            }
 | 
			
		||||
            return of(result.output);
 | 
			
		||||
 | 
			
		||||
@ -127,7 +127,7 @@ export interface CalculatedFieldArgumentValue extends CalculatedFieldArgument {
 | 
			
		||||
  argumentName: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export type CalculatedFieldTestScriptFn = (calculatedField: CalculatedField, argumentsObj?: Record<string, unknown>) => Observable<string>;
 | 
			
		||||
export type CalculatedFieldTestScriptFn = (calculatedField: CalculatedField, argumentsObj?: Record<string, unknown>, closeAllOnSave?: boolean) => Observable<string>;
 | 
			
		||||
 | 
			
		||||
export interface CalculatedFieldDialogData {
 | 
			
		||||
  value?: CalculatedField;
 | 
			
		||||
@ -152,6 +152,10 @@ export interface CalculatedFieldTestScriptInputParams {
 | 
			
		||||
  expression: string;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface CalculatedFieldTestScriptDialogData extends CalculatedFieldTestScriptInputParams {
 | 
			
		||||
  openCalculatedFieldEdit?: boolean;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface ArgumentEntityTypeParams {
 | 
			
		||||
  title: string;
 | 
			
		||||
  entityType: EntityType
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user