EdgeEvents with Status
This commit is contained in:
parent
e7b153b937
commit
74277323bd
@ -20,7 +20,14 @@ import {
|
|||||||
EntityTableColumn,
|
EntityTableColumn,
|
||||||
EntityTableConfig
|
EntityTableConfig
|
||||||
} from '@home/models/entity/entities-table-config.models';
|
} 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 {TimePageLink} from '@shared/models/page/page-link';
|
||||||
import {TranslateService} from '@ngx-translate/core';
|
import {TranslateService} from '@ngx-translate/core';
|
||||||
import {DatePipe} from '@angular/common';
|
import {DatePipe} from '@angular/common';
|
||||||
@ -40,6 +47,8 @@ import {
|
|||||||
} from '@home/components/event/event-content-dialog.component';
|
} from '@home/components/event/event-content-dialog.component';
|
||||||
import {sortObjectKeys} from '@core/utils';
|
import {sortObjectKeys} from '@core/utils';
|
||||||
import {RuleChainService} from "@core/http/rule-chain.service";
|
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> {
|
export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
||||||
|
|
||||||
@ -57,11 +66,13 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
eventTypes: Array<EventType | DebugEventType>;
|
eventTypes: Array<EventType | DebugEventType>;
|
||||||
|
queueStartTs: any;
|
||||||
|
|
||||||
constructor(private eventService: EventService,
|
constructor(private eventService: EventService,
|
||||||
private dialogService: DialogService,
|
private dialogService: DialogService,
|
||||||
private translate: TranslateService,
|
private translate: TranslateService,
|
||||||
private ruleChainService: RuleChainService,
|
private ruleChainService: RuleChainService,
|
||||||
|
private attributeService: AttributeService,
|
||||||
private datePipe: DatePipe,
|
private datePipe: DatePipe,
|
||||||
private dialog: MatDialog,
|
private dialog: MatDialog,
|
||||||
public entityId: EntityId,
|
public entityId: EntityId,
|
||||||
@ -111,6 +122,7 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
|||||||
|
|
||||||
fetchEvents(pageLink: TimePageLink): Observable<PageData<Event>> {
|
fetchEvents(pageLink: TimePageLink): Observable<PageData<Event>> {
|
||||||
if (this.eventTypeValue === EventType.EDGE_EVENT) {
|
if (this.eventTypeValue === EventType.EDGE_EVENT) {
|
||||||
|
this.loadEdgeInfo();
|
||||||
return this.eventService.getEdgeEvents(this.entityId, pageLink);
|
return this.eventService.getEdgeEvents(this.entityId, pageLink);
|
||||||
} else {
|
} else {
|
||||||
return this.eventService.getEvents(this.entityId, this.eventType, this.tenantId, pageLink);
|
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),
|
(entity) => entity.action, entity => ({}), false),
|
||||||
new EntityTableColumn<Event>('entityId', 'event.entityId', '100%',
|
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
|
(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',
|
new EntityActionTableColumn<Event>('data', 'event.data',
|
||||||
{
|
{
|
||||||
name: this.translate.instant('action.view'),
|
name: this.translate.instant('action.view'),
|
||||||
@ -291,7 +308,7 @@ export class EventTableConfig extends EntityTableConfig<Event, TimePageLink> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
manageEdgeEventContent(entity) {
|
manageEdgeEventContent(entity) {
|
||||||
var content = '';
|
var content: string;
|
||||||
switch (entity.type) {
|
switch (entity.type) {
|
||||||
case EdgeEventType.RELATION:
|
case EdgeEventType.RELATION:
|
||||||
content = entity.body;
|
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 { DialogService } from '@core/services/dialog.service';
|
||||||
import { DebugEventType, EventType } from '@shared/models/event.models';
|
import { DebugEventType, EventType } from '@shared/models/event.models';
|
||||||
import { RuleChainService } from "@core/http/rule-chain.service";
|
import { RuleChainService } from "@core/http/rule-chain.service";
|
||||||
|
import {AttributeService} from "@core/http/attribute.service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'tb-event-table',
|
selector: 'tb-event-table',
|
||||||
@ -80,6 +81,7 @@ export class EventTableComponent implements OnInit {
|
|||||||
constructor(private eventService: EventService,
|
constructor(private eventService: EventService,
|
||||||
private dialogService: DialogService,
|
private dialogService: DialogService,
|
||||||
private translate: TranslateService,
|
private translate: TranslateService,
|
||||||
|
private attributeService: AttributeService,
|
||||||
private ruleChainService: RuleChainService,
|
private ruleChainService: RuleChainService,
|
||||||
private datePipe: DatePipe,
|
private datePipe: DatePipe,
|
||||||
private dialog: MatDialog) {
|
private dialog: MatDialog) {
|
||||||
@ -92,6 +94,7 @@ export class EventTableComponent implements OnInit {
|
|||||||
this.dialogService,
|
this.dialogService,
|
||||||
this.translate,
|
this.translate,
|
||||||
this.ruleChainService,
|
this.ruleChainService,
|
||||||
|
this.attributeService,
|
||||||
this.datePipe,
|
this.datePipe,
|
||||||
this.dialog,
|
this.dialog,
|
||||||
this.entityIdValue,
|
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> {
|
export class DateEntityTableColumn<T extends BaseData<HasId>> extends EntityTableColumn<T> {
|
||||||
constructor(key: string,
|
constructor(key: string,
|
||||||
title: string,
|
title: string,
|
||||||
|
|||||||
@ -19,7 +19,6 @@ import { TenantId } from '@shared/models/id/tenant-id';
|
|||||||
import { EntityId } from '@shared/models/id/entity-id';
|
import { EntityId } from '@shared/models/id/entity-id';
|
||||||
import { EventId } from './id/event-id';
|
import { EventId } from './id/event-id';
|
||||||
import { ContentType } from '@shared/models/constants';
|
import { ContentType } from '@shared/models/constants';
|
||||||
import { EntityType } from '@shared/models/entity-type.models'
|
|
||||||
|
|
||||||
export enum EventType {
|
export enum EventType {
|
||||||
ERROR = 'ERROR',
|
ERROR = 'ERROR',
|
||||||
@ -55,6 +54,18 @@ export enum EdgeEventType {
|
|||||||
ADMIN_SETTINGS = "ADMIN_SETTINGS"
|
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>(
|
export const eventTypeTranslations = new Map<EventType | DebugEventType, string>(
|
||||||
[
|
[
|
||||||
[EventType.ERROR, 'event.type-error'],
|
[EventType.ERROR, 'event.type-error'],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user