divided ts and attr completers

This commit is contained in:
mpetrov 2025-02-14 18:50:34 +02:00
parent 4bd0833eed
commit 0004cdeaf9
3 changed files with 36 additions and 6 deletions

View File

@ -43,8 +43,9 @@ import {
CalculatedFieldDebugDialogData,
CalculatedFieldDialogData,
CalculatedFieldRollingValueArgumentAutocomplete,
CalculatedFieldSingleValueArgumentAutocomplete,
CalculatedFieldTestScriptDialogData,
CalculatedFieldAttributeValueArgumentAutocomplete,
CalculatedFieldLatestTelemetryArgumentAutocomplete,
} from '@shared/models/calculated-field.models';
import {
CalculatedFieldDebugDialogComponent,
@ -302,9 +303,17 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
private getArgumentsEditorCompleter(argumentsObj: Record<string, CalculatedFieldArgument>): TbEditorCompleter {
return new TbEditorCompleter(Object.keys(argumentsObj).reduce((acc, key) => {
acc[key] = argumentsObj[key].refEntityKey.type === ArgumentType.Rolling
? CalculatedFieldRollingValueArgumentAutocomplete
: CalculatedFieldSingleValueArgumentAutocomplete;
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

@ -184,6 +184,9 @@ export class JsFuncComponent implements OnInit, OnChanges, OnDestroy, ControlVal
this.updateFunctionArgsString();
this.updateFunctionLabel();
}
if (changes.editorCompleter) {
this.updateCompleters();
}
}
ngOnInit(): void {

View File

@ -213,10 +213,28 @@ export type CalculatedFieldArgumentEventValue<ValueType = unknown> = CalculatedF
export type CalculatedFieldEventArguments<ValueType = unknown> = Record<string, CalculatedFieldArgumentEventValue<ValueType>>;
export const CalculatedFieldSingleValueArgumentAutocomplete = {
export const CalculatedFieldLatestTelemetryArgumentAutocomplete = {
meta: 'object',
type: '{ ts: number; value: any; }',
description: 'Calculated field single value argument.',
description: 'Calculated field latest telemetry value argument.',
children: {
ts: {
meta: 'number',
type: 'number',
description: 'Time stamp',
},
value: {
meta: 'any',
type: 'any',
description: 'Value',
}
},
};
export const CalculatedFieldAttributeValueArgumentAutocomplete = {
meta: 'object',
type: '{ ts: number; value: any; }',
description: 'Calculated field attribute value argument.',
children: {
ts: {
meta: 'number',