getCalculatedFieldArgumentsEditorCompleter to models

This commit is contained in:
mpetrov 2025-02-14 19:02:48 +02:00
parent 0004cdeaf9
commit 3bc68e8e21
3 changed files with 21 additions and 28 deletions

View File

@ -36,16 +36,12 @@ import { EntityDebugSettingsPanelComponent } from '@home/components/entity/debug
import { CalculatedFieldsService } from '@core/http/calculated-fields.service'; import { CalculatedFieldsService } from '@core/http/calculated-fields.service';
import { catchError, filter, switchMap, tap } from 'rxjs/operators'; import { catchError, filter, switchMap, tap } from 'rxjs/operators';
import { import {
ArgumentType,
CalculatedField, CalculatedField,
CalculatedFieldArgument,
CalculatedFieldEventArguments, CalculatedFieldEventArguments,
CalculatedFieldDebugDialogData, CalculatedFieldDebugDialogData,
CalculatedFieldDialogData, CalculatedFieldDialogData,
CalculatedFieldRollingValueArgumentAutocomplete,
CalculatedFieldTestScriptDialogData, CalculatedFieldTestScriptDialogData,
CalculatedFieldAttributeValueArgumentAutocomplete, getCalculatedFieldArgumentsEditorCompleter,
CalculatedFieldLatestTelemetryArgumentAutocomplete,
} from '@shared/models/calculated-field.models'; } from '@shared/models/calculated-field.models';
import { import {
CalculatedFieldDebugDialogComponent, CalculatedFieldDebugDialogComponent,
@ -219,7 +215,6 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
additionalDebugActionConfig: this.additionalDebugActionConfig, additionalDebugActionConfig: this.additionalDebugActionConfig,
getTestScriptDialogFn: this.getTestScriptDialog.bind(this), getTestScriptDialogFn: this.getTestScriptDialog.bind(this),
isDirty, isDirty,
getArgumentsEditorCompleterFn: this.getArgumentsEditorCompleter,
}, },
enterAnimationDuration: isDirty ? 0 : null, enterAnimationDuration: isDirty ? 0 : null,
}) })
@ -287,7 +282,7 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
data: { data: {
arguments: resultArguments, arguments: resultArguments,
expression: calculatedField.configuration.expression, expression: calculatedField.configuration.expression,
argumentsEditorCompleter: this.getArgumentsEditorCompleter(calculatedField.configuration.arguments), argumentsEditorCompleter: getCalculatedFieldArgumentsEditorCompleter(calculatedField.configuration.arguments),
openCalculatedFieldEdit openCalculatedFieldEdit
} }
}).afterClosed() }).afterClosed()
@ -300,21 +295,4 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
}), }),
); );
} }
private getArgumentsEditorCompleter(argumentsObj: Record<string, CalculatedFieldArgument>): TbEditorCompleter {
return new TbEditorCompleter(Object.keys(argumentsObj).reduce((acc, key) => {
switch (argumentsObj[key].refEntityKey.type) {
case ArgumentType.Attribute:
acc[key] = CalculatedFieldAttributeValueArgumentAutocomplete;
break;
case ArgumentType.LatestTelemetry:
acc[key] = CalculatedFieldLatestTelemetryArgumentAutocomplete;
break;
case ArgumentType.Rolling:
acc[key] = CalculatedFieldRollingValueArgumentAutocomplete;
break;
}
return acc;
}, {}))
}
} }

View File

@ -27,6 +27,7 @@ import {
CalculatedFieldDialogData, CalculatedFieldDialogData,
CalculatedFieldType, CalculatedFieldType,
CalculatedFieldTypeTranslations, CalculatedFieldTypeTranslations,
getCalculatedFieldArgumentsEditorCompleter,
OutputType, OutputType,
OutputTypeTranslations OutputTypeTranslations
} from '@shared/models/calculated-field.models'; } from '@shared/models/calculated-field.models';
@ -69,7 +70,7 @@ export class CalculatedFieldDialogComponent extends DialogComponent<CalculatedFi
argumentsEditorCompleter$ = this.configFormGroup.get('arguments').valueChanges argumentsEditorCompleter$ = this.configFormGroup.get('arguments').valueChanges
.pipe( .pipe(
startWith(this.data.value?.configuration?.arguments ?? {}), startWith(this.data.value?.configuration?.arguments ?? {}),
map(argumentsObj => this.data.getArgumentsEditorCompleterFn(argumentsObj)) map(argumentsObj => getCalculatedFieldArgumentsEditorCompleter(argumentsObj))
); );
additionalDebugActionConfig = this.data.value?.id ? { additionalDebugActionConfig = this.data.value?.id ? {

View File

@ -130,8 +130,6 @@ export interface CalculatedFieldArgumentValue extends CalculatedFieldArgument {
export type CalculatedFieldTestScriptFn = (calculatedField: CalculatedField, argumentsObj?: Record<string, unknown>, closeAllOnSave?: boolean) => Observable<string>; export type CalculatedFieldTestScriptFn = (calculatedField: CalculatedField, argumentsObj?: Record<string, unknown>, closeAllOnSave?: boolean) => Observable<string>;
export type CalculatedFieldArgumentsEditorCompleterFn = (argumentsObj: Record<string, CalculatedFieldArgument>) => TbEditorCompleter;
export interface CalculatedFieldDialogData { export interface CalculatedFieldDialogData {
value?: CalculatedField; value?: CalculatedField;
buttonTitle: string; buttonTitle: string;
@ -142,7 +140,6 @@ export interface CalculatedFieldDialogData {
additionalDebugActionConfig: AdditionalDebugActionConfig<(calculatedField: CalculatedField) => void>; additionalDebugActionConfig: AdditionalDebugActionConfig<(calculatedField: CalculatedField) => void>;
getTestScriptDialogFn: CalculatedFieldTestScriptFn; getTestScriptDialogFn: CalculatedFieldTestScriptFn;
isDirty?: boolean; isDirty?: boolean;
getArgumentsEditorCompleterFn: CalculatedFieldArgumentsEditorCompleterFn;
} }
export interface CalculatedFieldDebugDialogData { export interface CalculatedFieldDebugDialogData {
@ -283,3 +280,20 @@ export const CalculatedFieldRollingValueArgumentAutocomplete = {
} }
}, },
}; };
export const getCalculatedFieldArgumentsEditorCompleter = (argumentsObj: Record<string, CalculatedFieldArgument>): TbEditorCompleter => {
return new TbEditorCompleter(Object.keys(argumentsObj).reduce((acc, key) => {
switch (argumentsObj[key].refEntityKey.type) {
case ArgumentType.Attribute:
acc[key] = CalculatedFieldAttributeValueArgumentAutocomplete;
break;
case ArgumentType.LatestTelemetry:
acc[key] = CalculatedFieldLatestTelemetryArgumentAutocomplete;
break;
case ArgumentType.Rolling:
acc[key] = CalculatedFieldRollingValueArgumentAutocomplete;
break;
}
return acc;
}, {}))
}