EdgeEvents with Status
This commit is contained in:
parent
e7b153b937
commit
74277323bd
@ -20,7 +20,14 @@ import {
|
||||
EntityTableColumn,
|
||||
EntityTableConfig
|
||||
} from '@home/models/entity/entities-table-config.models';
|
||||
import {DebugEventType, EdgeEventType, Event, EventType} from '@shared/models/event.models';
|
||||
import {
|
||||
DebugEventType,
|
||||
EdgeEventType,
|
||||
EdgeEventStatusColor,
|
||||
edgeEventStatusColor,
|
||||
Event,
|
||||
EventType
|
||||
} from '@shared/models/event.models';
|
||||
import {TimePageLink} from '@shared/models/page/page-link';
|
||||
import {TranslateService} from '@ngx-translate/core';
|
||||
import {DatePipe} from '@angular/common';
|
||||
@ -40,6 +47,8 @@ import {
|
||||
} from '@home/components/event/event-content-dialog.component';
|
||||
import {sortObjectKeys} from '@core/utils';
|
||||
import {RuleChainService} from "@core/http/rule-chain.service";
|
||||
import {AttributeService} from "@core/http/attribute.service";
|
||||
import {AttributeScope} from "@shared/models/telemetry/telemetry.models";
|
||||
|
||||
export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
||||
|
||||
@ -57,11 +66,13 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
||||
}
|
||||
|
||||
eventTypes: Array<EventType | DebugEventType>;
|
||||
queueStartTs: any;
|
||||
|
||||
constructor(private eventService: EventService,
|
||||
private dialogService: DialogService,
|
||||
private translate: TranslateService,
|
||||
private ruleChainService: RuleChainService,
|
||||
private attributeService: AttributeService,
|
||||
private datePipe: DatePipe,
|
||||
private dialog: MatDialog,
|
||||
public entityId: EntityId,
|
||||
@ -111,6 +122,7 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
||||
|
||||
fetchEvents(pageLink: TimePageLink): Observable<PageData<Event>> {
|
||||
if (this.eventTypeValue === EventType.EDGE_EVENT) {
|
||||
this.loadEdgeInfo();
|
||||
return this.eventService.getEdgeEvents(this.entityId, pageLink);
|
||||
} else {
|
||||
return this.eventService.getEvents(this.entityId, this.eventType, this.tenantId, pageLink);
|
||||
@ -182,6 +194,11 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
||||
(entity) => entity.action, entity => ({}), false),
|
||||
new EntityTableColumn<Event>('entityId', 'event.entityId', '100%',
|
||||
(entity) => entity.id.id, entity => ({}), false), //TODO: replace this to entity.entityId because of conflict wiht entityId model
|
||||
new EntityTableColumn<Event>('status', 'event.status', '100%',
|
||||
(entity) => this.updateEdgeEventStatus(entity.createdTime),
|
||||
entity => ({
|
||||
color: this.isPending(entity.createdTime) ? edgeEventStatusColor.get(EdgeEventStatusColor.PENDING) : edgeEventStatusColor.get(EdgeEventStatusColor.DEPLOYED)
|
||||
}), false),
|
||||
new EntityActionTableColumn<Event>('data', 'event.data',
|
||||
{
|
||||
name: this.translate.instant('action.view'),
|
||||
@ -291,7 +308,7 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
||||
}
|
||||
|
||||
manageEdgeEventContent(entity) {
|
||||
var content = '';
|
||||
var content: string;
|
||||
switch (entity.type) {
|
||||
case EdgeEventType.RELATION:
|
||||
content = entity.body;
|
||||
@ -328,4 +345,40 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updateEdgeEventStatus(createdTime) {
|
||||
if (this.queueStartTs) {
|
||||
var status: string;
|
||||
if (createdTime < this.queueStartTs) {
|
||||
status = this.translate.instant('edge.success');
|
||||
} else {
|
||||
status = this.translate.instant('edge.failed');
|
||||
}
|
||||
return status;
|
||||
}
|
||||
}
|
||||
|
||||
isPending(createdTime) {
|
||||
return createdTime > this.queueStartTs;
|
||||
}
|
||||
|
||||
loadEdgeInfo() {
|
||||
this.attributeService.getEntityAttributes(this.entityId, AttributeScope.SERVER_SCOPE,["queueStartTs"])
|
||||
.subscribe(
|
||||
attributes => this.onUpdate(attributes)
|
||||
);
|
||||
}
|
||||
|
||||
onUpdate(attributes) {
|
||||
let edge = attributes.reduce(function (map, attribute) {
|
||||
map[attribute.key] = attribute;
|
||||
return map;
|
||||
}, {});
|
||||
if (edge.queueStartTs) {
|
||||
this.queueStartTs = edge.queueStartTs.lastUpdateTs;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -25,6 +25,7 @@ import { EventService } from '@core/http/event.service';
|
||||
import { DialogService } from '@core/services/dialog.service';
|
||||
import { DebugEventType, EventType } from '@shared/models/event.models';
|
||||
import { RuleChainService } from "@core/http/rule-chain.service";
|
||||
import {AttributeService} from "@core/http/attribute.service";
|
||||
|
||||
@Component({
|
||||
selector: 'tb-event-table',
|
||||
@ -80,6 +81,7 @@ export class EventTableComponent implements OnInit {
|
||||
constructor(private eventService: EventService,
|
||||
private dialogService: DialogService,
|
||||
private translate: TranslateService,
|
||||
private attributeService: AttributeService,
|
||||
private ruleChainService: RuleChainService,
|
||||
private datePipe: DatePipe,
|
||||
private dialog: MatDialog) {
|
||||
@ -92,6 +94,7 @@ export class EventTableComponent implements OnInit {
|
||||
this.dialogService,
|
||||
this.translate,
|
||||
this.ruleChainService,
|
||||
this.attributeService,
|
||||
this.datePipe,
|
||||
this.dialog,
|
||||
this.entityIdValue,
|
||||
|
||||
@ -108,6 +108,15 @@ export class EntityActionTableColumn<T extends BaseData<HasId>> extends BaseEnti
|
||||
}
|
||||
}
|
||||
|
||||
export class EdgeStatusTableColumn<T extends BaseData<HasId>> extends BaseEntityTableColumn<T> {
|
||||
constructor(public key: string,
|
||||
public title: string,
|
||||
public actionDescriptor: CellActionDescriptor<T>,
|
||||
public width: string = '0px') {
|
||||
super('action', key, title, width, false);
|
||||
}
|
||||
}
|
||||
|
||||
export class DateEntityTableColumn<T extends BaseData<HasId>> extends EntityTableColumn<T> {
|
||||
constructor(key: string,
|
||||
title: string,
|
||||
|
||||
@ -19,7 +19,6 @@ import { TenantId } from '@shared/models/id/tenant-id';
|
||||
import { EntityId } from '@shared/models/id/entity-id';
|
||||
import { EventId } from './id/event-id';
|
||||
import { ContentType } from '@shared/models/constants';
|
||||
import { EntityType } from '@shared/models/entity-type.models'
|
||||
|
||||
export enum EventType {
|
||||
ERROR = 'ERROR',
|
||||
@ -55,6 +54,18 @@ export enum EdgeEventType {
|
||||
ADMIN_SETTINGS = "ADMIN_SETTINGS"
|
||||
}
|
||||
|
||||
export enum EdgeEventStatusColor {
|
||||
DEPLOYED = "DEPLOYED",
|
||||
PENDING = "PENDING"
|
||||
}
|
||||
|
||||
export const edgeEventStatusColor = new Map<EdgeEventStatusColor, string> (
|
||||
[
|
||||
[EdgeEventStatusColor.DEPLOYED, '#000000'],
|
||||
[EdgeEventStatusColor.PENDING, '#9e9e9e']
|
||||
]
|
||||
);
|
||||
|
||||
export const eventTypeTranslations = new Map<EventType | DebugEventType, string>(
|
||||
[
|
||||
[EventType.ERROR, 'event.type-error'],
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user