Responsive fixes

Responsive fixes
pull/260/head
Shahana Farooqui 4 years ago
parent 1c372a8554
commit 0d496f8175

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="16x16" href="assets/images/favicon/favicon-16x16.png">
<link rel="manifest" href="assets/images/favicon/site.webmanifest">
<link rel="stylesheet" href="styles.827667a8b89989da4050.css"></head>
<link rel="stylesheet" href="styles.846fe30b50aae35fd2ff.css"></head>
<body>
<rtl-app></rtl-app>
<script src="runtime.6a515545e0365c8b17e5.js"></script><script src="polyfills-es5.2e75d230d7f9c760eb2f.js" nomodule></script><script src="polyfills.1ebb102854b0ec478c1b.js"></script><script src="main.b2d9b22a93962013c7ba.js"></script></body>
<script src="runtime.d87b669774606d52be08.js"></script><script src="polyfills-es5.2e75d230d7f9c760eb2f.js" nomodule></script><script src="polyfills.1ebb102854b0ec478c1b.js"></script><script src="main.1c7f7fec7b4b414d9087.js"></script></body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
!function(e){function r(r){for(var n,a,i=r[0],c=r[1],f=r[2],p=0,s=[];p<i.length;p++)o[a=i[p]]&&s.push(o[a][0]),o[a]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(l&&l(r);s.length;)s.shift()();return u.push.apply(u,f||[]),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:"9e71a210a8bdc5ba9df9",6:"55dfc1c099334589c71d",7:"9aa78a1a4cf44c9d414c"}[e]+".js"}(e);var c=new Error;u=function(r){i.onerror=i.onload=null,clearTimeout(f);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 f=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 f=0;f<i.length;f++)r(i[f]);var l=c;t()}([]);

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -25,22 +25,13 @@ exports.getAllChannels = (req, res, next) => {
body.channels.map(channel => {
if (!channel.local_balance && !channel.remote_balance) {
channel.balancedness = 50;
} else if(channel.local_balance && !channel.remote_balance) {
channel.balancedness = 0;
} else if(!channel.local_balance && channel.remote_balance) {
} else if((channel.local_balance || channel.local_balance < 1) && !channel.remote_balance) {
channel.balancedness = 100;
} else if(!channel.local_balance && (channel.remote_balance || channel.remote_balance < 1)) {
channel.balancedness = 0;
} else {
channel.balancedness = (+channel.local_balance/(+channel.remote_balance + +channel.local_balance)) * 100;
}
// if (!channel.local_balance && !channel.remote_balance) {
// channel.balancedness = 0;
// } else if(channel.local_balance && !channel.remote_balance) {
// channel.balancedness = -1;
// } else if(!channel.local_balance && channel.remote_balance) {
// channel.balancedness = 1;
// } else {
// channel.balancedness = ((+channel.remote_balance - +channel.local_balance)/(+channel.remote_balance + +channel.local_balance)).toFixed(10);
// }
return getAliasForChannel(channel);
})
)

@ -31,7 +31,7 @@
<rtl-horizontal-navigation fxLayout="row" fxFlex="100" fxLayoutAlign="start center" class="h-100"></rtl-horizontal-navigation>
</mat-toolbar>
<mat-sidenav-container>
<mat-sidenav perfectScrollbar *ngIf="settings.menu === 'vertical'" [opened]="settings.flgSidenavOpened" [mode]="(settings.flgSidenavPinned) ? 'side' : 'over'" #sideNavigation class="sidenav mat-elevation-z6">
<mat-sidenav perfectScrollbar *ngIf="settings.menu === 'vertical'" [opened]="settings.flgSidenavOpened" [mode]="(settings.flgSidenavPinned && !smallScreen) ? 'side' : 'over'" #sideNavigation class="sidenav mat-elevation-z6">
<rtl-side-navigation (ChildNavClicked)="onNavigationClicked($event)" fxFlex="100"></rtl-side-navigation>
</mat-sidenav>
<mat-sidenav-content perfectScrollbar>

@ -1,46 +1,3 @@
<!-- <div fxLayout="column" fxFlex="100" fxLayoutAlign="start start">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-500">Lightning</h4>
<div class="foreground-secondary-text">{{balances.lightning | number}} (Sats)</div>
</div>
<div fxFlex="24">
<h4 fxLayoutAlign="start" class="font-bold-500">On-chain</h4>
<div class="foreground-secondary-text">{{balances.onchain | number}} (Sats)</div>
</div>
<div fxFlex="43" fxLayoutAlign="start start" style="margin-left: -1.4rem;">
<div *ngIf="flgBalanceUpdated">
<ngx-charts-bar-horizontal
[yAxis]="true"
[showDataLabel]="true"
[tooltipDisabled]="true"
[view]="[360, 80]"
[results]="totalBalances">
</ngx-charts-bar-horizontal>
</div>
</div>
</div> -->
<!-- <div fxLayout="column" fxFlex="40" fxLayoutAlign="start start">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-500">Lightning</h4>
<div class="foreground-secondary-text">{{balances.lightning | number}} (Sats)</div>
</div>
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-500">On-chain</h4>
<div class="foreground-secondary-text">{{balances.onchain | number}} (Sats)</div>
</div>
<div fxFlex="34" fxLayoutAlign="start start"></div>
</div>
<div fxLayout="column" fxFlex="60" fxLayoutAlign="start start">
<div *ngIf="flgBalanceUpdated">
<ngx-charts-bar-vertical
[xAxis]="true"
[showDataLabel]="true"
[tooltipDisabled]="true"
[view]="[190, 240]"
[results]="totalBalances">
</ngx-charts-bar-vertical>
</div>
</div> -->
<div fxLayout="column" fxFlex="40" fxLayoutAlign="start start">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-500">Lightning</h4>

@ -1,36 +1,28 @@
<div fxLayout="column" fxFlex="40" fxLayoutAlign="center start">
<div fxFlex="25">
<div fxLayout="column" fxFlex="50" fxLayoutAlign="center start">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-500">Active</h4>
<div class="foreground-secondary-text"><span class="dot tiny-dot green"></span>{{(channelsStatus.active.channels || 0) | number}}</div>
</div>
<div fxFlex="25">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-500">Pending</h4>
<div class="foreground-secondary-text"><span class="dot tiny-dot yellow"></span>{{(channelsStatus.pending.channels || 0) | number}}</div>
</div>
<div fxFlex="25">
<div fxFlex="34">
<h4 fxLayoutAlign="start" class="font-bold-500">Inactive</h4>
<div class="foreground-secondary-text"><span class="dot tiny-dot red"></span>{{(channelsStatus.inactive.channels || 0) | number}}</div>
</div>
<div fxFlex="25">
<h4 fxLayoutAlign="start" class="font-bold-500">Closed</h4>
<div class="foreground-secondary-text"><span class="dot tiny-dot grey"></span>{{(channelsStatus.closed.channels || 0) | number}}</div>
</div>
</div>
<div fxLayout="column" fxFlex="60" fxLayoutAlign="center start">
<div fxFlex="25">
<div fxLayout="column" fxFlex="50" fxLayoutAlign="center start">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-500">Capacity</h4>
<div class="foreground-secondary-text">{{(channelsStatus.active.capacity || 0) | number}} (Sats)</div>
</div>
<div fxFlex="25">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-500">Capacity</h4>
<div class="foreground-secondary-text">{{(channelsStatus.pending.capacity || 0) | number}} (Sats)</div>
</div>
<div fxFlex="25">
<div fxFlex="34">
<h4 fxLayoutAlign="start" class="font-bold-500">Capacity</h4>
<div class="foreground-secondary-text">{{(channelsStatus.inactive.capacity || 0) | number}} (Sats)</div>
</div>
<div fxFlex="25">
<h4 fxLayoutAlign="start" class="font-bold-500">Capacity</h4>
<div class="foreground-secondary-text">{{(channelsStatus.closed.capacity || 0) | number}} (Sats)</div>
</div>
</div>

@ -98,6 +98,7 @@ export class HomeComponent implements OnInit, OnDestroy {
this.store.select('lnd')
.pipe(takeUntil(this.unSubs[1]))
.subscribe((rtlStore) => {
this.flgLoading = [true, true, true, true, true, true, true, true];
rtlStore.effectErrorsLnd.forEach(effectsErr => {
if (effectsErr.action === 'FetchInfo') {
this.flgLoading[0] = 'error';

@ -1,106 +1,101 @@
<div fxLayout="column" *ngIf="lookupResult">
<mat-list fxLayoutAlign="space-between start">
<mat-list-item fxFlex="30" fxLayoutAlign="start start">Channel Id</mat-list-item>
<mat-list-item fxFlex="68" fxLayoutAlign="start start">{{lookupResult.channel_id}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="space-between start">
<mat-list-item fxFlex="30" fxLayoutAlign="start start">Channel Point</mat-list-item>
<mat-list-item fxFlex="68" fxLayoutAlign="start start" class="word-break">{{lookupResult.chan_point}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="space-between start">
<mat-list-item fxFlex="30" fxLayoutAlign="start start">Last Update</mat-list-item>
<mat-list-item fxFlex="68" fxLayoutAlign="start start">{{lookupResult.last_update_str}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="space-between start">
<mat-list-item fxFlex="30" fxLayoutAlign="start start">Capacity (Sats)</mat-list-item>
<mat-list-item fxFlex="68" fxLayoutAlign="start start">{{lookupResult.capacity | number}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<div fxLayout="column" fxLayoutAlign="space-between start" fxLayout.gt-sm="row wrap" class="mt-1">
<div fxFlex="48">
<mat-card class="custom-card">
<mat-card-header class="bg-primary" fxLayoutAlign="center center">
<mat-card-title class="m-0 pt-2">
<h5 *ngIf="!node1_match">Node 1</h5>
<h5 *ngIf="node1_match">Node 1 (Your Node)</h5>
</mat-card-title>
</mat-card-header>
<mat-card-content class="px-2">
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="100" fxLayoutAlign="start start" class="word-break">{{lookupResult.node1_pub}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Time Lock Delta</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node1_policy.time_lock_delta}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Min HTLC</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node1_policy.min_htlc}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Fee Base Msat</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node1_policy.fee_base_msat}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Fee Rate Milli Msat</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node1_policy.fee_rate_milli_msat}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Disabled</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node1_policy.disabled}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
</mat-card-content>
</mat-card>
<div fxLayout="column" *ngIf="lookupResult" class="mt-1">
<mat-divider></mat-divider>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Channel Id</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.channel_id}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Channel Point</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.chan_point}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="row">
<div fxLayout="column" fxFlex="50" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Last Update</h4>
<span class="foreground-secondary-text">{{lookupResult.last_update_str}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="50" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Capacity (Sats)</h4>
<span class="foreground-secondary-text">{{lookupResult.capacity | number}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
</div>
<div fxLayout="column" fxLayoutAlign="space-between start" fxLayout.gt-sm="row wrap" class="w-100">
<div fxLayout="column" fxFlex="48" fxLayoutAlign="start start" class="mt-1 w-100">
<div fxLayout="row" fxFlex="100" fxLayoutAlign="start end">
<h3 class="page-title font-bold-500" *ngIf="!node1_match">Node 1</h3>
<h3 class="page-title font-bold-500" *ngIf="node1_match">Node 1 (Your Node)</h3>
<mat-divider></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1 w-100">
<h4 fxLayoutAlign="start" class="font-bold-500">Pubkey</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node1_pub}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Time Lock Delta</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node1_policy.time_lock_delta}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Min HTLC</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node1_policy.min_htlc}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Fee Base Msat</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node1_policy.fee_base_msat}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Fee Rate Milli Msat</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node1_policy.fee_rate_milli_msat}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Disabled</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node1_policy.disabled}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
</div>
<div fxFlex="48">
<mat-card class="custom-card">
<mat-card-header class="bg-primary" fxLayoutAlign="center center">
<mat-card-title class="m-0 pt-2">
<h5 *ngIf="!node2_match">Node 2</h5>
<h5 *ngIf="node2_match">Node 2 (Your Node)</h5>
</mat-card-title>
</mat-card-header>
<mat-card-content class="px-2">
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="100" fxLayoutAlign="start start" class="word-break">{{lookupResult.node2_pub}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Time Lock Delta</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node2_policy.time_lock_delta}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Min HTLC</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node2_policy.min_htlc}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Fee Base Msat</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node2_policy.fee_base_msat}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Fee Rate Milli Msat</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node2_policy.fee_rate_milli_msat}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Disabled</mat-list-item>
<mat-list-item fxFlex="50" fxLayoutAlign="start start">{{lookupResult.node2_policy.disabled}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
</mat-card-content>
</mat-card>
<div fxLayout="column" fxFlex="48" fxLayoutAlign="start start" class="mt-1 w-100">
<div fxLayout="row" fxFlex="100" fxLayoutAlign="start end">
<h3 class="page-title font-bold-500" *ngIf="!node2_match">Node 2</h3>
<h3 class="page-title font-bold-500" *ngIf="node2_match">Node 2 (Your Node)</h3>
<mat-divider></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1 w-100">
<h4 fxLayoutAlign="start" class="font-bold-500">Pubkey</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node2_pub}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Time Lock Delta</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node2_policy.time_lock_delta}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Min HTLC</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node2_policy.min_htlc}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Fee Base Msat</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node2_policy.fee_base_msat}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Fee Rate Milli Msat</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node2_policy.fee_rate_milli_msat}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Disabled</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node2_policy.disabled}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
</div>
</div>
</div>

@ -9,7 +9,7 @@ import * as fromRTLReducer from '../../../store/rtl.reducers';
@Component({
selector: 'rtl-channel-lookup',
templateUrl: './channel-lookup.component.html',
styleUrls: ['./channel-lookup.component.css']
styleUrls: ['./channel-lookup.component.scss']
})
export class ChannelLookupComponent implements OnInit {
@Input() lookupResult: ChannelEdge;

@ -1,7 +0,0 @@
.mat-table {
width:99%;
}
.mat-list-base .mat-list-item, .mat-list-base .mat-list-option {
height: 38px !important;
}

@ -1,52 +1,49 @@
<div fxLayout="column" *ngIf="lookupResult">
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Alias</mat-list-item>
<mat-list-item fxFlex="40" fxLayoutAlign="start start">{{lookupResult.node.alias}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Pub Key</mat-list-item>
<mat-list-item fxFlex="40" fxLayoutAlign="start start">{{lookupResult.node.pub_key}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Color</mat-list-item>
<mat-list-item fxFlex="40" fxLayoutAlign="start start"><span [ngStyle]="{'background-color': lookupResult.node?.color}">{{lookupResult.node?.color}}</span></mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Last Update</mat-list-item>
<mat-list-item fxFlex="40" fxLayoutAlign="start start">{{lookupResult.node.last_update_str}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Total Capacity (Sats)</mat-list-item>
<mat-list-item fxFlex="40" fxLayoutAlign="start start">{{lookupResult.total_capacity | number}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayoutAlign="start start">
<mat-list-item fxFlex="50" fxLayoutAlign="start start">Number of Channels</mat-list-item>
<mat-list-item fxFlex="40" fxLayoutAlign="start start">{{lookupResult.num_channels | number}}</mat-list-item>
<mat-divider></mat-divider>
</mat-list>
<mat-list fxLayout="column" fxLayoutAlign="start start">
<mat-divider></mat-divider>
<mat-list-item fxFlex="100" fxLayoutAlign="start start">Addresses</mat-list-item>
<div fxLayout="row" fxLayoutAlign="start center" class="w-100">
<div perfectScrollbar class="table-container" fxFlex="100">
<table mat-table [dataSource]="lookupResult.node.addresses" matSort class="overflow-auto">
<ng-container matColumnDef="network">
<mat-header-cell *matHeaderCellDef mat-sort-header>Network</mat-header-cell>
<mat-cell *matCellDef="let address"><div>{{address?.network}}</div></mat-cell>
</ng-container>
<ng-container matColumnDef="addr">
<mat-header-cell *matHeaderCellDef mat-sort-header>Address</mat-header-cell>
<mat-cell *matCellDef="let address"><div>{{address?.addr}}</div></mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns;"></mat-header-row>
<mat-row fxLayoutAlign="stretch stretch" *matRowDef="let row; columns: displayedColumns;"></mat-row>
</table>
</div>
<div fxLayout="column" *ngIf="lookupResult" class="mt-1">
<mat-divider></mat-divider>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Pub Key</h4>
<span class="foreground-secondary-text w-100">{{lookupResult.node.pub_key}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="row">
<div fxLayout="column" fxFlex="50" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Alias</h4>
<span class="foreground-secondary-text">{{lookupResult.node.alias}}<span class="ml-2" [ngStyle]="{'background-color': lookupResult.node?.color}">{{lookupResult.node?.color}}</span></span>
<mat-divider class="my-1"></mat-divider>
</div>
</mat-list>
<div fxLayout="column" fxFlex="50" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Last Update</h4>
<span class="foreground-secondary-text">{{lookupResult.node.last_update_str}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
</div>
<div fxLayout="row">
<div fxLayout="column" fxFlex="50" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Total Capacity (Sats)</h4>
<span class="foreground-secondary-text">{{lookupResult.total_capacity | number}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
<div fxLayout="column" fxFlex="50" fxLayoutAlign="end start" class="my-1">
<h4 fxLayoutAlign="start" class="font-bold-500">Number of Channels</h4>
<span class="foreground-secondary-text">{{lookupResult.num_channels | number}}</span>
<mat-divider class="my-1"></mat-divider>
</div>
</div>
<div fxLayout="column" fxFlex="100" fxLayoutAlign="start" class="my-1">
<h4 fxFlex="100" fxLayoutAlign="start" class="font-bold-500">Addresses</h4>
<div perfectScrollbar class="table-container mt-2" fxFlex="100">
<table mat-table [dataSource]="lookupResult.node.addresses" matSort class="overflow-auto">
<ng-container matColumnDef="network">
<mat-header-cell *matHeaderCellDef mat-sort-header>Network</mat-header-cell>
<mat-cell *matCellDef="let address"><div>{{address?.network}}</div></mat-cell>
</ng-container>
<ng-container matColumnDef="addr">
<mat-header-cell *matHeaderCellDef mat-sort-header>Address</mat-header-cell>
<mat-cell *matCellDef="let address"><div>{{address?.addr}}</div></mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="displayedColumns;"></mat-header-row>
<mat-row fxLayoutAlign="stretch stretch" *matRowDef="let row; columns: displayedColumns;"></mat-row>
</table>
</div>
</div>
</div>

@ -5,7 +5,7 @@ import { GraphNode } from '../../../shared/models/lndModels';
@Component({
selector: 'rtl-node-lookup',
templateUrl: './node-lookup.component.html',
styleUrls: ['./node-lookup.component.css']
styleUrls: ['./node-lookup.component.scss']
})
export class NodeLookupComponent implements OnInit {
@Input() lookupResult: GraphNode;

@ -4,49 +4,54 @@
<span class="page-title">Network Information</span>
</div>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="start start" class="padding-gap-x">
<mat-card fxLayout="row" fxFlex="100" fxLayoutAlign="start start">
<mat-card fxLayout="column" fxFlex="100" fxLayoutAlign="start start">
<mat-progress-bar *ngIf="flgLoading[1]===true" mode="indeterminate"></mat-progress-bar>
<mat-card-content fxLayout="column" fxFlex="100" fxLayoutAlign="start stretch" class="card-content-gap">
<div fxLayout="row" fxLayoutAlign="start start" fxFlex="100" class="my-2">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-330">Network Capacity</h4>
<mat-card-content fxLayout="column" fxFlex="100" fxLayoutAlign="start stretch" class="card-content-gap w-100">
<div fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start space-between" fxLayoutAlign.gt-sm="start start" fxFlex="100">
<div fxLayout="column" fxFlex="33" fxLayoutAlign="end space-between" class="network-info-block">
<h4 class="font-bold-330">Network Capacity</h4>
<span class="foreground-secondary-text">{{networkInfo.total_network_capacity | number}} Sats</span>
<mat-divider class="mt-1"></mat-divider>
</div>
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-330">Number of Nodes</h4>
<div fxLayout="column" fxFlex="33" fxLayoutAlign="end space-between" class="network-info-block">
<h4 class="font-bold-330">Number of Nodes</h4>
<span class="foreground-secondary-text">{{networkInfo.num_nodes | number}}</span>
<mat-divider class="mt-1"></mat-divider>
</div>
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-330">Number of Channels</h4>
<div fxLayout="column" fxFlex="33" fxLayoutAlign="end space-between" class="network-info-block">
<h4 class="font-bold-330">Number of Channels</h4>
<span class="foreground-secondary-text">{{networkInfo.num_channels | number}}</span>
<mat-divider class="mt-1"></mat-divider>
</div>
<mat-divider fxFlex="100" class="w-100 mt-6"></mat-divider>
</div>
<div fxLayout="row" fxLayoutAlign="start start" fxFlex="100" class="my-2">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-330">Max Channel Size</h4>
<div fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start space-between" fxLayoutAlign.gt-sm="start start" fxFlex="100">
<div fxLayout="column" fxFlex="33" fxLayoutAlign="end space-between" class="network-info-block">
<h4 class="font-bold-330">Max Channel Size</h4>
<span class="foreground-secondary-text">{{networkInfo.max_channel_size | number}}</span>
<mat-divider class="mt-1"></mat-divider>
</div>
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-330">Avg Channel Size</h4>
<div fxLayout="column" fxFlex="33" fxLayoutAlign="end space-between" class="network-info-block">
<h4 class="font-bold-330">Avg Channel Size</h4>
<span class="foreground-secondary-text">{{networkInfo.avg_channel_size | number}}</span>
<mat-divider class="mt-1"></mat-divider>
</div>
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-330">Min Channel Size</h4>
<div fxLayout="column" fxFlex="33" fxLayoutAlign="end space-between" class="network-info-block">
<h4 class="font-bold-330">Min Channel Size</h4>
<span class="foreground-secondary-text">{{networkInfo.min_channel_size | number}}</span>
<mat-divider class="mt-1"></mat-divider>
</div>
<mat-divider fxFlex="100" class="w-100 mt-6"></mat-divider>
</div>
<div fxLayout="row" fxLayoutAlign="start start" fxFlex="100" class="my-2">
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-330">Max Out Degree</h4>
<div fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start space-between" fxLayoutAlign.gt-sm="start start" fxFlex="100">
<div fxLayout="column" fxFlex="33" fxLayoutAlign="end space-between" class="network-info-block">
<h4 class="font-bold-330">Max Out Degree</h4>
<span class="foreground-secondary-text">{{networkInfo.max_out_degree | number}}</span>
<mat-divider class="mt-1"></mat-divider>
</div>
<div fxFlex="33">
<h4 fxLayoutAlign="start" class="font-bold-330">Avg Out Degree</h4>
<div fxLayout="column" fxFlex="33" fxLayoutAlign="end space-between" class="network-info-block">
<h4 class="font-bold-330">Avg Out Degree</h4>
<span class="foreground-secondary-text">{{networkInfo.avg_out_degree | number:'1.0-2'}}</span>
<mat-divider class="mt-1"></mat-divider>
</div>
<mat-divider fxFlex="100" class="w-100 mt-6"></mat-divider>
</div>
</mat-card-content>
</mat-card>

@ -0,0 +1,3 @@
.network-info-block {
padding: 1rem 0;
}

@ -1,6 +1,6 @@
<div fxLayout="column">
<div fxLayout="row" fxLayoutAlign="space-between end" fxLayoutAlign.gt-sm="start end">
<mat-form-field fxFlex="48" fxFlex.gt-md="25" fxLayoutAlign="start end">
<mat-form-field fxFlex="48" fxFlex.gt-md="25" fxLayoutAlign="start end" class="mr-2">
<mat-select [(ngModel)]="selectedAddressType" placeholder="Address Type" name="address_type" tabindex="1">
<mat-option *ngFor="let addressType of addressTypes" [value]="addressType">
{{addressType.addressTp}}

@ -36,7 +36,6 @@ export class OnChainReceiveComponent implements OnInit, OnDestroy {
this.store.dispatch(new RTLActions.OpenAlert({
width: '58%',
data: {
alertTitle: 'Generated Address',
address: this.newAddress,
addressType: this.selectedAddressType.addressTp,
component: OnChainGeneratedAddressComponent

@ -1,4 +1,4 @@
<div fxLayout="column" fxFlex="98" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start" *ngIf="!sweepAll; else sweepAllBlock;" class="overflow-x-hidden">
<div fxLayout="column" fxFlex="98" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start" *ngIf="!sweepAll; else sweepAllBlock;" class="padding-gap overflow-x-hidden">
<mat-form-field fxFlex.gt-sm="55">
<input matInput [(ngModel)]="transaction.address" placeholder="Bitcoin Address" tabindex="1" name="address" #address="ngModel">
</mat-form-field>
@ -39,8 +39,8 @@
</div>
</div>
<ng-template #sweepAllBlock>
<div fxLayout="column" fxFlex="100">
<div fxLayout="column" fxFlex="98" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start" class="overflow-x-hidden">
<div fxLayout="column" fxFlex="100" class="padding-gap overflow-x-hidden">
<div fxLayout="column" fxFlex="98" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start">
<mat-form-field fxFlex.gt-sm="55">
<input matInput [(ngModel)]="transaction.address" placeholder="Bitcoin Address" tabindex="1" name="address" #addressSweep="ngModel">
</mat-form-field>

@ -42,7 +42,7 @@ export class OnChainTransactionHistoryComponent implements OnInit, OnDestroy {
} else if(ss === ScreenSizeEnum.SM || ss === ScreenSizeEnum.MD) {
this.flgSticky = false;
this.displayedColumns = ['time_stamp_str', 'amount', 'num_confirmations', 'actions'];
} else if(ss === ScreenSizeEnum.LG) {
} else {
this.flgSticky = true;
this.displayedColumns = ['time_stamp_str', 'amount', 'num_confirmations', 'actions'];
}

@ -16,7 +16,7 @@
<div fxLayout="column" class="padding-gap-x">
<mat-card>
<mat-card-content fxLayout="column">
<mat-tab-group class="lightning-send-tab">
<mat-tab-group>
<mat-tab label="Send">
<rtl-on-chain-send [sweepAll]="false"></rtl-on-chain-send>
</mat-tab>

@ -1,4 +1,4 @@
<div fxLayout="column" fxFlex="99" class="ml-1">
<div fxLayout="column" fxFlex="100">
<div fxLayout="row" fxLayoutAlign="start center" class="page-sub-title-container">
<div fxFlex="70"></div>
<mat-form-field fxFlex="30">
@ -6,7 +6,7 @@
</mat-form-field>
</div>
<div perfectScrollbar fxLayout="column" fxLayoutAlign="start center" fxFlex="100" class="table-container">
<table mat-table #table [dataSource]="forwardingHistoryEvents" matSort class="overflow-auto">
<table mat-table #table [dataSource]="forwardingHistoryEvents" fxFlex="100" matSort class="overflow-auto">
<ng-container matColumnDef="timestamp">
<th mat-header-cell *matHeaderCellDef mat-sort-header>Timestamp</th>
<td mat-cell *matCellDef="let fhEvent">{{fhEvent.timestamp_str}}</td>

@ -1,10 +1,11 @@
import { Component, OnInit, OnChanges, ViewChild, Input } from '@angular/core';
import { Store } from '@ngrx/store';
import { MatTableDataSource, MatSort, MatPaginator, MatPaginatorIntl } from '@angular/material';
import { ForwardingEvent } from '../../../shared/models/lndModels';
import { PAGE_SIZE, PAGE_SIZE_OPTIONS, getPaginatorLabel, AlertTypeEnum, DataTypeEnum } from '../../../shared/services/consts-enums-functions';
import { PAGE_SIZE, PAGE_SIZE_OPTIONS, getPaginatorLabel, AlertTypeEnum, DataTypeEnum, ScreenSizeEnum } from '../../../shared/services/consts-enums-functions';
import { LoggerService } from '../../../shared/services/logger.service';
import { CommonService } from '../../../shared/services/common.service';
import * as RTLActions from '../../../store/rtl.actions';
import * as fromRTLReducer from '../../../store/rtl.reducers';
@ -27,25 +28,17 @@ export class ForwardingHistoryComponent implements OnInit, OnChanges {
public pageSize = PAGE_SIZE;
public pageSizeOptions = PAGE_SIZE_OPTIONS;
constructor(private logger: LoggerService, private store: Store<fromRTLReducer.RTLState>) {
switch (true) {
case (window.innerWidth <= 415):
this.displayedColumns = ['timestamp', 'fee', 'actions'];
break;
case (window.innerWidth > 415 && window.innerWidth <= 730):
this.displayedColumns = ['timestamp', 'chan_id_in', 'chan_id_out', 'fee', 'actions'];
break;
case (window.innerWidth > 730 && window.innerWidth <= 1024):
this.displayedColumns = ['timestamp', 'chan_id_in', 'chan_id_out', 'fee', 'actions'];
break;
case (window.innerWidth > 1024 && window.innerWidth <= 1280):
this.flgSticky = true;
this.displayedColumns = ['timestamp', 'chan_id_in', 'chan_id_out', 'fee', 'actions'];
break;
default:
this.flgSticky = true;
this.displayedColumns = ['timestamp', 'chan_id_in', 'chan_id_out', 'fee', 'actions'];
break;
constructor(private logger: LoggerService, private commonService: CommonService, private store: Store<fromRTLReducer.RTLState>) {
let ss = this.commonService.getScreenSize();
if(ss === ScreenSizeEnum.XS || ss === ScreenSizeEnum.SM) {
this.flgSticky = false;
this.displayedColumns = ['timestamp', 'fee', 'actions'];
} else if(ss === ScreenSizeEnum.MD) {
this.flgSticky = false;
this.displayedColumns = ['timestamp', 'chan_id_in', 'chan_id_out', 'fee', 'actions'];
} else {
this.flgSticky = true;
this.displayedColumns = ['timestamp', 'chan_id_in', 'chan_id_out', 'fee', 'actions'];
}
}

@ -1,6 +1,5 @@
<div fxLayout="column">
<mat-card fxLayout="column" fxLayoutAlign.gt-sm="space-between start" fxLayoutAlign.lt-md="space-between stretch"
fxLayout.gt-sm="row wrap">
<mat-card fxLayout="column" fxLayoutAlign.gt-sm="space-between start" fxLayoutAlign.lt-md="space-between stretch" fxLayout.gt-sm="row wrap">
<div fxLayout="column" fxFlex="100" fxLayoutAlign="start stretch" class="table-card-content">
<div perfectScrollbar class="table-container">
<table mat-table #tableIn [dataSource]="RoutingPeersIncoming" matSort fxFlex="100" class="overflow-auto incoming-table">
@ -22,21 +21,17 @@
</ng-container>
<ng-container matColumnDef="total_amount">
<th mat-header-cell *matHeaderCellDef mat-sort-header arrowPosition="before">Total Amount (Sats)</th>
<td mat-cell *matCellDef="let rPeer"><span
fxLayoutAlign="end center">{{rPeer.total_amount | number}}</span></td>
<td mat-cell *matCellDef="let rPeer"><span fxLayoutAlign="end center">{{rPeer.total_amount | number}}</span></td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef class="pl-4 pr-3"><span fxLayoutAlign="end center">Actions</span>
</th>
<th mat-header-cell *matHeaderCellDef class="pl-4 pr-3"><span fxLayoutAlign="end center">Actions</span></th>
<td mat-cell *matCellDef="let rPeer" class="pl-4">
<button mat-stroked-button color="primary" type="button" tabindex="4"
(click)="onRoutingPeerClick(rPeer, $event, 'in')">View Info</button>
<button mat-stroked-button color="primary" type="button" tabindex="4" (click)="onRoutingPeerClick(rPeer, $event, 'in')">View Info</button>
</td>
</ng-container>
<ng-container matColumnDef="no_incoming_event">
<td mat-footer-cell *matFooterCellDef colspan="4">
<p *ngIf="!RoutingPeersIncoming.data || RoutingPeersIncoming.data.length<1">No incoming routing peer
available.</p>
<p *ngIf="!RoutingPeersIncoming.data || RoutingPeersIncoming.data.length<1">No incoming routing peer available.</p>
</td>
</ng-container>
<tr mat-footer-row *matFooterRowDef="['no_incoming_event']" [ngClass]="{'display-none': RoutingPeersIncoming.data && RoutingPeersIncoming.data.length>0}"></tr>
@ -68,15 +63,12 @@
</ng-container>
<ng-container matColumnDef="total_amount">
<th mat-header-cell *matHeaderCellDef mat-sort-header arrowPosition="before">Total Amount (Sats)</th>
<td mat-cell *matCellDef="let rPeer"><span
fxLayoutAlign="end center">{{rPeer.total_amount | number}}</span></td>
<td mat-cell *matCellDef="let rPeer"><span fxLayoutAlign="end center">{{rPeer.total_amount | number}}</span></td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef class="pl-4 pr-3"><span fxLayoutAlign="end center">Actions</span>
</th>
<th mat-header-cell *matHeaderCellDef class="pl-4 pr-3"><span fxLayoutAlign="end center">Actions</span></th>
<td mat-cell *matCellDef="let rPeer" class="pl-4">
<button mat-stroked-button color="primary" type="button" tabindex="5"
(click)="onRoutingPeerClick(rPeer, $event, 'out')">View Info</button>
<button mat-stroked-button color="primary" type="button" tabindex="5" (click)="onRoutingPeerClick(rPeer, $event, 'out')">View Info</button>
</td>
</ng-container>
<ng-container matColumnDef="no_outgoing_event">

@ -9,7 +9,7 @@ import { CommonService } from '../../../shared/services/common.service';
import * as RTLActions from '../../../store/rtl.actions';
import * as fromRTLReducer from '../../../store/rtl.reducers';
import { AlertTypeEnum, DataTypeEnum } from '../../../shared/services/consts-enums-functions';
import { AlertTypeEnum, DataTypeEnum, ScreenSizeEnum } from '../../../shared/services/consts-enums-functions';
@Component({
selector: 'rtl-routing-peers',
@ -28,24 +28,19 @@ export class RoutingPeersComponent implements OnInit, OnChanges {
public flgSticky = false;
constructor(private logger: LoggerService, private commonService: CommonService, private store: Store<fromRTLReducer.RTLState>, private actions$: Actions) {
switch (true) {
case (window.innerWidth <= 415):
this.displayedColumns = ['chan_id', 'events', 'total_amount', 'actions'];
break;
case (window.innerWidth > 415 && window.innerWidth <= 730):
this.displayedColumns = ['chan_id', 'events', 'total_amount', 'actions'];
break;
case (window.innerWidth > 730 && window.innerWidth <= 1024):
this.displayedColumns = ['chan_id', 'alias', 'events', 'total_amount', 'actions'];
break;
case (window.innerWidth > 1024 && window.innerWidth <= 1280):
this.flgSticky = true;
this.displayedColumns = ['chan_id', 'alias', 'events', 'total_amount', 'actions'];
break;
default:
this.flgSticky = true;
this.displayedColumns = ['chan_id', 'alias', 'events', 'total_amount', 'actions'];
break;
let ss = this.commonService.getScreenSize();
if(ss === ScreenSizeEnum.XS) {
this.flgSticky = false;
this.displayedColumns = ['chan_id', 'events', 'actions'];
} else if(ss === ScreenSizeEnum.SM) {
this.flgSticky = false;
this.displayedColumns = ['chan_id', 'events', 'total_amount', 'actions'];
} else if(ss === ScreenSizeEnum.MD) {
this.flgSticky = false;
this.displayedColumns = ['chan_id', 'alias', 'events', 'total_amount', 'actions'];
} else {
this.flgSticky = true;
this.displayedColumns = ['chan_id', 'alias', 'events', 'total_amount', 'actions'];
}
}

@ -1,26 +1,24 @@
<div fxLayout="column" fxFlex="100" fxLayoutAlign="space-between stretch">
<form [fxLayout]="showDetails ? 'column' : 'row wrap'" [fxLayoutAlign]="showDetails ? 'space-between stretch' : 'start start'" fxLayout.gt-md="row wrap" fxFlex="100" #addInvoiceForm="ngForm">
<mat-form-field fxFlex="100" fxLayoutAlign="start end">
<div fxLayout="column" fxFlex="100" fxLayoutAlign="space-between stretch" class="padding-gap">
<form [fxLayout]="showDetails ? 'column' : 'row wrap'" [fxLayoutAlign]="showDetails ? 'start stretch' : 'space-between start'" fxLayout.gt-md="row wrap" fxFlex="100" #addInvoiceForm="ngForm">
<mat-form-field fxFlex="100" fxLayoutAlign="end start">
<input matInput [(ngModel)]="memo" placeholder="Memo" tabindex="1" name="memo">
</mat-form-field>
<div fxLayout="column" [fxLayout.gt-sm]="showDetails ? 'row wrap' : 'column'" [fxFlex]="showDetails ? 70 : 100" [fxLayoutAlign.gt-sm]="showDetails ? 'space-between center' : 'start stretch'" fxLayoutAlign="start stretch">
<mat-form-field fxFlex="40" fxLayoutAlign="start end">
<input matInput [(ngModel)]="invoiceValue" (keyup)="onInvoiceValueChange()" placeholder="Amount" type="number" step="100" min="1" tabindex="2" name="invoiceValue">
<span matSuffix> {{information?.smaller_currency_unit}} </span>
<mat-hint>{{invoiceValueHint}}</mat-hint>
</mat-form-field>
<mat-form-field fxFlex="15" fxLayoutAlign="start end" *ngIf="showDetails">
<input matInput [(ngModel)]="expiry" placeholder="Expiry" type="number" step="{{selTimeUnit === timeUnitEnum.SECS ? 300 : selTimeUnit === timeUnitEnum.MINS ? 10 : selTimeUnit === timeUnitEnum.HOURS ? 2 : 1}}" min="1" tabindex="3" name="expiry">
<span matSuffix> {{selTimeUnit | titlecase}} </span>
</mat-form-field>
<mat-form-field fxFlex="15" fxLayoutAlign="start end" *ngIf="showDetails">
<mat-select [value]="selTimeUnit" tabindex="4" required name="timeUnit" (selectionChange)="onTimeUnitChange($event)">
<mat-option *ngFor="let timeUnit of timeUnits" [value]="timeUnit">{{timeUnit | titlecase}}</mat-option>
</mat-select>
</mat-form-field>
<div fxFlex="25" tabindex="4" fxLayoutAlign="start center" *ngIf="showDetails">
<mat-slide-toggle color="primary" [(ngModel)]="private" matTooltip="Include routing hints for private channels" [matTooltipPosition]="'above'" name="private">Private Routing Hints</mat-slide-toggle>
</div>
<mat-form-field fxFlex="30" fxLayoutAlign="start end" [ngClass]="{'mr-2': screenSize === screenSizeEnum.LG}">
<input matInput [(ngModel)]="invoiceValue" (keyup)="onInvoiceValueChange()" placeholder="Amount" type="number" step="100" min="1" tabindex="2" name="invoiceValue">
<span matSuffix> {{information?.smaller_currency_unit}} </span>
<mat-hint>{{invoiceValueHint}}</mat-hint>
</mat-form-field>
<mat-form-field fxFlex="12" fxLayoutAlign="start end" *ngIf="showDetails" [ngClass]="{'mr-2': screenSize === screenSizeEnum.LG}">
<input matInput [(ngModel)]="expiry" placeholder="Expiry" type="number" step="{{selTimeUnit === timeUnitEnum.SECS ? 300 : selTimeUnit === timeUnitEnum.MINS ? 10 : selTimeUnit === timeUnitEnum.HOURS ? 2 : 1}}" min="1" tabindex="3" name="expiry">
<span matSuffix> {{selTimeUnit | titlecase}} </span>
</mat-form-field>
<mat-form-field fxFlex="12" fxLayoutAlign="start end" *ngIf="showDetails" [ngClass]="{'mr-2': screenSize === screenSizeEnum.LG}">
<mat-select [value]="selTimeUnit" tabindex="4" required name="timeUnit" (selectionChange)="onTimeUnitChange($event)">
<mat-option *ngFor="let timeUnit of timeUnits" [value]="timeUnit">{{timeUnit | titlecase}}</mat-option>
</mat-select>
</mat-form-field>
<div fxFlex="20" tabindex="4" fxLayoutAlign="start center" *ngIf="showDetails">
<mat-slide-toggle color="primary" [(ngModel)]="private" matTooltip="Include routing hints for private channels" [matTooltipPosition]="'above'" name="private">Private Routing Hints</mat-slide-toggle>
</div>
<div class="mt-2" fxLayout="row" fxFlex="100" fxLayoutAlign="space-between start" fxLayoutAlign.gt-md="start start" *ngIf="showDetails">
<button fxFlex="48" fxFlex.gt-md="10" fxLayoutAlign="center center" mat-stroked-button color="primary" class="mr-2" tabindex="5" type="reset" (click)="resetData()">Clear Field</button>
@ -70,8 +68,8 @@
<td mat-cell *matCellDef="let invoice" class="pl-4">{{invoice.settle_date_str || '-'}}</td>
</ng-container>
<ng-container matColumnDef="actions">
<th mat-header-cell *matHeaderCellDef class="pr-3"><span fxLayoutAlign="end center">Actions</span></th>
<td mat-cell *matCellDef="let invoice">
<th mat-header-cell *matHeaderCellDef class="pl-3 pr-3"><span fxLayoutAlign="end center">Actions</span></th>
<td mat-cell *matCellDef="let invoice" class="pl-3">
<button mat-stroked-button color="primary" type="button" tabindex="4" (click)="onInvoiceClick(invoice, $event)">View Info</button>
</td>
</ng-container>

@ -6,7 +6,7 @@ import { Store } from '@ngrx/store';
import { faHistory } from '@fortawesome/free-solid-svg-icons';
import { MatTableDataSource, MatSort, MatPaginatorIntl } from '@angular/material';
import { TimeUnitEnum, CurrencyUnitEnum, TIME_UNITS, CURRENCY_UNIT_FORMATS, PAGE_SIZE, PAGE_SIZE_OPTIONS, getPaginatorLabel, AlertTypeEnum, DataTypeEnum } from '../../../shared/services/consts-enums-functions';
import { TimeUnitEnum, CurrencyUnitEnum, TIME_UNITS, CURRENCY_UNIT_FORMATS, PAGE_SIZE, PAGE_SIZE_OPTIONS, getPaginatorLabel, AlertTypeEnum, DataTypeEnum, ScreenSizeEnum } from '../../../shared/services/consts-enums-functions';
import { SelNodeChild } from '../../../shared/models/RTLconfig';
import { GetInfo, Invoice } from '../../../shared/models/lndModels';
import { LoggerService } from '../../../shared/services/logger.service';
@ -54,27 +54,24 @@ export class LightningInvoicesComponent implements OnInit, OnDestroy {
public selTimeUnit = TimeUnitEnum.SECS;
private firstOffset = -1;
private lastOffset = -1;
public screenSize = '';
public screenSizeEnum = ScreenSizeEnum;
private unSubs: Array<Subject<void>> = [new Subject(), new Subject(), new Subject(), new Subject(), new Subject()];
constructor(private logger: LoggerService, private store: Store<fromRTLReducer.RTLState>, private decimalPipe: DecimalPipe, private commonService: CommonService) {
switch (true) {
case (window.innerWidth <= 415):
this.displayedColumns = ['creation_date', 'value', 'actions'];
break;
case (window.innerWidth > 415 && window.innerWidth <= 730):
this.displayedColumns = ['creation_date', 'value', 'settle_date', 'actions'];
break;
case (window.innerWidth > 730 && window.innerWidth <= 1024):
this.displayedColumns = ['creation_date', 'memo', 'value', 'settle_date', 'actions'];
break;
case (window.innerWidth > 1024 && window.innerWidth <= 1280):
this.flgSticky = true;
this.displayedColumns = ['creation_date', 'memo', 'value', 'settle_date', 'actions'];
break;
default:
this.flgSticky = true;
this.displayedColumns = ['creation_date', 'memo', 'value', 'settle_date', 'actions'];
break;
this.screenSize = this.commonService.getScreenSize();
if(this.screenSize === ScreenSizeEnum.XS) {
this.flgSticky = false;
this.displayedColumns = ['creation_date', 'actions'];
} else if(this.screenSize === ScreenSizeEnum.SM) {
this.flgSticky = false;
this.displayedColumns = ['creation_date', 'value', 'actions'];
} else if(this.screenSize === ScreenSizeEnum.MD) {
this.flgSticky = false;
this.displayedColumns = ['creation_date', 'memo', 'value', 'actions'];
} else {
this.flgSticky = true;
this.displayedColumns = ['creation_date', 'memo', 'value', 'settle_date', 'actions'];
}
}

@ -1,4 +1,4 @@
<div fxLayout="column" fxLayoutAlign="space-between stretch">
<div fxLayout="column" fxFlex="100" fxLayoutAlign="space-between stretch" class="padding-gap">
<form fxLayout="column" fxLayoutAlign="space-between stretch" fxLayout.gt-md="row wrap" #sendPaymentForm="ngForm">
<mat-form-field class="w-100">
<input matInput placeholder="Payment Request" name="paymentRequest" [(ngModel)]="paymentRequest" tabindex="1" required #paymentReq="ngModel">
@ -28,9 +28,9 @@
<input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">
</mat-form-field>
</div>
<div perfectScrollbar fxLayout="row" fxLayoutAlign="start center" fxFlex="100" class="table-container">
<div perfectScrollbar fxLayout="row" fxLayoutAlign="start center" fxFlex="100" class="table-container w-100">
<mat-progress-bar *ngIf="flgLoading[0]===true" mode="indeterminate"></mat-progress-bar>
<table mat-table #table [dataSource]="payments" matSort [ngClass]="{'overflow-auto error-border': flgLoading[0]==='error','overflow-auto': true}">
<table mat-table #table fxFlex="100" [dataSource]="payments" matSort [ngClass]="{'overflow-auto error-border': flgLoading[0]==='error','overflow-auto': true}">
<ng-container matColumnDef="creation_date">
<th mat-header-cell *matHeaderCellDef mat-sort-header>Creation Date</th>
<td mat-cell *matCellDef="let payment">{{payment?.creation_date_str}}</td>

@ -6,8 +6,9 @@ import { faHistory } from '@fortawesome/free-solid-svg-icons';
import { MatTableDataSource, MatSort, MatPaginator, MatPaginatorIntl } from '@angular/material';
import { GetInfo, Payment, PayRequest } from '../../../shared/models/lndModels';
import { PAGE_SIZE, PAGE_SIZE_OPTIONS, getPaginatorLabel, AlertTypeEnum, DataTypeEnum } from '../../../shared/services/consts-enums-functions';
import { PAGE_SIZE, PAGE_SIZE_OPTIONS, getPaginatorLabel, AlertTypeEnum, DataTypeEnum, ScreenSizeEnum } from '../../../shared/services/consts-enums-functions';
import { LoggerService } from '../../../shared/services/logger.service';
import { CommonService } from '../../../shared/services/common.service';
import { newlyAddedRowAnimation } from '../../../shared/animation/row-animation';
import { LNDEffects } from '../../store/lnd.effects';
@ -44,25 +45,20 @@ export class LightningPaymentsComponent implements OnInit, OnDestroy {
public pageSizeOptions = PAGE_SIZE_OPTIONS;
private unsub: Array<Subject<void>> = [new Subject(), new Subject(), new Subject(), new Subject()];
constructor(private logger: LoggerService, private store: Store<fromRTLReducer.RTLState>, private rtlEffects: RTLEffects, private lndEffects: LNDEffects) {
switch (true) {
case (window.innerWidth <= 415):
this.displayedColumns = ['creation_date', 'fee', 'value', 'actions'];
break;
case (window.innerWidth > 415 && window.innerWidth <= 730):
this.displayedColumns = ['creation_date', 'payment_hash', 'fee', 'value', 'path', 'actions'];
break;
case (window.innerWidth > 730 && window.innerWidth <= 1024):
this.displayedColumns = ['creation_date', 'payment_hash', 'fee', 'value', 'path', 'actions'];
break;
case (window.innerWidth > 1024 && window.innerWidth <= 1280):
this.flgSticky = true;
this.displayedColumns = ['creation_date', 'payment_hash', 'fee', 'value', 'path', 'actions'];
break;
default:
this.flgSticky = true;
this.displayedColumns = ['creation_date', 'payment_hash', 'fee', 'value', 'path', 'actions'];
break;
constructor(private logger: LoggerService, private commonService: CommonService, private store: Store<fromRTLReducer.RTLState>, private rtlEffects: RTLEffects, private lndEffects: LNDEffects) {
let ss = this.commonService.getScreenSize();
if(ss === ScreenSizeEnum.XS) {
this.flgSticky = false;
this.displayedColumns = ['creation_date', 'value', 'actions'];
} else if(ss === ScreenSizeEnum.SM) {
this.flgSticky = false;
this.displayedColumns = ['creation_date', 'fee', 'value', 'actions'];
} else if(ss === ScreenSizeEnum.MD) {
this.flgSticky = false;
this.displayedColumns = ['creation_date', 'fee', 'value', 'path', 'actions'];
} else {
this.flgSticky = true;
this.displayedColumns = ['creation_date', 'payment_hash', 'fee', 'value', 'path', 'actions'];
}
}

@ -1,12 +1,12 @@
<div fxLayout="column">
<div fxLayout="column" fxFlex="100" class="padding-gap">
<form fxLayout="column" fxLayoutAlign="space-between stretch" fxLayout.gt-md="row wrap" (ngSubmit)="queryRoutesForm.form.valid && onQueryRoutes()" #queryRoutesForm="ngForm">
<mat-form-field fxFlex="50" fxLayoutAlign="start end">
<mat-form-field fxFlex="49" fxLayoutAlign="start end">
<input matInput placeholder="Destination Pubkey" name="destinationPubkey" [(ngModel)]="destinationPubkey" tabindex="1" required #destPubkey="ngModel">
</mat-form-field>
<mat-form-field fxFlex="20" fxLayoutAlign="start end">
<mat-form-field fxFlex="19" fxLayoutAlign="start end">
<input matInput placeholder="Amount (Sats)" name="amount" [(ngModel)]="amount" tabindex="2" type="number" step="1000" min="0" required #destAmount="ngModel">
</mat-form-field>
<div fxFlex="30" fxLayoutAlign="space-between start">
<div fxFlex="29" fxLayoutAlign="space-between start">
<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" [disabled]="destPubkey.invalid || destAmount.invalid" type="submit" tabindex="4">
<p *ngIf="(destPubkey.invalid && (destPubkey.dirty || destPubkey.touched) || (destAmount.invalid && (destAmount.dirty || destAmount.touched))); else queryText">Invalid Pubkey/Amount</p>

@ -4,13 +4,14 @@ import { takeUntil } from 'rxjs/operators';
import { Store } from '@ngrx/store';
import { faRoute } from '@fortawesome/free-solid-svg-icons';
import { CommonService } from '../../../shared/services/common.service';
import { MatTableDataSource, MatSort } from '@angular/material';
import { Hop } from '../../../shared/models/lndModels';
import { LNDEffects } from '../../store/lnd.effects';
import * as RTLActions from '../../../store/rtl.actions';
import * as fromRTLReducer from '../../../store/rtl.reducers';
import { AlertTypeEnum, DataTypeEnum } from '../../../shared/services/consts-enums-functions';
import { AlertTypeEnum, DataTypeEnum, ScreenSizeEnum } from '../../../shared/services/consts-enums-functions';
@Component({
selector: 'rtl-query-routes',
@ -26,28 +27,23 @@ export class QueryRoutesComponent implements OnInit, OnDestroy {
public displayedColumns = [];
public flgLoading: Array<Boolean | 'error'> = [false]; // 0: peers
public faRoute = faRoute;
// public faRoad = faRoad;
public screenSize = '';
private unSubs: Array<Subject<void>> = [new Subject(), new Subject()];
constructor(private store: Store<fromRTLReducer.RTLState>, private lndEffects: LNDEffects) {
switch (true) {
case (window.innerWidth <= 415):
this.displayedColumns = ['hop_sequence', 'pubkey_alias', 'fee_msat', 'actions'];
break;
case (window.innerWidth > 415 && window.innerWidth <= 730):
this.displayedColumns = ['hop_sequence', 'pubkey_alias', 'fee_msat', 'actions'];
break;
case (window.innerWidth > 730 && window.innerWidth <= 1024):
this.displayedColumns = ['hop_sequence', 'pubkey_alias', 'chan_capacity', 'amt_to_forward_msat', 'fee_msat', 'actions'];
break;
case (window.innerWidth > 1024 && window.innerWidth <= 1280):
this.flgSticky = true;
this.displayedColumns = ['hop_sequence', 'pubkey_alias', 'chan_capacity', 'amt_to_forward_msat', 'fee_msat', 'actions'];
break;
default:
this.flgSticky = true;
this.displayedColumns = ['hop_sequence', 'pubkey_alias', 'chan_capacity', 'amt_to_forward_msat', 'fee_msat', 'actions'];
break;
constructor(private store: Store<fromRTLReducer.RTLState>, private lndEffects: LNDEffects, private commonService: CommonService) {
this.screenSize = this.commonService.getScreenSize();
if(this.screenSize === ScreenSizeEnum.XS) {
this.flgSticky = false;
this.displayedColumns = ['pubkey_alias', 'actions'];
} else if(this.screenSize === ScreenSizeEnum.SM) {
this.flgSticky = false;
this.displayedColumns = ['hop_sequence', 'pubkey_alias', 'fee_msat', 'actions'];
} else if(this.screenSize === ScreenSizeEnum.MD) {
this.flgSticky = false;
this.displayedColumns = ['hop_sequence', 'pubkey_alias', 'chan_capacity', 'amt_to_forward_msat', 'fee_msat', 'actions'];
} else {
this.flgSticky = true;
this.displayedColumns = ['hop_sequence', 'pubkey_alias', 'chan_capacity', 'amt_to_forward_msat', 'fee_msat', 'actions'];
}
}

@ -2,21 +2,21 @@
<div *ngIf="insecureLND && !warnRes">
<form fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between" class="mt-2">
<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 fxLayout="column" fxFlex.gt-sm="30" fxLayout.gt-sm="row wrap" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between center" 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 mat-raised-button fxFlex="48" color="primary" type="submit" (click)="proceed=true;warnRes=true" tabindex="2">Proceed</button>
</div>
</form>
</div>
<div *ngIf="warnRes && !proceed" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between">
<div *ngIf="warnRes && !proceed" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="stretch stretch">
<div fxFlex="100" class="mt-2">Please re-configure & re-start RTL after securing your LND connction. You can close this window now.</div>
<div fxLayout="column" fxFlex.gt-sm="20" fxLayout.gt-sm="row wrap" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between center" class="mt-2">
<button fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="warnRes=false">Go Back</button>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="mt-2">
<button fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="3" type="reset" (click)="warnRes=false">Go Back</button>
</div>
</div>
<mat-vertical-stepper *ngIf="(!insecureLND || (warnRes && proceed)) && genSeedResponse.length <= 0 && initWalletResponse === ''" [linear]="true" #stepper>
<mat-step [stepControl]="passwordFormGroup" label="Wallet Password" state="password">
<form [formGroup]="passwordFormGroup" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between">
<form [formGroup]="passwordFormGroup" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between" class="mt-1">
<mat-form-field fxFlex="49" fxLayoutAlign="start">
<input matInput type="password" placeholder="Password" name="initWalletPassword" formControlName="initWalletPassword" tabindex="5" required>
<mat-hint>Enter Wallet Password</mat-hint>
@ -25,8 +25,8 @@
<input matInput type="password" placeholder="Confirm Password" name="initWalletConfirmPassword" formControlName="initWalletConfirmPassword" tabindex="6" required>
<mat-hint>Confirm Wallet Password</mat-hint>
</mat-form-field>
<div fxLayout="column" fxFlex.gt-sm="20" fxLayout.gt-sm="row wrap" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between center" class="my-2">
<button mat-raised-button color="primary" fxFlex="10" [disabled]="!passwordFormGroup.valid" tabindex="7" type="submit" matStepperNext>Next</button>
<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" [disabled]="!passwordFormGroup.valid" tabindex="7" type="submit" matStepperNext>Next</button>
</div>
<div *ngIf="passwordFormGroup.controls.initWalletPassword.errors?.minlength && (passwordFormGroup.controls.initWalletPassword.touched || passwordFormGroup.controls.initWalletPassword.dirty)" class="validation-error-message">
<mat-icon class="validation-error-icon red">cancel</mat-icon>Password must be at least 8 characters in length.
@ -37,17 +37,17 @@
</form>
</mat-step>
<mat-step [stepControl]="cipherFormGroup" label="Cipher" state="cipher">
<form [formGroup]="cipherFormGroup" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between">
<div fxFlex="100" fxLayoutAlign="space-between center">
<form [formGroup]="cipherFormGroup" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start" class="mt-1">
<div fxFlex="100" fxLayout="column" fxLayoutAlign="start stretch">
<mat-slide-toggle [labelPosition]="'before'" fxFlex="20" tabindex="8" color="primary" class="chkbox-wallet" formControlName="existingCipher" name="existingCipher">Existing Cipher</mat-slide-toggle>
<mat-form-field fxFlex="75" fxLayoutAlign="start">
<input matInput type="input" placeholder="Comma separated array of 24 words cipher seed" name="cipherSeed" formControlName="cipherSeed" tabindex="9" required>
<mat-hint>Cipher Seed</mat-hint>
</mat-form-field>
</div>
<div fxLayout="column" fxFlex.gt-sm="30" fxLayout.gt-sm="row wrap" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between center" class="my-2">
<button mat-stroked-button color="primary" fxFlex="48" type="reset" tabindex="10" matStepperPrevious>Back</button>
<button mat-raised-button color="primary" fxFlex="48" [disabled]="!cipherFormGroup.valid" tabindex="11" type="submit" matStepperNext>Next</button>
<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-raised-button color="primary" fxFlex="48" [disabled]="!cipherFormGroup.valid" tabindex="11" type="submit" matStepperNext class="mt-1">Next</button>
</div>
<div *ngIf="cipherFormGroup.errors?.invalidCipher && cipherFormGroup.controls.existingCipher.value && (cipherFormGroup.controls.cipherSeed.touched || cipherFormGroup.controls.cipherSeed.dirty)" class="validation-error-message">
<mat-icon class="validation-error-icon red">cancel</mat-icon>Invalid Cipher. Enter comma separated 24 words cipher seed.
@ -55,18 +55,18 @@
</form>
</mat-step>
<mat-step [stepControl]="passphraseFormGroup" label="Passphrase" state="passphrase">
<form [formGroup]="passphraseFormGroup" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between">
<div fxFlex="100" fxLayoutAlign="space-between center">
<form [formGroup]="passphraseFormGroup" fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start stretch" fxLayoutAlign.gt-sm="space-between start" class="mt-1">
<div fxFlex="100" fxLayout="column" fxLayoutAlign="start stretch">
<mat-slide-toggle [labelPosition]="'before'" fxFlex="20" tabindex="10" color="primary" class="chkbox-wallet" formControlName="enterPassphrase" name="enterPassphrase">Existing Passphrase</mat-slide-toggle>
<mat-form-field fxFlex="75" fxLayoutAlign="start">
<input matInput type="input" type="password" placeholder="Passphrase" name="passphrase" formControlName="passphrase" tabindex="12" required>
<mat-hint>Enter Passphrase</mat-hint>
</mat-form-field>
</div>
<div fxLayout="column" fxFlex.gt-sm="40" fxLayout.gt-sm="row wrap" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between center" class="my-2">
<button fxFlex="32" fxLayoutAlign="center center" mat-stroked-button color="warn" tabindex="13" type="reset" (click)="resetData()">Clear</button>
<button mat-stroked-button fxFlex="32" tabindex="14" color="primary" type="button" matStepperPrevious>Back</button>
<button mat-raised-button fxFlex="32" color="primary" [disabled]="!passphraseFormGroup.valid" (click)="onInitWallet()" tabindex="15" type="submit">Initialize Wallet</button>
<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 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" [disabled]="!passphraseFormGroup.valid" (click)="onInitWallet()" tabindex="15" type="submit" class="mt-1">Initialize Wallet</button>
</div>
</form>
</mat-step>
@ -89,16 +89,16 @@
<div fxFlex="100" fxLayoutAlign="start" class="mt-2">Wallet initialization 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">Click continue only after writing down the seed.</div>
<div fxLayout="column" fxFlex.gt-sm="20" fxLayout.gt-sm="row wrap" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between center" class="mt-2">
<button mat-raised-button color="primary" type="submit" (click)="onGoToHome()" tabindex="16">Go To Home</button>
<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>
</div>
</form>
</div>
<div *ngIf="genSeedResponse.length > 0 && initWalletResponse === ''">
<form fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between" class="mt-2">
<div fxFlex="100" fxLayoutAlign="start" class="mt-2">Something went wrong! Unable to initialize wallet!</div>
<div fxLayout="column" fxFlex.gt-sm="20" fxLayout.gt-sm="row wrap" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between center" class="mt-2">
<button fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="17" type="reset" (click)="resetData()">Restart</button>
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center" class="mt-2">
<button fxFlex="100" fxFlex.gt-xs="50" fxFlex.gt-md="25" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="17" type="reset" (click)="resetData()">Restart</button>
</div>
</form>
</div>
@ -106,8 +106,8 @@
<form fxLayout="column" fxLayout.gt-sm="row wrap" fxLayoutAlign="start" fxLayoutAlign.gt-sm="space-between" class="mt-2">
<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 fxLayout="column" fxFlex.gt-sm="20" fxLayout.gt-sm="row wrap" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between center" class="mt-2">
<button mat-raised-button color="primary" type="submit" (click)="onGoToHome()" tabindex="18">Go To Home</button>
<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>
</div>
</form>
</div>

@ -4,7 +4,7 @@
<input matInput type="password" placeholder="Password" name="walletPassword" [(ngModel)]="walletPassword" tabindex="1" required>
<mat-hint>Enter Wallet Password</mat-hint>
</mat-form-field>
<div fxLayout="column" fxFlex.gt-sm="30" fxLayout.gt-sm="row wrap" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between center" class="mt-2">
<div fxLayout="row" fxFlex="100" fxFlex.gt-sm="35" fxLayoutAlign="space-between start" class="mt-2">
<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" [disabled]="walletPassword == ''" (click)="onUnlockWallet()" tabindex="3">Unlock Wallet</button>
</div>

@ -88,10 +88,6 @@ export class AppSettingsComponent implements OnInit, OnDestroy {
}
toggleSettings(toggleField: string, event?: any) {
if (toggleField === 'satsToBTC') {
this.store.dispatch(new RTLActions.SetChildNodeSettings({userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, satsToBTC: this.selNode.settings.satsToBTC, selCurrencyUnit: this.selNode.settings.currencyUnit, currencyUnits: this.selNode.settings.currencyUnits}));
this.store.dispatch(new RTLActions.SetChildNodeSettingsCL({userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, satsToBTC: this.selNode.settings.satsToBTC, selCurrencyUnit: this.selNode.settings.currencyUnit, currencyUnits: this.selNode.settings.currencyUnits}));
}
if(toggleField === 'menu') {
this.selNode.settings.flgSidenavOpened = (!event.checked) ? false : true;
setTimeout(() => {
@ -119,6 +115,8 @@ export class AppSettingsComponent implements OnInit, OnDestroy {
this.logger.info(this.selNode.settings);
this.store.dispatch(new RTLActions.OpenSpinner('Updating Settings...'));
this.store.dispatch(new RTLActions.SaveSettings({settings: this.selNode.settings, defaultNodeIndex: defaultNodeIndex}));
this.store.dispatch(new RTLActions.SetChildNodeSettings({userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, satsToBTC: this.selNode.settings.satsToBTC, selCurrencyUnit: this.selNode.settings.currencyUnit, currencyUnits: this.selNode.settings.currencyUnits}));
this.store.dispatch(new RTLActions.SetChildNodeSettingsCL({userPersona: this.selNode.settings.userPersona, channelBackupPath: this.selNode.settings.channelBackupPath, satsToBTC: this.selNode.settings.satsToBTC, selCurrencyUnit: this.selNode.settings.currencyUnit, currencyUnits: this.selNode.settings.currencyUnits}));
this.done.emit();
}

@ -1,9 +1,11 @@
import { Component, Input, OnInit, OnDestroy } from '@angular/core';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { Store } from '@ngrx/store';
import { CurrencyUnitEnum, CURRENCY_UNIT_FORMATS } from '../../services/consts-enums-functions';
import { CommonService } from '../../services/common.service';
import * as fromRTLReducer from '../../../store/rtl.reducers';
@Component({
selector: 'rtl-currency-unit-converter',
@ -15,7 +17,7 @@ export class CurrencyUnitConverterComponent implements OnInit, OnDestroy {
public currencyUnitFormats = CURRENCY_UNIT_FORMATS;
private _values: Array<any>;
private _currencyUnits = [];
private unSubs = [new Subject()];
private unSubs = [new Subject(), new Subject()];
get values(): Array<any> { return this._values; }
get currencyUnits(): Array<any> { return this._currencyUnits; }
@Input() set values(data: Array<any>) {
@ -31,11 +33,21 @@ export class CurrencyUnitConverterComponent implements OnInit, OnDestroy {
}
}
constructor(public commonService: CommonService) {}
constructor(public commonService: CommonService, private store: Store<fromRTLReducer.RTLState>) {}
ngOnInit() {}
ngOnInit() {
this.store.select('root')
.pipe(takeUntil(this.unSubs[1]))
.subscribe((rtlStore) => {
this.currencyUnits = rtlStore.selNode.settings.currencyUnits;
if(this.currencyUnits.length > 2 && this.values[0].dataValue >= 0) {
this.getCurrencyValues(this._values);
}
});
}
getCurrencyValues(values) {
console.warn('GETTING VALUES: ' + this.currencyUnits[2]);
values.forEach(value => {
if(value.dataValue > 0) {
this.commonService.convertCurrency(value.dataValue, CurrencyUnitEnum.SATS, this.currencyUnits[2])

@ -1,12 +1,12 @@
<div fxLayout="row">
<div fxFlex="35" fxLayoutAlign="center start" class="modal-qr-code-container padding-gap-large">
<qrcode [qrdata]="invoice.payment_request" [size]="230" [level]="'L'" [allowEmptyString]="true" class="qr-border"></qrcode>
<qrcode [qrdata]="invoice.payment_request" [size]="qrWidth" [level]="'L'" [allowEmptyString]="true" [ngClass]="{'qr-border': screenSize !== screenSizeEnum.XS, 'qr-thin-border': screenSize === screenSizeEnum.XS}"></qrcode>
</div>
<div fxFlex="65" class="padding-gap-large">
<mat-card-header fxLayout="row" fxLayoutAlign="space-between center" class="modal-info-header mb-2">
<div fxFlex="95" fxLayoutAlign="start start">
<fa-icon [icon]="faReceipt" class="page-title-img mr-1"></fa-icon>
<span class="page-title">{{newlyAdded ? 'Invoice Created' : 'Invoice Information'}}</span>
<span class="page-title">{{screenSize === screenSizeEnum.XS ? (newlyAdded ? 'Created' : 'Invoice') : (newlyAdded ? 'Invoice Created' : 'Invoice Information')}}</span>
</div>
<button tabindex="3" fxFlex="5" fxLayoutAlign="center" class="btn-close-x p-0" (click)="onClose()" mat-button>X</button>
</mat-card-header>
@ -14,7 +14,7 @@
<div fxLayout="column">
<div fxLayout="row">
<div fxFlex="50">
<h4 fxLayoutAlign="start" class="font-bold-500">Amount Requested</h4>
<h4 fxLayoutAlign="start" class="font-bold-500">{{screenSize === screenSizeEnum.XS ? 'Amount' : 'Amount Requested'}}</h4>
<span class="foreground-secondary-text">{{(invoice.value || 0) | number}} Sats<ng-container *ngIf="!invoice.value"> (Open Amount) </ng-container></span>
</div>
<div fxFlex="50">
@ -72,12 +72,12 @@
</div>
<mat-divider class="w-100 my-1"></mat-divider>
</div>
<div [ngClass]="{'mt-2': !showAdvanced, 'mt-1': showAdvanced}" fxLayout="row" fxLayoutAlign="end center">
<button fxFlex="25" fxLayoutAlign="center center" mat-stroked-button color="primary" type="reset" (click)="onShowAdvanced()" tabindex="1" class="mr-2">
<div [ngClass]="{'mt-2': !showAdvanced, 'mt-1': showAdvanced}" fxLayout="row" fxLayoutAlign="end center" fxFlex="100">
<button fxFlex="50" fxFlex.gt-sm="25" fxLayoutAlign="center center" mat-stroked-button color="primary" type="reset" (click)="onShowAdvanced()" tabindex="1" class="mr-2">
<p *ngIf="!showAdvanced; else hideAdvancedText">Show Advanced</p>
<ng-template #hideAdvancedText><p>Hide Advanced</p></ng-template>
</button>
<button autoFocus fxFlex="33" fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="2" type="submit" rtlClipboard [payload]="invoice.payment_request" (copied)="onCopyPayment($event)">Copy Payment Request</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>
</div>
</div>
</mat-card-content>

@ -4,8 +4,10 @@ import { faReceipt } from '@fortawesome/free-solid-svg-icons';
import { MatSnackBar } from '@angular/material/snack-bar';
import { LoggerService } from '../../../services/logger.service';
import { CommonService } from '../../../services/common.service';
import { InvoiceInformation } from '../../../models/alertData';
import { Invoice } from '../../../models/lndModels';
import { ScreenSizeEnum } from '../../../services/consts-enums-functions';
@Component({
selector: 'rtl-invoice-information',
@ -17,12 +19,23 @@ export class InvoiceInformationComponent implements OnInit {
public showAdvanced = false;
public newlyAdded = false;
public invoice: Invoice;
public qrWidth = 210;
public screenSize = '';
public screenSizeEnum = ScreenSizeEnum;
constructor(public dialogRef: MatDialogRef<InvoiceInformationComponent>, @Inject(MAT_DIALOG_DATA) public data: InvoiceInformation, private logger: LoggerService, private snackBar: MatSnackBar) { }
constructor(public dialogRef: MatDialogRef<InvoiceInformationComponent>, @Inject(MAT_DIALOG_DATA) public data: InvoiceInformation, private logger: LoggerService, private commonService: CommonService, private snackBar: MatSnackBar) { }
ngOnInit() {
this.invoice = this.data.invoice;
this.newlyAdded = this.data.newlyAdded;
this.screenSize = this.commonService.getScreenSize();
if(this.screenSize === ScreenSizeEnum.XS) {
this.qrWidth = 120;
} else if(this.screenSize === ScreenSizeEnum.SM) {
this.qrWidth = 200;
} else if(this.screenSize === ScreenSizeEnum.MD) {
this.qrWidth = 240;
}
}
onClose() {

@ -1,12 +1,12 @@
<div fxLayout="row">
<div fxFlex="35" fxLayoutAlign="center start" class="modal-qr-code-container padding-gap-large">
<qrcode [qrdata]="address" [size]="230" [level]="'L'" [allowEmptyString]="true" class="qr-border"></qrcode>
<qrcode [qrdata]="address" [size]="qrWidth" [level]="'L'" [allowEmptyString]="true" class="qr-border"></qrcode>
</div>
<div fxFlex="65" class="padding-gap-large">
<mat-card-header fxLayout="row" fxLayoutAlign="space-between center" class="modal-info-header mb-2">
<div fxFlex="95" fxLayoutAlign="start start">
<fa-icon [icon]="faReceipt" class="page-title-img mr-1"></fa-icon>
<span class="page-title">{{data.alertTitle}}</span>
<span class="page-title">{{screenSize === screenSizeEnum.XS ? 'Address' : 'Generated Address'}}</span>
</div>
<button tabindex="2" fxFlex="5" fxLayoutAlign="center" class="btn-close-x p-0" (click)="onClose()" mat-button>X</button>
</mat-card-header>
@ -27,7 +27,7 @@
</div>
<mat-divider class="w-100 my-1"></mat-divider>
<div class="mt-2" fxLayout="row" fxLayoutAlign="end center">
<button autoFocus fxFlex="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-raised-button color="primary" tabindex="1" type="submit" rtlClipboard [payload]="address" (copied)="onCopyAddress($event)">Copy Address</button>
</div>
</div>
</mat-card-content>

@ -3,8 +3,10 @@ import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
import { faReceipt } from '@fortawesome/free-solid-svg-icons';
import { MatSnackBar } from '@angular/material/snack-bar';
import { CommonService } from '../../../services/common.service';
import { LoggerService } from '../../../services/logger.service';
import { OnChainAddressInformation } from '../../../models/alertData';
import { ScreenSizeEnum } from '../../../services/consts-enums-functions';
@Component({
selector: 'rtl-on-chain-generated-address',
@ -15,12 +17,23 @@ export class OnChainGeneratedAddressComponent implements OnInit {
public faReceipt = faReceipt;
public address = '';
public addressType = '';
public qrWidth = 230;
public screenSize = '';
public screenSizeEnum = ScreenSizeEnum;
constructor(public dialogRef: MatDialogRef<OnChainGeneratedAddressComponent>, @Inject(MAT_DIALOG_DATA) public data: OnChainAddressInformation, private logger: LoggerService, private snackBar: MatSnackBar) { }
constructor(public dialogRef: MatDialogRef<OnChainGeneratedAddressComponent>, @Inject(MAT_DIALOG_DATA) public data: OnChainAddressInformation, private logger: LoggerService, private commonService: CommonService, private snackBar: MatSnackBar) { }
ngOnInit() {
this.address = this.data.address;
this.addressType = this.data.addressType;
this.screenSize = this.commonService.getScreenSize();
if(this.screenSize === ScreenSizeEnum.XS) {
this.qrWidth = 100;
} else if(this.screenSize === ScreenSizeEnum.SM) {
this.qrWidth = 190;
} else if(this.screenSize === ScreenSizeEnum.MD) {
this.qrWidth = 220;
}
}
onClose() {

@ -19,7 +19,7 @@ export class ShowPubkeyComponent implements OnInit {
public information: GetInfoRoot;
public infoTypes = [{infoID: 0, infoKey: 'node pubkey', infoName: 'Node pubkey'}, { infoID: 1, infoKey: 'node URI', infoName: 'Node URI'}];
public selInfoType = this.infoTypes[0];
public qrWidth = 230;
public qrWidth = 210;
public screenSize = '';
constructor(public dialogRef: MatDialogRef<ShowPubkeyComponent>, @Inject(MAT_DIALOG_DATA) public data: ShowPubkeyData, private logger: LoggerService, private snackBar: MatSnackBar, private commonService: CommonService) { }

@ -136,6 +136,7 @@ export class SideNavigationComponent implements OnInit, OnDestroy {
onShowData(node: MenuChildNode) {
this.store.dispatch(new RTLActions.ShowPubkey());
this.ChildNavClicked.emit('showData');
}
onNodeSelectionChange(selNodeValue: LightningNode) {

@ -10,7 +10,6 @@ import { environment } from '../../../environments/environment';
export class CommonService implements OnInit, OnDestroy {
currencyUnits = [];
CurrencyUnitEnum = CurrencyUnitEnum;
unitConversionValue = 0;
containerWidthChanged = new Subject<string>();
conversionData = { data: null, last_fetched: null };
private screenSize = ScreenSizeEnum.MD;
@ -61,7 +60,6 @@ export class CommonService implements OnInit, OnDestroy {
map(data => {
this.conversionData.data = data;
this.conversionData.last_fetched = latest_date;
this.unitConversionValue = this.conversionData.data[otherCurrencyUnit].last;
return this.convert(value, from, otherCurrencyUnit);
}));
}
@ -76,16 +74,16 @@ export class CommonService implements OnInit, OnDestroy {
case CurrencyUnitEnum.SATS:
returnValue[CurrencyUnitEnum.SATS] = value;
returnValue[CurrencyUnitEnum.BTC] = value * 0.00000001;
returnValue[CurrencyUnitEnum.OTHER] = value * 0.00000001 * this.unitConversionValue;
returnValue[CurrencyUnitEnum.OTHER] = value * 0.00000001 * this.conversionData.data[otherCurrencyUnit].last;
break;
case CurrencyUnitEnum.BTC:
returnValue[CurrencyUnitEnum.SATS] = value * 100000000;
returnValue[CurrencyUnitEnum.BTC] = value;
returnValue[CurrencyUnitEnum.OTHER] = value * this.unitConversionValue;
returnValue[CurrencyUnitEnum.OTHER] = value * this.conversionData.data[otherCurrencyUnit].last;
break;
case (CurrencyUnitEnum.OTHER):
returnValue[CurrencyUnitEnum.SATS] = value / this.unitConversionValue * 100000000;
returnValue[CurrencyUnitEnum.BTC] = value / this.unitConversionValue;
returnValue[CurrencyUnitEnum.SATS] = value / this.conversionData.data[otherCurrencyUnit].last * 100000000;
returnValue[CurrencyUnitEnum.BTC] = value / this.conversionData.data[otherCurrencyUnit].last;
returnValue[CurrencyUnitEnum.OTHER] = value;
break;
default:

@ -374,7 +374,7 @@
.balances-info-pie-chart {
& .legend-label:nth-child(1) .legend-label-color {
background-color: mat-color($primary, 400) !important;
background-color: mat-color($primary, 200) !important;
}
& .legend-label:nth-child(2) .legend-label-color {
@ -383,10 +383,10 @@
& .ngx-charts .ng-star-inserted:nth-child(1) {
& .arc {
fill: mat-color($primary, 400);
fill: mat-color($primary, 200);
}
& .arc.active, .arc:hover {
fill: mat-color($primary, 300);
fill: mat-color($primary, 400);
}
}

@ -759,6 +759,10 @@ a {
border: 1.2rem solid white;
}
.qr-thin-border img {
border: .5rem solid white;
}
.pubkey-info-top {
flex-wrap: wrap;
margin-top: 1px;
@ -860,10 +864,8 @@ table {
display: none !important;
}
.lightning-send-tab {
& .mat-tab-body-content {
padding-left: 0.5rem;
}
.mat-vertical-stepper-header {
padding: 1rem !important;
}
.ellipsis-child {

Loading…
Cancel
Save