Commit 6d83477fe638f25f046510936a3a2ee5106f78f5
1 parent
206c570a
Edge widget implementation with initial simulated data
Showing
3 changed files
with
49 additions
and
51 deletions
... | ... | @@ -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'; | ... | ... |