Commit 6d83477fe638f25f046510936a3a2ee5106f78f5

Authored by deaflynx
1 parent 206c570a

Edge widget implementation with initial simulated data

... ... @@ -1160,23 +1160,23 @@ export class EntityService {
1160 1160 }
1161 1161
1162 1162 public getAssignedToEdgeEntitiesByType(node: NavTreeNode, pageLink: PageLink): Observable<PageData<any>> {
1163   - let edgeId = node.data.edge.id.id;
  1163 + let edgeId = node.data.entity.id.id;
1164 1164 let entitiesObservable: Observable<PageData<any>>;
1165 1165 switch (node.data.entityType) {
1166 1166 case (EntityType.ASSET):
1167   - entitiesObservable = this.assetService.getEdgeAssets(edgeId, pageLink, null);
  1167 + entitiesObservable = this.assetService.getEdgeAssets(edgeId, pageLink);
1168 1168 break;
1169 1169 case (EntityType.DEVICE):
1170   - entitiesObservable = this.deviceService.getEdgeDevices(edgeId, pageLink, null);
  1170 + entitiesObservable = this.deviceService.getEdgeDevices(edgeId, pageLink);
1171 1171 break;
1172 1172 case (EntityType.ENTITY_VIEW):
1173   - entitiesObservable = this.entityViewService.getEdgeEntityViews(edgeId, pageLink, null);
  1173 + entitiesObservable = this.entityViewService.getEdgeEntityViews(edgeId, pageLink);
1174 1174 break;
1175 1175 case (EntityType.DASHBOARD):
1176   - entitiesObservable = this.dashboardService.getEdgeDashboards(edgeId, pageLink, null);
  1176 + entitiesObservable = this.dashboardService.getEdgeDashboards(edgeId, pageLink);
1177 1177 break;
1178 1178 case (EntityType.RULE_CHAIN):
1179   - entitiesObservable = this.ruleChainService.getEdgeRuleChains(edgeId, pageLink, null);
  1179 + entitiesObservable = this.ruleChainService.getEdgeRuleChains(edgeId, pageLink);
1180 1180 break;
1181 1181 }
1182 1182 return entitiesObservable;
... ...
... ... @@ -28,7 +28,7 @@ import {
28 28 EdgeGroupNodeData,
29 29 edgeGroupsNodeText,
30 30 edgeGroupsTypes,
31   - edgeNodeText,
  31 + entityNodeText,
32 32 EdgeOverviewNode,
33 33 EntityNodeData,
34 34 EntityNodeDatasource
... ... @@ -37,11 +37,11 @@ import { EdgeService } from "@core/http/edge.service";
37 37 import { EntityService } from "@core/http/entity.service";
38 38 import { TranslateService } from "@ngx-translate/core";
39 39 import { PageLink } from "@shared/models/page/page-link";
40   -import { Edge } from "@shared/models/edge.models";
41   -import { BaseData } from "@shared/models/base-data";
  40 +import { BaseData, HasId } from "@shared/models/base-data";
42 41 import { EntityId } from "@shared/models/id/entity-id";
43 42 import { getCurrentAuthUser } from "@core/auth/auth.selectors";
44 43 import { Authority } from "@shared/models/authority.enum";
  44 +import { Direction } from "@shared/models/page/sort-order";
45 45
46 46 @Component({
47 47 selector: 'tb-edges-overview-widget',
... ... @@ -62,8 +62,8 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
62 62
63 63 private nodeIdCounter = 0;
64 64
65   - private edgeNodesMap: {[parentNodeId: string]: {[edgeId: string]: string}} = {};
66   - private edgeGroupsNodesMap: {[edgeNodeId: string]: {[groupType: string]: string}} = {};
  65 + private entityNodesMap: {[parentNodeId: string]: {[edgeId: string]: string}} = {};
  66 + private entityGroupsNodesMap: {[edgeNodeId: string]: {[groupType: string]: string}} = {};
67 67
68 68 constructor(protected store: Store<AppState>,
69 69 private edgeService: EdgeService,
... ... @@ -87,18 +87,23 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
87 87 }
88 88
89 89 public loadNodes: LoadNodesCallback = (node, cb) => {
90   - var selectedEdge: BaseData<EntityId> = null;
91   - if (this.datasources.length > 0 && this.datasources[0].entity && this.datasources[0].entity.id.entityType === EntityType.EDGE) {
92   - selectedEdge = this.datasources[0].entity;
93   - }
94   - if (node.id === '#' && selectedEdge) {
95   - cb(this.loadNodesForEdge(selectedEdge.id.id, selectedEdge));
96   - } else if (node.data && node.data.type === 'edgeGroup') {
97   - const pageLink = new PageLink(100);
  90 + if (node.id === '#' && this.datasources.length > 0) {
  91 + var selectedEdge: BaseData<EntityId> = null;
  92 + if (this.datasources[0].entity.id.entityType === EntityType.EDGE) {
  93 + selectedEdge = this.datasources[0].entity;
  94 + }
  95 + if (selectedEdge) {
  96 + cb(this.loadNodesForEdge(selectedEdge.id.id, selectedEdge));
  97 + } else {
  98 + cb(this.loadNodesForEdge(this.datasources[0].entityId, this.datasources[0].entity));
  99 + }
  100 + } else if (node.data && node.data.entity.id.entityType === EntityType.EDGE) {
  101 + const sortOrder = { property: 'createdTime', direction: Direction.DESC };
  102 + const pageLink = new PageLink(10, 0, null, sortOrder);
98 103 this.entityService.getAssignedToEdgeEntitiesByType(node, pageLink).subscribe(
99 104 (entities) => {
100 105 if (entities.data.length > 0) {
101   - cb(this.edgesToNodes(node.id, entities.data));
  106 + cb(this.entitiesToNodes(node.id, entities.data));
102 107 } else {
103 108 cb([]);
104 109 }
... ... @@ -109,10 +114,10 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
109 114 }
110 115 }
111 116
112   - private loadNodesForEdge(parentNodeId: string, edge: any): EdgeOverviewNode[] {
  117 + private loadNodesForEdge(parentNodeId: string, entity: BaseData<HasId>): EdgeOverviewNode[] {
113 118 const nodes: EdgeOverviewNode[] = [];
114 119 const nodesMap = {};
115   - this.edgeGroupsNodesMap[parentNodeId] = nodesMap;
  120 + this.entityGroupsNodesMap[parentNodeId] = nodesMap;
116 121 const authUser = getCurrentAuthUser(this.store);
117 122 var allowedGroupTypes: EntityType[] = edgeGroupsTypes;
118 123 if (authUser.authority === Authority.CUSTOMER_USER) {
... ... @@ -125,10 +130,9 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
125 130 text: edgeGroupsNodeText(this.translateService, entityType),
126 131 children: true,
127 132 data: {
128   - type: 'edgeGroup',
129 133 entityType,
130   - edge,
131   - internalId: edge.id.id + '_' + entityType
  134 + entity,
  135 + internalId: entity.id.id + '_' + entityType
132 136 } as EdgeGroupNodeData
133 137 };
134 138 nodes.push(node);
... ... @@ -137,43 +141,42 @@ export class EdgesOverviewWidgetComponent extends PageComponent implements OnIni
137 141 return nodes;
138 142 }
139 143
140   - private createEdgeNode(parentNodeId: string, edge: Edge): EdgeOverviewNode {
141   - let nodesMap = this.edgeNodesMap[parentNodeId];
  144 + private createEntityNode(parentNodeId: string, entity: BaseData<HasId>): EdgeOverviewNode {
  145 + let nodesMap = this.entityNodesMap[parentNodeId];
142 146 if (!nodesMap) {
143 147 nodesMap = {};
144   - this.edgeNodesMap[parentNodeId] = nodesMap;
  148 + this.entityNodesMap[parentNodeId] = nodesMap;
145 149 }
146 150 const node: EdgeOverviewNode = {
147 151 id: (++this.nodeIdCounter)+'',
148 152 icon: false,
149   - text: edgeNodeText(edge),
150   - children: parentNodeId === '#',
  153 + text: entityNodeText(entity),
  154 + children: false,
151 155 state: {
152 156 disabled: false
153 157 },
154 158 data: {
155   - type: 'entity',
156   - entity: edge,
157   - internalId: edge.id.id
  159 + entity: entity,
  160 + internalId: entity.id.id
158 161 } as EntityNodeData
159 162 };
160   - nodesMap[edge.id.id] = node.id;
  163 + nodesMap[entity.id.id] = node.id;
161 164 return node;
162 165 }
163 166
164   - private edgesToNodes(parentNodeId: string, edges: Array<Edge>): EdgeOverviewNode[] {
  167 + private entitiesToNodes(parentNodeId: string, entities: BaseData<HasId>[]): EdgeOverviewNode[] {
165 168 const nodes: EdgeOverviewNode[] = [];
166   - this.edgeNodesMap[parentNodeId] = {};
167   - if (edges) {
168   - edges.forEach((edge) => {
169   - const node = this.createEdgeNode(parentNodeId, edge);
  169 + this.entityNodesMap[parentNodeId] = {};
  170 + if (entities) {
  171 + entities.forEach((entity) => {
  172 + const node = this.createEntityNode(parentNodeId, entity);
170 173 nodes.push(node);
171 174 });
172 175 }
173 176 return nodes;
174 177 }
175 178
176   - private getCustomerTitle(edgeId) {
  179 + private getCustomerTitle(edgeId: string) {
177 180 this.edgeService.getEdgeInfo(edgeId).subscribe(
178 181 (edge) => {
179 182 if (edge.customerTitle) {
... ...
... ... @@ -17,8 +17,8 @@
17 17 import { NavTreeNode } from '@shared/components/nav-tree.component';
18 18 import { Datasource } from '@shared/models/widget.models';
19 19 import { EntityType } from '@shared/models/entity-type.models';
20   -import { Edge } from "@shared/models/edge.models";
21 20 import { TranslateService } from "@ngx-translate/core";
  21 +import { BaseData, HasId } from "@shared/models/base-data";
22 22
23 23 export interface EntityNodeDatasource extends Datasource {
24 24 nodeId: string;
... ... @@ -30,9 +30,9 @@ export function edgeGroupsNodeText(translate: TranslateService, entityType: Enti
30 30 return nodeIcon + nodeText;
31 31 }
32 32
33   -export function edgeNodeText(edge: Edge): string {
34   - const nodeIcon = materialIconByEntityType(edge.id.entityType);
35   - const nodeText = edge.name;
  33 +export function entityNodeText(entity: any): string {
  34 + const nodeIcon = materialIconByEntityType(entity.id.entityType);
  35 + const nodeText = entity.name;
36 36 return nodeIcon + nodeText;
37 37 }
38 38
... ... @@ -95,19 +95,14 @@ export interface EdgeOverviewNode extends NavTreeNode {
95 95 export type EdgeOverviewNodeData = EdgeGroupNodeData | EntityNodeData;
96 96
97 97 export interface EdgeGroupNodeData extends BaseEdgeOverviewNodeData {
98   - type: 'edgeGroup';
99 98 entityType: EntityType;
100   - edge: Edge;
  99 + entity: BaseData<HasId>;
101 100 }
102 101
103 102 export interface EntityNodeData extends BaseEdgeOverviewNodeData {
104   - type: 'entity';
105   - entity: Edge;
  103 + entity: BaseData<HasId>;
106 104 }
107 105
108 106 export interface BaseEdgeOverviewNodeData {
109   - type: EdgeOverviewNodeType;
110 107 internalId: string;
111 108 }
112   -
113   -export type EdgeOverviewNodeType = 'entity' | 'edgeGroup';
... ...