Improved context passing

This commit is contained in:
mpetrov 2025-02-06 17:01:33 +02:00
parent 5354eaa80b
commit ff647aedc7
3 changed files with 11 additions and 17 deletions

View File

@ -42,6 +42,7 @@ import {
} from '@shared/models/calculated-field.models'; } from '@shared/models/calculated-field.models';
import { CalculatedFieldDebugDialogComponent, CalculatedFieldDialogComponent } from './components/public-api'; import { CalculatedFieldDebugDialogComponent, CalculatedFieldDialogComponent } from './components/public-api';
import { ImportExportService } from '@shared/import-export/import-export.service'; import { ImportExportService } from '@shared/import-export/import-export.service';
import { CalculatedFieldId } from '@shared/models/id/calculated-field-id';
export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedField, PageLink> { export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedField, PageLink> {
@ -52,11 +53,7 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
readonly tenantId = getCurrentAuthUser(this.store).tenantId; readonly tenantId = getCurrentAuthUser(this.store).tenantId;
additionalDebugActionConfig = { additionalDebugActionConfig = {
title: this.translate.instant('calculated-fields.see-debug-events'), title: this.translate.instant('calculated-fields.see-debug-events'),
action: this.openDebugDialog.bind(this), action: (id?: CalculatedFieldId) => this.openDebugDialog.call(this, id),
data: {
tenantId: this.tenantId,
entityId: this.entityId,
},
}; };
constructor(private calculatedFieldsService: CalculatedFieldsService, constructor(private calculatedFieldsService: CalculatedFieldsService,
@ -140,7 +137,7 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
onOpenDebugConfig($event: Event, { debugSettings = {}, id }: CalculatedField): void { onOpenDebugConfig($event: Event, { debugSettings = {}, id }: CalculatedField): void {
const additionalActionConfig = { const additionalActionConfig = {
...this.additionalDebugActionConfig, ...this.additionalDebugActionConfig,
action: () => this.openDebugDialog({...this.additionalDebugActionConfig.data, id }), action: () => this.openDebugDialog(id)
}; };
const { viewContainerRef } = this.getTable(); const { viewContainerRef } = this.getTable();
if ($event) { if ($event) {
@ -206,11 +203,15 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie
.afterClosed(); .afterClosed();
} }
private openDebugDialog(data: CalculatedFieldDebugDialogData): void { private openDebugDialog(id: CalculatedFieldId): void {
this.dialog.open<CalculatedFieldDebugDialogComponent, CalculatedFieldDebugDialogData, null>(CalculatedFieldDebugDialogComponent, { this.dialog.open<CalculatedFieldDebugDialogComponent, CalculatedFieldDebugDialogData, null>(CalculatedFieldDebugDialogComponent, {
disableClose: true, disableClose: true,
panelClass: ['tb-dialog', 'tb-fullscreen-dialog'], panelClass: ['tb-dialog', 'tb-fullscreen-dialog'],
data data: {
tenantId: this.tenantId,
entityId: this.entityId,
id
}
}) })
.afterClosed() .afterClosed()
.subscribe(); .subscribe();

View File

@ -67,10 +67,7 @@ export class CalculatedFieldDialogComponent extends DialogComponent<CalculatedFi
additionalDebugActionConfig = this.data.value?.id ? { additionalDebugActionConfig = this.data.value?.id ? {
...this.data.additionalDebugActionConfig, ...this.data.additionalDebugActionConfig,
action: () => this.data.additionalDebugActionConfig.action({ action: () => this.data.additionalDebugActionConfig.action(this.data.value.id)
...this.data.additionalDebugActionConfig.data,
id: this.data.value.id,
}),
} : null; } : null;
readonly OutputTypeTranslations = OutputTypeTranslations; readonly OutputTypeTranslations = OutputTypeTranslations;

View File

@ -21,7 +21,6 @@ import { DeviceCredentialMQTTBasic } from '@shared/models/device.models';
import { Lwm2mSecurityConfigModels } from '@shared/models/lwm2m-security-config.models'; import { Lwm2mSecurityConfigModels } from '@shared/models/lwm2m-security-config.models';
import { TenantId } from '@shared/models/id/tenant-id'; import { TenantId } from '@shared/models/id/tenant-id';
import { RuleChainMetaData } from '@shared/models/rule-chain.models'; import { RuleChainMetaData } from '@shared/models/rule-chain.models';
import { CalculatedFieldDebugDialogData } from '@shared/models/calculated-field.models';
export interface EntityInfo { export interface EntityInfo {
name?: string; name?: string;
@ -204,12 +203,9 @@ export interface EntityDebugSettings {
allEnabledUntil?: number; allEnabledUntil?: number;
} }
export type AdditionalDebugActionConfigData = CalculatedFieldDebugDialogData;
export interface AdditionalDebugActionConfig { export interface AdditionalDebugActionConfig {
action?: (data?: AdditionalDebugActionConfigData) => void; action?: (id?: EntityId) => void;
title: string; title: string;
data: AdditionalDebugActionConfigData;
} }
export type VersionedEntity = EntityInfoData & HasVersion | RuleChainMetaData; export type VersionedEntity = EntityInfoData & HasVersion | RuleChainMetaData;