|
|
@ -38,7 +38,7 @@ import { TranslateService } from '@ngx-translate/core'; |
|
|
import { MatDialog } from '@angular/material/dialog'; |
|
|
import { MatDialog } from '@angular/material/dialog'; |
|
|
import { DialogService } from '@core/services/dialog.service'; |
|
|
import { DialogService } from '@core/services/dialog.service'; |
|
|
import { Direction, SortOrder } from '@shared/models/page/sort-order'; |
|
|
import { Direction, SortOrder } from '@shared/models/page/sort-order'; |
|
|
import { fromEvent, merge, Observable } from 'rxjs'; |
|
|
import { fromEvent, merge } from 'rxjs'; |
|
|
import { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators'; |
|
|
import { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators'; |
|
|
import { EntityId } from '@shared/models/id/entity-id'; |
|
|
import { EntityId } from '@shared/models/id/entity-id'; |
|
|
import { |
|
|
import { |
|
|
@ -48,7 +48,8 @@ import { |
|
|
isClientSideTelemetryType, |
|
|
isClientSideTelemetryType, |
|
|
LatestTelemetry, |
|
|
LatestTelemetry, |
|
|
TelemetryType, |
|
|
TelemetryType, |
|
|
telemetryTypeTranslations, TimeseriesDeleteStrategy, |
|
|
telemetryTypeTranslations, |
|
|
|
|
|
TimeseriesDeleteStrategy, |
|
|
toTelemetryType |
|
|
toTelemetryType |
|
|
} from '@shared/models/telemetry/telemetry.models'; |
|
|
} from '@shared/models/telemetry/telemetry.models'; |
|
|
import { AttributeDatasource } from '@home/models/datasource/attribute-datasource'; |
|
|
import { AttributeDatasource } from '@home/models/datasource/attribute-datasource'; |
|
|
@ -88,7 +89,8 @@ import { hidePageSizePixelValue } from '@shared/models/constants'; |
|
|
import { ResizeObserver } from '@juggle/resize-observer'; |
|
|
import { ResizeObserver } from '@juggle/resize-observer'; |
|
|
import { |
|
|
import { |
|
|
DELETE_TIMESERIES_PANEL_DATA, |
|
|
DELETE_TIMESERIES_PANEL_DATA, |
|
|
DeleteTimeseriesPanelComponent, DeleteTimeseriesPanelData |
|
|
DeleteTimeseriesPanelComponent, |
|
|
|
|
|
DeleteTimeseriesPanelData |
|
|
} from '@home/components/attribute/delete-timeseries-panel.component'; |
|
|
} from '@home/components/attribute/delete-timeseries-panel.component'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -383,15 +385,19 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
deleteTimeseries($event: Event, attribute?: AttributeData) { |
|
|
deleteTimeseries($event: Event, telemetry?: AttributeData) { |
|
|
if ($event) { |
|
|
if ($event) { |
|
|
$event.stopPropagation(); |
|
|
$event.stopPropagation(); |
|
|
} |
|
|
} |
|
|
const isMultipleDeletion = isUndefinedOrNull(attribute) && this.dataSource.selection.selected.length > 1; |
|
|
const isMultipleDeletion = isUndefinedOrNull(telemetry) && this.dataSource.selection.selected.length > 1; |
|
|
const target = $event.target || $event.srcElement || $event.currentTarget; |
|
|
const target = $event.target || $event.srcElement || $event.currentTarget; |
|
|
const config = new OverlayConfig(); |
|
|
const config = new OverlayConfig({ |
|
|
config.backdropClass = 'cdk-overlay-transparent-backdrop'; |
|
|
panelClass: 'tb-filter-panel', |
|
|
config.hasBackdrop = true; |
|
|
backdropClass: 'cdk-overlay-transparent-backdrop', |
|
|
|
|
|
hasBackdrop: true, |
|
|
|
|
|
maxWidth: 488, |
|
|
|
|
|
width: '100%' |
|
|
|
|
|
}); |
|
|
const connectedPosition: ConnectedPosition = { |
|
|
const connectedPosition: ConnectedPosition = { |
|
|
originX: 'start', |
|
|
originX: 'start', |
|
|
originY: 'top', |
|
|
originY: 'top', |
|
|
@ -400,8 +406,6 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI |
|
|
}; |
|
|
}; |
|
|
config.positionStrategy = this.overlay.position().flexibleConnectedTo(target as HTMLElement) |
|
|
config.positionStrategy = this.overlay.position().flexibleConnectedTo(target as HTMLElement) |
|
|
.withPositions([connectedPosition]); |
|
|
.withPositions([connectedPosition]); |
|
|
config.maxWidth = '488px'; |
|
|
|
|
|
config.width = '100%'; |
|
|
|
|
|
const overlayRef = this.overlay.create(config); |
|
|
const overlayRef = this.overlay.create(config); |
|
|
overlayRef.backdropClick().subscribe(() => { |
|
|
overlayRef.backdropClick().subscribe(() => { |
|
|
overlayRef.dispose(); |
|
|
overlayRef.dispose(); |
|
|
@ -411,7 +415,7 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI |
|
|
{ |
|
|
{ |
|
|
provide: DELETE_TIMESERIES_PANEL_DATA, |
|
|
provide: DELETE_TIMESERIES_PANEL_DATA, |
|
|
useValue: { |
|
|
useValue: { |
|
|
isMultipleDeletion: isMultipleDeletion |
|
|
isMultipleDeletion |
|
|
} as DeleteTimeseriesPanelData |
|
|
} as DeleteTimeseriesPanelData |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
@ -425,31 +429,34 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI |
|
|
componentRef.onDestroy(() => { |
|
|
componentRef.onDestroy(() => { |
|
|
if (componentRef.instance.result !== null) { |
|
|
if (componentRef.instance.result !== null) { |
|
|
const result = componentRef.instance.result; |
|
|
const result = componentRef.instance.result; |
|
|
const deleteTimeseries = attribute ? [attribute]: this.dataSource.selection.selected; |
|
|
const deleteTimeseries = telemetry ? [telemetry]: this.dataSource.selection.selected; |
|
|
let deleteAllDataForKeys = false; |
|
|
let deleteAllDataForKeys = false; |
|
|
let rewriteLatestIfDeleted = false; |
|
|
let rewriteLatestIfDeleted = false; |
|
|
let startTs = null; |
|
|
let startTs = null; |
|
|
let endTs = null; |
|
|
let endTs = null; |
|
|
let deleteLatest = true; |
|
|
let deleteLatest = true; |
|
|
if (result.strategy === TimeseriesDeleteStrategy.DELETE_ALL_DATA) { |
|
|
switch (result.strategy) { |
|
|
deleteAllDataForKeys = true; |
|
|
case TimeseriesDeleteStrategy.DELETE_ALL_DATA: |
|
|
} |
|
|
deleteAllDataForKeys = true; |
|
|
if (result.strategy === TimeseriesDeleteStrategy.DELETE_ALL_DATA_EXCEPT_LATEST_VALUE) { |
|
|
break; |
|
|
deleteAllDataForKeys = true; |
|
|
case TimeseriesDeleteStrategy.DELETE_ALL_DATA_EXCEPT_LATEST_VALUE: |
|
|
deleteLatest = false; |
|
|
deleteAllDataForKeys = true; |
|
|
} |
|
|
deleteLatest = false; |
|
|
if (result.strategy === TimeseriesDeleteStrategy.DELETE_LATEST_VALUE) { |
|
|
break; |
|
|
rewriteLatestIfDeleted = result.rewriteLatest; |
|
|
case TimeseriesDeleteStrategy.DELETE_LATEST_VALUE: |
|
|
startTs = deleteTimeseries[0].lastUpdateTs; |
|
|
rewriteLatestIfDeleted = result.rewriteLatest; |
|
|
endTs = startTs + 1; |
|
|
startTs = deleteTimeseries[0].lastUpdateTs; |
|
|
} |
|
|
endTs = startTs + 1; |
|
|
if (result.strategy === TimeseriesDeleteStrategy.DELETE_ALL_DATA_FOR_TIME_PERIOD) { |
|
|
break; |
|
|
startTs = result.startDateTime.getTime(); |
|
|
case TimeseriesDeleteStrategy.DELETE_ALL_DATA_FOR_TIME_PERIOD: |
|
|
endTs = result.endDateTime.getTime(); |
|
|
startTs = result.startDateTime.getTime(); |
|
|
rewriteLatestIfDeleted = result.rewriteLatest; |
|
|
endTs = result.endDateTime.getTime(); |
|
|
|
|
|
rewriteLatestIfDeleted = result.rewriteLatest; |
|
|
|
|
|
break; |
|
|
} |
|
|
} |
|
|
this.attributeService.deleteEntityTimeseries(this.entityIdValue, deleteTimeseries, deleteAllDataForKeys, |
|
|
this.attributeService.deleteEntityTimeseries(this.entityIdValue, deleteTimeseries, deleteAllDataForKeys, |
|
|
startTs, endTs, rewriteLatestIfDeleted, deleteLatest).subscribe(() => this.reloadAttributes()); |
|
|
startTs, endTs, rewriteLatestIfDeleted, deleteLatest) |
|
|
|
|
|
.subscribe(() => this.reloadAttributes()); |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|