|
|
@ -39,7 +39,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 { merge, Subject } from 'rxjs'; |
|
|
import { forkJoin, merge, Observable, Subject } from 'rxjs'; |
|
|
import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators'; |
|
|
import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators'; |
|
|
import { EntityId } from '@shared/models/id/entity-id'; |
|
|
import { EntityId } from '@shared/models/id/entity-id'; |
|
|
import { |
|
|
import { |
|
|
@ -84,15 +84,11 @@ import { |
|
|
AddWidgetToDashboardDialogComponent, |
|
|
AddWidgetToDashboardDialogComponent, |
|
|
AddWidgetToDashboardDialogData |
|
|
AddWidgetToDashboardDialogData |
|
|
} from '@home/components/attribute/add-widget-to-dashboard-dialog.component'; |
|
|
} from '@home/components/attribute/add-widget-to-dashboard-dialog.component'; |
|
|
import { deepClone, isUndefinedOrNull } from '@core/utils'; |
|
|
import { deepClone } from '@core/utils'; |
|
|
import { Filters } from '@shared/models/query/query.models'; |
|
|
import { Filters } from '@shared/models/query/query.models'; |
|
|
import { hidePageSizePixelValue } from '@shared/models/constants'; |
|
|
import { hidePageSizePixelValue } from '@shared/models/constants'; |
|
|
import { ResizeObserver } from '@juggle/resize-observer'; |
|
|
import { ResizeObserver } from '@juggle/resize-observer'; |
|
|
import { |
|
|
import { DeleteTimeseriesPanelComponent } from '@home/components/attribute/delete-timeseries-panel.component'; |
|
|
DELETE_TIMESERIES_PANEL_DATA, |
|
|
|
|
|
DeleteTimeseriesPanelComponent, |
|
|
|
|
|
DeleteTimeseriesPanelData |
|
|
|
|
|
} from '@home/components/attribute/delete-timeseries-panel.component'; |
|
|
|
|
|
import { FormBuilder } from '@angular/forms'; |
|
|
import { FormBuilder } from '@angular/forms'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -392,7 +388,6 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI |
|
|
if ($event) { |
|
|
if ($event) { |
|
|
$event.stopPropagation(); |
|
|
$event.stopPropagation(); |
|
|
} |
|
|
} |
|
|
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({ |
|
|
panelClass: 'tb-filter-panel', |
|
|
panelClass: 'tb-filter-panel', |
|
|
@ -415,12 +410,6 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const providers: StaticProvider[] = [ |
|
|
const providers: StaticProvider[] = [ |
|
|
{ |
|
|
|
|
|
provide: DELETE_TIMESERIES_PANEL_DATA, |
|
|
|
|
|
useValue: { |
|
|
|
|
|
isMultipleDeletion |
|
|
|
|
|
} as DeleteTimeseriesPanelData |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
{ |
|
|
provide: OverlayRef, |
|
|
provide: OverlayRef, |
|
|
useValue: overlayRef |
|
|
useValue: overlayRef |
|
|
@ -433,6 +422,7 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI |
|
|
if (componentRef.instance.result !== null) { |
|
|
if (componentRef.instance.result !== null) { |
|
|
const result = componentRef.instance.result; |
|
|
const result = componentRef.instance.result; |
|
|
const deleteTimeseries = telemetry ? [telemetry]: this.dataSource.selection.selected; |
|
|
const deleteTimeseries = telemetry ? [telemetry]: this.dataSource.selection.selected; |
|
|
|
|
|
const tasks: Observable<any>[] = []; |
|
|
let deleteAllDataForKeys = false; |
|
|
let deleteAllDataForKeys = false; |
|
|
let rewriteLatestIfDeleted = false; |
|
|
let rewriteLatestIfDeleted = false; |
|
|
let startTs = null; |
|
|
let startTs = null; |
|
|
@ -448,8 +438,12 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI |
|
|
break; |
|
|
break; |
|
|
case TimeseriesDeleteStrategy.DELETE_LATEST_VALUE: |
|
|
case TimeseriesDeleteStrategy.DELETE_LATEST_VALUE: |
|
|
rewriteLatestIfDeleted = result.rewriteLatest; |
|
|
rewriteLatestIfDeleted = result.rewriteLatest; |
|
|
startTs = deleteTimeseries[0].lastUpdateTs; |
|
|
for (const ts of deleteTimeseries) { |
|
|
endTs = startTs + 1; |
|
|
startTs = ts.lastUpdateTs; |
|
|
|
|
|
endTs = startTs + 1; |
|
|
|
|
|
tasks.push(this.attributeService.deleteEntityTimeseries(this.entityIdValue, [ts], |
|
|
|
|
|
deleteAllDataForKeys, startTs, endTs, rewriteLatestIfDeleted, deleteLatest)); |
|
|
|
|
|
} |
|
|
break; |
|
|
break; |
|
|
case TimeseriesDeleteStrategy.DELETE_ALL_DATA_FOR_TIME_PERIOD: |
|
|
case TimeseriesDeleteStrategy.DELETE_ALL_DATA_FOR_TIME_PERIOD: |
|
|
startTs = result.startDateTime.getTime(); |
|
|
startTs = result.startDateTime.getTime(); |
|
|
@ -457,9 +451,13 @@ export class AttributeTableComponent extends PageComponent implements AfterViewI |
|
|
rewriteLatestIfDeleted = result.rewriteLatest; |
|
|
rewriteLatestIfDeleted = result.rewriteLatest; |
|
|
break; |
|
|
break; |
|
|
} |
|
|
} |
|
|
this.attributeService.deleteEntityTimeseries(this.entityIdValue, deleteTimeseries, deleteAllDataForKeys, |
|
|
if (tasks.length) { |
|
|
startTs, endTs, rewriteLatestIfDeleted, deleteLatest) |
|
|
forkJoin(tasks).subscribe(() => this.reloadAttributes()); |
|
|
.subscribe(() => this.reloadAttributes()); |
|
|
} else { |
|
|
|
|
|
this.attributeService.deleteEntityTimeseries(this.entityIdValue, deleteTimeseries, deleteAllDataForKeys, |
|
|
|
|
|
startTs, endTs, rewriteLatestIfDeleted, deleteLatest) |
|
|
|
|
|
.subscribe(() => this.reloadAttributes()); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|