Merge pull request #3689 from ChantsovaEkaterina/improvement/get-timeseries-method
Add getEntityTimeseries method to Attributes Service
This commit is contained in:
commit
c97aaf099e
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user