diff --git a/static/skywire-manager-src/src/app/app.datatypes.ts b/static/skywire-manager-src/src/app/app.datatypes.ts
index 826aa05792..d9725ede80 100644
--- a/static/skywire-manager-src/src/app/app.datatypes.ts
+++ b/static/skywire-manager-src/src/app/app.datatypes.ts
@@ -1,20 +1,16 @@
-// Most classes are based on the responses returned by the API, but
-// sometimes with some extra fields which are calculated internally in the app.
-
export class Node {
- tcp_addr: string;
+ label: string;
+ localPk: string;
+ tcpAddr: string;
ip: string;
port: string;
- local_pk: string;
- node_version: string;
- app_protocol_version: string;
+ version: string;
apps: Application[];
transports: Transport[];
- routes_count: number;
+ routesCount: number;
routes?: Route[];
- label?: string;
online?: boolean;
- seconds_online?: number;
+ secondsOnline?: number;
health?: HealthInfo;
dmsgServerPk?: string;
roundTripPing?: string;
@@ -26,19 +22,15 @@ export interface Application {
autostart: boolean;
port: number;
status: number;
- args?: any[];
+ args: any[];
}
export interface Transport {
+ isUp: boolean;
id: string;
- local_pk: string;
- remote_pk: string;
+ localPk: string;
+ remotePk: string;
type: string;
- log?: TransportLog;
- is_up: boolean;
-}
-
-export interface TransportLog {
recv: number|null;
sent: number|null;
}
@@ -46,15 +38,42 @@ export interface TransportLog {
export interface Route {
key: number;
rule: string;
+ ruleSummary?: RouteRuleSummary;
+ appFields?: RouteAppRuleSumary;
+ forwardFields?: RouteForwardRuleSumary;
+ intermediaryForwardFields?: RouteForwardRuleSumary;
+}
+
+export interface RouteRuleSummary {
+ keepAlive: number;
+ ruleType: number;
+ keyRouteId: number;
+}
+
+interface RouteAppRuleSumary {
+ routeDescriptor: RouteDescriptor;
+}
+
+interface RouteForwardRuleSumary {
+ nextRid: number;
+ nextTid: string;
+ routeDescriptor?: RouteDescriptor;
+}
+
+interface RouteDescriptor {
+ dstPk: string;
+ srcPk: string;
+ dstPort: number;
+ srcPort: number;
}
export interface HealthInfo {
- status?: number;
- transport_discovery?: number;
- route_finder?: number;
- setup_node?: number;
- uptime_tracker?: number;
- address_resolver?: number;
+ status: number;
+ transportDiscovery: number;
+ routeFinder: number;
+ setupNode: number;
+ uptimeTracker: number;
+ addressResolver: number;
}
export class ProxyDiscoveryEntry {
diff --git a/static/skywire-manager-src/src/app/components/pages/node-list/node-list.component.html b/static/skywire-manager-src/src/app/components/pages/node-list/node-list.component.html
index 1fcface6f8..6d964ba4ce 100644
--- a/static/skywire-manager-src/src/app/components/pages/node-list/node-list.component.html
+++ b/static/skywire-manager-src/src/app/components/pages/node-list/node-list.component.html
@@ -122,7 +122,7 @@
{{ node.label }}
- {{ node.local_pk }}
+ {{ node.localPk }}
|
{{ 'nodes.key' | translate }}:
- {{ node.local_pk }}
+ {{ node.localPk }}
{{ 'nodes.dmsg-server' | translate }}:
diff --git a/static/skywire-manager-src/src/app/components/pages/node-list/node-list.component.ts b/static/skywire-manager-src/src/app/components/pages/node-list/node-list.component.ts
index a17693ba0d..666d797178 100644
--- a/static/skywire-manager-src/src/app/components/pages/node-list/node-list.component.ts
+++ b/static/skywire-manager-src/src/app/components/pages/node-list/node-list.component.ts
@@ -39,7 +39,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
hypervisorSortData = new SortingColumn(['isHypervisor'], 'nodes.hypervisor', SortingModes.Boolean);
stateSortData = new SortingColumn(['online'], 'nodes.state', SortingModes.Boolean);
labelSortData = new SortingColumn(['label'], 'nodes.label', SortingModes.Text);
- keySortData = new SortingColumn(['local_pk'], 'nodes.key', SortingModes.Text);
+ keySortData = new SortingColumn(['localPk'], 'nodes.key', SortingModes.Text);
dmsgServerSortData = new SortingColumn(['dmsgServerPk'], 'nodes.dmsg-server', SortingModes.Text, ['dmsgServerPk_label']);
pingSortData = new SortingColumn(['roundTripPing'], 'nodes.ping', SortingModes.Number);
@@ -95,7 +95,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
},
{
filterName: 'nodes.filter-dialog.key',
- keyNameInElementsArray: 'local_pk',
+ keyNameInElementsArray: 'localPk',
type: FilterFieldTypes.TextInput,
maxlength: 66,
},
@@ -305,7 +305,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
nodeStatusClass(node: Node, forDot: boolean): string {
switch (node.online) {
case true:
- return this.nodesHealthInfo.get(node.local_pk).allServicesOk ?
+ return this.nodesHealthInfo.get(node.localPk).allServicesOk ?
(forDot ? 'dot-green' : 'green-text') :
(forDot ? 'dot-yellow online-warning' : 'yellow-text');
default:
@@ -321,7 +321,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
nodeStatusText(node: Node, forTooltip: boolean): string {
switch (node.online) {
case true:
- return this.nodesHealthInfo.get(node.local_pk).allServicesOk ?
+ return this.nodesHealthInfo.get(node.localPk).allServicesOk ?
('node.statuses.online' + (forTooltip ? '-tooltip' : '')) :
('node.statuses.partially-online' + (forTooltip ? '-tooltip' : ''));
default:
@@ -424,13 +424,15 @@ export class NodeListComponent implements OnInit, OnDestroy {
this.nodesToShow = null;
}
- // Get the health status of each node.
- this.nodesHealthInfo = new Map ();
- this.nodesToShow.forEach(node => {
- this.nodesHealthInfo.set(node.local_pk, this.nodeService.getHealthStatus(node));
- });
+ if (this.nodesToShow) {
+ // Get the health status of each node.
+ this.nodesHealthInfo = new Map();
+ this.nodesToShow.forEach(node => {
+ this.nodesHealthInfo.set(node.localPk, this.nodeService.getHealthStatus(node));
+ });
- this.dataSource = this.nodesToShow;
+ this.dataSource = this.nodesToShow;
+ }
}
logout() {
@@ -457,7 +459,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
const nodesData: NodeData[] = [];
this.dataSource.forEach(node => {
nodesData.push({
- key: node.local_pk,
+ key: node.localPk,
label: node.label,
});
});
@@ -530,7 +532,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
SelectOptionComponent.openDialog(this.dialog, options, 'common.options').afterClosed().subscribe((selectedOption: number) => {
if (selectedOption === 1) {
- this.copySpecificTextToClipboard(node.local_pk);
+ this.copySpecificTextToClipboard(node.localPk);
} else if (this.showDmsgInfo) {
if (selectedOption === 2) {
this.copySpecificTextToClipboard(node.dmsgServerPk);
@@ -555,7 +557,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
*/
copyToClipboard(node: Node) {
if (!this.showDmsgInfo) {
- this.copySpecificTextToClipboard(node.local_pk);
+ this.copySpecificTextToClipboard(node.localPk);
} else {
const options: SelectableOption[] = [
{
@@ -570,7 +572,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
SelectOptionComponent.openDialog(this.dialog, options, 'common.options').afterClosed().subscribe((selectedOption: number) => {
if (selectedOption === 1) {
- this.copySpecificTextToClipboard(node.local_pk);
+ this.copySpecificTextToClipboard(node.localPk);
} else if (selectedOption === 2) {
this.copySpecificTextToClipboard(node.dmsgServerPk);
}
@@ -592,10 +594,10 @@ export class NodeListComponent implements OnInit, OnDestroy {
* Opens the modal window for changing the label of a node.
*/
showEditLabelDialog(node: Node) {
- let labelInfo = this.storageService.getLabelInfo(node.local_pk);
+ let labelInfo = this.storageService.getLabelInfo(node.localPk);
if (!labelInfo) {
labelInfo = {
- id: node.local_pk,
+ id: node.localPk,
label: '',
identifiedElementType: LabeledElementTypes.Node,
};
@@ -616,7 +618,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
confirmationDialog.componentInstance.operationAccepted.subscribe(() => {
confirmationDialog.close();
- this.storageService.setLocalNodesAsHidden([node.local_pk]);
+ this.storageService.setLocalNodesAsHidden([node.localPk]);
this.forceDataRefresh();
this.snackbarService.showDone('nodes.deleted');
});
@@ -640,7 +642,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
const nodesToRemove: string[] = [];
this.filteredNodes.forEach(node => {
if (!node.online) {
- nodesToRemove.push(node.local_pk);
+ nodesToRemove.push(node.localPk);
}
});
@@ -664,7 +666,7 @@ export class NodeListComponent implements OnInit, OnDestroy {
*/
open(node: Node) {
if (node.online) {
- this.router.navigate(['nodes', node.local_pk]);
+ this.router.navigate(['nodes', node.localPk]);
}
}
}
diff --git a/static/skywire-manager-src/src/app/components/pages/node/actions/node-actions-helper.ts b/static/skywire-manager-src/src/app/components/pages/node/actions/node-actions-helper.ts
index c6b54fbd93..95343f6be7 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/actions/node-actions-helper.ts
+++ b/static/skywire-manager-src/src/app/components/pages/node/actions/node-actions-helper.ts
@@ -1,5 +1,4 @@
-import { MatDialog, MatDialogConfig } from '@angular/material/dialog';
-import { Component, AfterViewInit, OnDestroy, Input } from '@angular/core';
+import { MatDialog } from '@angular/material/dialog';
import { Router } from '@angular/router';
import { Subscription } from 'rxjs';
import { TranslateService } from '@ngx-translate/core';
@@ -13,8 +12,6 @@ import { NodeService } from 'src/app/services/node.service';
import { OperationError } from 'src/app/utils/operation-error';
import { processServiceError } from 'src/app/utils/errors';
import { SelectableOption, SelectOptionComponent } from 'src/app/components/layout/select-option/select-option.component';
-import { ConfirmationData, ConfirmationComponent } from 'src/app/components/layout/confirmation/confirmation.component';
-import { AppConfig } from 'src/app/app.config';
import { MenuOptionData } from 'src/app/components/layout/top-bar/top-bar.component';
import { UpdateComponent } from 'src/app/components/layout/update/update.component';
import { StorageService } from 'src/app/services/storage.service';
diff --git a/static/skywire-manager-src/src/app/components/pages/node/apps/all-apps/all-apps.component.ts b/static/skywire-manager-src/src/app/components/pages/node/apps/all-apps/all-apps.component.ts
index 298487fa36..d69e6e0969 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/apps/all-apps/all-apps.component.ts
+++ b/static/skywire-manager-src/src/app/components/pages/node/apps/all-apps/all-apps.component.ts
@@ -21,7 +21,7 @@ export class AllAppsComponent implements OnInit, OnDestroy {
ngOnInit() {
// Get the node data from the parent page.
this.dataSubscription = NodeComponent.currentNode.subscribe((node: Node) => {
- this.nodePK = node.local_pk;
+ this.nodePK = node.localPk;
this.apps = node.apps;
});
}
diff --git a/static/skywire-manager-src/src/app/components/pages/node/apps/apps.component.ts b/static/skywire-manager-src/src/app/components/pages/node/apps/apps.component.ts
index c2842939fc..93adc2207a 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/apps/apps.component.ts
+++ b/static/skywire-manager-src/src/app/components/pages/node/apps/apps.component.ts
@@ -21,7 +21,7 @@ export class AppsComponent implements OnInit, OnDestroy {
ngOnInit() {
// Get the node data from the parent page.
this.dataSubscription = NodeComponent.currentNode.subscribe((node: Node) => {
- this.nodePK = node.local_pk;
+ this.nodePK = node.localPk;
this.apps = node.apps;
});
}
diff --git a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.html b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.html
index b87b55d2c5..f277ce6cbc 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.html
+++ b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.html
@@ -11,7 +11,7 @@
{{ 'node.details.node-info.public-key' | translate }}
-
+
{{ 'node.details.node-info.port' | translate }}
@@ -27,7 +27,7 @@
{{ 'node.details.node-info.node-version' | translate }}
- {{ node.build_info.version ? node.build_info.version : ('common.unknown' | translate) }}
+ {{ node.version ? node.version : ('common.unknown' | translate) }}
{{ 'node.details.node-info.time.title' | translate }}
diff --git a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.ts b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.ts
index d2665c31dd..c06fc9f975 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.ts
+++ b/static/skywire-manager-src/src/app/components/pages/node/node-info/node-info-content/node-info-content.component.ts
@@ -20,7 +20,7 @@ export class NodeInfoContentComponent {
@Input() set nodeInfo(val: Node) {
this.node = val;
this.nodeHealthInfo = this.nodeService.getHealthStatus(val);
- this.timeOnline = TimeUtils.getElapsedTime(val.seconds_online);
+ this.timeOnline = TimeUtils.getElapsedTime(val.secondsOnline);
}
node: Node;
@@ -34,10 +34,10 @@ export class NodeInfoContentComponent {
) { }
showEditLabelDialog() {
- let labelInfo = this.storageService.getLabelInfo(this.node.local_pk);
+ let labelInfo = this.storageService.getLabelInfo(this.node.localPk);
if (!labelInfo) {
labelInfo = {
- id: this.node.local_pk,
+ id: this.node.localPk,
label: '',
identifiedElementType: LabeledElementTypes.Node,
};
diff --git a/static/skywire-manager-src/src/app/components/pages/node/routing/all-routes/all-routes.component.ts b/static/skywire-manager-src/src/app/components/pages/node/routing/all-routes/all-routes.component.ts
index 11826077f3..98c27a2162 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/routing/all-routes/all-routes.component.ts
+++ b/static/skywire-manager-src/src/app/components/pages/node/routing/all-routes/all-routes.component.ts
@@ -21,7 +21,7 @@ export class AllRoutesComponent implements OnInit, OnDestroy {
ngOnInit() {
// Get the node data from the parent page.
this.dataSubscription = NodeComponent.currentNode.subscribe((node: Node) => {
- this.nodePK = node.local_pk;
+ this.nodePK = node.localPk;
this.routes = node.routes;
});
}
diff --git a/static/skywire-manager-src/src/app/components/pages/node/routing/all-transports/all-transports.component.ts b/static/skywire-manager-src/src/app/components/pages/node/routing/all-transports/all-transports.component.ts
index cfe4581141..77f24aa195 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/routing/all-transports/all-transports.component.ts
+++ b/static/skywire-manager-src/src/app/components/pages/node/routing/all-transports/all-transports.component.ts
@@ -21,7 +21,7 @@ export class AllTransportsComponent implements OnInit, OnDestroy {
ngOnInit() {
// Get the node data from the parent page.
this.dataSubscription = NodeComponent.currentNode.subscribe((node: Node) => {
- this.nodePK = node.local_pk;
+ this.nodePK = node.localPk;
this.transports = node.transports;
});
}
diff --git a/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-details/route-details.component.html b/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-details/route-details.component.html
index 2f7ba74b58..5f2905e91f 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-details/route-details.component.html
+++ b/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-details/route-details.component.html
@@ -1,6 +1,5 @@
-
-
+
list{{ 'routes.details.basic.title' | translate }}
@@ -13,89 +12,86 @@
-
+
list{{ 'routes.details.summary.title' | translate }}
- {{ 'routes.details.summary.keep-alive' | translate }} {{ routeRule.rule_summary.keep_alive }}
+ {{ 'routes.details.summary.keep-alive' | translate }} {{ routeRule.ruleSummary.keepAlive }}
- {{ 'routes.details.summary.type' | translate }} {{ getRuleTypeName(routeRule.rule_summary.rule_type) }}
+ {{ 'routes.details.summary.type' | translate }} {{ getRuleTypeName(routeRule.ruleSummary.ruleType) }}
- {{ 'routes.details.summary.key-route-id' | translate }} {{ routeRule.rule_summary.key_route_id }}
+ {{ 'routes.details.summary.key-route-id' | translate }} {{ routeRule.ruleSummary.keyRouteId }}
-
+
settings{{ 'routes.details.specific-fields-titles.app' | translate }}
-
+
swap_horiz{{ 'routes.details.specific-fields-titles.forward' | translate }}
-
+
arrow_forward{{ 'routes.details.specific-fields-titles.intermediary-forward' | translate }}
-
+
{{ 'routes.details.specific-fields.route-id' | translate }}
{{
- routeRule.rule_summary.forward_fields ?
- routeRule.rule_summary.forward_fields.next_rid :
- routeRule.rule_summary.intermediary_forward_fields.next_rid
+ routeRule.forwardFields ?
+ routeRule.forwardFields.nextRid :
+ routeRule.intermediaryForwardFields.nextRid
}}
{{ 'routes.details.specific-fields.transport-id' | translate }}
{{
- routeRule.rule_summary.forward_fields ?
- routeRule.rule_summary.forward_fields.next_tid :
- routeRule.rule_summary.intermediary_forward_fields.next_tid
+ routeRule.forwardFields ?
+ routeRule.forwardFields.nextTid :
+ routeRule.intermediaryForwardFields.nextTid
}}
{{ 'routes.details.specific-fields.destination-pk' | translate }}
{{
- routeRule.rule_summary.app_fields ?
- routeRule.rule_summary.app_fields.route_descriptor.dst_pk :
- routeRule.rule_summary.forward_fields.route_descriptor.dst_pk
+ routeRule.appFields ?
+ routeRule.appFields.routeDescriptor.dstPk :
+ routeRule.forwardFields.routeDescriptor.dstPk
}}
{{ 'routes.details.specific-fields.source-pk' | translate }}
{{
- routeRule.rule_summary.app_fields ?
- routeRule.rule_summary.app_fields.route_descriptor.src_pk :
- routeRule.rule_summary.forward_fields.route_descriptor.src_pk
+ routeRule.appFields ?
+ routeRule.appFields.routeDescriptor.srcPk :
+ routeRule.forwardFields.routeDescriptor.srcPk
}}
{{ 'routes.details.specific-fields.destination-port' | translate }}
{{
- routeRule.rule_summary.app_fields ?
- routeRule.rule_summary.app_fields.route_descriptor.dst_port :
- routeRule.rule_summary.forward_fields.route_descriptor.dst_port
+ routeRule.appFields ?
+ routeRule.appFields.routeDescriptor.dstPort :
+ routeRule.forwardFields.routeDescriptor.dstPort
}}
{{ 'routes.details.specific-fields.source-port' | translate }}
{{
- routeRule.rule_summary.app_fields ?
- routeRule.rule_summary.app_fields.route_descriptor.src_port :
- routeRule.rule_summary.forward_fields.route_descriptor.src_port
+ routeRule.appFields ?
+ routeRule.appFields.routeDescriptor.srcPort :
+ routeRule.forwardFields.routeDescriptor.srcPort
}}
diff --git a/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-details/route-details.component.ts b/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-details/route-details.component.ts
index f114bb0f52..8d1febe809 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-details/route-details.component.ts
+++ b/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-details/route-details.component.ts
@@ -1,45 +1,8 @@
-import { Component, OnInit, Inject, OnDestroy } from '@angular/core';
+import { Component, Inject } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogConfig } from '@angular/material/dialog';
-import { Subscription, of } from 'rxjs';
-import { delay, flatMap } from 'rxjs/operators';
-import { RouteService } from '../../../../../../services/route.service';
-import { NodeComponent } from '../../../node.component';
-import { SnackbarService } from '../../../../../../services/snackbar.service';
import { AppConfig } from 'src/app/app.config';
-import { processServiceError } from 'src/app/utils/errors';
-
-// Objects representing the structure of the response returned by the hypervisor.
-
-class RouteRule {
- key: string;
- rule: string;
- rule_summary?: RuleSumary;
-}
-
-class RuleSumary {
- keep_alive: number;
- rule_type: number;
- key_route_id: number;
- app_fields?: AppRuleSumary;
- forward_fields?: ForwardRuleSumary;
-}
-
-class AppRuleSumary {
- route_descriptor: RouteDescriptor;
-}
-
-class RouteDescriptor {
- dst_pk: string;
- src_pk: string;
- dst_port: number;
- src_port: number;
-}
-
-class ForwardRuleSumary {
- next_rid: number;
- next_tid: string;
-}
+import { Route } from 'src/app/app.datatypes';
/**
* Modal window for showing the details of a route.
@@ -49,11 +12,8 @@ class ForwardRuleSumary {
templateUrl: './route-details.component.html',
styleUrls: ['./route-details.component.scss']
})
-export class RouteDetailsComponent implements OnInit, OnDestroy {
- routeRule: RouteRule;
-
- private shouldShowError = true;
- private dataSubscription: Subscription;
+export class RouteDetailsComponent {
+ routeRule: Route;
/**
* Map with the types of route rules that the hypervisor can return and are known by this app.
@@ -67,9 +27,9 @@ export class RouteDetailsComponent implements OnInit, OnDestroy {
/**
* Opens the modal window. Please use this function instead of opening the window "by hand".
*/
- public static openDialog(dialog: MatDialog, routeID: string): MatDialogRef {
+ public static openDialog(dialog: MatDialog, route: Route): MatDialogRef {
const config = new MatDialogConfig();
- config.data = routeID;
+ config.data = route;
config.autoFocus = false;
config.width = AppConfig.largeModalWidth;
@@ -77,18 +37,10 @@ export class RouteDetailsComponent implements OnInit, OnDestroy {
}
constructor(
- @Inject(MAT_DIALOG_DATA) private data: string,
- private routeService: RouteService,
+ @Inject(MAT_DIALOG_DATA) data: Route,
private dialogRef: MatDialogRef,
- private snackbarService: SnackbarService,
- ) { }
-
- ngOnInit() {
- this.loadData(0);
- }
-
- ngOnDestroy() {
- this.dataSubscription.unsubscribe();
+ ) {
+ this.routeRule = data;
}
getRuleTypeName(type: number): string {
@@ -102,34 +54,4 @@ export class RouteDetailsComponent implements OnInit, OnDestroy {
closePopup() {
this.dialogRef.close();
}
-
- private loadData(delayMilliseconds: number) {
- if (this.dataSubscription) {
- this.dataSubscription.unsubscribe();
- }
-
- this.dataSubscription = of(1).pipe(
- // Wait the delay.
- delay(delayMilliseconds),
- // Load the data. The node pk is obtained from the currently openned node page.
- flatMap(() => this.routeService.get(NodeComponent.getCurrentNodeKey(), this.data))
- ).subscribe(
- (rule: RouteRule) => {
- this.snackbarService.closeCurrentIfTemporaryError();
- this.routeRule = rule;
- },
- err => {
- err = processServiceError(err);
-
- // Show an error msg if it has not be done before during the current attempt to obtain the data.
- if (this.shouldShowError) {
- this.snackbarService.showError('common.loading-error', null, true, err);
- this.shouldShowError = false;
- }
-
- // Retry after a small delay.
- this.loadData(AppConfig.connectionRetryDelay);
- },
- );
- }
}
diff --git a/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-list.component.html b/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-list.component.html
index 7baf58a46c..370b0bb027 100644
--- a/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-list.component.html
+++ b/static/skywire-manager-src/src/app/components/pages/node/routing/route-list/route-list.component.html
@@ -89,7 +89,7 @@
|
|