Merge pull request #61 from deaflynx/develop/2.6-edge

Develop/2.6 edge UI updates
This commit is contained in:
VoBa 2020-12-10 17:57:56 +02:00 committed by GitHub
commit d0bff3d6eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 81 additions and 22 deletions

View File

@ -28,31 +28,31 @@ function ComponentDescriptorService($http, $q) {
return service;
function getComponentDescriptorsByTypes(componentTypes, type) {
function getComponentDescriptorsByTypes(componentTypes, ruleChainType) {
var deferred = $q.defer();
var result = [];
if (!componentsByType[type]) {
componentsByType[type] = {};
if (!componentsByType[ruleChainType]) {
componentsByType[ruleChainType] = {};
}
for (var i=componentTypes.length-1;i>=0;i--) {
var componentType = componentTypes[i];
if (componentsByType[type][componentType]) {
result = result.concat(componentsByType[type][componentType]);
if (componentsByType[ruleChainType][componentType]) {
result = result.concat(componentsByType[ruleChainType][componentType]);
componentTypes.splice(i, 1);
}
}
if (!componentTypes.length) {
deferred.resolve(result);
} else {
var url = '/api/components?componentTypes=' + componentTypes.join(',') + '&ruleChainType=' + type;
var url = '/api/components?componentTypes=' + componentTypes.join(',') + '&ruleChainType=' + ruleChainType;
$http.get(url, null).then(function success(response) {
var components = response.data;
for (var i = 0; i < components.length; i++) {
var component = components[i];
var componentsList = componentsByType[type][component.type];
var componentsList = componentsByType[ruleChainType][component.type];
if (!componentsList) {
componentsList = [];
componentsByType[type][component.type] = componentsList;
componentsByType[ruleChainType][component.type] = componentsList;
}
componentsList.push(component);
componentsByClazz[component.clazz] = component;

View File

@ -27,6 +27,9 @@
<md-button ng-click="onDeleteAsset({event: $event})"
ng-show="!isEdit && assetScope === 'tenant'"
class="md-raised md-primary">{{ 'asset.delete' | translate }}</md-button>
<md-button ng-click="onUnassignFromEdge({event: $event})"
ng-show="!isEdit && assetScope === 'edge'"
class="md-raised md-primary">{{ 'edge.unassign-from-edge' | translate }}</md-button>
<div layout="row">
<md-button ngclipboard data-clipboard-action="copy"

View File

@ -130,6 +130,7 @@ export function AssetController($rootScope, userService, assetService, customerS
vm.assignToCustomer = assignToCustomer;
vm.makePublic = makePublic;
vm.unassignFromCustomer = unassignFromCustomer;
vm.unassignFromEdge = unassignFromEdge;
initController();

View File

@ -66,7 +66,8 @@ export default function AssetDirective($compile, $templateCache, toast, $transla
onAssignToCustomer: '&',
onMakePublic: '&',
onUnassignFromCustomer: '&',
onDeleteAsset: '&'
onDeleteAsset: '&',
onUnassignFromEdge: '&'
}
};
}

View File

@ -29,6 +29,7 @@
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-unassign-from-edge="vm.unassignFromEdge(event, vm.grid.detailsConfig.currentItem)"
on-delete-asset="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-asset>
</md-tab>
<md-tab ng-if="!vm.grid.detailsConfig.isDetailsEditMode" md-on-select="vm.grid.triggerResize()" label="{{ 'attribute.attributes' | translate }}">

View File

@ -16,7 +16,7 @@
-->
<md-button ng-click="onExportDashboard({event: $event})"
ng-show="!isEdit && dashboardScope === 'tenant'"
ng-show="!isEdit && (dashboardScope === 'tenant' || dashboardScope === 'edge')"
class="md-raised md-primary">{{ 'dashboard.export' | translate }}</md-button>
<md-button ng-click="onMakePublic({event: $event})"
ng-show="!isEdit && dashboardScope === 'tenant' && !dashboard.publicCustomerId"
@ -34,6 +34,9 @@
<md-button ng-click="onDeleteDashboard({event: $event})"
ng-show="!isEdit && dashboardScope === 'tenant'"
class="md-raised md-primary">{{ 'dashboard.delete' | translate }}</md-button>
<md-button ng-click="onUnassignFromEdge({event: $event})"
ng-show="!isEdit && dashboardScope === 'edge'"
class="md-raised md-primary">{{ 'edge.unassign-from-edge' | translate }}</md-button>
<md-content class="md-padding" layout="column">
<md-input-container class="md-block"
ng-show="!isEdit && dashboard.assignedCustomersText && dashboardScope === 'tenant'">

View File

@ -48,12 +48,14 @@ export default function DashboardDirective($compile, $templateCache, $translate,
dashboard: '=',
isEdit: '=',
customerId: '=',
edgeId: '=',
dashboardScope: '=',
theForm: '=',
onMakePublic: '&',
onMakePrivate: '&',
onManageAssignedCustomers: '&',
onUnassignFromCustomer: '&',
onUnassignFromEdge: '&',
onExportDashboard: '&',
onDeleteDashboard: '&'
}

View File

@ -129,6 +129,7 @@ export function DashboardsController(userService, dashboardService, customerServ
vm.manageAssignedCustomers = manageAssignedCustomers;
vm.unassignFromCustomer = unassignFromCustomer;
vm.exportDashboard = exportDashboard;
vm.unassignFromEdge = unassignFromEdge;
initController();
@ -156,6 +157,10 @@ export function DashboardsController(userService, dashboardService, customerServ
);
}
if (edgeId) {
vm.edgeId = edgeId;
}
if (vm.dashboardsScope === 'tenant') {
fetchDashboardsFunction = function (pageLink) {
return dashboardService.getTenantDashboards(pageLink);

View File

@ -26,12 +26,14 @@
is-edit="vm.grid.detailsConfig.isDetailsEditMode"
dashboard-scope="vm.dashboardsScope"
customer-id="vm.customerId"
edge-id="vm.edgeId"
the-form="vm.grid.detailsForm"
on-make-public="vm.makePublic(event, vm.grid.detailsConfig.currentItem)"
on-make-private="vm.makePrivate(event, vm.grid.detailsConfig.currentItem)"
on-manage-assigned-customers="vm.manageAssignedCustomers(event, vm.grid.detailsConfig.currentItem)"
on-unassign-from-customer="vm.unassignFromCustomer(event, vm.grid.detailsConfig.currentItem, vm.customerId)"
on-export-dashboard="vm.exportDashboard(event, vm.grid.detailsConfig.currentItem)"
on-unassign-from-edge="vm.unassignFromEdge(event, vm.grid.detailsConfig.currentItem, vm.edgeId)"
on-export-dashboard="vm.exportDashboard(event, vm.grid.detailsConfig.currentItem)"
on-delete-dashboard="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-dashboard-details>
</md-tab>
<md-tab ng-if="!vm.grid.detailsConfig.isDetailsEditMode && vm.grid.isTenantAdmin()" md-on-select="vm.grid.triggerResize()" label="{{ 'audit-log.audit-logs' | translate }}">

View File

@ -24,6 +24,9 @@
<md-button ng-click="onUnassignFromCustomer({event: $event, isPublic: isPublic})"
ng-show="!isEdit && (deviceScope === 'customer' || deviceScope === 'tenant') && isAssignedToCustomer"
class="md-raised md-primary">{{ isPublic ? 'device.make-private' : 'device.unassign-from-customer' | translate }}</md-button>
<md-button ng-click="onUnassignFromEdge({event: $event})"
ng-show="!isEdit && deviceScope === 'edge'"
class="md-raised md-primary">{{ 'edge.unassign-from-edge' | translate }}</md-button>
<md-button ng-click="onManageCredentials({event: $event})"
ng-show="!isEdit"
class="md-raised md-primary">{{ (deviceScope === 'customer_user' ? 'device.view-credentials' : 'device.manage-credentials') | translate }}</md-button>

View File

@ -131,6 +131,7 @@ export function DeviceController($rootScope, userService, deviceService, custome
vm.makePublic = makePublic;
vm.unassignFromCustomer = unassignFromCustomer;
vm.manageCredentials = manageCredentials;
vm.unassignFromEdge = unassignFromEdge;
initController();

View File

@ -82,7 +82,8 @@ export default function DeviceDirective($compile, $templateCache, toast, $transl
onMakePublic: '&',
onUnassignFromCustomer: '&',
onManageCredentials: '&',
onDeleteDevice: '&'
onDeleteDevice: '&',
onUnassignFromEdge: '&',
}
};
}

View File

@ -29,6 +29,7 @@
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-unassign-from-edge="vm.unassignFromEdge(event, vm.grid.detailsConfig.currentItem)"
on-manage-credentials="vm.manageCredentials(event, vm.grid.detailsConfig.currentItem)"
on-delete-device="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-device>
</md-tab>

View File

@ -283,7 +283,7 @@ export function EdgeController($rootScope, userService, edgeService, customerSer
details: function() {
return $translate.instant('edge.manage-edge-rulechains');
},
icon: "settings_ethernet"
icon: "code"
}
);

View File

@ -49,7 +49,7 @@ export default function EdgeRoutes($stateProvider, types) {
pageTitle: 'edge.edges'
},
ncyBreadcrumb: {
label: '{"icon": "transform", "label": "edge.edges"}'
label: '{"icon": "router", "label": "edge.edges"}'
}
}).state('home.edges.entityViews', {
url: '/:edgeId/entityViews',

View File

@ -27,6 +27,9 @@
<md-button ng-click="onDeleteEntityView({event: $event})"
ng-show="!isEdit && entityViewScope === 'tenant'"
class="md-raised md-primary">{{ 'entity-view.delete' | translate }}</md-button>
<md-button ng-click="onUnassignFromEdge({event: $event})"
ng-show="!isEdit && entityViewScope === 'edge'"
class="md-raised md-primary">{{ 'edge.unassign-from-edge' | translate }}</md-button>
<div layout="row">
<md-button ngclipboard data-clipboard-action="copy"

View File

@ -106,6 +106,7 @@ export function EntityViewController($rootScope, userService, entityViewService,
vm.assignToCustomer = assignToCustomer;
vm.makePublic = makePublic;
vm.unassignFromCustomer = unassignFromCustomer;
vm.unassignFromEdge = unassignFromEdge;
initController();

View File

@ -144,7 +144,8 @@ export default function EntityViewDirective($q, $compile, $templateCache, $filte
onAssignToCustomer: '&',
onMakePublic: '&',
onUnassignFromCustomer: '&',
onDeleteEntityView: '&'
onDeleteEntityView: '&',
onUnassignFromEdge: '&'
}
};
}

View File

@ -29,6 +29,7 @@
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-unassign-from-edge="vm.unassignFromEdge(event, vm.grid.detailsConfig.currentItem)"
on-delete-entity-view="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)"></tb-entity-view>
</md-tab>
<md-tab ng-if="!vm.grid.detailsConfig.isDetailsEditMode" md-on-select="vm.grid.triggerResize()" label="{{ 'attribute.attributes' | translate }}">

View File

@ -844,7 +844,8 @@
"set-root-rule-chain-to-edges-text": "Set root rule chain for { count, plural, 1 {1 edge} other {# edges} }",
"status": "Received by edge",
"deployed": "Deployed",
"pending": "Pending"
"pending": "Pending",
"unassign-edges-action-title": "Unassign { count, plural, 1 {1 edge} other {# edges} } from customer"
},
"error": {
"unable-to-connect": "Unable to connect to the server! Please check your internet connection.",
@ -1539,6 +1540,7 @@
"rulechains": "Rule chains",
"core-rulechains": "Core Rule chains",
"edge-rulechains": "Edge Rule chains",
"default-root": "Default root",
"root": "Root",
"delete": "Delete rule chain",
"name": "Name",
@ -1589,10 +1591,10 @@
"set-default-root-edge-rulechain-title": "Are you sure you want to make the rule chain '{{ruleChainName}}' default edge root?",
"set-default-root-edge-rulechain-text": "After the confirmation the rule chain will become default edge root and will handle all incoming transport messages.",
"invalid-rulechain-type-error": "Unable to import rule chain: Invalid rule chain type. Expected type is {{expectedRuleChainType}}.",
"set-default-edge": "Make edge rule chain default",
"set-default-edge": "Make rule chain default",
"set-default-edge-title": "Are you sure you want to make the edge rule chain '{{ruleChainName}}' default?",
"set-default-edge-text": "After the confirmation the edge rule chain will be added to default list and assigned to newly created edge(s).",
"remove-default-edge": "Remove edge rule chain from defaults",
"remove-default-edge": "Remove rule chain from defaults",
"remove-default-edge-title": "Are you sure you want to remove the edge rule chain '{{ruleChainName}}' from default list?",
"remove-default-edge-text": "After the confirmation the edge rule chain will not be assigned for a newly created edges."
},

View File

@ -16,7 +16,8 @@
-->
<div ng-if="(vm.parentCtl.ruleChainsScope === 'tenant' && item && item.root) ||
(vm.parentCtl.ruleChainsScope === 'edge' && vm.parentCtl.isRootRuleChain(item)) ||
(vm.parentCtl.ruleChainsScope === 'edges' && vm.parentCtl.isRootRuleChain(item))" translate>rulechain.root</div>
(vm.parentCtl.ruleChainsScope === 'edge' && vm.parentCtl.isRootRuleChain(item))" translate>rulechain.root</div>
<div ng-if="vm.parentCtl.ruleChainsScope === 'edges' && vm.parentCtl.isRootRuleChain(item)" translate>rulechain.default-root</div>
<div ng-if="(vm.parentCtl.ruleChainsScope === 'edges' && vm.parentCtl.isDefaultEdgeRuleChain(item))" translate>rulechain.default</div>

View File

@ -18,11 +18,27 @@
<md-button ng-click="onExportRuleChain({event: $event})"
ng-show="!isEdit"
class="md-raised md-primary">{{ 'rulechain.export' | translate }}</md-button>
<md-button ng-click="onSetRootRuleChain({event: $event})"
ng-show="!isEdit && !ruleChain.root"
ng-show="!isEdit && !ruleChain.root && ruleChainsScope == 'tenant'"
class="md-raised md-primary">{{ 'rulechain.set-root' | translate }}</md-button>
<md-button ng-click="onSetRootRuleChain({event: $event})"
ng-show="!isEdit && !ruleChain.root && ruleChainsScope == 'edges'"
class="md-raised md-primary">{{ 'rulechain.set-default-root-edge' | translate }}</md-button>
<md-button ng-click="onSetDefaultEdgeRuleChain({event: $event})"
ng-show="!isEdit && !ruleChain.root && !ruleChain.isDefault && ruleChainsScope == 'edges'"
class="md-raised md-primary">{{ 'rulechain.set-default-edge' | translate }}</md-button>
<md-button ng-click="onRemoveDefaultEdgeRuleChain({event: $event})"
ng-show="!isEdit && !ruleChain.root && ruleChain.isDefault && ruleChainsScope == 'edges'"
class="md-raised md-primary">{{ 'rulechain.remove-default-edge' | translate }}</md-button>
<md-button ng-click="onSetRootRuleChain({event: $event})"
ng-show="!isEdit && ruleChainsScope == 'edge' && edge.rootRuleChainId.id !== ruleChain.id.id"
class="md-raised md-primary">{{ 'rulechain.set-root' | translate }}</md-button>
<md-button ng-click="onDeleteRuleChain({event: $event})"
ng-show="!isEdit && !ruleChain.root"
ng-show="!isEdit && !ruleChain.root && ruleChainsScope != 'edge'"
class="md-raised md-primary">{{ 'rulechain.delete' | translate }}</md-button>
<div layout="row">

View File

@ -40,6 +40,10 @@ export default function RuleChainDirective($compile, $templateCache, $mdDialog,
isEdit: '=',
isReadOnly: '=',
theForm: '=',
ruleChainsScope: '=',
edge: '=',
onSetDefaultEdgeRuleChain: '&',
onRemoveDefaultEdgeRuleChain: '&',
onSetRootRuleChain: '&',
onExportRuleChain: '&',
onDeleteRuleChain: '&'

View File

@ -97,6 +97,8 @@ export default function RuleChainsController(ruleChainService, userService, impo
vm.exportRuleChain = exportRuleChain;
vm.setRootRuleChain = setRootRuleChain;
vm.setDefaultEdgeRuleChain = setDefaultEdgeRuleChain;
vm.removeDefaultEdgeRuleChain = removeDefaultEdgeRuleChain;
initController();

View File

@ -26,6 +26,10 @@
is-edit="vm.grid.detailsConfig.isDetailsEditMode"
is-read-only="vm.grid.isDetailsReadOnly(vm.grid.operatingItem())"
the-form="vm.grid.detailsForm"
rule-chains-scope="vm.ruleChainsScope"
edge="vm.edge"
on-set-default-edge-rule-chain="vm.setDefaultEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)"
on-remove-default-edge-rule-chain="vm.removeDefaultEdgeRuleChain(event, vm.grid.detailsConfig.currentItem)"
on-set-root-rule-chain="vm.setRootRuleChain(event, vm.grid.detailsConfig.currentItem)"
on-export-rule-chain="vm.exportRuleChain(event, vm.grid.detailsConfig.currentItem)"
on-delete-rule-chain="vm.grid.deleteItem(event, vm.grid.detailsConfig.currentItem)">