Edge widget implementation with initial simulated data
This commit is contained in:
parent
206c570abb
commit
6d83477fe6
@ -1160,23 +1160,23 @@ export class EntityService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public getAssignedToEdgeEntitiesByType(node: NavTreeNode, pageLink: PageLink): Observable<PageData<any>> {
|
public getAssignedToEdgeEntitiesByType(node: NavTreeNode, pageLink: PageLink): Observable<PageData<any>> {
|
||||||
let edgeId = node.data.edge.id.id;
|
let edgeId = node.data.entity.id.id;
|
||||||
let entitiesObservable: Observable<PageData<any>>;
|
let entitiesObservable: Observable<PageData<any>>;
|
||||||
switch (node.data.entityType) {
|
switch (node.data.entityType) {
|
||||||
case (EntityType.ASSET):
|
case (EntityType.ASSET):
|
||||||
entitiesObservable = this.assetService.getEdgeAssets(edgeId, pageLink, null);
|
entitiesObservable = this.assetService.getEdgeAssets(edgeId, pageLink);
|
||||||
break;
|
break;
|
||||||
case (EntityType.DEVICE):
|
case (EntityType.DEVICE):
|
||||||
entitiesObservable = this.deviceService.getEdgeDevices(edgeId, pageLink, null);
|
entitiesObservable = this.deviceService.getEdgeDevices(edgeId, pageLink);
|
||||||
break;
|
break;
|
||||||
case (EntityType.ENTITY_VIEW):
|
case (EntityType.ENTITY_VIEW):
|
||||||
entitiesObservable = this.entityViewService.getEdgeEntityViews(edgeId, pageLink, null);
|
entitiesObservable = this.entityViewService.getEdgeEntityViews(edgeId, pageLink);
|
||||||
break;
|
break;
|
||||||
case (EntityType.DASHBOARD):
|
case (EntityType.DASHBOARD):
|
||||||
entitiesObservable = this.dashboardService.getEdgeDashboards(edgeId, pageLink, null);
|
entitiesObservable = this.dashboardService.getEdgeDashboards(edgeId, pageLink);
|
||||||
break;
|
break;
|
||||||
case (EntityType.RULE_CHAIN):
|
case (EntityType.RULE_CHAIN):
|
||||||
entitiesObservable = this.ruleChainService.getEdgeRuleChains(edgeId, pageLink, null);
|
entitiesObservable = this.ruleChainService.getEdgeRuleChains(edgeId, pageLink);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return entitiesObservable;
|
return entitiesObservable;
|
||||||
|
|||||||
@ -28,7 +28,7 @@ import {
|
|||||||
EdgeGroupNodeData,
|
EdgeGroupNodeData,
|
||||||
edgeGroupsNodeText,
|
edgeGroupsNodeText,
|
||||||
edgeGroupsTypes,
|
edgeGroupsTypes,
|
||||||
edgeNodeText,
|
entityNodeText,
|
||||||
EdgeOverviewNode,
|
EdgeOverviewNode,
|
||||||
EntityNodeData,
|
EntityNodeData,
|
||||||
EntityNodeDatasource
|
EntityNodeDatasource
|
||||||
@ -37,11 +37,11 @@ import { EdgeService } from "@core/http/edge.service";
|
|||||||
import { EntityService } from "@core/http/entity.service";
|
import { EntityService } from "@core/http/entity.service";
|
||||||
import { TranslateService } from "@ngx-translate/core";
|
import { TranslateService } from "@ngx-translate/core";
|
||||||
import { PageLink } from "@shared/models/page/page-link";
|
import { PageLink } from "@shared/models/page/page-link";
|
||||||
import { Edge } from "@shared/models/edge.models";
|
import { BaseData, HasId } from "@shared/models/base-data";
|
||||||
import { BaseData } from "@shared/models/base-data";
|
|
||||||
import { EntityId } from "@shared/models/id/entity-id";
|
import { EntityId } from "@shared/models/id/entity-id";
|
||||||
import { getCurrentAuthUser } from "@core/auth/auth.selectors";
|
import { getCurrentAuthUser } from "@core/auth/auth.selectors";
|
||||||
import { Authority } from "@shared/models/authority.enum";
|
import { Authority } from "@shared/models/authority.enum";
|
||||||
|
import { Direction } from "@shared/models/page/sort-order";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'tb-edges-overview-widget',
|
selector: 'tb-edges-overview-widget',
|
||||||
@ -62,8 +62,8 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
|
|||||||
|
|
||||||
private nodeIdCounter = 0;
|
private nodeIdCounter = 0;
|
||||||
|
|
||||||
private edgeNodesMap: {[parentNodeId: string]: {[edgeId: string]: string}} = {};
|
private entityNodesMap: {[parentNodeId: string]: {[edgeId: string]: string}} = {};
|
||||||
private edgeGroupsNodesMap: {[edgeNodeId: string]: {[groupType: string]: string}} = {};
|
private entityGroupsNodesMap: {[edgeNodeId: string]: {[groupType: string]: string}} = {};
|
||||||
|
|
||||||
constructor(protected store: Store<AppState>,
|
constructor(protected store: Store<AppState>,
|
||||||
private edgeService: EdgeService,
|
private edgeService: EdgeService,
|
||||||
@ -87,18 +87,23 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
|
|||||||
}
|
}
|
||||||
|
|
||||||
public loadNodes: LoadNodesCallback = (node, cb) => {
|
public loadNodes: LoadNodesCallback = (node, cb) => {
|
||||||
|
if (node.id === '#' && this.datasources.length > 0) {
|
||||||
var selectedEdge: BaseData<EntityId> = null;
|
var selectedEdge: BaseData<EntityId> = null;
|
||||||
if (this.datasources.length > 0 && this.datasources[0].entity && this.datasources[0].entity.id.entityType === EntityType.EDGE) {
|
if (this.datasources[0].entity.id.entityType === EntityType.EDGE) {
|
||||||
selectedEdge = this.datasources[0].entity;
|
selectedEdge = this.datasources[0].entity;
|
||||||
}
|
}
|
||||||
if (node.id === '#' && selectedEdge) {
|
if (selectedEdge) {
|
||||||
cb(this.loadNodesForEdge(selectedEdge.id.id, selectedEdge));
|
cb(this.loadNodesForEdge(selectedEdge.id.id, selectedEdge));
|
||||||
} else if (node.data && node.data.type === 'edgeGroup') {
|
} else {
|
||||||
const pageLink = new PageLink(100);
|
cb(this.loadNodesForEdge(this.datasources[0].entityId, this.datasources[0].entity));
|
||||||
|
}
|
||||||
|
} else if (node.data && node.data.entity.id.entityType === EntityType.EDGE) {
|
||||||
|
const sortOrder = { property: 'createdTime', direction: Direction.DESC };
|
||||||
|
const pageLink = new PageLink(10, 0, null, sortOrder);
|
||||||
this.entityService.getAssignedToEdgeEntitiesByType(node, pageLink).subscribe(
|
this.entityService.getAssignedToEdgeEntitiesByType(node, pageLink).subscribe(
|
||||||
(entities) => {
|
(entities) => {
|
||||||
if (entities.data.length > 0) {
|
if (entities.data.length > 0) {
|
||||||
cb(this.edgesToNodes(node.id, entities.data));
|
cb(this.entitiesToNodes(node.id, entities.data));
|
||||||
} else {
|
} else {
|
||||||
cb([]);
|
cb([]);
|
||||||
}
|
}
|
||||||
@ -109,10 +114,10 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private loadNodesForEdge(parentNodeId: string, edge: any): EdgeOverviewNode[] {
|
private loadNodesForEdge(parentNodeId: string, entity: BaseData<HasId>): EdgeOverviewNode[] {
|
||||||
const nodes: EdgeOverviewNode[] = [];
|
const nodes: EdgeOverviewNode[] = [];
|
||||||
const nodesMap = {};
|
const nodesMap = {};
|
||||||
this.edgeGroupsNodesMap[parentNodeId] = nodesMap;
|
this.entityGroupsNodesMap[parentNodeId] = nodesMap;
|
||||||
const authUser = getCurrentAuthUser(this.store);
|
const authUser = getCurrentAuthUser(this.store);
|
||||||
var allowedGroupTypes: EntityType[] = edgeGroupsTypes;
|
var allowedGroupTypes: EntityType[] = edgeGroupsTypes;
|
||||||
if (authUser.authority === Authority.CUSTOMER_USER) {
|
if (authUser.authority === Authority.CUSTOMER_USER) {
|
||||||
@ -125,10 +130,9 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
|
|||||||
text: edgeGroupsNodeText(this.translateService, entityType),
|
text: edgeGroupsNodeText(this.translateService, entityType),
|
||||||
children: true,
|
children: true,
|
||||||
data: {
|
data: {
|
||||||
type: 'edgeGroup',
|
|
||||||
entityType,
|
entityType,
|
||||||
edge,
|
entity,
|
||||||
internalId: edge.id.id + '_' + entityType
|
internalId: entity.id.id + '_' + entityType
|
||||||
} as EdgeGroupNodeData
|
} as EdgeGroupNodeData
|
||||||
};
|
};
|
||||||
nodes.push(node);
|
nodes.push(node);
|
||||||
@ -137,43 +141,42 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
|
|||||||
return nodes;
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
private createEdgeNode(parentNodeId: string, edge: Edge): EdgeOverviewNode {
|
private createEntityNode(parentNodeId: string, entity: BaseData<HasId>): EdgeOverviewNode {
|
||||||
let nodesMap = this.edgeNodesMap[parentNodeId];
|
let nodesMap = this.entityNodesMap[parentNodeId];
|
||||||
if (!nodesMap) {
|
if (!nodesMap) {
|
||||||
nodesMap = {};
|
nodesMap = {};
|
||||||
this.edgeNodesMap[parentNodeId] = nodesMap;
|
this.entityNodesMap[parentNodeId] = nodesMap;
|
||||||
}
|
}
|
||||||
const node: EdgeOverviewNode = {
|
const node: EdgeOverviewNode = {
|
||||||
id: (++this.nodeIdCounter)+'',
|
id: (++this.nodeIdCounter)+'',
|
||||||
icon: false,
|
icon: false,
|
||||||
text: edgeNodeText(edge),
|
text: entityNodeText(entity),
|
||||||
children: parentNodeId === '#',
|
children: false,
|
||||||
state: {
|
state: {
|
||||||
disabled: false
|
disabled: false
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
type: 'entity',
|
entity: entity,
|
||||||
entity: edge,
|
internalId: entity.id.id
|
||||||
internalId: edge.id.id
|
|
||||||
} as EntityNodeData
|
} as EntityNodeData
|
||||||
};
|
};
|
||||||
nodesMap[edge.id.id] = node.id;
|
nodesMap[entity.id.id] = node.id;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
private edgesToNodes(parentNodeId: string, edges: Array<Edge>): EdgeOverviewNode[] {
|
private entitiesToNodes(parentNodeId: string, entities: BaseData<HasId>[]): EdgeOverviewNode[] {
|
||||||
const nodes: EdgeOverviewNode[] = [];
|
const nodes: EdgeOverviewNode[] = [];
|
||||||
this.edgeNodesMap[parentNodeId] = {};
|
this.entityNodesMap[parentNodeId] = {};
|
||||||
if (edges) {
|
if (entities) {
|
||||||
edges.forEach((edge) => {
|
entities.forEach((entity) => {
|
||||||
const node = this.createEdgeNode(parentNodeId, edge);
|
const node = this.createEntityNode(parentNodeId, entity);
|
||||||
nodes.push(node);
|
nodes.push(node);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return nodes;
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
private getCustomerTitle(edgeId) {
|
private getCustomerTitle(edgeId: string) {
|
||||||
this.edgeService.getEdgeInfo(edgeId).subscribe(
|
this.edgeService.getEdgeInfo(edgeId).subscribe(
|
||||||
(edge) => {
|
(edge) => {
|
||||||
if (edge.customerTitle) {
|
if (edge.customerTitle) {
|
||||||
|
|||||||
@ -17,8 +17,8 @@
|
|||||||
import { NavTreeNode } from '@shared/components/nav-tree.component';
|
import { NavTreeNode } from '@shared/components/nav-tree.component';
|
||||||
import { Datasource } from '@shared/models/widget.models';
|
import { Datasource } from '@shared/models/widget.models';
|
||||||
import { EntityType } from '@shared/models/entity-type.models';
|
import { EntityType } from '@shared/models/entity-type.models';
|
||||||
import { Edge } from "@shared/models/edge.models";
|
|
||||||
import { TranslateService } from "@ngx-translate/core";
|
import { TranslateService } from "@ngx-translate/core";
|
||||||
|
import { BaseData, HasId } from "@shared/models/base-data";
|
||||||
|
|
||||||
export interface EntityNodeDatasource extends Datasource {
|
export interface EntityNodeDatasource extends Datasource {
|
||||||
nodeId: string;
|
nodeId: string;
|
||||||
@ -30,9 +30,9 @@ export function edgeGroupsNodeText(translate: TranslateService, entityType: Enti
|
|||||||
return nodeIcon + nodeText;
|
return nodeIcon + nodeText;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function edgeNodeText(edge: Edge): string {
|
export function entityNodeText(entity: any): string {
|
||||||
const nodeIcon = materialIconByEntityType(edge.id.entityType);
|
const nodeIcon = materialIconByEntityType(entity.id.entityType);
|
||||||
const nodeText = edge.name;
|
const nodeText = entity.name;
|
||||||
return nodeIcon + nodeText;
|
return nodeIcon + nodeText;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,19 +95,14 @@ export interface EdgeOverviewNode extends NavTreeNode {
|
|||||||
export type EdgeOverviewNodeData = EdgeGroupNodeData | EntityNodeData;
|
export type EdgeOverviewNodeData = EdgeGroupNodeData | EntityNodeData;
|
||||||
|
|
||||||
export interface EdgeGroupNodeData extends BaseEdgeOverviewNodeData {
|
export interface EdgeGroupNodeData extends BaseEdgeOverviewNodeData {
|
||||||
type: 'edgeGroup';
|
|
||||||
entityType: EntityType;
|
entityType: EntityType;
|
||||||
edge: Edge;
|
entity: BaseData<HasId>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EntityNodeData extends BaseEdgeOverviewNodeData {
|
export interface EntityNodeData extends BaseEdgeOverviewNodeData {
|
||||||
type: 'entity';
|
entity: BaseData<HasId>;
|
||||||
entity: Edge;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface BaseEdgeOverviewNodeData {
|
export interface BaseEdgeOverviewNodeData {
|
||||||
type: EdgeOverviewNodeType;
|
|
||||||
internalId: string;
|
internalId: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type EdgeOverviewNodeType = 'entity' | 'edgeGroup';
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user