preserve edit dialog on test

This commit is contained in:
mpetrov 2025-02-11 16:25:01 +02:00
parent f8d88387fa
commit 9589317e97
4 changed files with 21 additions and 11 deletions

View File

@ -39,7 +39,7 @@ import {
CalculatedField, CalculatedField,
CalculatedFieldDebugDialogData, CalculatedFieldDebugDialogData,
CalculatedFieldDialogData, CalculatedFieldDialogData,
CalculatedFieldTestScriptInputParams, CalculatedFieldTestScriptDialogData,
} from '@shared/models/calculated-field.models'; } from '@shared/models/calculated-field.models';
import { import {
CalculatedFieldDebugDialogComponent, CalculatedFieldDebugDialogComponent,
@ -260,21 +260,24 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
).subscribe(() => this.updateData()); ).subscribe(() => this.updateData());
} }
private getTestScriptDialog(calculatedField: CalculatedField, argumentsObj?: Record<string, unknown>): Observable<string> { private getTestScriptDialog(calculatedField: CalculatedField, argumentsObj?: Record<string, unknown>, openCalculatedFieldEdit = true): Observable<string> {
return this.dialog.open<CalculatedFieldScriptTestDialogComponent, CalculatedFieldTestScriptInputParams, string>(CalculatedFieldScriptTestDialogComponent, return this.dialog.open<CalculatedFieldScriptTestDialogComponent, CalculatedFieldTestScriptDialogData, string>(CalculatedFieldScriptTestDialogComponent,
{ {
disableClose: true, disableClose: true,
panelClass: ['tb-dialog', 'tb-fullscreen-dialog', 'tb-fullscreen-dialog-gt-xs'], panelClass: ['tb-dialog', 'tb-fullscreen-dialog', 'tb-fullscreen-dialog-gt-xs'],
data: { data: {
arguments: argumentsObj ?? Object.keys(calculatedField.configuration.arguments).reduce((acc, key) => { acc[key] = ''; return acc; }, {}), arguments: argumentsObj ?? Object.keys(calculatedField.configuration.arguments).reduce((acc, key) => { acc[key] = ''; return acc; }, {}),
expression: calculatedField.configuration.expression, expression: calculatedField.configuration.expression,
openCalculatedFieldEdit
} }
}).afterClosed() }).afterClosed()
.pipe( .pipe(
filter(Boolean), filter(Boolean),
tap(expression => tap(expression => {
this.editCalculatedField({...calculatedField, configuration: {...calculatedField.configuration, expression } }, true) if (openCalculatedFieldEdit) {
), this.editCalculatedField({...calculatedField, configuration: {...calculatedField.configuration, expression } }, true)
}
}),
); );
} }
} }

View File

@ -121,7 +121,10 @@ export class CalculatedFieldDialogComponent extends DialogComponent<CalculatedFi
} }
onTestScript(): void { 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 { private applyDialogData(): void {

View File

@ -37,7 +37,7 @@ import { beautifyJs } from '@shared/models/beautify.models';
import { CalculatedFieldsService } from '@core/http/calculated-fields.service'; import { CalculatedFieldsService } from '@core/http/calculated-fields.service';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { filter } from 'rxjs/operators'; import { filter } from 'rxjs/operators';
import { CalculatedFieldTestScriptInputParams } from '@shared/models/calculated-field.models'; import { CalculatedFieldTestScriptDialogData } from '@shared/models/calculated-field.models';
@Component({ @Component({
selector: 'tb-calculated-field-script-test-dialog', selector: 'tb-calculated-field-script-test-dialog',
@ -66,7 +66,7 @@ export class CalculatedFieldScriptTestDialogComponent extends DialogComponent<Ca
constructor(protected store: Store<AppState>, constructor(protected store: Store<AppState>,
protected router: Router, protected router: Router,
@Inject(MAT_DIALOG_DATA) public data: CalculatedFieldTestScriptInputParams, @Inject(MAT_DIALOG_DATA) public data: CalculatedFieldTestScriptDialogData,
protected dialogRef: MatDialogRef<CalculatedFieldScriptTestDialogComponent, string>, protected dialogRef: MatDialogRef<CalculatedFieldScriptTestDialogComponent, string>,
private dialog: MatDialog, private dialog: MatDialog,
private fb: FormBuilder, private fb: FormBuilder,
@ -123,7 +123,7 @@ export class CalculatedFieldScriptTestDialogComponent extends DialogComponent<Ca
})); }));
return NEVER; return NEVER;
} else { } else {
if (onSave) { if (onSave && this.data.openCalculatedFieldEdit) {
this.dialog.closeAll(); this.dialog.closeAll();
} }
return of(result.output); return of(result.output);

View File

@ -127,7 +127,7 @@ export interface CalculatedFieldArgumentValue extends CalculatedFieldArgument {
argumentName: string; 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 { export interface CalculatedFieldDialogData {
value?: CalculatedField; value?: CalculatedField;
@ -152,6 +152,10 @@ export interface CalculatedFieldTestScriptInputParams {
expression: string; expression: string;
} }
export interface CalculatedFieldTestScriptDialogData extends CalculatedFieldTestScriptInputParams {
openCalculatedFieldEdit?: boolean;
}
export interface ArgumentEntityTypeParams { export interface ArgumentEntityTypeParams {
title: string; title: string;
entityType: EntityType entityType: EntityType