|
|
|
@ -57,7 +57,7 @@ import { |
|
|
|
CalculatedFieldTestScriptDialogData |
|
|
|
} from './components/public-api'; |
|
|
|
import { ImportExportService } from '@shared/import-export/import-export.service'; |
|
|
|
import { getEntityDetailsPageURL, isObject } from '@core/utils'; |
|
|
|
import { deepClone, getEntityDetailsPageURL, isObject } from '@core/utils'; |
|
|
|
import { EntityDebugSettingsService } from '@home/components/entity/debug/entity-debug-settings.service'; |
|
|
|
import { DatePipe } from '@angular/common'; |
|
|
|
import { UtilsService } from "@core/services/utils.service"; |
|
|
|
@ -73,7 +73,7 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
readonly tenantId = getCurrentAuthUser(this.store).tenantId; |
|
|
|
additionalDebugActionConfig = { |
|
|
|
title: this.translate.instant('calculated-fields.see-debug-events'), |
|
|
|
action: (calculatedField: CalculatedField) => this.openDebugEventsDialog.call(this, calculatedField), |
|
|
|
action: (calculatedField: CalculatedField) => this.openDebugEventsDialog.call(this, null, calculatedField), |
|
|
|
}; |
|
|
|
|
|
|
|
calculatedFieldFilterConfig: CalculatedFieldsQuery; |
|
|
|
@ -96,6 +96,11 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
super(); |
|
|
|
if (this.pageMode) { |
|
|
|
this.headerComponent = CalculatedFieldsHeaderComponent; |
|
|
|
|
|
|
|
this.handleRowClick = ($event, entity) => { |
|
|
|
this.editCalculatedField($event, entity); |
|
|
|
return true; |
|
|
|
}; |
|
|
|
} |
|
|
|
this.tableTitle = this.pageMode ? '' : this.translate.instant('entity.type-calculated-fields'); |
|
|
|
this.detailsPanelEnabled = false; |
|
|
|
@ -152,17 +157,23 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
} |
|
|
|
|
|
|
|
this.cellActionDescriptors.push( |
|
|
|
{ |
|
|
|
name: this.translate.instant('action.copy'), |
|
|
|
icon: 'content_copy', |
|
|
|
isEnabled: () => true, |
|
|
|
onAction: ($event, entity) => this.copyCalculatedField($event, entity), |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: this.translate.instant('action.export'), |
|
|
|
icon: 'file_download', |
|
|
|
isEnabled: () => true, |
|
|
|
onAction: (event$, entity) => this.exportCalculatedField(event$, entity), |
|
|
|
onAction: ($event, entity) => this.exportCalculatedField($event, entity), |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: this.translate.instant('entity-view.events'), |
|
|
|
icon: 'mdi:clipboard-text-clock', |
|
|
|
isEnabled: () => true, |
|
|
|
onAction: (_, entity) => this.openDebugEventsDialog(entity), |
|
|
|
onAction: ($event, entity) => this.openDebugEventsDialog($event, entity), |
|
|
|
}, |
|
|
|
{ |
|
|
|
name: '', |
|
|
|
@ -176,7 +187,7 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
name: this.translate.instant('action.edit'), |
|
|
|
icon: 'edit', |
|
|
|
isEnabled: () => true, |
|
|
|
onAction: (_, entity) => this.editCalculatedField(entity), |
|
|
|
onAction: ($event, entity) => this.editCalculatedField($event, entity), |
|
|
|
} |
|
|
|
); |
|
|
|
} |
|
|
|
@ -198,14 +209,12 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
} |
|
|
|
|
|
|
|
onOpenDebugConfig($event: Event, calculatedField: CalculatedField): void { |
|
|
|
$event?.stopPropagation(); |
|
|
|
const { debugSettings = {}, id } = calculatedField; |
|
|
|
const additionalActionConfig = { |
|
|
|
...this.additionalDebugActionConfig, |
|
|
|
action: () => this.openDebugEventsDialog(calculatedField) |
|
|
|
action: () => this.openDebugEventsDialog($event, calculatedField) |
|
|
|
}; |
|
|
|
if ($event) { |
|
|
|
$event.stopPropagation(); |
|
|
|
} |
|
|
|
|
|
|
|
const { viewContainerRef, renderer } = this.entityDebugSettingsService; |
|
|
|
if (!viewContainerRef || !renderer) { |
|
|
|
@ -223,7 +232,8 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
}, $event.target as Element); |
|
|
|
} |
|
|
|
|
|
|
|
private editCalculatedField(calculatedField: CalculatedField, isDirty = false): void { |
|
|
|
private editCalculatedField($event: Event, calculatedField: CalculatedField, isDirty = false): void { |
|
|
|
$event?.stopPropagation(); |
|
|
|
this.getCalculatedFieldDialog(calculatedField, 'action.apply', isDirty) |
|
|
|
.subscribe((res) => { |
|
|
|
if (res) { |
|
|
|
@ -233,13 +243,14 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
} |
|
|
|
|
|
|
|
private getCalculatedFieldDialog(value?: CalculatedField, buttonTitle = 'action.add', isDirty = false): Observable<CalculatedField> { |
|
|
|
const entityId = this.entityId || value?.entityId; |
|
|
|
return this.dialog.open<CalculatedFieldDialogComponent, CalculatedFieldDialogData, CalculatedField>(CalculatedFieldDialogComponent, { |
|
|
|
disableClose: true, |
|
|
|
panelClass: ['tb-dialog', 'tb-fullscreen-dialog'], |
|
|
|
data: { |
|
|
|
value, |
|
|
|
buttonTitle, |
|
|
|
entityId: this.entityId, |
|
|
|
entityId, |
|
|
|
tenantId: this.tenantId, |
|
|
|
entityName: this.entityName, |
|
|
|
ownerId: this.ownerId, |
|
|
|
@ -253,7 +264,8 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
.pipe(filter(Boolean)); |
|
|
|
} |
|
|
|
|
|
|
|
private openDebugEventsDialog(calculatedField: CalculatedField): void { |
|
|
|
private openDebugEventsDialog($event: Event, calculatedField: CalculatedField): void { |
|
|
|
$event?.stopPropagation(); |
|
|
|
const debugActionEnabledFn = (event: DebugEvent) => { |
|
|
|
return (calculatedField.type === CalculatedFieldType.SCRIPT || |
|
|
|
(calculatedField.type === CalculatedFieldType.PROPAGATION && |
|
|
|
@ -285,12 +297,25 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
} |
|
|
|
|
|
|
|
private exportCalculatedField($event: Event, calculatedField: CalculatedField): void { |
|
|
|
if ($event) { |
|
|
|
$event.stopPropagation(); |
|
|
|
} |
|
|
|
$event?.stopPropagation(); |
|
|
|
this.importExportService.exportCalculatedField(calculatedField.id.id); |
|
|
|
} |
|
|
|
|
|
|
|
private copyCalculatedField($event: Event, calculatedField: CalculatedField): void { |
|
|
|
$event?.stopPropagation(); |
|
|
|
const copyCalculatedAlarmRule = deepClone(calculatedField); |
|
|
|
if (this.pageMode) { |
|
|
|
copyCalculatedAlarmRule.entityId = null; |
|
|
|
} |
|
|
|
delete copyCalculatedAlarmRule.id; |
|
|
|
this.getCalculatedFieldDialog(copyCalculatedAlarmRule, 'action.apply', false) |
|
|
|
.subscribe((res) => { |
|
|
|
if (res) { |
|
|
|
this.updateData(); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
private importCalculatedField(): void { |
|
|
|
this.importExportService.openCalculatedFieldImportDialog() |
|
|
|
.pipe( |
|
|
|
@ -376,7 +401,7 @@ export class CalculatedFieldsTableConfig extends EntityTableConfig<CalculatedFie |
|
|
|
filter(Boolean), |
|
|
|
tap(expression => { |
|
|
|
if (openCalculatedFieldEdit) { |
|
|
|
this.editCalculatedField({ |
|
|
|
this.editCalculatedField(null, { |
|
|
|
entityId: this.entityId, ...calculatedField, |
|
|
|
configuration: {...calculatedField.configuration, expression} as any |
|
|
|
}, true) |
|
|
|
|