getCalculatedFieldArgumentsEditorCompleter to models
This commit is contained in:
		
							parent
							
								
									0004cdeaf9
								
							
						
					
					
						commit
						3bc68e8e21
					
				@ -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;
 | 
			
		||||
    }, {}))
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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 ? {
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
  }, {}))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user