diff --git a/ui/src/app/api/edge.service.js b/ui/src/app/api/edge.service.js index 858dff3d18..7814e1d826 100644 --- a/ui/src/app/api/edge.service.js +++ b/ui/src/app/api/edge.service.js @@ -56,7 +56,7 @@ function EdgeService($http, $q, customerService) { deferred.reject(); }); return deferred.promise; - } // TODO: deaflynx: check usage in UI + } function getEdgesByIds(edgeIds, config) { var deferred = $q.defer(); diff --git a/ui/src/app/common/types.constant.js b/ui/src/app/common/types.constant.js index 7b37ada832..59f1111ab4 100644 --- a/ui/src/app/common/types.constant.js +++ b/ui/src/app/common/types.constant.js @@ -389,6 +389,25 @@ export default angular.module('thingsboard.types', []) customer: "CUSTOMER", relation: "RELATION" }, + edgeEventAction: { + updated: "UPDATED", + added: "ADDED", + assignedToEdge: "ASSIGNED_TO_EDGE", + deleted: "DELETED", + unassignedFromEdge: "UNASSIGNED_FROM_EDGE", + alarmAck: "ALARM_ACK", + alarmClear: "ALARM_CLEAR", + credentialsUpdated: "CREDENTIALS_UPDATED", + attributesUpdated: "ATTRIBUTES_UPDATED", + attributesDeleted: "ATTRIBUTES_DELETED", + timeseriesUpdated: "TIMESERIES_UPDATED" + }, + edgeAttributeKeys: { + active: "active", + lastConnectTime: "lastConnectTime", + lastDisconnectTime: "lastDisconnectTime", + queueStartTs: "queueStartTs" + }, importEntityColumnType: { name: { name: 'import.column-type.name', diff --git a/ui/src/app/edge/edge-fieldset.tpl.html b/ui/src/app/edge/edge-fieldset.tpl.html index b54e1cb651..c151c03f10 100644 --- a/ui/src/app/edge/edge-fieldset.tpl.html +++ b/ui/src/app/edge/edge-fieldset.tpl.html @@ -21,6 +21,21 @@ {{ isPublic ? 'edge.make-private' : 'edge.unassign-from-customer' | translate }} +{{ 'edge.manage-edge-assets' | translate }} +{{ 'edge.manage-edge-devices' | translate }} +{{ 'edge.manage-edge-entity-views' | translate }} +{{ 'edge.manage-edge-dashboards' | translate }} +{{ 'edge.manage-edge-rulechains' | translate }} {{ 'edge.delete' | translate }} diff --git a/ui/src/app/edge/edge.controller.js b/ui/src/app/edge/edge.controller.js index 51269ea753..7e57fce6a6 100644 --- a/ui/src/app/edge/edge.controller.js +++ b/ui/src/app/edge/edge.controller.js @@ -129,6 +129,11 @@ export function EdgeController($rootScope, userService, edgeService, customerSer vm.assignToCustomer = assignToCustomer; vm.makePublic = makePublic; vm.unassignFromCustomer = unassignFromCustomer; + vm.openEdgeAssets = openEdgeAssets; + vm.openEdgeDevices = openEdgeDevices; + vm.openEdgeEntityViews = openEdgeEntityViews; + vm.openEdgeDashboards = openEdgeDashboards; + vm.openEdgeRuleChains = openEdgeRuleChains; initController(); diff --git a/ui/src/app/edge/edge.directive.js b/ui/src/app/edge/edge.directive.js index 0cbe32f79e..d96dfa4b4d 100644 --- a/ui/src/app/edge/edge.directive.js +++ b/ui/src/app/edge/edge.directive.js @@ -96,6 +96,11 @@ export default function EdgeDirective($compile, $templateCache, $translate, $mdD onAssignToCustomer: '&', onMakePublic: '&', onUnassignFromCustomer: '&', + onManageEdgeAssets: '&', + onManageEdgeDevices: '&', + onManageEdgeEntityViews: '&', + onManageEdgeDashboards: '&', + onManageEdgeRuleChains: '&', onDeleteEdge: '&' } }; diff --git a/ui/src/app/edge/edges.tpl.html b/ui/src/app/edge/edges.tpl.html index 4fc3f5d75e..2600413255 100644 --- a/ui/src/app/edge/edges.tpl.html +++ b/ui/src/app/edge/edges.tpl.html @@ -29,6 +29,11 @@ on-assign-to-customer="vm.assignToCustomer(event, [ vm.grid.detailsConfig.currentItem.id.id ])" on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)" on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, isPublic)" + on-manage-edge-assets="vm.openEdgeAssets(event, vm.grid.detailsConfig.currentItem)" + on-manage-edge-devices="vm.openEdgeDevices(event, vm.grid.detailsConfig.currentItem)" + on-manage-edge-entity-views="vm.openEdgeEntityViews(event, vm.grid.detailsConfig.currentItem)" + on-manage-edge-dashboards="vm.openEdgeDashboards(event, vm.grid.detailsConfig.currentItem)" + on-manage-edge-rule-chains="vm.openEdgeRuleChains(event, vm.grid.detailsConfig.currentItem)" on-delete-edge="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"> diff --git a/ui/src/app/event/event-header-edge-event.tpl.html b/ui/src/app/event/event-header-edge-event.tpl.html index f0d2daa53b..e84922f6a5 100644 --- a/ui/src/app/event/event-header-edge-event.tpl.html +++ b/ui/src/app/event/event-header-edge-event.tpl.html @@ -17,6 +17,7 @@ -->
event.event-time
event.event-type
-
edge.event-action
-
edge.entity-id
-
edge.entity-info
+
edge.event-action
+
edge.entity-id
+
edge.status
+
edge.entity-info
diff --git a/ui/src/app/event/event-row-edge-event.tpl.html b/ui/src/app/event/event-row-edge-event.tpl.html index 5c3a7a8576..d47ca55b81 100644 --- a/ui/src/app/event/event-row-edge-event.tpl.html +++ b/ui/src/app/event/event-row-edge-event.tpl.html @@ -15,11 +15,12 @@ limitations under the License. --> -
{{event.createdTime | date : 'yyyy-MM-dd HH:mm:ss'}}
-
{{event.edgeEventType}}
-
{{event.edgeEventAction}}
-
{{event.entityId}}
-
+
{{ event.createdTime | date : 'yyyy-MM-dd HH:mm:ss' }}
+
{{ event.edgeEventType }}
+
{{ event.edgeEventAction }}
+
{{ event.entityId }}
+
{{ updateStatus(event.createdTime) | translate }}
+
@@ -33,3 +34,4 @@
+ diff --git a/ui/src/app/event/event-row.directive.js b/ui/src/app/event/event-row.directive.js index 0ba533d5f1..92da9c06b9 100644 --- a/ui/src/app/event/event-row.directive.js +++ b/ui/src/app/event/event-row.directive.js @@ -102,37 +102,45 @@ export default function EventRowDirective($compile, $templateCache, $mdDialog, $ switch(scope.event.edgeEventType) { case types.edgeEventType.relation: content = angular.toJson(scope.event.entityBody); + showDialog(); break; case types.edgeEventType.ruleChainMetaData: - content = ruleChainService.getRuleChainMetaData(scope.event.entityId, {}).then( + content = ruleChainService.getRuleChainMetaData(scope.event.entityId, {ignoreErrors: true}).then( function success(info) { + showDialog(); return angular.toJson(info); }, function fail() { - toast.showError($translate.instant('edge.load-entity-error')); + showError(); }); break; default: - content = entityService.getEntity(scope.event.edgeEventType, scope.event.entityId, {}).then( + content = entityService.getEntity(scope.event.edgeEventType, scope.event.entityId, {ignoreErrors: true}).then( function success(info) { + showDialog(); return angular.toJson(info); }, function fail() { - toast.showError($translate.instant('edge.load-entity-error')); + showError(); }); break; } - $mdDialog.show({ - controller: 'EventContentDialogController', - controllerAs: 'vm', - templateUrl: eventErrorDialogTemplate, - locals: {content: content, title: title, contentType: contentType, showingCallback: onShowingCallback}, - parent: angular.element($document[0].body), - fullscreen: true, - targetEvent: $event, - multiple: true, - onShowing: function(scope, element) { - onShowingCallback.onShowing(scope, element); - } - }); + function showDialog() { + $mdDialog.show({ + controller: 'EventContentDialogController', + controllerAs: 'vm', + templateUrl: eventErrorDialogTemplate, + locals: {content: content, title: title, contentType: contentType, showingCallback: onShowingCallback}, + parent: angular.element($document[0].body), + fullscreen: true, + targetEvent: $event, + multiple: true, + onShowing: function(scope, element) { + onShowingCallback.onShowing(scope, element); + } + }); + } + function showError() { + toast.showError($translate.instant('edge.load-entity-error')); + } } scope.checkTooltip = function($event) { @@ -144,6 +152,20 @@ export default function EventRowDirective($compile, $templateCache, $mdDialog, $ } $compile(element.contents())(scope); + + scope.updateStatus = function(eventCreatedTime) { + if (scope.queueStartTs) { + var status; + if (eventCreatedTime < scope.queueStartTs) { + status = $translate.instant('edge.success'); + scope.isPending = false; + } else { + status = $translate.instant('edge.failed'); + scope.isPending = true; + } + return status; + } + } } return { diff --git a/ui/src/app/event/event-table.directive.js b/ui/src/app/event/event-table.directive.js index 4e8ae226b7..9c7c57d5d7 100644 --- a/ui/src/app/event/event-table.directive.js +++ b/ui/src/app/event/event-table.directive.js @@ -22,7 +22,8 @@ import eventTableTemplate from './event-table.tpl.html'; /* eslint-enable import/no-unresolved, import/default */ /*@ngInject*/ -export default function EventTableDirective($compile, $templateCache, $rootScope, types, eventService, edgeService) { +export default function EventTableDirective($compile, $templateCache, $rootScope, types, + eventService, edgeService, attributeService) { var linker = function (scope, element, attrs) { @@ -30,11 +31,16 @@ export default function EventTableDirective($compile, $templateCache, $rootScope element.html(template); + scope.eventTypeScope = angular.copy(types.eventType); + if (scope.entityType !== types.entityType.edge) { + delete scope.eventTypeScope.edgeEvent; + } + if (attrs.disabledEventTypes) { var disabledEventTypes = attrs.disabledEventTypes.split(','); scope.eventTypes = {}; - for (var type in types.eventType) { - var eventType = types.eventType[type]; + for (var type in scope.eventTypeScope) { + var eventType = scope.eventTypeScope[type]; var enabled = true; for (var i=0;i