Browse Source

Add getEntityTimeseries method to Attributes Service

pull/3689/head
Chantsova Ekaterina 6 years ago
parent
commit
d40f5823ff
  1. 30
      ui-ngx/src/app/core/http/attribute.service.ts
  2. 14
      ui-ngx/src/app/shared/models/telemetry/telemetry.models.ts

30
ui-ngx/src/app/core/http/attribute.service.ts

@ -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,31 @@ 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 = DataOrder.DESC, useStrictDataTypes: boolean = false,
config?: RequestConfig): Observable<TimeseriesData> {
let url = `/api/plugins/telemetry/${entityId.entityType}/${entityId.id}/values/timeseries`;
url += `?keys=${keys.join(',')}`;
url += `&startTs=${startTs}`;
url += `&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<any>(url, defaultHttpOptionsFromConfig(config));
}
}

14
ui-ngx/src/app/shared/models/telemetry/telemetry.models.ts

@ -81,6 +81,20 @@ export interface AttributeData {
value: any;
}
export interface TimeseriesData {
[key: string]: Array<TimeseriesKeyData>;
}
export interface TimeseriesKeyData {
value: any;
ts: number;
}
export enum DataSortOrder {
ASC = 'ASC',
DESC = 'DESC'
}
export interface WebsocketCmd {
cmdId: number;
}

Loading…
Cancel
Save