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 { catchError, filter, switchMap, tap } from 'rxjs/operators';
import {
ArgumentType,
CalculatedField,
CalculatedFieldArgument,
CalculatedFieldEventArguments,
CalculatedFieldDebugDialogData,
CalculatedFieldDialogData,
CalculatedFieldRollingValueArgumentAutocomplete,
CalculatedFieldTestScriptDialogData,
CalculatedFieldAttributeValueArgumentAutocomplete,
CalculatedFieldLatestTelemetryArgumentAutocomplete,
getCalculatedFieldArgumentsEditorCompleter,
} from '@shared/models/calculated-field.models';
import {
CalculatedFieldDebugDialogComponent,
@ -219,7 +215,6 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
additionalDebugActionConfig: this.additionalDebugActionConfig,
getTestScriptDialogFn: this.getTestScriptDialog.bind(this),
isDirty,
getArgumentsEditorCompleterFn: this.getArgumentsEditorCompleter,
},
enterAnimationDuration: isDirty ? 0 : null,
})
@ -287,7 +282,7 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
data: {
arguments: resultArguments,
expression: calculatedField.configuration.expression,
argumentsEditorCompleter: this.getArgumentsEditorCompleter(calculatedField.configuration.arguments),
argumentsEditorCompleter: getCalculatedFieldArgumentsEditorCompleter(calculatedField.configuration.arguments),
openCalculatedFieldEdit
}
}).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,
CalculatedFieldType,
CalculatedFieldTypeTranslations,
getCalculatedFieldArgumentsEditorCompleter,
OutputType,
OutputTypeTranslations
} from '@shared/models/calculated-field.models';
@ -69,7 +70,7 @@ export class CalculatedFieldDialogComponent extends DialogComponent<CalculatedFi
argumentsEditorCompleter$ = this.configFormGroup.get('arguments').valueChanges
.pipe(
startWith(this.data.value?.configuration?.arguments ?? {}),
map(argumentsObj => this.data.getArgumentsEditorCompleterFn(argumentsObj))
map(argumentsObj => getCalculatedFieldArgumentsEditorCompleter(argumentsObj))
);
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 CalculatedFieldArgumentsEditorCompleterFn = (argumentsObj: Record<string, CalculatedFieldArgument>) => TbEditorCompleter;
export interface CalculatedFieldDialogData {
value?: CalculatedField;
buttonTitle: string;
@ -142,7 +140,6 @@ export interface CalculatedFieldDialogData {
additionalDebugActionConfig: AdditionalDebugActionConfig<(calculatedField: CalculatedField) => void>;
getTestScriptDialogFn: CalculatedFieldTestScriptFn;
isDirty?: boolean;
getArgumentsEditorCompleterFn: CalculatedFieldArgumentsEditorCompleterFn;
}
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;
}, {}))
}