CL UX
pull/260/head
Shahana Farooqui 4 years ago
parent 072ea3a3bc
commit aa1bed37b8

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -9,8 +9,8 @@
<link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="32x32" href="assets/images/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon/favicon-16x16.png"> <link rel="icon" type="image/png" sizes="16x16" href="assets/images/favicon/favicon-16x16.png">
<link rel="manifest" href="assets/images/favicon/site.webmanifest"> <link rel="manifest" href="assets/images/favicon/site.webmanifest">
<link rel="stylesheet" href="styles.fc36fcae8eb3636c1114.css"></head> <link rel="stylesheet" href="styles.68c5c110c36114003e31.css"></head>
<body> <body>
<rtl-app></rtl-app> <rtl-app></rtl-app>
<script src="runtime.f5b171b45657a19a4591.js" defer></script><script src="polyfills-es5.b8e32dec482ae69710a2.js" nomodule defer></script><script src="polyfills.ebf9033c33aa4a5af12a.js" defer></script><script src="main.5bfb336cbdd2b95045e5.js" defer></script></body> <script src="runtime.4d31ed077d423c51840a.js" defer></script><script src="polyfills-es5.b8e32dec482ae69710a2.js" nomodule defer></script><script src="polyfills.ebf9033c33aa4a5af12a.js" defer></script><script src="main.6fd1544f4bd38f6345b0.js" defer></script></body>
</html> </html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
!function(e){function r(r){for(var n,a,i=r[0],c=r[1],l=r[2],p=0,s=[];p<i.length;p++)a=i[p],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,l||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++)0!==o[t[i]]&&(n=!1);n&&(u.splice(r--,1),e=a(a.s=t[0]))}return e}var n={},o={0:0},u=[];function a(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.src=function(e){return a.p+""+({}[e]||e)+"."+{1:"454a80537ee5d2127464",6:"f7ed5a1aaa268c58d3c2",7:"b6519acc9e1e1431ca4d"}[e]+".js"}(e);var c=new Error;u=function(r){i.onerror=i.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,t[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(r)},a.m=e,a.c=n,a.d=function(e,r,t){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)a.d(t,n,(function(r){return e[r]}).bind(null,n));return t},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="",a.oe=function(e){throw console.error(e),e};var i=window.webpackJsonp=window.webpackJsonp||[],c=i.push.bind(i);i.push=r,i=i.slice();for(var l=0;l<i.length;l++)r(i[l]);var f=c;t()}([]); !function(e){function r(r){for(var n,a,i=r[0],c=r[1],l=r[2],p=0,s=[];p<i.length;p++)a=i[p],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&s.push(o[a][0]),o[a]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,l||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++)0!==o[t[i]]&&(n=!1);n&&(u.splice(r--,1),e=a(a.s=t[0]))}return e}var n={},o={0:0},u=[];function a(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,a),t.l=!0,t.exports}a.e=function(e){var r=[],t=o[e];if(0!==t)if(t)r.push(t[2]);else{var n=new Promise((function(r,n){t=o[e]=[r,n]}));r.push(t[2]=n);var u,i=document.createElement("script");i.charset="utf-8",i.timeout=120,a.nc&&i.setAttribute("nonce",a.nc),i.src=function(e){return a.p+""+({}[e]||e)+"."+{1:"454a80537ee5d2127464",6:"73625eb067fc986239a4",7:"31855585ce9c53edd56d"}[e]+".js"}(e);var c=new Error;u=function(r){i.onerror=i.onload=null,clearTimeout(l);var t=o[e];if(0!==t){if(t){var n=r&&("load"===r.type?"missing":r.type),u=r&&r.target&&r.target.src;c.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",c.name="ChunkLoadError",c.type=n,c.request=u,t[1](c)}o[e]=void 0}};var l=setTimeout((function(){u({type:"timeout",target:i})}),12e4);i.onerror=i.onload=u,document.head.appendChild(i)}return Promise.all(r)},a.m=e,a.c=n,a.d=function(e,r,t){a.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},a.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,r){if(1&r&&(e=a(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)a.d(t,n,(function(r){return e[r]}).bind(null,n));return t},a.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(r,"a",r),r},a.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},a.p="",a.oe=function(e){throw console.error(e),e};var i=window.webpackJsonp=window.webpackJsonp||[],c=i.push.bind(i);i.push=r,i=i.slice();for(var l=0;l<i.length;l++)r(i[l]);var f=c;t()}([]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -90,7 +90,7 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy {
} }
// START: Workaround to add adjust container width initially // START: Workaround to add adjust container width initially
this.sideNavigation.toggle(); this.sideNavigation.toggle();
setTimeout(() => { this.sideNavigation.toggle(); }, 50); setTimeout(() => { this.sideNavigation.toggle(); }, 500);
if (this.settings.menuType === 'COMPACT' || this.settings.menuType === 'MINI') { if (this.settings.menuType === 'COMPACT' || this.settings.menuType === 'MINI') {
this.sideNavigation.toggle(); // To dynamically update the width to 100% after side nav is closed this.sideNavigation.toggle(); // To dynamically update the width to 100% after side nav is closed
setTimeout(() => { this.sideNavigation.toggle(); }, 100); setTimeout(() => { this.sideNavigation.toggle(); }, 100);

@ -30,5 +30,8 @@
</div> </div>
</div> </div>
<ng-template #noChannelBlock> <ng-template #noChannelBlock>
<div fxLayout="column" fxFlex="100" class="w-100 mt-2">No channels available.</div> <div fxLayout="row" fxFlex="10" fxLayoutAlign="space-between center" class="w-100 mt-1">
No channels available.
<button fxFlex="33" fxLayoutAlign="center center" mat-stroked-button color="primary" (click)="goToChannels()" tabindex="1">Open Channel</button>
</div>
</ng-template> </ng-template>

@ -1,4 +1,5 @@
import { Component, OnChanges, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { Router } from '@angular/router';
import { faBalanceScale, faDumbbell } from '@fortawesome/free-solid-svg-icons'; import { faBalanceScale, faDumbbell } from '@fortawesome/free-solid-svg-icons';
import { ChannelCL } from '../../../shared/models/clModels'; import { ChannelCL } from '../../../shared/models/clModels';
@ -8,15 +9,17 @@ import { ChannelCL } from '../../../shared/models/clModels';
templateUrl: './channel-capacity-info.component.html', templateUrl: './channel-capacity-info.component.html',
styleUrls: ['./channel-capacity-info.component.scss'] styleUrls: ['./channel-capacity-info.component.scss']
}) })
export class CLChannelCapacityInfoComponent implements OnChanges { export class CLChannelCapacityInfoComponent {
public faBalanceScale = faBalanceScale; public faBalanceScale = faBalanceScale;
public faDumbbell = faDumbbell; public faDumbbell = faDumbbell;
@Input() channelBalances: {localBalance: number, remoteBalance: number, balancedness: string}; @Input() channelBalances: {localBalance: number, remoteBalance: number, balancedness: string};
@Input() allChannels: ChannelCL[]; @Input() allChannels: ChannelCL[];
@Input() sortBy: string = 'Balance Score'; @Input() sortBy: string = 'Balance Score';
constructor() {} constructor(private router: Router) {}
ngOnChanges() {} goToChannels() {
this.router.navigateByUrl('/lnd/peerschannels');
}
} }

@ -20,5 +20,8 @@
</div> </div>
</div> </div>
<ng-template #noChannelBlock> <ng-template #noChannelBlock>
<div fxLayout="column" fxFlex="100" class="w-100 mt-2">No channels available.</div> <div fxLayout="row" fxFlex="10" fxLayoutAlign="space-between center" class="w-100 mt-1">
No channels available.
<button fxFlex="33" fxLayoutAlign="center center" mat-stroked-button color="primary" (click)="goToChannels()" tabindex="1">Open Channel</button>
</div>
</ng-template> </ng-template>

@ -1,4 +1,5 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { Router } from '@angular/router';
import { ChannelCL } from '../../../shared/models/clModels'; import { ChannelCL } from '../../../shared/models/clModels';
@ -12,6 +13,10 @@ export class CLChannelLiquidityInfoComponent {
@Input() totalLiquidity: number; @Input() totalLiquidity: number;
@Input() allChannels: ChannelCL[]; @Input() allChannels: ChannelCL[];
constructor() {} constructor(private router: Router) {}
goToChannels() {
this.router.navigateByUrl('/lnd/peerschannels');
}
} }

@ -169,8 +169,8 @@ export class CLHomeComponent implements OnInit, OnDestroy {
this.channelsStatus = { this.channelsStatus = {
active: { channels: rtlStore.information.num_active_channels, capacity: rtlStore.localRemoteBalance.localBalance }, active: { channels: rtlStore.information.num_active_channels, capacity: rtlStore.localRemoteBalance.localBalance },
inactive: { channels: rtlStore.information.num_inactive_channels, capacity: rtlStore.localRemoteBalance.pendingBalance | 0 }, pending: { channels: rtlStore.information.num_pending_channels, capacity: rtlStore.localRemoteBalance.pendingBalance | 0 },
pending: { channels: rtlStore.information.num_pending_channels, capacity: rtlStore.localRemoteBalance.inactiveBalance | 0 } inactive: { channels: rtlStore.information.num_inactive_channels, capacity: rtlStore.localRemoteBalance.inactiveBalance | 0 }
}; };
this.totalInboundLiquidity = 0; this.totalInboundLiquidity = 0;
this.totalOutboundLiquidity = 0; this.totalOutboundLiquidity = 0;

@ -20,7 +20,7 @@
</mat-form-field> </mat-form-field>
<div fxFlex="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxFlex="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="button" (click)="resetData()">Clear</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="button" (click)="resetData()">Clear</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="4" type="submit" (click)="onLookup()">Lookup</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="4" type="submit" (click)="onLookup()">Lookup</button>
</div> </div>
</form> </form>
<div fxFlex="100" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign.gt-sm="space-between center" fxLayoutAlign="start stretch" *ngIf="flgSetLookupValue" class="w-100 mt-2"> <div fxFlex="100" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign.gt-sm="space-between center" fxLayoutAlign="start stretch" *ngIf="flgSetLookupValue" class="w-100 mt-2">

@ -29,30 +29,32 @@
<mat-divider class="my-1"></mat-divider> <mat-divider class="my-1"></mat-divider>
</div> </div>
</div> </div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="start" class="my-1"> <div fxLayout="column" class="mt-2">
<h4 fxFlex="100" fxLayoutAlign="start" class="font-bold-500">Addresses</h4> <h4 fxFlex="100" fxLayoutAlign="start" class="font-bold-500 mb-1">Addresses</h4>
<div perfectScrollbar class="table-container mt-2" fxFlex="100"> <div perfectScrollbar fxLayout="row" fxLayoutAlign="start center" fxFlex="100" class="table-container">
<table mat-table [dataSource]="addresses" matSort class="overflow-auto"> <table mat-table #table [dataSource]="addresses" matSort class="overflow-auto">
<ng-container matColumnDef="type"> <ng-container matColumnDef="type">
<mat-header-cell *matHeaderCellDef mat-sort-header>Type</mat-header-cell> <th mat-header-cell *matHeaderCellDef mat-sort-header>Type</th>
<mat-cell *matCellDef="let address"> <td mat-cell *matCellDef="let address"> {{address?.type}} </td>
<div>{{address?.type}}</div>
</mat-cell>
</ng-container> </ng-container>
<ng-container matColumnDef="address"> <ng-container matColumnDef="address">
<mat-header-cell *matHeaderCellDef mat-sort-header>Address</mat-header-cell> <th mat-header-cell *matHeaderCellDef mat-sort-header>Address</th>
<mat-cell *matCellDef="let address"> <td mat-cell *matCellDef="let address"> {{address?.address}} </td>
<div>{{address?.address}}</div>
</mat-cell>
</ng-container> </ng-container>
<ng-container matColumnDef="port"> <ng-container matColumnDef="port">
<mat-header-cell *matHeaderCellDef mat-sort-header>Port</mat-header-cell> <th mat-header-cell *matHeaderCellDef mat-sort-header>Port</th>
<mat-cell *matCellDef="let address"> <td mat-cell *matCellDef="let address"> {{address?.port}} </td>
<div>{{address?.port}}</div>
</mat-cell>
</ng-container> </ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns;"></mat-header-row> <ng-container matColumnDef="actions">
<mat-row fxLayoutAlign="stretch stretch" *matRowDef="let row; columns: displayedColumns;"></mat-row> <th mat-header-cell *matHeaderCellDef class="pl-1"><span fxLayoutAlign="end center">Actions</span></th>
<td mat-cell *matCellDef="let address" class="pl-1">
<span fxLayoutAlign="end center">
<button mat-stroked-button color="primary" type="button" tabindex="1" rtlClipboard [payload]="lookupResult.nodeid + '@' + address.address + ':' + address.port" (copied)="onCopyNodeURI($event)">Copy Node URI</button>
</span>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns;"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table> </table>
</div> </div>
</div> </div>

@ -1,7 +1,8 @@
import { Component, OnInit, Input, ViewChild } from '@angular/core'; import { Component, OnInit, Input, ViewChild } from '@angular/core';
import { MatTableDataSource, MatSort } from '@angular/material'; import { MatTableDataSource, MatSort, MatSnackBar } from '@angular/material';
import { LookupNodeCL } from '../../../shared/models/clModels'; import { LookupNodeCL } from '../../../shared/models/clModels';
import { LoggerService } from '../../../shared/services/logger.service';
@Component({ @Component({
selector: 'rtl-cl-node-lookup', selector: 'rtl-cl-node-lookup',
@ -12,9 +13,9 @@ export class CLNodeLookupComponent implements OnInit {
@ViewChild(MatSort, { static: true }) sort: MatSort; @ViewChild(MatSort, { static: true }) sort: MatSort;
@Input() lookupResult: LookupNodeCL; @Input() lookupResult: LookupNodeCL;
public addresses: any; public addresses: any;
public displayedColumns = ['type', 'address', 'port']; public displayedColumns = ['type', 'address', 'port', 'actions'];
constructor() { } constructor(private logger: LoggerService, private snackBar: MatSnackBar) { }
ngOnInit() { ngOnInit() {
this.addresses = this.lookupResult.addresses ? new MatTableDataSource<any>([...this.lookupResult.addresses]) : new MatTableDataSource([]); this.addresses = this.lookupResult.addresses ? new MatTableDataSource<any>([...this.lookupResult.addresses]) : new MatTableDataSource([]);
@ -22,4 +23,9 @@ export class CLNodeLookupComponent implements OnInit {
this.addresses.sort = this.sort; this.addresses.sort = this.sort;
} }
onCopyNodeURI(payload: string) {
this.snackBar.open('Node URI copied.');
this.logger.info('Copied Text: ' + payload);
}
} }

@ -8,7 +8,7 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<div class="mt-2" fxFlex="48" fxFlex.gt-md="25"> <div class="mt-2" fxFlex="48" fxFlex.gt-md="25">
<button fxFlex="100" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onGenerateAddress()" tabindex="2" class="top-minus-15px">Generate Address</button> <button fxFlex="100" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onGenerateAddress()" tabindex="2" class="top-minus-15px">Generate Address</button>
</div> </div>
</div> </div>
</div> </div>

@ -1,6 +1,5 @@
import { Component, OnInit, OnDestroy } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Subject } from 'rxjs'; import { take } from 'rxjs/operators';
import { takeUntil } from 'rxjs/operators';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import { ADDRESS_TYPES } from '../../../shared/services/consts-enums-functions'; import { ADDRESS_TYPES } from '../../../shared/services/consts-enums-functions';
@ -15,11 +14,10 @@ import * as fromRTLReducer from '../../../store/rtl.reducers';
templateUrl: './on-chain-receive.component.html', templateUrl: './on-chain-receive.component.html',
styleUrls: ['./on-chain-receive.component.scss'] styleUrls: ['./on-chain-receive.component.scss']
}) })
export class CLOnChainReceiveComponent implements OnInit, OnDestroy { export class CLOnChainReceiveComponent implements OnInit {
public addressTypes = ADDRESS_TYPES; public addressTypes = ADDRESS_TYPES;
public selectedAddressType = ADDRESS_TYPES[0]; public selectedAddressType = ADDRESS_TYPES[0];
public newAddress = ''; public newAddress = '';
private unSubs: Array<Subject<void>> = [new Subject(), new Subject(), new Subject(), new Subject(), new Subject()];
constructor(private store: Store<fromRTLReducer.RTLState>, private lndEffects: CLEffects) {} constructor(private store: Store<fromRTLReducer.RTLState>, private lndEffects: CLEffects) {}
@ -29,7 +27,7 @@ export class CLOnChainReceiveComponent implements OnInit, OnDestroy {
this.store.dispatch(new RTLActions.OpenSpinner('Getting New Address...')); this.store.dispatch(new RTLActions.OpenSpinner('Getting New Address...'));
this.store.dispatch(new RTLActions.GetNewAddressCL(this.selectedAddressType)); this.store.dispatch(new RTLActions.GetNewAddressCL(this.selectedAddressType));
this.lndEffects.setNewAddressCL this.lndEffects.setNewAddressCL
.pipe(takeUntil(this.unSubs[0])) .pipe(take(1))
.subscribe(newAddress => { .subscribe(newAddress => {
this.newAddress = newAddress; this.newAddress = newAddress;
this.store.dispatch(new RTLActions.OpenAlert({ this.store.dispatch(new RTLActions.OpenAlert({
@ -43,11 +41,4 @@ export class CLOnChainReceiveComponent implements OnInit, OnDestroy {
}); });
} }
ngOnDestroy() {
this.unSubs.forEach(completeSub => {
completeSub.next();
completeSub.complete();
});
}
} }

@ -32,6 +32,6 @@
<div fxLayout="column" fxFlex="100" fxFlex.gt-sm="40" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start"></div> <div fxLayout="column" fxFlex="100" fxFlex.gt-sm="40" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start"></div>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset">Clear Fields</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset">Clear Fields</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="8">Send Funds</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="8">Send Funds</button>
</div> </div>
</form> </form>

@ -46,7 +46,7 @@
<div *ngIf="showAdvanced" fxLayout="column" fxFlex="100" fxFlex.gt-sm="40" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start"></div> <div *ngIf="showAdvanced" fxLayout="column" fxFlex="100" fxFlex.gt-sm="40" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start"></div>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="10" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="10" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onOpenChannel()" type="submit" tabindex="11">Open Channel</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onOpenChannel()" type="submit" tabindex="11">Open Channel</button>
</div> </div>
</form> </form>
<rtl-cl-channels-tables fxLayout="row" fxFlex="100"></rtl-cl-channels-tables> <rtl-cl-channels-tables fxLayout="row" fxFlex="100"></rtl-cl-channels-tables>

@ -6,7 +6,7 @@
</mat-form-field> </mat-form-field>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="3" (click)="onConnectPeer()">Add Peer</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="3" (click)="onConnectPeer()">Add Peer</button>
</div> </div>
</form> </form>
<div fxLayout="column"> <div fxLayout="column">

@ -24,7 +24,7 @@
</div> </div>
<div fxFlex="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxFlex="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="resetData()">Clear</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="resetData()">Clear</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="4">Fetch Events</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="4">Fetch Events</button>
</div> </div>
</form> --> </form> -->
<div *ngIf="filteredData" fxLayout="row" fxFlex="100" [ngClass]="{'error-border w-100 routing-tabs-block': flgLoading[0]==='error', 'w-100 routing-tabs-block': true}"> <div *ngIf="filteredData" fxLayout="row" fxFlex="100" [ngClass]="{'error-border w-100 routing-tabs-block': flgLoading[0]==='error', 'w-100 routing-tabs-block': true}">

@ -28,18 +28,18 @@
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="40" fxLayoutAlign="space-between start" *ngIf="showDetails" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="40" fxLayoutAlign="space-between start" *ngIf="showDetails" class="mt-2">
<button fxFlex="31" fxLayoutAlign="center center" mat-stroked-button color="warn" tabindex="11" type="button" (click)="onDeleteExpiredInvoices()">Delete Expired</button> <button fxFlex="31" fxLayoutAlign="center center" mat-stroked-button color="warn" tabindex="11" type="button" (click)="onDeleteExpiredInvoices()">Delete Expired</button>
<button fxFlex="31" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="31" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="31" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onAddInvoice(addInvoiceForm)" tabindex="8">Create Invoice</button> <button fxFlex="31" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onAddInvoice(addInvoiceForm)" tabindex="8">Create Invoice</button>
</div> </div>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between stretch" *ngIf="!showDetails" class="mt-1"> <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between stretch" *ngIf="!showDetails" class="mt-1">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="9" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="9" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onAddInvoice(addInvoiceForm)" tabindex="10">Create Invoice</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onAddInvoice(addInvoiceForm)" tabindex="10">Create Invoice</button>
</div> </div>
</form> </form>
<div fxLayout="column" fxLayoutAlign="start stretch" [ngClass]="{'display-none': !showDetails}"> <div fxLayout="column" fxLayoutAlign="start stretch" [ngClass]="{'display-none': !showDetails}">
<div fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign.gt-xs="start center" fxLayoutAlign="start stretch" class="padding-gap-x page-sub-title-container mt-2"> <div fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign.gt-xs="start center" fxLayoutAlign="start stretch" class="padding-gap-x page-sub-title-container mt-2">
<div fxFlex="70"> <div fxFlex="70">
<fa-icon [icon]="faHistory" class="page-title-img mr-1"></fa-icon> <fa-icon [icon]="faHistory" class="page-title-img mr-1"></fa-icon>
<span class="page-title">Payments History</span> <span class="page-title">Invoices History</span>
</div> </div>
<mat-form-field fxFlex="30"> <mat-form-field fxFlex="30">
<input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter"> <input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">

@ -7,11 +7,11 @@
</mat-form-field> </mat-form-field>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" *ngIf="showDetails" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" *ngIf="showDetails" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onSendPayment();" tabindex="3">Send Payment</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onSendPayment();" tabindex="3">Send Payment</button>
</div> </div>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between stretch" *ngIf="!showDetails" class="mt-1"> <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between stretch" *ngIf="!showDetails" class="mt-1">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onSendPayment();" tabindex="3">Send Payment</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onSendPayment();" tabindex="3">Send Payment</button>
</div> </div>
</form> </form>
<div fxLayout="column" fxLayoutAlign="start stretch" [ngClass]="{'display-none': !showDetails}"> <div fxLayout="column" fxLayoutAlign="start stretch" [ngClass]="{'display-none': !showDetails}">

@ -14,7 +14,7 @@
</mat-form-field> </mat-form-field>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="resetData()">Clear</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="resetData()">Clear</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="4">Query Route</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="4">Query Route</button>
</div> </div>
</form> </form>
<div fxLayout="row" fxLayoutAlign="start center" class="padding-gap-x page-sub-title-container mt-2 mb-1"> <div fxLayout="row" fxLayoutAlign="start center" class="padding-gap-x page-sub-title-container mt-2 mb-1">

@ -10,7 +10,7 @@
</div> </div>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="1" (click)="onVerifyChannels({})">Verify All</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="1" (click)="onVerifyChannels({})">Verify All</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="2" (click)="onBackupChannels({})">Backup All</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="2" (click)="onBackupChannels({})">Backup All</button>
</div> </div>
</div> </div>
<div fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign.gt-xs="start center" fxLayoutAlign="start stretch" class="padding-gap-x page-sub-title-container mt-2"> <div fxLayout="column" fxLayout.gt-xs="row" fxLayoutAlign.gt-xs="start center" fxLayoutAlign="start stretch" class="padding-gap-x page-sub-title-container mt-2">

@ -2,7 +2,7 @@
<div fxLayout="column" fxLayoutAlign="space-between stretch" fxLayout.gt-sm="row wrap" *ngIf="allRestoreExists"> <div fxLayout="column" fxLayoutAlign="space-between stretch" fxLayout.gt-sm="row wrap" *ngIf="allRestoreExists">
<h4 fxFlex="100">Restore folder location: {{selNode.channelBackupPath}}/restore</h4> <h4 fxFlex="100">Restore folder location: {{selNode.channelBackupPath}}/restore</h4>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="start start" class="mt-2"> <div fxLayout="row" fxFlex="100" fxLayoutAlign="start start" class="mt-2">
<button fxFlex="48" fxFlex.gt-sm="24" fxFlex.gt-md="20" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="1" (click)="onRestoreChannels({})">Restore All</button> <button fxFlex="48" fxFlex.gt-sm="24" fxFlex.gt-md="20" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="1" (click)="onRestoreChannels({})">Restore All</button>
</div> </div>
</div> </div>
<div fxLayout="column" fxLayoutAlign="space-between start" fxLayout.gt-md="row wrap" *ngIf="!allRestoreExists && (!channels || channels.data.length<=0)"> <div fxLayout="column" fxLayoutAlign="space-between start" fxLayout.gt-md="row wrap" *ngIf="!allRestoreExists && (!channels || channels.data.length<=0)">

@ -30,5 +30,8 @@
</div> </div>
</div> </div>
<ng-template #noChannelBlock> <ng-template #noChannelBlock>
<div fxLayout="column" fxFlex="100" class="w-100 mt-2">No channels available.</div> <div fxLayout="row" fxFlex="10" fxLayoutAlign="space-between center" class="w-100 mt-1">
No channels available.
<button fxFlex="33" fxLayoutAlign="center center" mat-stroked-button color="primary" (click)="goToChannels()" tabindex="1">Open Channel</button>
</div>
</ng-template> </ng-template>

@ -1,4 +1,5 @@
import { Component, OnChanges, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { Router } from '@angular/router';
import { faBalanceScale, faDumbbell } from '@fortawesome/free-solid-svg-icons'; import { faBalanceScale, faDumbbell } from '@fortawesome/free-solid-svg-icons';
import { Channel } from '../../../shared/models/lndModels'; import { Channel } from '../../../shared/models/lndModels';
@ -8,15 +9,17 @@ import { Channel } from '../../../shared/models/lndModels';
templateUrl: './channel-capacity-info.component.html', templateUrl: './channel-capacity-info.component.html',
styleUrls: ['./channel-capacity-info.component.scss'] styleUrls: ['./channel-capacity-info.component.scss']
}) })
export class ChannelCapacityInfoComponent implements OnChanges { export class ChannelCapacityInfoComponent {
public faBalanceScale = faBalanceScale; public faBalanceScale = faBalanceScale;
public faDumbbell = faDumbbell; public faDumbbell = faDumbbell;
@Input() channelBalances: {localBalance: number, remoteBalance: number, balancedness: string}; @Input() channelBalances: {localBalance: number, remoteBalance: number, balancedness: string};
@Input() allChannels: Channel[]; @Input() allChannels: Channel[];
@Input() sortBy: string = 'Balance Score'; @Input() sortBy: string = 'Balance Score';
constructor() {} constructor(private router: Router) {}
ngOnChanges() {} goToChannels() {
this.router.navigateByUrl('/lnd/peerschannels');
}
} }

@ -20,5 +20,8 @@
</div> </div>
</div> </div>
<ng-template #noChannelBlock> <ng-template #noChannelBlock>
<div fxLayout="column" fxFlex="100" class="w-100 mt-2">No channels available.</div> <div fxLayout="row" fxFlex="10" fxLayoutAlign="space-between center" class="w-100 mt-1">
No channels available.
<button fxFlex="33" fxLayoutAlign="center center" mat-stroked-button color="primary" (click)="goToChannels()" tabindex="1">Open Channel</button>
</div>
</ng-template> </ng-template>

@ -1,4 +1,5 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { Router } from '@angular/router';
import { Channel } from '../../../shared/models/lndModels'; import { Channel } from '../../../shared/models/lndModels';
@ -12,5 +13,9 @@ export class ChannelLiquidityInfoComponent {
@Input() totalLiquidity: number; @Input() totalLiquidity: number;
@Input() allChannels: Channel[]; @Input() allChannels: Channel[];
constructor() {} constructor(private router: Router) {}
goToChannels() {
this.router.navigateByUrl('/lnd/peerschannels');
}
} }

@ -20,7 +20,7 @@
</mat-form-field> </mat-form-field>
<div fxFlex="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxFlex="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="button" (click)="resetData()">Clear</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="button" (click)="resetData()">Clear</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="4" type="submit" (click)="onLookup()">Lookup</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="4" type="submit" (click)="onLookup()">Lookup</button>
</div> </div>
</form> </form>
<div fxFlex="100" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign.gt-sm="space-between center" fxLayoutAlign="start stretch" *ngIf="lookupValue && flgSetLookupValue" class="w-100 mt-2"> <div fxFlex="100" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign.gt-sm="space-between center" fxLayoutAlign="start stretch" *ngIf="lookupValue && flgSetLookupValue" class="w-100 mt-2">

@ -29,20 +29,28 @@
<mat-divider class="my-1"></mat-divider> <mat-divider class="my-1"></mat-divider>
</div> </div>
</div> </div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="start" class="my-1"> <div fxLayout="column" class="mt-2">
<h4 fxFlex="100" fxLayoutAlign="start" class="font-bold-500">Addresses</h4> <h4 fxFlex="100" fxLayoutAlign="start" class="font-bold-500 mb-1">Addresses</h4>
<div perfectScrollbar class="table-container mt-2" fxFlex="100"> <div perfectScrollbar fxLayout="row" fxLayoutAlign="start center" fxFlex="100" class="table-container">
<table mat-table [dataSource]="lookupResult.node.addresses" matSort class="overflow-auto"> <table mat-table #table [dataSource]="lookupResult.node.addresses" matSort>
<ng-container matColumnDef="network"> <ng-container matColumnDef="network">
<mat-header-cell *matHeaderCellDef mat-sort-header>Network</mat-header-cell> <th mat-header-cell *matHeaderCellDef mat-sort-header>Network</th>
<mat-cell *matCellDef="let address"><div>{{address?.network}}</div></mat-cell> <td mat-cell *matCellDef="let address"> {{address?.network}} </td>
</ng-container> </ng-container>
<ng-container matColumnDef="addr"> <ng-container matColumnDef="addr">
<mat-header-cell *matHeaderCellDef mat-sort-header>Address</mat-header-cell> <th mat-header-cell *matHeaderCellDef mat-sort-header>Address</th>
<mat-cell *matCellDef="let address"><div>{{address?.addr}}</div></mat-cell> <td mat-cell *matCellDef="let address"> {{address?.addr}} </td>
</ng-container> </ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns;"></mat-header-row> <ng-container matColumnDef="actions">
<mat-row fxLayoutAlign="stretch stretch" *matRowDef="let row; columns: displayedColumns;"></mat-row> <th mat-header-cell *matHeaderCellDef class="pl-1"><span fxLayoutAlign="end center">Actions</span></th>
<td mat-cell *matCellDef="let address" class="pl-1">
<span fxLayoutAlign="end center">
<button mat-stroked-button color="primary" type="button" tabindex="1" rtlClipboard [payload]="lookupResult.node.pub_key + '@' + address.addr" (copied)="onCopyNodeURI($event)">Copy Node URI</button>
</span>
</td>
</ng-container>
<tr mat-header-row *matHeaderRowDef="displayedColumns;"></tr>
<tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
</table> </table>
</div> </div>
</div> </div>

@ -1,6 +1,8 @@
import { Component, OnInit, Input } from '@angular/core'; import { Component, OnInit, Input } from '@angular/core';
import { MatSnackBar } from '@angular/material';
import { GraphNode } from '../../../shared/models/lndModels'; import { GraphNode } from '../../../shared/models/lndModels';
import { LoggerService } from '../../../shared/services/logger.service';
@Component({ @Component({
selector: 'rtl-node-lookup', selector: 'rtl-node-lookup',
@ -9,10 +11,14 @@ import { GraphNode } from '../../../shared/models/lndModels';
}) })
export class NodeLookupComponent implements OnInit { export class NodeLookupComponent implements OnInit {
@Input() lookupResult: GraphNode; @Input() lookupResult: GraphNode;
public displayedColumns = ['network', 'addr']; public displayedColumns = ['network', 'addr', 'actions'];
constructor() { } constructor(private logger: LoggerService, private snackBar: MatSnackBar) { }
ngOnInit() {} ngOnInit() {}
onCopyNodeURI(payload: string) {
this.snackBar.open('Node URI copied.');
this.logger.info('Copied Text: ' + payload);
}
} }

@ -8,7 +8,7 @@
<mat-card-content fxLayout="column" fxFlex="100" fxLayoutAlign="start start" class="card-content-gap"> <mat-card-content fxLayout="column" fxFlex="100" fxLayoutAlign="start start" class="card-content-gap">
<div fxFlex="30" fxLayoutAlign="space-between center" class="mt-2"> <div fxFlex="30" fxLayoutAlign="space-between center" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="1" (click)="onStopMonitor()">Stop Monitor</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="1" (click)="onStopMonitor()">Stop Monitor</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="2" (click)="onStartMonitor()">Start Monitor</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="2" (click)="onStartMonitor()">Start Monitor</button>
</div> </div>
<div fxLayout="column" fxLayoutAlign="center start" class="mt-2"> <div fxLayout="column" fxLayoutAlign="center start" class="mt-2">
<span fxFlex="100" fxLayoutAlign="center center" *ngFor="let log of loopMonitorLogs" class="loop-monitor-logs"> <span fxFlex="100" fxLayoutAlign="center center" *ngFor="let log of loopMonitorLogs" class="loop-monitor-logs">

@ -8,7 +8,7 @@
</mat-select> </mat-select>
</mat-form-field> </mat-form-field>
<div class="mt-2" fxFlex="48" fxFlex.gt-md="25"> <div class="mt-2" fxFlex="48" fxFlex.gt-md="25">
<button fxFlex="100" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onGenerateAddress()" tabindex="2" class="top-minus-15px">Generate Address</button> <button fxFlex="100" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onGenerateAddress()" tabindex="2" class="top-minus-15px">Generate Address</button>
</div> </div>
</div> </div>
</div> </div>

@ -1,6 +1,5 @@
import { Component, OnInit, OnDestroy } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Subject } from 'rxjs'; import { take } from 'rxjs/operators';
import { takeUntil } from 'rxjs/operators';
import { Store } from '@ngrx/store'; import { Store } from '@ngrx/store';
import { AddressType } from '../../../shared/models/lndModels'; import { AddressType } from '../../../shared/models/lndModels';
@ -16,11 +15,10 @@ import * as fromRTLReducer from '../../../store/rtl.reducers';
templateUrl: './on-chain-receive.component.html', templateUrl: './on-chain-receive.component.html',
styleUrls: ['./on-chain-receive.component.scss'] styleUrls: ['./on-chain-receive.component.scss']
}) })
export class OnChainReceiveComponent implements OnInit, OnDestroy { export class OnChainReceiveComponent implements OnInit {
public addressTypes = ADDRESS_TYPES; public addressTypes = ADDRESS_TYPES;
public selectedAddressType: AddressType = ADDRESS_TYPES[0]; public selectedAddressType: AddressType = ADDRESS_TYPES[0];
public newAddress = ''; public newAddress = '';
private unSubs: Array<Subject<void>> = [new Subject(), new Subject(), new Subject(), new Subject(), new Subject()];
constructor(private store: Store<fromRTLReducer.RTLState>, private lndEffects: LNDEffects) {} constructor(private store: Store<fromRTLReducer.RTLState>, private lndEffects: LNDEffects) {}
@ -30,7 +28,7 @@ export class OnChainReceiveComponent implements OnInit, OnDestroy {
this.store.dispatch(new RTLActions.OpenSpinner('Getting New Address...')); this.store.dispatch(new RTLActions.OpenSpinner('Getting New Address...'));
this.store.dispatch(new RTLActions.GetNewAddress(this.selectedAddressType)); this.store.dispatch(new RTLActions.GetNewAddress(this.selectedAddressType));
this.lndEffects.setNewAddress this.lndEffects.setNewAddress
.pipe(takeUntil(this.unSubs[0])) .pipe(take(1))
.subscribe(newAddress => { .subscribe(newAddress => {
this.newAddress = newAddress; this.newAddress = newAddress;
this.store.dispatch(new RTLActions.OpenAlert({ this.store.dispatch(new RTLActions.OpenAlert({
@ -44,11 +42,4 @@ export class OnChainReceiveComponent implements OnInit, OnDestroy {
}); });
} }
ngOnDestroy() {
this.unSubs.forEach(completeSub => {
completeSub.next();
completeSub.complete();
});
}
} }

@ -33,7 +33,7 @@
<div fxLayout="column" fxFlex="100" fxFlex.gt-sm="40" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start"></div> <div fxLayout="column" fxFlex="100" fxFlex.gt-sm="40" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start"></div>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset">Clear Fields</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset">Clear Fields</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="8">Send Funds</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="8">Send Funds</button>
</div> </div>
</form> </form>
<ng-template #sweepAllBlock> <ng-template #sweepAllBlock>
@ -62,7 +62,7 @@
<div> <div>
<div fxFlex="100" fxFlex.gt-sm="30" fxLayout="row" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxFlex="100" fxFlex.gt-sm="30" fxLayout="row" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset">Clear Fields</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset">Clear Fields</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="8">Send Funds</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="8">Send Funds</button>
</div> </div>
</div> </div>
</form> </form>

@ -52,7 +52,7 @@
</div> </div>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="10" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="10" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onOpenChannel()" type="submit" tabindex="11">Open Channel</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onOpenChannel()" type="submit" tabindex="11">Open Channel</button>
</div> </div>
</form> </form>
<rtl-channels-tables fxLayout="row" fxFlex="100"></rtl-channels-tables> <rtl-channels-tables fxLayout="row" fxFlex="100"></rtl-channels-tables>

@ -14,6 +14,7 @@ import { LNDEffects } from '../../../../store/lnd.effects';
import { RTLEffects } from '../../../../../store/rtl.effects'; import { RTLEffects } from '../../../../../store/rtl.effects';
import * as RTLActions from '../../../../../store/rtl.actions'; import * as RTLActions from '../../../../../store/rtl.actions';
import * as fromRTLReducer from '../../../../../store/rtl.reducers'; import * as fromRTLReducer from '../../../../../store/rtl.reducers';
import { ChannelLookupComponent } from '../../../../lookups/channel-lookup/channel-lookup.component';
@Component({ @Component({
selector: 'rtl-channel-open-table', selector: 'rtl-channel-open-table',
@ -118,7 +119,7 @@ export class ChannelOpenTableComponent implements OnInit, OnDestroy {
] ]
}})); }}));
this.rtlEffects.closeConfirm this.rtlEffects.closeConfirm
.pipe(takeUntil(this.unSubs[2])) .pipe(takeUntil(this.unSubs[1]))
.subscribe(confirmRes => { .subscribe(confirmRes => {
if (confirmRes) { if (confirmRes) {
const base_fee = confirmRes[0].inputValue; const base_fee = confirmRes[0].inputValue;
@ -162,7 +163,7 @@ export class ChannelOpenTableComponent implements OnInit, OnDestroy {
}})); }}));
}); });
this.rtlEffects.closeConfirm this.rtlEffects.closeConfirm
.pipe(takeUntil(this.unSubs[4])) .pipe(takeUntil(this.unSubs[2]))
.subscribe(confirmRes => { .subscribe(confirmRes => {
if (confirmRes) { if (confirmRes) {
const base_fee = confirmRes[0].inputValue; const base_fee = confirmRes[0].inputValue;
@ -176,6 +177,24 @@ export class ChannelOpenTableComponent implements OnInit, OnDestroy {
this.applyFilter(); this.applyFilter();
} }
// onGraphLookup(channel:Channel) {
// this.store.dispatch(new RTLActions.ChannelLookup(channel.chan_id));
// this.actions$
// .pipe(
// takeUntil(this.unSubs[3]),
// filter((action) => (action.type === RTLActions.SET_LOOKUP))
// ).subscribe((resLookup: RTLActions.SetLookup) => {
// if(resLookup.type === RTLActions.SET_LOOKUP) {
// console.warn(JSON.parse(JSON.stringify(resLookup.payload)));
// this.store.dispatch(new RTLActions.OpenAlert({ data: {
// lookupResult: JSON.parse(JSON.stringify(resLookup.payload)),
// newlyAdded: false,
// component: ChannelLookupComponent
// }}));
// }
// });
// }
onChannelClose(channelToClose: Channel) { onChannelClose(channelToClose: Channel) {
this.store.dispatch(new RTLActions.OpenConfirmation({ data: { this.store.dispatch(new RTLActions.OpenConfirmation({ data: {
type: AlertTypeEnum.CONFIRM, type: AlertTypeEnum.CONFIRM,
@ -185,7 +204,7 @@ export class ChannelOpenTableComponent implements OnInit, OnDestroy {
yesBtnText: 'Close Channel' yesBtnText: 'Close Channel'
}})); }}));
this.rtlEffects.closeConfirm this.rtlEffects.closeConfirm
.pipe(takeUntil(this.unSubs[5])) .pipe(takeUntil(this.unSubs[4]))
.subscribe(confirmRes => { .subscribe(confirmRes => {
if (confirmRes) { if (confirmRes) {
this.store.dispatch(new RTLActions.OpenSpinner('Closing Channel...')); this.store.dispatch(new RTLActions.OpenSpinner('Closing Channel...'));

@ -6,7 +6,7 @@
</mat-form-field> </mat-form-field>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="3" (click)="onConnectPeer()">Add Peer</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="3" (click)="onConnectPeer()">Add Peer</button>
</div> </div>
</form> </form>
<div fxLayout="column"> <div fxLayout="column">

@ -23,7 +23,7 @@
</div> </div>
<div fxFlex="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxFlex="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="resetData()">Clear</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="resetData()">Clear</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="4">Fetch Events</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="4">Fetch Events</button>
</div> </div>
</form> </form>
<div fxLayout="row" fxFlex="100" [ngClass]="{'error-border w-100 routing-tabs-block': flgLoading[0]==='error', 'w-100 routing-tabs-block': true}"> <div fxLayout="row" fxFlex="100" [ngClass]="{'error-border w-100 routing-tabs-block': flgLoading[0]==='error', 'w-100 routing-tabs-block': true}">

@ -22,11 +22,11 @@
</div> </div>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between start" *ngIf="showDetails" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between start" *ngIf="showDetails" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="5" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="5" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onAddInvoice(addInvoiceForm)" tabindex="6">Create Invoice</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onAddInvoice(addInvoiceForm)" tabindex="6">Create Invoice</button>
</div> </div>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between stretch" *ngIf="!showDetails" class="mt-1"> <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between stretch" *ngIf="!showDetails" class="mt-1">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="5" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="5" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onAddInvoice(addInvoiceForm)" tabindex="6">Create Invoice</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onAddInvoice(addInvoiceForm)" tabindex="6">Create Invoice</button>
</div> </div>
</form> </form>
<div fxLayout="column" fxLayoutAlign="start stretch" *ngIf="showDetails"> <div fxLayout="column" fxLayoutAlign="start stretch" *ngIf="showDetails">

@ -33,11 +33,11 @@
</div> </div>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" *ngIf="showDetails" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" *ngIf="showDetails" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onSendPayment();" tabindex="3">Send Payment</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onSendPayment();" tabindex="3">Send Payment</button>
</div> </div>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between stretch" *ngIf="!showDetails" class="mt-1"> <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between stretch" *ngIf="!showDetails" class="mt-1">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onSendPayment();" tabindex="3">Send Payment</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onSendPayment();" tabindex="3">Send Payment</button>
</div> </div>
</form> </form>
<div fxLayout="column" fxLayoutAlign="start stretch" [ngClass]="{'display-none': !showDetails}"> <div fxLayout="column" fxLayoutAlign="start stretch" [ngClass]="{'display-none': !showDetails}">

@ -14,7 +14,7 @@
</mat-form-field> </mat-form-field>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="resetData()">Clear</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="resetData()">Clear</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="4">Query Route</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="4">Query Route</button>
</div> </div>
</form> </form>
<div fxLayout="row" fxLayoutAlign="start center" class="padding-gap-x page-sub-title-container mt-2 mb-1"> <div fxLayout="row" fxLayoutAlign="start center" class="padding-gap-x page-sub-title-container mt-2 mb-1">

@ -4,7 +4,7 @@
<div fxFlex="100" fxLayoutAlign="start">Warning: Your connection is unsecure, it's not safe to generate private keys over this connection.Are you sure you want to proceed?</div> <div fxFlex="100" fxLayoutAlign="start">Warning: Your connection is unsecure, it's not safe to generate private keys over this connection.Are you sure you want to proceed?</div>
<div fxFlex="100" fxFlex.gt-sm="35" fxLayout="row wrap" fxLayoutAlign="space-between start" class="mt-2"> <div fxFlex="100" fxFlex.gt-sm="35" fxLayout="row wrap" fxLayoutAlign="space-between start" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="1" type="reset" (click)="proceed=false;warnRes=true">Do Not Proceed</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="1" type="reset" (click)="proceed=false;warnRes=true">Do Not Proceed</button>
<button mat-raised-button fxFlex="48" color="primary" type="submit" (click)="proceed=true;warnRes=true" tabindex="2">Proceed</button> <button mat-flat-button fxFlex="48" color="primary" type="submit" (click)="proceed=true;warnRes=true" tabindex="2">Proceed</button>
</div> </div>
</form> </form>
</div> </div>
@ -33,7 +33,7 @@
<mat-icon class="validation-error-icon red">cancel</mat-icon>Passwords do not match. <mat-icon class="validation-error-icon red">cancel</mat-icon>Passwords do not match.
</div> </div>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="my-2"> <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="my-2">
<button mat-raised-button color="primary" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25" tabindex="7" type="submit" matStepperNext>Next</button> <button mat-flat-button color="primary" fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25" tabindex="7" type="submit" matStepperNext>Next</button>
</div> </div>
</form> </form>
</mat-step> </mat-step>
@ -50,7 +50,7 @@
</div> </div>
<div fxLayout.lt-sm="column" fxLayout="row wrap" fxFlex="100" fxFlex.gt-md="40" fxLayoutAlign="space-between space-between" class="mb-2"> <div fxLayout.lt-sm="column" fxLayout="row wrap" fxFlex="100" fxFlex.gt-md="40" fxLayoutAlign="space-between space-between" class="mb-2">
<button mat-stroked-button color="primary" fxFlex="48" type="reset" tabindex="10" matStepperPrevious class="mt-1">Back</button> <button mat-stroked-button color="primary" fxFlex="48" type="reset" tabindex="10" matStepperPrevious class="mt-1">Back</button>
<button mat-raised-button color="primary" fxFlex="48" tabindex="11" type="submit" matStepperNext class="mt-1">Next</button> <button mat-flat-button color="primary" fxFlex="48" tabindex="11" type="submit" matStepperNext class="mt-1">Next</button>
</div> </div>
</form> </form>
</mat-step> </mat-step>
@ -67,7 +67,7 @@
<div fxLayout.lt-sm="column" fxLayout="row wrap" fxFlex="100" fxFlex.gt-md="40" fxLayoutAlign="space-between space-between" class="mb-2"> <div fxLayout.lt-sm="column" fxLayout="row wrap" fxFlex="100" fxFlex.gt-md="40" fxLayoutAlign="space-between space-between" class="mb-2">
<button fxFlex="48" fxFlex.gt-sm="32" fxLayoutAlign="center center" mat-stroked-button color="warn" tabindex="13" type="reset" (click)="resetData()" class="mt-1">Clear</button> <button fxFlex="48" fxFlex.gt-sm="32" fxLayoutAlign="center center" mat-stroked-button color="warn" tabindex="13" type="reset" (click)="resetData()" class="mt-1">Clear</button>
<button mat-stroked-button fxFlex="48" fxFlex.gt-sm="32" tabindex="14" color="primary" type="button" matStepperPrevious class="mt-1">Back</button> <button mat-stroked-button fxFlex="48" fxFlex.gt-sm="32" tabindex="14" color="primary" type="button" matStepperPrevious class="mt-1">Back</button>
<button mat-raised-button fxFlex="100" fxFlex.gt-sm="32" color="primary" (click)="onInitWallet()" tabindex="15" type="submit" class="mt-1">Initialize Wallet</button> <button mat-flat-button fxFlex="100" fxFlex.gt-sm="32" color="primary" (click)="onInitWallet()" tabindex="15" type="submit" class="mt-1">Initialize Wallet</button>
</div> </div>
</form> </form>
</mat-step> </mat-step>
@ -91,7 +91,7 @@
<div fxFlex="100" fxLayoutAlign="start" class="mt-2">The node will be usable only after LND has synced completely with the network.</div> <div fxFlex="100" fxLayoutAlign="start" class="mt-2">The node will be usable only after LND has synced completely with the network.</div>
<div fxFlex="100" fxLayoutAlign="start" class="mt-2">Click continue only after writing down the seed.</div> <div fxFlex="100" fxLayoutAlign="start" class="mt-2">Click continue only after writing down the seed.</div>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="mt-2"> <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="mt-2">
<button fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25" mat-raised-button color="primary" type="submit" (click)="onGoToHome()" tabindex="16">Go To Home</button> <button fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25" mat-flat-button color="primary" type="submit" (click)="onGoToHome()" tabindex="16">Go To Home</button>
</div> </div>
</form> </form>
</div> </div>
@ -108,7 +108,7 @@
<div fxFlex="100" fxLayoutAlign="start" class="mt-2">Wallet recovery is done.</div> <div fxFlex="100" fxLayoutAlign="start" class="mt-2">Wallet recovery is done.</div>
<div fxFlex="100" fxLayoutAlign="start" class="mt-2">The node will be usable only after LND has synced completely with the network.</div> <div fxFlex="100" fxLayoutAlign="start" class="mt-2">The node will be usable only after LND has synced completely with the network.</div>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="mt-2"> <div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="mt-2">
<button fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25" mat-raised-button color="primary" type="submit" (click)="onGoToHome()" tabindex="18">Go To Home</button> <button fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25" mat-flat-button color="primary" type="submit" (click)="onGoToHome()" tabindex="18">Go To Home</button>
</div> </div>
</form> </form>
</div> </div>

@ -7,7 +7,7 @@
</mat-form-field> </mat-form-field>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear Field</button>
<button mat-raised-button fxFlex="48" color="primary" type="submit" (click)="onUnlockWallet()" tabindex="3">Unlock Wallet</button> <button mat-flat-button fxFlex="48" color="primary" type="submit" (click)="onUnlockWallet()" tabindex="3">Unlock Wallet</button>
</div> </div>
</form> </form>
</div> </div>

@ -39,11 +39,11 @@
</div> </div>
</div> </div>
<div fxLayout="row" fxLayoutAlign="end center"> <div fxLayout="row" fxLayoutAlign="end center">
<button *ngIf="(!showQRField || showQRField == '') && (showCopyName === '')" fxFlex="20" fxLayoutAlign="center center" tabindex="1" autoFocus mat-raised-button color="primary" type="submit" [mat-dialog-close]="false" default>OK</button> <button *ngIf="(!showQRField || showQRField == '') && (showCopyName === '')" fxFlex="20" fxLayoutAlign="center center" tabindex="1" autoFocus mat-flat-button color="primary" type="submit" [mat-dialog-close]="false" default>OK</button>
<button *ngIf="showCopyName !== ''" fxFlex="20" class="mr-2" fxLayoutAlign="center center" tabindex="1" mat-stroked-button color="primary" type="button" [mat-dialog-close]="false" default>Close</button> <button *ngIf="showCopyName !== ''" fxFlex="20" class="mr-2" fxLayoutAlign="center center" tabindex="1" mat-stroked-button color="primary" type="button" [mat-dialog-close]="false" default>Close</button>
<button *ngIf="showCopyName !== ''" fxFlex="30" fxLayoutAlign="center center" autoFocus mat-raised-button color="primary" tabindex="2" type="submit" rtlClipboard [payload]="showCopyField" (copied)="onCopyField($event)">Copy {{showCopyName}}</button> <button *ngIf="showCopyName !== ''" fxFlex="30" fxLayoutAlign="center center" autoFocus mat-flat-button color="primary" tabindex="2" type="submit" rtlClipboard [payload]="showCopyField" (copied)="onCopyField($event)">Copy {{showCopyName}}</button>
<button *ngIf="showQRField !== ''" fxFlex="20" class="mr-2" fxLayoutAlign="center center" tabindex="1" class="mr-2" mat-stroked-button color="primary" type="button" [mat-dialog-close]="false" default>Close</button> <button *ngIf="showQRField !== ''" fxFlex="20" class="mr-2" fxLayoutAlign="center center" tabindex="1" class="mr-2" mat-stroked-button color="primary" type="button" [mat-dialog-close]="false" default>Close</button>
<button *ngIf="showQRField !== ''" fxFlex="30" fxLayoutAlign="center center" autoFocus mat-raised-button color="primary" tabindex="2" type="submit" rtlClipboard [payload]="showQRField" (copied)="onCopyField($event)">Copy {{showQRName}}</button> <button *ngIf="showQRField !== ''" fxFlex="30" fxLayoutAlign="center center" autoFocus mat-flat-button color="primary" tabindex="2" type="submit" rtlClipboard [payload]="showQRField" (copied)="onCopyField($event)">Copy {{showQRName}}</button>
</div> </div>
</div> </div>
</mat-card-content> </mat-card-content>

@ -38,8 +38,8 @@
</div> </div>
<div fxLayout="row" fxLayoutAlign="end center"> <div fxLayout="row" fxLayoutAlign="end center">
<button autoFocus mat-stroked-button color="primary" fxFlex="20" type="reset" fxLayoutAlign="center center" class="mr-2" (click)="onClose(false)" tabindex="2" default>{{noBtnText}}</button> <button autoFocus mat-stroked-button color="primary" fxFlex="20" type="reset" fxLayoutAlign="center center" class="mr-2" (click)="onClose(false)" tabindex="2" default>{{noBtnText}}</button>
<button *ngIf="flgShowInput" mat-raised-button color="primary" fxLayoutAlign="center center" fxFlex="25" type="submit" tabindex="3" (click)="onClose(getInputs)">{{yesBtnText}}</button> <button *ngIf="flgShowInput" mat-flat-button color="primary" fxLayoutAlign="center center" fxFlex="25" type="submit" tabindex="3" (click)="onClose(getInputs)">{{yesBtnText}}</button>
<button *ngIf="!flgShowInput" mat-raised-button color="primary" fxLayoutAlign="center center" fxFlex="25" type="submit" tabindex="4" (click)="onClose(true)">{{yesBtnText}}</button> <button *ngIf="!flgShowInput" mat-flat-button color="primary" fxLayoutAlign="center center" fxFlex="25" type="submit" tabindex="4" (click)="onClose(true)">{{yesBtnText}}</button>
</div> </div>
</form> </form>
</mat-card-content> </mat-card-content>

@ -19,7 +19,7 @@
<span class="word-break">{{data.message.URL}}</span> <span class="word-break">{{data.message.URL}}</span>
<mat-divider class="w-100 my-1"></mat-divider> <mat-divider class="w-100 my-1"></mat-divider>
<div fxLayout="row" fxLayoutAlign="end center"> <div fxLayout="row" fxLayoutAlign="end center">
<button fxLayoutAlign="center center" tabindex="1" autoFocus mat-raised-button color="primary" fxFlex="20" type="submit" [mat-dialog-close]="false" default>OK</button> <button fxLayoutAlign="center center" tabindex="1" autoFocus mat-flat-button color="primary" fxFlex="20" type="submit" [mat-dialog-close]="false" default>OK</button>
</div> </div>
</div> </div>
</mat-card-content> </mat-card-content>

@ -82,7 +82,7 @@
<p *ngIf="!showAdvanced; else hideAdvancedText">Show Advanced</p> <p *ngIf="!showAdvanced; else hideAdvancedText">Show Advanced</p>
<ng-template #hideAdvancedText><p>Hide Advanced</p></ng-template> <ng-template #hideAdvancedText><p>Hide Advanced</p></ng-template>
</button> </button>
<button autoFocus fxFlex="50" fxFlex.gt-sm="33" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="2" type="submit" rtlClipboard [payload]="invoice.bolt11" (copied)="onCopyPayment($event)">{{screenSize === screenSizeEnum.XS ? 'Copy Bolt11' : 'Copy Bolt11'}}</button> <button autoFocus fxFlex="50" fxFlex.gt-sm="33" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="2" type="submit" rtlClipboard [payload]="invoice.bolt11" (copied)="onCopyPayment($event)">{{screenSize === screenSizeEnum.XS ? 'Copy Bolt11' : 'Copy Bolt11'}}</button>
</div> </div>
</div> </div>
</mat-card-content> </mat-card-content>

@ -80,7 +80,7 @@
<p *ngIf="!showAdvanced; else hideAdvancedText">Show Advanced</p> <p *ngIf="!showAdvanced; else hideAdvancedText">Show Advanced</p>
<ng-template #hideAdvancedText><p>Hide Advanced</p></ng-template> <ng-template #hideAdvancedText><p>Hide Advanced</p></ng-template>
</button> </button>
<button autoFocus fxFlex="50" fxFlex.gt-sm="33" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="2" type="submit" rtlClipboard [payload]="invoice.payment_request" (copied)="onCopyPayment($event)">{{screenSize === screenSizeEnum.XS ? 'Copy Payment' : 'Copy Payment Request'}}</button> <button autoFocus fxFlex="50" fxFlex.gt-sm="33" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="2" type="submit" rtlClipboard [payload]="invoice.payment_request" (copied)="onCopyPayment($event)">{{screenSize === screenSizeEnum.XS ? 'Copy Payment' : 'Copy Payment Request'}}</button>
</div> </div>
</div> </div>
</mat-card-content> </mat-card-content>

@ -30,7 +30,7 @@
</div> </div>
<mat-divider class="w-100 my-1"></mat-divider> <mat-divider class="w-100 my-1"></mat-divider>
<div class="mt-2" fxLayout="row" fxLayoutAlign="end center"> <div class="mt-2" fxLayout="row" fxLayoutAlign="end center">
<button autoFocus fxFlex="60" fxFlex.gt-sm="50" fxFlex.gt-md="33" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="1" type="submit" rtlClipboard [payload]="address" (copied)="onCopyAddress($event)">Copy Address</button> <button autoFocus fxFlex="60" fxFlex.gt-sm="50" fxFlex.gt-md="33" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="1" type="submit" rtlClipboard [payload]="address" (copied)="onCopyAddress($event)">Copy Address</button>
</div> </div>
</div> </div>
</mat-card-content> </mat-card-content>

@ -78,11 +78,11 @@
<div *ngIf="newlyAdded" fxLayoutAlign="space-between center" fxFlex="60"> <div *ngIf="newlyAdded" fxLayoutAlign="space-between center" fxFlex="60">
<button fxFlex="33" fxLayoutAlign="center center" mat-stroked-button color="warn" (click)="onClose()" tabindex="7">Do It Later</button> <button fxFlex="33" fxLayoutAlign="center center" mat-stroked-button color="warn" (click)="onClose()" tabindex="7">Do It Later</button>
<button fxFlex="32" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="8" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="32" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="8" type="reset" (click)="resetData()">Clear Field</button>
<button autoFocus fxFlex="33" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="9">Open Channel</button> <button autoFocus fxFlex="33" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="9">Open Channel</button>
</div> </div>
<div *ngIf="!newlyAdded" fxLayout="row" fxLayoutAlign="space-between stretch" fxFlex="30" class="mt-2"> <div *ngIf="!newlyAdded" fxLayout="row" fxLayoutAlign="space-between stretch" fxFlex="30" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset" (click)="resetData()">Clear Field</button>
<button autoFocus fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="8">Open Channel</button> <button autoFocus fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="8">Open Channel</button>
</div> </div>
</div> </div>
</form> </form>

@ -85,11 +85,11 @@
<div *ngIf="newlyAdded" fxLayoutAlign="space-between center" fxFlex="60"> <div *ngIf="newlyAdded" fxLayoutAlign="space-between center" fxFlex="60">
<button fxFlex="33" fxLayoutAlign="center center" mat-stroked-button color="warn" (click)="onClose()" tabindex="7">Do It Later</button> <button fxFlex="33" fxLayoutAlign="center center" mat-stroked-button color="warn" (click)="onClose()" tabindex="7">Do It Later</button>
<button fxFlex="32" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="8" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="32" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="8" type="reset" (click)="resetData()">Clear Field</button>
<button autoFocus fxFlex="33" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="9">Open Channel</button> <button autoFocus fxFlex="33" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="9">Open Channel</button>
</div> </div>
<div *ngIf="!newlyAdded" fxLayout="row" fxLayoutAlign="space-between stretch" fxFlex="30" class="mt-2"> <div *ngIf="!newlyAdded" fxLayout="row" fxLayoutAlign="space-between stretch" fxFlex="30" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset" (click)="resetData()">Clear Field</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="7" type="reset" (click)="resetData()">Clear Field</button>
<button autoFocus fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" type="submit" tabindex="8">Open Channel</button> <button autoFocus fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" type="submit" tabindex="8">Open Channel</button>
</div> </div>
</div> </div>
</form> </form>

@ -32,7 +32,7 @@
</div> </div>
<mat-divider class="w-100 my-1"></mat-divider> <mat-divider class="w-100 my-1"></mat-divider>
<div class="mt-2" fxLayout="row" fxLayoutAlign="end center"> <div class="mt-2" fxLayout="row" fxLayoutAlign="end center">
<button autoFocus fxFlex="60" fxFlex.gt-sm="33" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="2" <button autoFocus fxFlex="60" fxFlex.gt-sm="33" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="2"
type="submit" rtlClipboard payload="{{selInfoType.infoID === 1 ? information.uris[0] : information.identity_pubkey}}" (copied)="onCopyPubkey($event)">Copy {{selInfoType.infoKey}}</button> type="submit" rtlClipboard payload="{{selInfoType.infoID === 1 ? information.uris[0] : information.identity_pubkey}}" (copied)="onCopyPubkey($event)">Copy {{selInfoType.infoKey}}</button>
</div> </div>
</div> </div>

@ -8,7 +8,7 @@
<div fxLayout="column" fxLayoutAlign="start start"> <div fxLayout="column" fxLayoutAlign="start start">
<div class="box-text">{{error.errorMessage}}</div> <div class="box-text">{{error.errorMessage}}</div>
<span fxLayout="row" fxLayoutAlign="center" fxFlex="80"> <span fxLayout="row" fxLayoutAlign="center" fxFlex="80">
<button mat-raised-button color="primary" class="mt-2" type="button" (click)="goToHelp()">Go To Help</button> <button mat-flat-button color="primary" class="mt-2" type="button" (click)="goToHelp()">Go To Help</button>
</span> </span>
</div> </div>
</mat-card-content> </mat-card-content>

@ -6,7 +6,7 @@
<div fxLayout="row" fxFlex="100" class="padding-gap-x" fxLayoutAlign="start start"> <div fxLayout="row" fxFlex="100" class="padding-gap-x" fxLayoutAlign="start start">
<div fxLayout="column" fxFlex="100"> <div fxLayout="column" fxFlex="100">
<div fxFlex="100" *ngFor="let helpTopic of helpTopics"> <div fxFlex="100" *ngFor="let helpTopic of helpTopics">
<mat-expansion-panel class="flat-expansion-panel help-expansion mb-2px"> <mat-expansion-panel class="flat-expansion-panel help-expansion mb-2px" *ngIf="helpTopic.help.lnImplementation === 'ALL' || helpTopic.help.lnImplementation === selNode.lnImplementation">
<mat-expansion-panel-header> <mat-expansion-panel-header>
<mat-panel-title>{{helpTopic.help.question}}</mat-panel-title> <mat-panel-title>{{helpTopic.help.question}}</mat-panel-title>
</mat-expansion-panel-header> </mat-expansion-panel-header>

@ -32,7 +32,8 @@ export class HelpComponent implements OnInit, OnDestroy {
'3. Wait for the balance to be confirmed on-chain before proceeding further.\n' + '3. Wait for the balance to be confirmed on-chain before proceeding further.\n' +
'3. Connecting with network peers and opening channels is next.\n', '3. Connecting with network peers and opening channels is next.\n',
link: 'onchain', link: 'onchain',
linkCaption: 'On-Chain page' linkCaption: 'On-Chain page',
lnImplementation: 'ALL'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Connect with peers', question: 'Connect with peers',
@ -46,7 +47,8 @@ export class HelpComponent implements OnInit, OnDestroy {
' b. Open Channel - Open channel with the peer.\n' + ' b. Open Channel - Open channel with the peer.\n' +
' c. Disconnect - Disconnect from the peer.\n', ' c. Disconnect - Disconnect from the peer.\n',
link: 'peerschannels', link: 'peerschannels',
linkCaption: 'Peers/Channels page' linkCaption: 'Peers/Channels page',
lnImplementation: 'ALL'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Opening Channels', question: 'Opening Channels',
@ -61,7 +63,9 @@ export class HelpComponent implements OnInit, OnDestroy {
'4. Track the pending open channels under the "Pending" tab . \n' + '4. Track the pending open channels under the "Pending" tab . \n' +
'5. Wait for the channel to be confirmed. Only a confimed channel can be used for payments or routing. \n', '5. Wait for the channel to be confirmed. Only a confimed channel can be used for payments or routing. \n',
link: 'peerschannels', link: 'peerschannels',
linkCaption: 'Peers/Channels page'})); linkCaption: 'Peers/Channels page',
lnImplementation: 'ALL'
}));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Channel Management', question: 'Channel Management',
answer: 'Channel maintenance and balance score.\n' + answer: 'Channel maintenance and balance score.\n' +
@ -76,7 +80,8 @@ export class HelpComponent implements OnInit, OnDestroy {
' b. A perfectly balanced channel has a score of one, where as a completely lopsided one has a score of zero.\n' + ' b. A perfectly balanced channel has a score of one, where as a completely lopsided one has a score of zero.\n' +
' c. The formula for calculating the score is "1 - abs((local bal - remote bal)/total bal)".\n', ' c. The formula for calculating the score is "1 - abs((local bal - remote bal)/total bal)".\n',
link: 'peerschannels', link: 'peerschannels',
linkCaption: 'Peers/Channels page' linkCaption: 'Peers/Channels page',
lnImplementation: 'ALL'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Lightning Transactions - Payments', question: 'Lightning Transactions - Payments',
@ -87,7 +92,8 @@ export class HelpComponent implements OnInit, OnDestroy {
' 2. Advanced option # 1 (LND only) - Specify a limit on the routing fee which you are willing to pay, for the payment.\n' + ' 2. Advanced option # 1 (LND only) - Specify a limit on the routing fee which you are willing to pay, for the payment.\n' +
' 3. Advanced option # 2 (LND only) - Specify the outgoing channel which you want the payment to go through.\n', ' 3. Advanced option # 2 (LND only) - Specify the outgoing channel which you want the payment to go through.\n',
link: 'transactions', link: 'transactions',
linkCaption: 'Transactions page' linkCaption: 'Transactions page',
lnImplementation: 'ALL'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Lightning Transactions - Invoices', question: 'Lightning Transactions - Invoices',
@ -98,7 +104,8 @@ export class HelpComponent implements OnInit, OnDestroy {
' 2. Expiry - The time period, after which the invoice will be invalid.\n' + ' 2. Expiry - The time period, after which the invoice will be invalid.\n' +
' 3. Private Routing Hints - Generate an invoice with routing hints for private channels.\n', ' 3. Private Routing Hints - Generate an invoice with routing hints for private channels.\n',
link: 'transactions', link: 'transactions',
linkCaption: 'Transactions page' linkCaption: 'Transactions page',
lnImplementation: 'ALL'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Lightning Transactions - Query Route', question: 'Lightning Transactions - Query Route',
@ -108,10 +115,11 @@ export class HelpComponent implements OnInit, OnDestroy {
' 1. Destination Pubkey - Pubkey of the node, you want to send the payment to.\n' + ' 1. Destination Pubkey - Pubkey of the node, you want to send the payment to.\n' +
' 2. Amount - Amount in Sats, which you want to send to the node.\n', ' 2. Amount - Amount in Sats, which you want to send to the node.\n',
link: 'transactions', link: 'transactions',
linkCaption: 'Transactions page' linkCaption: 'Transactions page',
lnImplementation: 'ALL'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Channel Backups (LND Only)', question: 'Channel Backups',
answer: 'Channel Backups are important to ensure that you have means to recover funds in case of node failures.\n' + answer: 'Channel Backups are important to ensure that you have means to recover funds in case of node failures.\n' +
'Backup folder location can be customized in the RTL config file with the channelBackupPath field.\n' + 'Backup folder location can be customized in the RTL config file with the channelBackupPath field.\n' +
'RTL automatically creates all channel backup on server startup, as well as everytime a channel is opened or closed\n'+ 'RTL automatically creates all channel backup on server startup, as well as everytime a channel is opened or closed\n'+
@ -119,10 +127,11 @@ export class HelpComponent implements OnInit, OnDestroy {
'You can also backup each channel individually and verify them.\n'+ 'You can also backup each channel individually and verify them.\n'+
'** Keep taking backups of your channels regularly and store them in redundant locations **.\n', '** Keep taking backups of your channels regularly and store them in redundant locations **.\n',
link: 'backup', link: 'backup',
linkCaption: 'Channel Backups' linkCaption: 'Channel Backups',
lnImplementation: 'LND'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Channel Restore (LND Only)', question: 'Channel Restore',
answer: 'Channel Restore is used to recover funds from the channel backup files in case of node failures.\n' + answer: 'Channel Restore is used to recover funds from the channel backup files in case of node failures.\n' +
'Follow the below steps to perform fund restoration.\n\n' + 'Follow the below steps to perform fund restoration.\n\n' +
'Prerequisite:\n'+ 'Prerequisite:\n'+
@ -140,7 +149,8 @@ export class HelpComponent implements OnInit, OnDestroy {
'9. Once the channel is closed, the corresponding pending on-chain transactions can be viewed on the "On-Chain" page.\n'+ '9. Once the channel is closed, the corresponding pending on-chain transactions can be viewed on the "On-Chain" page.\n'+
'10. Once the transactions are confirmed, the channels funds will be restored to your LND Wallet.\n', '10. Once the transactions are confirmed, the channels funds will be restored to your LND Wallet.\n',
link: 'backup', link: 'backup',
linkCaption: 'Channel Backups' linkCaption: 'Channel Backups',
lnImplementation: 'LND'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Forwarding History', question: 'Forwarding History',
@ -148,7 +158,8 @@ export class HelpComponent implements OnInit, OnDestroy {
'Go to "Routing" page under the "Lightning" menu :\n' + 'Go to "Routing" page under the "Lightning" menu :\n' +
'Transactions routed by the node are listed on this page along with channels and the fee earned by transaction.\n', 'Transactions routed by the node are listed on this page along with channels and the fee earned by transaction.\n',
link: 'routing', link: 'routing',
linkCaption: 'Forwarding History' linkCaption: 'Forwarding History',
lnImplementation: 'ALL'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Graph Lookup', question: 'Graph Lookup',
@ -159,7 +170,8 @@ export class HelpComponent implements OnInit, OnDestroy {
' 1. Node Lookup - Enter the pubkey to perform the lookup.\n' + ' 1. Node Lookup - Enter the pubkey to perform the lookup.\n' +
' 2. Channel Lookup - Enter the short channel ID to perform the lookup.\n', ' 2. Channel Lookup - Enter the short channel ID to perform the lookup.\n',
link: 'lookups', link: 'lookups',
linkCaption: 'Graph Lookup page' linkCaption: 'Graph Lookup page',
lnImplementation: 'ALL'
})); }));
this.helpTopics.push(new HelpTopic({ this.helpTopics.push(new HelpTopic({
question: 'Settings', question: 'Settings',
@ -169,7 +181,8 @@ export class HelpComponent implements OnInit, OnDestroy {
' 1. User Persona - Two options are available to change the dashboard based on the persona.\n' + ' 1. User Persona - Two options are available to change the dashboard based on the persona.\n' +
' 2. Currency Unit - You can choose your preferred fiat currency, to view the onchain and channel balances in the choosen fiat currency.\n'+ ' 2. Currency Unit - You can choose your preferred fiat currency, to view the onchain and channel balances in the choosen fiat currency.\n'+
' 3. Default Node - If you are managing multiple nodes via RTL UI, you can select the default node to load upon login.\n'+ ' 3. Default Node - If you are managing multiple nodes via RTL UI, you can select the default node to load upon login.\n'+
'Other Customizations include day and night mode and a choice of color themes to select from.\n' 'Other Customizations include day and night mode and a choice of color themes to select from.\n',
lnImplementation: 'ALL'
})); }));
} }

@ -8,7 +8,7 @@
<div fxLayout="column" fxLayoutAlign="start start"> <div fxLayout="column" fxLayoutAlign="start start">
<div class="box-text">This page does not exist!</div> <div class="box-text">This page does not exist!</div>
<span fxLayout="row" fxLayoutAlign="center" fxFlex="80"> <span fxLayout="row" fxLayoutAlign="center" fxFlex="80">
<button mat-raised-button color="primary" class="mt-2" type="button" (click)="goToHelp()">Go To Help</button> <button mat-flat-button color="primary" class="mt-2" type="button" (click)="goToHelp()">Go To Help</button>
</span> </span>
</div> </div>
</mat-card-content> </mat-card-content>

@ -65,7 +65,7 @@
<div fxLayout="row" fxFlex="100" class="mt-2"> <div fxLayout="row" fxFlex="100" class="mt-2">
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" (click)="onResetSettings()" tabindex="12">Reset</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" (click)="onResetSettings()" tabindex="12">Reset</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" (click)="onUpdateSettings()" tabindex="13">Update</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" (click)="onUpdateSettings()" tabindex="13">Update</button>
</div> </div>
</div> </div>
</div> </div>

@ -14,7 +14,7 @@
</mat-form-field> </mat-form-field>
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2"> <div fxLayout="row" fxFlex="100" fxFlex.gt-sm="30" fxLayoutAlign="space-between stretch" class="mt-2">
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear</button> <button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="2" type="reset" (click)="resetData()">Clear</button>
<button fxFlex="48" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="3" type="submit">Login</button> <button fxFlex="48" fxLayoutAlign="center center" mat-flat-button color="primary" tabindex="3" type="submit">Login</button>
</div> </div>
</form> </form>
</mat-card-content> </mat-card-content>

@ -74,5 +74,5 @@ export interface SelNodeChild {
} }
export class HelpTopic { export class HelpTopic {
constructor(public help: {question: string, answer: string, link?: string, linkCaption?: string}) { } constructor(public help: {question: string, answer: string, link?: string, linkCaption?: string, lnImplementation?: string}) { }
} }

@ -228,11 +228,11 @@
outline: none; outline: none;
} }
.mat-raised-button.mat-primary:focus, .mat-raised-button.mat-primary:hover { .mat-flat-button.mat-primary:focus, .mat-flat-button.mat-primary:hover {
@include mat-elevation(8); @include mat-elevation(2);
} }
.mat-raised-button.mat-primary:disabled { .mat-flat-button.mat-primary:disabled {
cursor: not-allowed; cursor: not-allowed;
} }

@ -463,7 +463,6 @@
overflow: hidden; overflow: hidden;
} }
.ngx-charts { .ngx-charts {
fill: $foreground-text; fill: $foreground-text;
.bar { .bar {

@ -177,12 +177,6 @@ body {
overflow-wrap: break-word !important; overflow-wrap: break-word !important;
} }
.mat-raised-button {
width: 100%;
margin-top: 0.5rem;
max-height: 3.6rem;
}
.mat-card { .mat-card {
padding: 0 !important; padding: 0 !important;
overflow: hidden; overflow: hidden;
@ -653,6 +647,11 @@ body {
padding: 0 1.4rem 0 0.4rem; padding: 0 1.4rem 0 0.4rem;
} }
.mat-flat-button {
width: 100%;
margin-top: 0.5rem;
max-height: 3.6rem;
}
} }
.op-image{ .op-image{

Loading…
Cancel
Save