Merge pull request #3689 from ChantsovaEkaterina/improvement/get-timeseries-method

Add getEntityTimeseries method to Attributes Service
This commit is contained in:
Igor Kulikov 2020-11-11 09:07:43 +02:00 committed by GitHub
commit c97aaf099e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 2 deletions

View File

@ -19,8 +19,9 @@ import { defaultHttpOptionsFromConfig, RequestConfig } from './http-utils';
import { forkJoin, Observable, of } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { EntityId } from '@shared/models/id/entity-id';
import { AttributeData, AttributeScope } from '@shared/models/telemetry/telemetry.models';
import { AttributeData, AttributeScope, DataSortOrder, TimeseriesData } from '@shared/models/telemetry/telemetry.models';
import { isDefinedAndNotNull } from '@core/utils';
import { AggregationType } from '@shared/models/time/time.models';
@Injectable({
providedIn: 'root'
@ -110,4 +111,28 @@ export class AttributeService {
}
return forkJoin([saveEntityTimeseriesObservable, deleteEntityTimeseriesObservable]);
}
public getEntityTimeseries(entityId: EntityId, keys: Array<string>, startTs: number, endTs: number,
limit: number = 100, agg: AggregationType = AggregationType.NONE, interval?: number,
orderBy: DataSortOrder = DataSortOrder.DESC, useStrictDataTypes: boolean = false,
config?: RequestConfig): Observable<TimeseriesData> {
let url = `/api/plugins/telemetry/${entityId.entityType}/${entityId.id}/values/timeseries?keys=${keys.join(',')}&startTs=${startTs}&endTs=${endTs}`;
if (isDefinedAndNotNull(limit)) {
url += `&limit=${limit}`;
}
if (isDefinedAndNotNull(agg)) {
url += `&agg=${agg}`;
}
if (isDefinedAndNotNull(interval)) {
url += `&interval=${interval}`;
}
if (isDefinedAndNotNull(orderBy)) {
url += `&orderBy=${orderBy}`;
}
if (isDefinedAndNotNull(useStrictDataTypes)) {
url += `&useStrictDataTypes=${useStrictDataTypes}`;
}
return this.http.get<TimeseriesData>(url, defaultHttpOptionsFromConfig(config));
}
}

View File

@ -21,7 +21,14 @@ import { Observable, ReplaySubject, Subject } from 'rxjs';
import { EntityId } from '@shared/models/id/entity-id';
import { map } from 'rxjs/operators';
import { NgZone } from '@angular/core';
import { AlarmData, AlarmDataQuery, EntityData, EntityDataQuery, EntityKey } from '@shared/models/query/query.models';
import {
AlarmData,
AlarmDataQuery,
EntityData,
EntityDataQuery,
EntityKey,
TsValue
} from '@shared/models/query/query.models';
import { PageData } from '@shared/models/page/page-data';
export enum DataKeyType {
@ -81,6 +88,15 @@ export interface AttributeData {
value: any;
}
export interface TimeseriesData {
[key: string]: Array<TsValue>;
}
export enum DataSortOrder {
ASC = 'ASC',
DESC = 'DESC'
}
export interface WebsocketCmd {
cmdId: number;
}