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 { forkJoin, Observable, of } from 'rxjs';
|
||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { EntityId } from '@shared/models/id/entity-id';
|
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 { isDefinedAndNotNull } from '@core/utils';
|
||||||
|
import { AggregationType } from '@shared/models/time/time.models';
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
@ -110,4 +111,28 @@ export class AttributeService {
|
|||||||
}
|
}
|
||||||
return forkJoin([saveEntityTimeseriesObservable, deleteEntityTimeseriesObservable]);
|
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 { EntityId } from '@shared/models/id/entity-id';
|
||||||
import { map } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { NgZone } from '@angular/core';
|
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';
|
import { PageData } from '@shared/models/page/page-data';
|
||||||
|
|
||||||
export enum DataKeyType {
|
export enum DataKeyType {
|
||||||
@ -81,6 +88,15 @@ export interface AttributeData {
|
|||||||
value: any;
|
value: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface TimeseriesData {
|
||||||
|
[key: string]: Array<TsValue>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum DataSortOrder {
|
||||||
|
ASC = 'ASC',
|
||||||
|
DESC = 'DESC'
|
||||||
|
}
|
||||||
|
|
||||||
export interface WebsocketCmd {
|
export interface WebsocketCmd {
|
||||||
cmdId: number;
|
cmdId: number;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user