From 91c4affb0748f733c67233abb471c5a739a60938 Mon Sep 17 00:00:00 2001 From: Artem Babak Date: Tue, 8 Dec 2020 09:23:55 +0200 Subject: [PATCH 01/17] Minor edge changes --- .run/[CE Edge] Install.run.xml | 2 +- .run/[CE Edge] Server.run.xml | 4 +-- .../dao/model/sql/AbstractEdgeEntity.java | 2 +- ui-ngx/src/app/core/http/edge.service.ts | 6 ----- .../src/app/core/http/rule-chain.service.ts | 6 +++++ .../home/pages/edge/edge-routing.module.ts | 2 +- .../pages/edge/edges-table-config.resolver.ts | 26 +++++++++---------- .../rulechain/rulechain-routing.module.ts | 6 ++--- .../rulechains-table-config.resolver.ts | 4 +-- .../assets/locale/locale.constant-en_US.json | 3 +-- ui/src/app/edge/edge.routes.js | 2 +- 11 files changed, 31 insertions(+), 32 deletions(-) diff --git a/.run/[CE Edge] Install.run.xml b/.run/[CE Edge] Install.run.xml index ecc4c081a5..f9e18724d9 100644 --- a/.run/[CE Edge] Install.run.xml +++ b/.run/[CE Edge] Install.run.xml @@ -1,5 +1,5 @@ - + diff --git a/.run/[CE Edge] Server.run.xml b/.run/[CE Edge] Server.run.xml index 89667da5db..70f1bc1e6a 100644 --- a/.run/[CE Edge] Server.run.xml +++ b/.run/[CE Edge] Server.run.xml @@ -1,9 +1,9 @@ - + - + diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractEdgeEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractEdgeEntity.java index 7292b16078..1f62bec85a 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractEdgeEntity.java +++ b/dao/src/main/java/org/thingsboard/server/dao/model/sql/AbstractEdgeEntity.java @@ -176,4 +176,4 @@ public abstract class AbstractEdgeEntity extends BaseSqlEntity { - return this.http.post(`/api/edge/${edgeId}/${ruleChainId}/root`, - defaultHttpOptionsFromConfig(config)); - } - public getTenantEdgeInfos(pageLink: PageLink, type: string = '', config?: RequestConfig): Observable> { return this.http.get>(`/api/tenant/edgeInfos${pageLink.toQuery()}&type=${type}`, diff --git a/ui-ngx/src/app/core/http/rule-chain.service.ts b/ui-ngx/src/app/core/http/rule-chain.service.ts index 61a52e899b..5c01902896 100644 --- a/ui-ngx/src/app/core/http/rule-chain.service.ts +++ b/ui-ngx/src/app/core/http/rule-chain.service.ts @@ -44,6 +44,7 @@ import { TranslateService } from '@ngx-translate/core'; import { EntityType } from '@shared/models/entity-type.models'; import { deepClone, snakeCase } from '@core/utils'; import { DebugRuleNodeEventBody } from '@app/shared/models/event.models'; +import { Edge } from "@shared/models/edge.models"; @Injectable({ providedIn: 'root' @@ -323,4 +324,9 @@ export class RuleChainService { return this.http.get>(`/api/ruleChain/defaultEdgeRuleChains`, defaultHttpOptionsFromConfig(config)); } + public setEdgeRootRuleChain(edgeId: string, ruleChainId: string, config?: RequestConfig): Observable { //TODO deaflynx EdgeInfo vs. Edge check usage + return this.http.post(`/api/edge/${edgeId}/${ruleChainId}/root`, + defaultHttpOptionsFromConfig(config)); + } + } diff --git a/ui-ngx/src/app/modules/home/pages/edge/edge-routing.module.ts b/ui-ngx/src/app/modules/home/pages/edge/edge-routing.module.ts index 4fcad45d19..58870eed4f 100644 --- a/ui-ngx/src/app/modules/home/pages/edge/edge-routing.module.ts +++ b/ui-ngx/src/app/modules/home/pages/edge/edge-routing.module.ts @@ -53,7 +53,7 @@ const routes: Routes = [ auth: [Authority.TENANT_ADMIN], ruleChainsType: 'edge', breadcrumb: { - label: 'edge.rulechains', + label: 'rulechain.edge-rulechains', icon: 'settings_ethernet' }, }, diff --git a/ui-ngx/src/app/modules/home/pages/edge/edges-table-config.resolver.ts b/ui-ngx/src/app/modules/home/pages/edge/edges-table-config.resolver.ts index 614c801653..3eff42b70a 100644 --- a/ui-ngx/src/app/modules/home/pages/edge/edges-table-config.resolver.ts +++ b/ui-ngx/src/app/modules/home/pages/edge/edges-table-config.resolver.ts @@ -149,10 +149,10 @@ export class EdgesTableConfigResolver implements Resolve('customerTitle', 'customer.customer', '25%'), - new EntityTableColumn('customerIsPublic', 'edge.public', '60px', + /* new EntityTableColumn('customerIsPublic', 'edge.public', '60px', entity => { return checkBoxCell(entity.customerIsPublic); - }, () => ({}), false), + }, () => ({}), false) */ ); } return columns; @@ -175,12 +175,12 @@ export class EdgesTableConfigResolver implements Resolve> = []; if (edgeScope === 'tenant') { actions.push( - { - name: this.translate.instant('edge.make-public'), - icon: 'share', - isEnabled: (entity) => (!entity.customerId || entity.customerId.id === NULL_UUID), - onAction: ($event, entity) => this.makePublic($event, entity) - }, + /* { + name: this.translate.instant('edge.make-public'), + icon: 'share', + isEnabled: (entity) => (!entity.customerId || entity.customerId.id === NULL_UUID), + onAction: ($event, entity) => this.makePublic($event, entity) + }, */ { name: this.translate.instant('edge.assign-to-customer'), icon: 'assignment_ind', @@ -335,7 +335,7 @@ export class EdgesTableConfigResolver implements Resolve): boolean { switch (action.action) { - case 'makePublic': - this.makePublic(action.event, action.entity); - return true; + // case 'makePublic': + // this.makePublic(action.event, action.entity); + // return true; case 'assignToCustomer': this.assignToCustomer(action.event, [action.entity.id]); return true; diff --git a/ui-ngx/src/app/modules/home/pages/rulechain/rulechain-routing.module.ts b/ui-ngx/src/app/modules/home/pages/rulechain/rulechain-routing.module.ts index fd7b58f0f0..7c2f3e31ef 100644 --- a/ui-ngx/src/app/modules/home/pages/rulechain/rulechain-routing.module.ts +++ b/ui-ngx/src/app/modules/home/pages/rulechain/rulechain-routing.module.ts @@ -210,7 +210,7 @@ const routes: Routes = [ component: EntitiesTableComponent, data: { auth: [Authority.TENANT_ADMIN], - title: 'edge.rulechains', + title: 'rulechain.edge-rulechains', ruleChainsType: 'edges' }, resolve: { @@ -227,7 +227,7 @@ const routes: Routes = [ icon: 'settings_ethernet' } as BreadCrumbConfig, auth: [Authority.TENANT_ADMIN], - title: 'edge.rulechain', + title: 'rulechain.edge-rulechain', import: false, ruleChainType: ruleChainType.edge }, @@ -248,7 +248,7 @@ const routes: Routes = [ icon: 'settings_ethernet' } as BreadCrumbConfig, auth: [Authority.TENANT_ADMIN], - title: 'edge.rulechain', + title: 'rulechain.edge-rulechain', import: true, ruleChainType: ruleChainType.edge }, diff --git a/ui-ngx/src/app/modules/home/pages/rulechain/rulechains-table-config.resolver.ts b/ui-ngx/src/app/modules/home/pages/rulechain/rulechains-table-config.resolver.ts index 280e4082ba..afa1784e98 100644 --- a/ui-ngx/src/app/modules/home/pages/rulechain/rulechains-table-config.resolver.ts +++ b/ui-ngx/src/app/modules/home/pages/rulechain/rulechains-table-config.resolver.ts @@ -100,11 +100,11 @@ export class RuleChainsTableConfigResolver implements Resolve this.config.componentsData.edge.rootRuleChainId.id != ruleChain.id.id; - this.config.deleteEnabled = () => false; this.edgeService.getEdge(this.config.componentsData.edgeId).subscribe(edge => { this.config.componentsData.edge = edge; this.config.tableTitle = edge.name + ': ' + this.translate.instant('rulechain.edge-rulechains'); }); + this.config.entitiesDeleteEnabled = false; } else { this.config.entitySelectionEnabled = ruleChain => ruleChain && !ruleChain.root; @@ -294,7 +294,7 @@ export class RuleChainsTableConfigResolver implements Resolve { if (res) { if (this.config.componentsData.edgeId) { - this.edgeService.setRootRuleChain(this.config.componentsData.edgeId, ruleChain.id.id).subscribe( + this.ruleChainService.setEdgeRootRuleChain(this.config.componentsData.edgeId, ruleChain.id.id).subscribe( (edge) => { this.config.componentsData.edge = edge; this.config.table.updateData(); diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json index 1fbfcfc2dc..554f18ff68 100644 --- a/ui-ngx/src/assets/locale/locale.constant-en_US.json +++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json @@ -980,8 +980,6 @@ "unassign-from-edge": "Unassign from edge", "dashboards": "Edge Dashboards", "manage-edge-rulechains": "Manage edge rule chains", - "rulechains": "Edge Rule Chains", - "rulechain": "Edge Rule Chain", "edge-key": "Edge key", "copy-edge-key": "Copy Edge key", "edge-key-copied-message": "Edge key has been copied to clipboard", @@ -1832,6 +1830,7 @@ "open-rulechain": "Open rule chain", "assign-new-rulechain": "Assign new rulechain", "edge-rulechains": "Edge Rule chains", + "edge-rulechain": "Edge Rule chain", "core-rulechains": "Core Rule chains", "unassign-rulechain-from-edge-text": "After the confirmation the rulechain will be unassigned and won't be accessible by the edge.", "unassign-rulechains-from-edge-title": "Unassign { count, plural, 1 {1 rulechain} other {# rulechains} } from edge", diff --git a/ui/src/app/edge/edge.routes.js b/ui/src/app/edge/edge.routes.js index bcba2cffe1..364f4c935d 100644 --- a/ui/src/app/edge/edge.routes.js +++ b/ui/src/app/edge/edge.routes.js @@ -194,7 +194,7 @@ export default function EdgeRoutes($stateProvider, types) { }, data: { searchEnabled: true, - pageTitle: 'edge.rulechains', + pageTitle: 'rulechain.edge-rulechains', ruleChainsType: 'edge' }, ncyBreadcrumb: { From cf2da5c9b1302cd98f9a60949228381f0c166a89 Mon Sep 17 00:00:00 2001 From: Artem Babak Date: Tue, 8 Dec 2020 10:34:34 +0200 Subject: [PATCH 02/17] Fixed filter edge by type. Added edge to entity-filer/subtype --- .../entity/entity-filter-view.component.ts | 32 ++++++++++++++++--- .../entity/entity-filter.component.html | 19 +++++++++++ .../entity/entity-filter.component.ts | 10 ++++++ .../pages/edge/edges-table-config.resolver.ts | 5 +-- .../entity/entity-subtype-list.component.ts | 3 +- ui-ngx/src/app/shared/models/id/public-api.ts | 1 + .../assets/locale/locale.constant-en_US.json | 5 ++- 7 files changed, 66 insertions(+), 9 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/entity/entity-filter-view.component.ts b/ui-ngx/src/app/modules/home/components/entity/entity-filter-view.component.ts index afde26d619..0f65f33bc2 100644 --- a/ui-ngx/src/app/modules/home/components/entity/entity-filter-view.component.ts +++ b/ui-ngx/src/app/modules/home/components/entity/entity-filter-view.component.ts @@ -14,11 +14,11 @@ /// limitations under the License. /// -import { Component, forwardRef } from '@angular/core'; -import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; -import { AliasFilterType, EntityAliasFilter } from '@shared/models/alias.models'; -import { AliasEntityType, EntityType, entityTypeTranslations } from '@shared/models/entity-type.models'; -import { TranslateService } from '@ngx-translate/core'; +import {Component, forwardRef} from '@angular/core'; +import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; +import {AliasFilterType, EntityAliasFilter} from '@shared/models/alias.models'; +import {AliasEntityType, EntityType, entityTypeTranslations} from '@shared/models/entity-type.models'; +import {TranslateService} from '@ngx-translate/core'; @Component({ selector: 'tb-entity-filter-view', @@ -101,6 +101,17 @@ export class EntityFilterViewComponent implements ControlValueAccessor { {deviceType}); } break; + case AliasFilterType.edgeType: + const edgeType = this.filter.edgeType; + prefix = this.filter.edgeNameFilter; + if (prefix && prefix.length) { + this.filterDisplayValue = this.translate.instant('alias.filter-type-edge-type-and-name-description', + {edgeType, prefix}); + } else { + this.filterDisplayValue = this.translate.instant('alias.filter-type-edge-type-description', + {edgeType}); + } + break; case AliasFilterType.entityViewType: const entityView = this.filter.entityViewType; prefix = this.filter.entityViewNameFilter; @@ -166,6 +177,7 @@ export class EntityFilterViewComponent implements ControlValueAccessor { break; case AliasFilterType.assetSearchQuery: case AliasFilterType.deviceSearchQuery: + case AliasFilterType.edgeSearchQuery: case AliasFilterType.entityViewSearchQuery: allEntitiesText = this.translate.instant('alias.all-entities'); anyRelationText = this.translate.instant('alias.any-relation'); @@ -207,6 +219,16 @@ export class EntityFilterViewComponent implements ControlValueAccessor { this.filterDisplayValue = this.translate.instant('alias.filter-type-device-search-query-description', translationValues ); + } else if (this.filter.type === AliasFilterType.edgeSearchQuery) { + const edgeTypesQuoted = []; + this.filter.edgeTypes.forEach((filterEdgeType) => { + edgeTypesQuoted.push(`'${filterEdgeType}'`); + }); + const edgeTypesText = edgeTypesQuoted.join(', '); + translationValues.edgeTypes = edgeTypesText; + this.filterDisplayValue = this.translate.instant('alias.filter-type-edge-search-query-description', + translationValues + ); } else if (this.filter.type === AliasFilterType.entityViewSearchQuery) { const entityViewTypesQuoted = []; this.filter.entityViewTypes.forEach((filterEntityViewType) => { diff --git a/ui-ngx/src/app/modules/home/components/entity/entity-filter.component.html b/ui-ngx/src/app/modules/home/components/entity/entity-filter.component.html index d736917c89..e17709999f 100644 --- a/ui-ngx/src/app/modules/home/components/entity/entity-filter.component.html +++ b/ui-ngx/src/app/modules/home/components/entity/entity-filter.component.html @@ -103,6 +103,16 @@ + + + + + edge.name-starts-with + + +
@@ -169,6 +179,7 @@ @@ -248,6 +259,14 @@ formControlName="deviceTypes"> + +
edge.edge-types
+ + +
entity-view.entity-view-types
> { const routeParams = route.params; this.config.componentsData = { - edgeScope: route.data.edgesType + edgeScope: route.data.edgesType, + edgeType: '' }; this.customerId = routeParams.customerId; return this.store.pipe(select(selectAuthUser), take(1)).pipe( @@ -161,7 +162,7 @@ export class EdgesTableConfigResolver implements Resolve - this.edgeService.getTenantEdgeInfos(pageLink); + this.edgeService.getTenantEdgeInfos(pageLink, this.config.componentsData.edgeType); this.config.deleteEntity = id => this.edgeService.deleteEdge(id.id); } if (edgeScope === 'customer') { diff --git a/ui-ngx/src/app/shared/components/entity/entity-subtype-list.component.ts b/ui-ngx/src/app/shared/components/entity/entity-subtype-list.component.ts index c70314c284..ca149b5d61 100644 --- a/ui-ngx/src/app/shared/components/entity/entity-subtype-list.component.ts +++ b/ui-ngx/src/app/shared/components/entity/entity-subtype-list.component.ts @@ -143,9 +143,10 @@ export class EntitySubTypeListComponent implements ControlValueAccessor, OnInit, break; case EntityType.EDGE: this.placeholder = this.required ? this.translate.instant('edge.enter-edge-type') - : this.translate.instant('edge.edge-any-edge'); + : this.translate.instant('edge.any-edge'); this.secondaryPlaceholder = '+' + this.translate.instant('edge.edge-type'); this.noSubtypesMathingText = 'edge.no-edge-types-matching'; + this.subtypeListEmptyText = 'edge.edge-type-list-empty'; this.broadcastSubscription = this.broadcast.on('edgeSaved', () => { this.entitySubtypes = null; }); diff --git a/ui-ngx/src/app/shared/models/id/public-api.ts b/ui-ngx/src/app/shared/models/id/public-api.ts index 57287b1a16..7b1a81c3a9 100644 --- a/ui-ngx/src/app/shared/models/id/public-api.ts +++ b/ui-ngx/src/app/shared/models/id/public-api.ts @@ -33,3 +33,4 @@ export * from './tenant-profile-id'; export * from './user-id'; export * from './widget-type-id'; export * from './widgets-bundle-id'; +export * from './edge-id'; diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json index 554f18ff68..c64f730c1a 100644 --- a/ui-ngx/src/assets/locale/locale.constant-en_US.json +++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json @@ -213,6 +213,7 @@ "filter-type-entity-view-type-and-name-description": "Entity Views of type '{{entityView}}' and with name starting with '{{prefix}}'", "filter-type-edge-type": "Edge type", "filter-type-edge-type-description": "Edges of type '{{edgeType}}'", + "filter-type-edge-type-and-name-description": "Edges of type '{{edgeType}}' and with name starting with '{{prefix}}'", "filter-type-relations-query": "Relations query", "filter-type-relations-query-description": "{{entities}} that have {{relationType}} relation {{direction}} {{rootEntity}}", "filter-type-asset-search-query": "Asset search query", @@ -1002,7 +1003,9 @@ "selected-edges": "{ count, plural, 1 {1 edge} other {# edges} } selected", "enter-edge-type": "Enter entity view type", "any-edge": "Any edge", - "no-edge-types-matching": "No edge types matching '{{entitySubtype}}' were found." + "no-edge-types-matching": "No edge types matching '{{entitySubtype}}' were found.", + "edge-type-list-empty": "No device types selected.", + "edge-types": "Edge types" }, "error": { "unable-to-connect": "Unable to connect to the server! Please check your internet connection.", From f17070ac4ff688748d1a885a742d8fb87eb8980b Mon Sep 17 00:00:00 2001 From: Artem Babak Date: Tue, 8 Dec 2020 11:03:49 +0200 Subject: [PATCH 03/17] Public edges uncommented --- .../pages/edge/edges-table-config.resolver.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ui-ngx/src/app/modules/home/pages/edge/edges-table-config.resolver.ts b/ui-ngx/src/app/modules/home/pages/edge/edges-table-config.resolver.ts index 3a68d3c3d6..ba2a69ac6f 100644 --- a/ui-ngx/src/app/modules/home/pages/edge/edges-table-config.resolver.ts +++ b/ui-ngx/src/app/modules/home/pages/edge/edges-table-config.resolver.ts @@ -150,10 +150,10 @@ export class EdgesTableConfigResolver implements Resolve('customerTitle', 'customer.customer', '25%'), - /* new EntityTableColumn('customerIsPublic', 'edge.public', '60px', + new EntityTableColumn('customerIsPublic', 'edge.public', '60px', entity => { return checkBoxCell(entity.customerIsPublic); - }, () => ({}), false) */ + }, () => ({}), false) ); } return columns; @@ -176,12 +176,12 @@ export class EdgesTableConfigResolver implements Resolve> = []; if (edgeScope === 'tenant') { actions.push( - /* { + { name: this.translate.instant('edge.make-public'), icon: 'share', isEnabled: (entity) => (!entity.customerId || entity.customerId.id === NULL_UUID), onAction: ($event, entity) => this.makePublic($event, entity) - }, */ + }, { name: this.translate.instant('edge.assign-to-customer'), icon: 'assignment_ind', @@ -336,7 +336,7 @@ export class EdgesTableConfigResolver implements Resolve): boolean { switch (action.action) { - // case 'makePublic': - // this.makePublic(action.event, action.entity); - // return true; + case 'makePublic': + this.makePublic(action.event, action.entity); + return true; case 'assignToCustomer': this.assignToCustomer(action.event, [action.entity.id]); return true; From 4d4e4d02b52915b531a9d235d6f94ffb69c61b70 Mon Sep 17 00:00:00 2001 From: Artem Babak Date: Thu, 10 Dec 2020 09:56:00 +0200 Subject: [PATCH 04/17] Edge rule chains table columns updated --- .../rulechains-table-config.resolver.ts | 40 +++++++++++++------ .../assets/locale/locale.constant-en_US.json | 3 +- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/ui-ngx/src/app/modules/home/pages/rulechain/rulechains-table-config.resolver.ts b/ui-ngx/src/app/modules/home/pages/rulechain/rulechains-table-config.resolver.ts index afa1784e98..4954973d3c 100644 --- a/ui-ngx/src/app/modules/home/pages/rulechain/rulechains-table-config.resolver.ts +++ b/ui-ngx/src/app/modules/home/pages/rulechain/rulechains-table-config.resolver.ts @@ -69,18 +69,6 @@ export class RuleChainsTableConfigResolver implements Resolve('createdTime', 'common.created-time', this.datePipe, '150px'), - new EntityTableColumn('name', 'rulechain.name', '100%'), - new EntityTableColumn('root', 'rulechain.root', '60px', - entity => { - if (isDefined(this.config.componentsData.edgeId)) { - return checkBoxCell((this.config.componentsData.edge.rootRuleChainId.id == entity.id.id)); - } else { - return checkBoxCell(entity.root); - } - }) - ); this.config.deleteEntityTitle = ruleChain => this.translate.instant('rulechain.delete-rulechain-title', { ruleChainName: ruleChain.name }); this.config.deleteEntityContent = () => this.translate.instant('rulechain.delete-rulechain-text'); @@ -98,6 +86,34 @@ export class RuleChainsTableConfigResolver implements Resolve('createdTime', 'common.created-time', this.datePipe, '150px'), + new EntityTableColumn('name', 'rulechain.name', '100%'), + new EntityTableColumn('root', 'rulechain.default-root', '60px', + entity => { + return checkBoxCell(entity.root); + }) + ); + } else { + this.config.columns = []; + this.config.columns.push( + new DateEntityTableColumn('createdTime', 'common.created-time', this.datePipe, '150px'), + new EntityTableColumn('name', 'rulechain.name', '100%'), + new EntityTableColumn('root', 'rulechain.root', '60px', + entity => { + if (this.config.componentsData.edgeId) { + return checkBoxCell((this.config.componentsData.edge.rootRuleChainId.id == entity.id.id)); + } else { + return checkBoxCell(entity.root); + } + + }) + ); + } + if (this.config.componentsData.edgeId) { this.config.entitySelectionEnabled = ruleChain => this.config.componentsData.edge.rootRuleChainId.id != ruleChain.id.id; this.edgeService.getEdge(this.config.componentsData.edgeId).subscribe(edge => { diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json index c64f730c1a..c1bd27d419 100644 --- a/ui-ngx/src/assets/locale/locale.constant-en_US.json +++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json @@ -1853,7 +1853,8 @@ "unassign-rulechain-title": "Are you sure you want to unassign the rulechain '{{ruleChainName}}'?", "unassign-rulechains-title": "Are you sure you want to unassign { count, plural, 1 {1 rulechain} other {# rulechains} }?", "unassign-rulechains": "Unassign rulechains", - "default": "Default" + "default": "Default", + "default-root": "Default root" }, "rulenode": { "details": "Details", From 3e67a9ad0eb47c943a9f27cc61a7ff8903a84976 Mon Sep 17 00:00:00 2001 From: Artem Babak Date: Thu, 10 Dec 2020 12:16:57 +0200 Subject: [PATCH 05/17] Fix for setDefaultRoot button - only for edges scope --- .../modules/home/pages/rulechain/rulechain.component.html | 6 ++++++ .../modules/home/pages/rulechain/rulechain.component.ts | 8 ++++++++ .../pages/rulechain/rulechains-table-config.resolver.ts | 3 +++ 3 files changed, 17 insertions(+) diff --git a/ui-ngx/src/app/modules/home/pages/rulechain/rulechain.component.html b/ui-ngx/src/app/modules/home/pages/rulechain/rulechain.component.html index 29c832e576..b5f57c6107 100644 --- a/ui-ngx/src/app/modules/home/pages/rulechain/rulechain.component.html +++ b/ui-ngx/src/app/modules/home/pages/rulechain/rulechain.component.html @@ -34,6 +34,12 @@ [fxShow]="!isEdit && !entity?.root"> {{'rulechain.set-root' | translate }} + + + + + +