mirror of
https://github.com/Ride-The-Lightning/RTL.git
synced 2025-02-22 22:25:43 +01:00
pubkey, dark theme, settings
pubkey, dark theme, settings
This commit is contained in:
parent
860e72800e
commit
fabb0dd126
34 changed files with 292 additions and 111 deletions
File diff suppressed because one or more lines are too long
1
angular/6.6380121866d542a838ed.js
Normal file
1
angular/6.6380121866d542a838ed.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
angular/7.c85e0b7a64fe57c94ad8.js
Normal file
1
angular/7.c85e0b7a64fe57c94ad8.js
Normal file
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.10ea0d6f9c4caa3ba27d.css"></head>
|
||||
<link rel="stylesheet" href="styles.84c4f2eeba11b6c3941d.css"></head>
|
||||
<body>
|
||||
<rtl-app></rtl-app>
|
||||
<script src="runtime.900a115b5ee8fedc9bea.js"></script><script src="polyfills-es5.92f4069201c83f4833ef.js" nomodule></script><script src="polyfills.5ddcccdb990eb395f306.js"></script><script src="main.be5448d1824fb41b28d5.js"></script></body>
|
||||
<script src="runtime.26897108a1d8ebca5e43.js"></script><script src="polyfills-es5.92f4069201c83f4833ef.js" nomodule></script><script src="polyfills.5ddcccdb990eb395f306.js"></script><script src="main.608748b3b02cc42e962a.js"></script></body>
|
||||
</html>
|
||||
|
|
1
angular/main.608748b3b02cc42e962a.js
Normal file
1
angular/main.608748b3b02cc42e962a.js
Normal file
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++)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(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:"50859d501eab13ab41b8",6:"244e17a7d7b515a4b924",7:"3c3b40e20ade1c335151"}[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],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:"50859d501eab13ab41b8",6:"6380121866d542a838ed",7:"c85e0b7a64fe57c94ad8"}[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()}([]);
|
File diff suppressed because one or more lines are too long
1
angular/styles.84c4f2eeba11b6c3941d.css
Normal file
1
angular/styles.84c4f2eeba11b6c3941d.css
Normal file
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
|||
<div fxLayout="column" id="rtl-container" class="rtl-container" [ngClass]="[settings.themeColor, settings.themeMode, settings.fontSize]" [class.horizontal]="settings.menu === 'horizontal'" [class.compact]="settings.menuType === 'compact'" [class.mini]="settings.menuType === 'mini'">
|
||||
<mat-toolbar fxLayout="row" fxLayoutAlign="space-between center" class="padding-gap-x bg-primary" *ngIf="settings.menu === 'vertical'">
|
||||
<mat-toolbar fxLayout="row" fxLayoutAlign="space-between center" class="padding-gap-x bg-primary rtl-top-toolbar" *ngIf="settings.menu === 'vertical'">
|
||||
<div fxLayoutAlign="center center">
|
||||
<button *ngIf="settings.menu === 'vertical'" class="top-toolbar-icon" mat-icon-button (click)="sideNavToggle()">
|
||||
<mat-icon>menu</mat-icon>
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
<mat-divider></mat-divider>
|
||||
</mat-card-content>
|
||||
</mat-card>
|
||||
<mat-card fxFlex="100" [ngClass]="{'mt-2 custom-card error-border': flgLoading[5]==='error','mt-2 custom-card': true}">
|
||||
<mat-card fxFlex="100" [ngClass]="{'mt-1 custom-card error-border': flgLoading[5]==='error','mt-1 custom-card': true}">
|
||||
<mat-card-header class="bg-primary" fxLayoutAlign="center center">
|
||||
<mat-card-title class="m-0 pt-2">
|
||||
<h5>Channel Status</h5>
|
||||
|
|
|
@ -144,8 +144,15 @@ export class OnChainSendComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
|
||||
resetData() {
|
||||
this.selTransType = '1';
|
||||
if (this.sweepAll) {
|
||||
this.transaction.address = '';
|
||||
this.transaction.blocks = null;
|
||||
this.transaction.fees = null;
|
||||
} else {
|
||||
this.transaction = {};
|
||||
}
|
||||
}
|
||||
|
||||
onAmountUnitChange(event: any) {
|
||||
let self = this;
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="33" *ngIf="selTransType=='0'">
|
||||
<input matInput placeholder="Channel Opening Priority" disabled>
|
||||
<input matInput placeholder="Default" disabled>
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="33" *ngIf="selTransType=='1'">
|
||||
<input matInput [(ngModel)]="transTypeValue.blocks" placeholder="Target Confirmation Blocks" type="number" name="blocks" step="1" min="0" required tabindex="7" #blocks="ngModel">
|
||||
|
@ -45,7 +45,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div fxLayout="column" fxLayout.gt-sm="row wrap" fxFlex="30" fxLayoutAlign="start start" fxLayoutAlign.gt-sm="space-between start">
|
||||
<button fxFlex="48" fxLayoutAlign="center center" mat-stroked-button color="primary" tabindex="10" type="reset" (click)="resetData()">Clear</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()" [disabled]="selectedPeer === '' || fundingAmount == null || (totalBalance - ((fundingAmount) ? fundingAmount : 0) < 0)" type="submit" tabindex="11">
|
||||
<p *ngIf="(selectedPeer === '' || fundingAmount == null) && (selPeer.touched || selPeer.dirty) && (amount.touched || amount.dirty); else openText">Invalid Values</p>
|
||||
<ng-template #openText><p>Open Channel</p></ng-template>
|
||||
|
|
|
@ -249,7 +249,6 @@ export class ChannelManageComponent implements OnInit, OnDestroy {
|
|||
this.showAdvanced = !this.showAdvanced;
|
||||
if (!this.showAdvanced) {
|
||||
this.spendUnconfirmed = false;
|
||||
this.isPrivate = false;
|
||||
this.selTransType = '0';
|
||||
this.transTypeValue = {blocks: '', fees: ''};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div fxLayout="column">
|
||||
<div fxLayout="column" class="mt-2">
|
||||
<div fxLayout="column" fxLayoutAlign="space-between stretch" fxLayout.gt-md="row wrap">
|
||||
<h4 fxFlex="100" class="blinker">Save your backup files in a redundant location.</h4>
|
||||
<h4 fxFlex="100" class="mt-1">Backup folder location: {{selNode.channelBackupPath}}</h4>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div fxLayout="column">
|
||||
<div fxLayout="row" fxLayoutAlign="start center" class="padding-gap-x page-sub-title-container mt-minus-2">
|
||||
<div fxLayout="row" fxLayoutAlign="start center" class="padding-gap-x page-sub-title-container">
|
||||
<div fxFlex="70"></div>
|
||||
<mat-form-field fxFlex="30">
|
||||
<input matInput (keyup)="applyFilter($event.target.value)" placeholder="Filter">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div fxLayout="column">
|
||||
<div fxLayout="row" fxLayoutAlign="start center" class="padding-gap-x page-sub-title-container mt-minus-2">
|
||||
<div fxLayout="row" fxLayoutAlign="start center" class="padding-gap-x page-sub-title-container">
|
||||
<div fxFlex="70"></div>
|
||||
<mat-form-field fxFlex="30">
|
||||
<input matInput (keyup)="applyFilter()" [(ngModel)]="selFilter" name="filter" placeholder="Filter">
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
<div fxLayout="column">
|
||||
<div fxLayout="column" fxLayoutAlign="space-between stretch" fxLayout.gt-md="row wrap" *ngIf="allRestoreExists">
|
||||
<h4 fxFlex="100" class="mt-1">Restore folder location: {{selNode.channelBackupPath}}/restore</h4>
|
||||
<div fxLayout="column" class="mt-2">
|
||||
<div fxLayout="column" fxLayoutAlign="space-between start" fxLayout.gt-md="row wrap" *ngIf="allRestoreExists">
|
||||
<h4 fxFlex="100">Restore folder location: {{selNode.channelBackupPath}}/restore</h4>
|
||||
<div fxLayout="row" fxFlex.gt-sm="20" fxLayoutAlign="start start" class="mt-2">
|
||||
<button fxLayoutAlign="center center" mat-raised-button color="primary" tabindex="1" (click)="onRestoreChannels({})">Restore All Channels</button>
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayout="column" fxLayoutAlign="space-between stretch" fxLayout.gt-md="row wrap" *ngIf="!allRestoreExists && (!channels || channels.data.length<=0)">
|
||||
<h4 fxFlex="100" class="mt-1">Restore folder location: {{selNode.channelBackupPath}}/restore</h4>
|
||||
<div fxLayout="column" fxLayoutAlign="space-between start" fxLayout.gt-md="row wrap" *ngIf="!allRestoreExists && (!channels || channels.data.length<=0)">
|
||||
<h4 fxFlex="100">Restore folder location: {{selNode.channelBackupPath}}/restore</h4>
|
||||
<h4 fxFlex="100" class="mt-1">All channel backup file not found! To perform channel restoration, channel backup file/s must be placed at the above location.</h4>
|
||||
</div>
|
||||
<div fxLayout="column" fxLayoutAlign="space-between stretch" fxLayout.gt-md="row wrap" *ngIf="!allRestoreExists && channels && channels.data.length && channels.data.length>0">
|
||||
<h4 fxFlex="100" class="mt-1">Restore folder location: {{selNode.channelBackupPath}}/restore</h4>
|
||||
<div fxLayout="column" fxLayoutAlign="space-between start" fxLayout.gt-md="row wrap" *ngIf="!allRestoreExists && channels && channels.data.length && channels.data.length>0">
|
||||
<h4 fxFlex="100">Restore folder location: {{selNode.channelBackupPath}}/restore</h4>
|
||||
</div>
|
||||
<div fxLayout="row" fxLayoutAlign="start center" class="padding-gap-x page-sub-title-container mt-minus-2">
|
||||
<div fxFlex="70"></div>
|
||||
|
|
|
@ -1,20 +1,18 @@
|
|||
<div fxLayout="row">
|
||||
<div class="w-100">
|
||||
<mat-card-header [ngClass]="msgTypeBackground" fxLayoutAlign="end">
|
||||
<h2 fxFlex="91">{{data.type}}</h2>
|
||||
<mat-icon autoFocus fxFlex="3" fxLayoutAlign="end" type="button" (click)="onClose()" class="cursor-pointer" tabindex="1">close</mat-icon>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<div class="pb-2 p-2 wrap-text new-line">
|
||||
<p *ngIf="data.titleMessage" fxLayoutAlign="start center" class="title-message pb-1 pl-1">{{data.titleMessage | titlecase}}</p>
|
||||
<div *ngIf="messageObj?.length>0">
|
||||
<div *ngFor="let obj of messageObj" fxLayout="row" fxLayoutAlign="center flex-start">
|
||||
<div fxFlex="20">{{obj[0] | titlecase}}</div>
|
||||
<div fxFlex="2">:</div>
|
||||
<div fxLayout="column" fxFlex="75">
|
||||
<div *ngIf="isNumber(obj[1], obj[0]);else notNumberTemplate">
|
||||
<span>{{obj[1] | number:'1.0-3'}}</span>
|
||||
<div fxFlex="100" class="padding-gap-large">
|
||||
<mat-card-header fxLayout="row" fxLayoutAlign="space-between center" class="modal-info-header">
|
||||
<div fxFlex="95" fxLayoutAlign="start start">
|
||||
<span class="page-title">{{(data.titleMessage | titlecase) || alertTypeEnum[data.type]}}</span>
|
||||
</div>
|
||||
<button tabindex="8" fxFlex="5" fxLayoutAlign="center" class="btn-close-x p-0" (click)="onClose()" mat-button>X</button>
|
||||
</mat-card-header>
|
||||
<mat-card-content class="mt-5px">
|
||||
<div fxLayout="column">
|
||||
<div *ngIf="messageObj?.length>0">
|
||||
<div *ngFor="let obj of messageObj">
|
||||
<div fxLayout="column" fxFlex="100" fxFlex.gt-md="50">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">{{obj[0] | titlecase}}</h4>
|
||||
<span class="foreground-secondary-text" *ngIf="isNumber(obj[1], obj[0]);else notNumberTemplate">{{obj[1] | number:'1.0-3'}}</span>
|
||||
<ng-template #notNumberTemplate>
|
||||
<span fxFlex="100">{{obj[1]}}
|
||||
<fa-icon *ngIf="showCopyOption(obj[0])" rtlClipboard [payload]="obj[1]" (copied)="copiedText($event)" [icon]="faCopy"></fa-icon>
|
||||
|
@ -24,13 +22,18 @@
|
|||
<qrcode [qrdata]="obj[1]" [size]="120" [level]="'L'" [allowEmptyString]="true" [ngStyle]="{'visibility': (obj[1] === '') ? 'hidden' : 'visible'}" class="qr-border"></qrcode>
|
||||
</div>
|
||||
</ng-template>
|
||||
<mat-divider class="w-100 my-1"></mat-divider>
|
||||
</div>
|
||||
<div fxLayout="column" fxFlex="100" fxFlex.gt-md="50">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">{{obj[0] | titlecase}}</h4>
|
||||
<span class="foreground-secondary-text">{{obj[1]}}</span>
|
||||
<mat-divider class="w-100 my-1"></mat-divider>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-2" 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>
|
||||
</div>
|
||||
<mat-divider class="pb-1"></mat-divider>
|
||||
<div fxLayoutAlign="center">
|
||||
<button mat-raised-button [color]="msgTypeForeground" fxFlex="30" class="mb-1" type="button" [mat-dialog-close]="false" tabindex="2" default>OK</button>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</div>
|
||||
|
|
|
@ -4,6 +4,7 @@ import { faCopy } from '@fortawesome/free-solid-svg-icons';
|
|||
|
||||
import { LoggerService } from '../../../services/logger.service';
|
||||
import { AlertData } from '../../../models/alertData';
|
||||
import { AlertTypeEnum } from '../../../models/enums';
|
||||
|
||||
@Component({
|
||||
selector: 'rtl-alert-message',
|
||||
|
@ -15,7 +16,8 @@ export class AlertMessageComponent implements OnInit {
|
|||
public msgTypeForeground = 'primary';
|
||||
public messageObj = [];
|
||||
public flgCopied = false;
|
||||
faCopy = faCopy;
|
||||
public faCopy = faCopy;
|
||||
public alertTypeEnum = AlertTypeEnum;
|
||||
|
||||
constructor(public dialogRef: MatDialogRef<AlertMessageComponent>, @Inject(MAT_DIALOG_DATA) public data: AlertData, private logger: LoggerService) { }
|
||||
|
||||
|
@ -67,6 +69,7 @@ export class AlertMessageComponent implements OnInit {
|
|||
}
|
||||
// End: To Merge Time Value Again with ':', example Payment Creation Time
|
||||
});
|
||||
console.warn(this.messageObj);
|
||||
}
|
||||
|
||||
showCopyOption(key): boolean {
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
</div>
|
||||
<div fxFlex="50">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">Inbound</h4>
|
||||
<span class="overflow-wrap foreground-secondary-text">{{peer.inbound ? 'Inbound' : 'Outbound'}}</span>
|
||||
<span class="overflow-wrap foreground-secondary-text">{{peer.inbound ? 'True' : 'False'}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -63,7 +63,7 @@
|
|||
</mat-select>
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="25" *ngIf="selTransType=='0'">
|
||||
<input matInput placeholder="Channel Opening Priority" disabled>
|
||||
<input matInput placeholder="Default" disabled>
|
||||
</mat-form-field>
|
||||
<mat-form-field fxFlex="25" *ngIf="selTransType=='1'">
|
||||
<input matInput [(ngModel)]="transTypeValue.blocks" placeholder="Target Confirmation Blocks" type="number" name="blocks" step="1" min="0" required tabindex="3" #blocks="ngModel">
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
<div fxLayout="row">
|
||||
<div fxFlex="35" fxLayoutAlign="center start" class="modal-qr-code-container padding-gap-large">
|
||||
<qrcode [qrdata]="pubkey" [size]="230" [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">Node Pubkey</span>
|
||||
</div>
|
||||
<button tabindex="2" fxFlex="5" fxLayoutAlign="center" class="btn-close-x p-0" (click)="onClose()"
|
||||
mat-button>X</button>
|
||||
</mat-card-header>
|
||||
<mat-card-content>
|
||||
<div fxLayout="column">
|
||||
<div fxLayout="row">
|
||||
<div fxFlex="100">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">Pubkey</h4>
|
||||
<span class="foreground-secondary-text">{{pubkey}}</span>
|
||||
</div>
|
||||
</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]="pubkey" (copied)="onCopyPubkey($event)">Copy Pubkey</button>
|
||||
</div>
|
||||
</div>
|
||||
</mat-card-content>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,25 @@
|
|||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ShowPubkeyComponent } from './show-pubkey.component';
|
||||
|
||||
describe('ShowPubkeyComponent', () => {
|
||||
let component: ShowPubkeyComponent;
|
||||
let fixture: ComponentFixture<ShowPubkeyComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ ShowPubkeyComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(ShowPubkeyComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
|
@ -0,0 +1,33 @@
|
|||
import { Component, OnInit, Inject } from '@angular/core';
|
||||
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
|
||||
import { faReceipt } from '@fortawesome/free-solid-svg-icons';
|
||||
import { MatSnackBar } from '@angular/material/snack-bar';
|
||||
|
||||
import { LoggerService } from '../../../services/logger.service';
|
||||
import { AlertData } from '../../../models/alertData';
|
||||
|
||||
@Component({
|
||||
selector: 'rtl-show-pubkey',
|
||||
templateUrl: './show-pubkey.component.html',
|
||||
styleUrls: ['./show-pubkey.component.scss']
|
||||
})
|
||||
export class ShowPubkeyComponent implements OnInit {
|
||||
public faReceipt = faReceipt;
|
||||
public pubkey: string;
|
||||
|
||||
constructor(public dialogRef: MatDialogRef<ShowPubkeyComponent>, @Inject(MAT_DIALOG_DATA) public data: AlertData, private logger: LoggerService, private snackBar: MatSnackBar) { }
|
||||
|
||||
ngOnInit() {
|
||||
this.pubkey = JSON.parse(this.data.message);
|
||||
}
|
||||
|
||||
onClose() {
|
||||
this.dialogRef.close(false);
|
||||
}
|
||||
|
||||
onCopyPubkey(payload: string) {
|
||||
this.snackBar.open('Pubkey copied');
|
||||
this.logger.info('Copied Text: ' + payload);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between start">
|
||||
<div fxLayout="row" fxFlex="100" fxLayoutAlign="space-between center">
|
||||
<div fxLayoutAlign="start start">
|
||||
<div *ngFor="let menuNode of menuNodes">
|
||||
<button mat-button *ngIf="undefined === menuNode.children" fxLayoutAlign="center center" class="horizontal-button" routerLinkActive="h-active-link" [routerLinkActiveOptions]="{exact: true}" routerLink="{{menuNode.link}}" (click)="onClick(menuNode)">
|
||||
|
@ -19,8 +19,8 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayoutAlign="end end" style="align-self: center;">
|
||||
<button mat-stroked-button fxLayoutAlign="center center" color="accent" class="horizontal-button-show" tabindex="20" type="click">Show Public Key</button>
|
||||
<div fxLayoutAlign="end center">
|
||||
<button fxLayoutAlign="center center" mat-stroked-button color="primary" class="horizontal-button-show" tabindex="20" (click)="onShowPubkey()">Show Public Key</button>
|
||||
<rtl-top-menu></rtl-top-menu>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -6,10 +6,12 @@ import { Store } from '@ngrx/store';
|
|||
import { faEject } from '@fortawesome/free-solid-svg-icons';
|
||||
import { SessionService } from '../../../services/session.service';
|
||||
import { MENU_DATA } from '../../../models/navMenu';
|
||||
import { ShowPubkeyComponent } from '../../data-modal/show-pubkey/show-pubkey.component';
|
||||
|
||||
import { RTLEffects } from '../../../../store/rtl.effects';
|
||||
import * as RTLActions from '../../../../store/rtl.actions';
|
||||
import * as fromRTLReducer from '../../../../store/rtl.reducers';
|
||||
import { GetInfoRoot } from '../../../models/RTLconfig';
|
||||
|
||||
@Component({
|
||||
selector: 'rtl-horizontal-navigation',
|
||||
|
@ -21,6 +23,7 @@ export class HorizontalNavigationComponent implements OnInit, OnDestroy {
|
|||
public logoutNode = [];
|
||||
public showLogout = false;
|
||||
public numPendingChannels = 0;
|
||||
public information: GetInfoRoot = {};
|
||||
private unSubs = [new Subject(), new Subject(), new Subject()];
|
||||
|
||||
constructor(private sessionService: SessionService, private store: Store<fromRTLReducer.RTLState>, private rtlEffects: RTLEffects) {
|
||||
|
@ -30,6 +33,7 @@ export class HorizontalNavigationComponent implements OnInit, OnDestroy {
|
|||
this.store.select('root')
|
||||
.pipe(takeUntil(this.unSubs[0]))
|
||||
.subscribe((rtlStore) => {
|
||||
this.information = rtlStore.nodeData;
|
||||
this.numPendingChannels = rtlStore.nodeData.numberOfPendingChannels;
|
||||
if(rtlStore.selNode.lnImplementation.toUpperCase() === 'CLT') {
|
||||
this.menuNodes = MENU_DATA.CLChildren;
|
||||
|
@ -73,6 +77,13 @@ export class HorizontalNavigationComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
}
|
||||
|
||||
onShowPubkey() {
|
||||
this.store.dispatch(new RTLActions.OpenAlert({
|
||||
config: { width: '58%', data: { type: 'INFO', message: JSON.stringify(this.information.identity_pubkey)}},
|
||||
component: ShowPubkeyComponent
|
||||
}));
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.unSubs.forEach(completeSub => {
|
||||
completeSub.next();
|
||||
|
|
|
@ -14,6 +14,7 @@ import { RTLConfiguration, LightningNode, Settings, GetInfoRoot } from '../../..
|
|||
import { LoggerService } from '../../../services/logger.service';
|
||||
import { SessionService } from '../../../services/session.service';
|
||||
import { GetInfoChain } from '../../../models/lndModels';
|
||||
import { ShowPubkeyComponent } from '../../../components/data-modal/show-pubkey/show-pubkey.component';
|
||||
import { MenuChildNode, MENU_DATA } from '../../../models/navMenu';
|
||||
|
||||
import { RTLEffects } from '../../../../store/rtl.effects';
|
||||
|
@ -135,12 +136,10 @@ export class SideNavigationComponent implements OnInit, OnDestroy {
|
|||
}
|
||||
|
||||
onShowData(node: MenuChildNode) {
|
||||
console.warn(node);
|
||||
this.store.dispatch(new RTLActions.OpenAlert({config: { width: '75%', data: {
|
||||
type: 'WARN',
|
||||
titleMessage: node.name,
|
||||
message: JSON.stringify(node)
|
||||
}}}));
|
||||
this.store.dispatch(new RTLActions.OpenAlert({
|
||||
config: { width: '58%', data: { type: 'INFO', message: JSON.stringify(this.information.identity_pubkey)}},
|
||||
component: ShowPubkeyComponent
|
||||
}));
|
||||
}
|
||||
|
||||
onNodeSelectionChange(selNodeValue: LightningNode) {
|
||||
|
|
|
@ -12,11 +12,19 @@ export const ADDRESS_TYPES = [
|
|||
];
|
||||
|
||||
export const TRANS_TYPES = [
|
||||
{id: '0', name: 'Default Priority'},
|
||||
{id: '0', name: 'Priority (Default)'},
|
||||
{id: '1', name: 'Target Confirmation Blocks'},
|
||||
{id: '2', name: 'Fee'}
|
||||
];
|
||||
|
||||
export enum AlertTypeEnum {
|
||||
INFO = 'Information',
|
||||
WARN = 'Warning',
|
||||
ERROR = 'Error',
|
||||
SUCCESS = 'Success',
|
||||
CONFIRM = 'Confirm'
|
||||
}
|
||||
|
||||
export enum AuthenticateWith {
|
||||
TOKEN = 'TOKEN',
|
||||
PASSWORD = 'PASSWORD'
|
||||
|
|
|
@ -36,6 +36,7 @@ import { AutoFocusDirective } from './directive/auto-focus.directive';
|
|||
import { RemoveLeadingZerosPipe } from './pipes/app.pipe';
|
||||
import { CommonService } from './services/common.service';
|
||||
import { OpenChannelComponent } from './components/data-modal/open-channel/open-channel.component';
|
||||
import { ShowPubkeyComponent } from './components/data-modal/show-pubkey/show-pubkey.component';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
|
@ -153,14 +154,16 @@ import { OpenChannelComponent } from './components/data-modal/open-channel/open-
|
|||
ClipboardDirective,
|
||||
AutoFocusDirective,
|
||||
RemoveLeadingZerosPipe,
|
||||
OpenChannelComponent
|
||||
OpenChannelComponent,
|
||||
ShowPubkeyComponent
|
||||
],
|
||||
entryComponents: [
|
||||
InvoiceInformationComponent,
|
||||
OnChainGeneratedAddressComponent,
|
||||
OpenChannelComponent,
|
||||
AlertMessageComponent,
|
||||
ShowPubkeyComponent,
|
||||
SpinnerDialogComponent,
|
||||
AlertMessageComponent,
|
||||
ConfirmationMessageComponent
|
||||
],
|
||||
providers: [
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
@import '~@angular/material/theming';
|
||||
@include mat-core();
|
||||
|
||||
$purple-primary: mat-palette($purple-primary, 500, 200, 800);
|
||||
$purple-primary: mat-palette($purple-primary, 500, 300, A200);
|
||||
$purple-accent: mat-palette($mat-gray, 800, 600, 900);
|
||||
$purple-warn: mat-palette($mat-red);
|
||||
|
||||
|
|
|
@ -16,7 +16,9 @@
|
|||
$foreground-disabled: mat-color($foreground, disabled);
|
||||
$foreground-divider: mat-color($foreground, divider);
|
||||
$background: map-get($theme, background);
|
||||
$background-color: mat-color($background, card);
|
||||
$hover-background: rgba(0, 0, 0, 0.04);
|
||||
$hover-background-white: rgba(255, 255, 255, 0.06);
|
||||
|
||||
.bg-primary {
|
||||
@include _mat-toolbar-color($primary);
|
||||
|
@ -30,19 +32,68 @@
|
|||
@include _mat-toolbar-color($warn);
|
||||
}
|
||||
|
||||
.btn-primary-darker {
|
||||
background-color: $primary-darker;
|
||||
color: $accent-color;
|
||||
border-radius: 1.6rem;
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
&.night {
|
||||
.rtl-top-toolbar {
|
||||
border-bottom: 1px solid $background-color;
|
||||
}
|
||||
.mat-tab-label.mat-tab-label-active {
|
||||
color: $primary-darker;
|
||||
}
|
||||
.cc-data-block .cc-data-title {
|
||||
color: $primary-darker;
|
||||
}
|
||||
.mat-stroked-button.mat-primary {
|
||||
border-color: $primary-darker;
|
||||
color: $primary-darker;
|
||||
}
|
||||
.mat-stroked-button.mat-primary:hover .mat-button-focus-overlay {
|
||||
background-color: white;
|
||||
opacity: 0.09;
|
||||
}
|
||||
.mat-stroked-button.mat-accent {
|
||||
border-color: $accent-color;
|
||||
}
|
||||
.mat-stroked-button.mat-warn {
|
||||
border-color: $warn-color;
|
||||
}
|
||||
.active-link, .active-link .fa-icon-small {
|
||||
color: $primary-darker;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
fill: $primary-darker;
|
||||
}
|
||||
.mat-tree-node:hover, .mat-nested-tree-node-parent:hover {
|
||||
color: $primary-darker;
|
||||
cursor: pointer;
|
||||
background: $hover-background-white;
|
||||
& .ng-fa-icon, & .mat-icon {
|
||||
color: $primary-darker;
|
||||
}
|
||||
& .sidenav-img svg {
|
||||
fill: $primary-darker;
|
||||
}
|
||||
}
|
||||
.mat-tree-node .sidenav-img, .mat-nested-tree-node .sidenav-img, .mat-nested-tree-node-parent .sidenav-img,
|
||||
.page-title-container .page-title-img, svg.top-icon-small {
|
||||
fill: $foreground-text;
|
||||
}
|
||||
.selected-color {
|
||||
border-color: $primary-lighter;
|
||||
border-color: $primary-darker;
|
||||
}
|
||||
.rtl-snack-bar {
|
||||
background: $primary-color;
|
||||
}
|
||||
}
|
||||
&.day {
|
||||
.rtl-top-toolbar {
|
||||
border-bottom: 1px solid white;
|
||||
}
|
||||
.mat-tab-label.mat-tab-label-active {
|
||||
color: $primary-color;
|
||||
}
|
||||
.ng-fa-icon, .mat-nested-tree-node-parent .mat-icon, .mat-form-field-suffix {
|
||||
color: $foreground-secondary-text;
|
||||
}
|
||||
.mat-stroked-button.mat-primary {
|
||||
border-color: $primary-color;
|
||||
}
|
||||
|
@ -52,11 +103,11 @@
|
|||
.mat-stroked-button.mat-warn {
|
||||
border-color: $warn-color;
|
||||
}
|
||||
.ng-fa-icon, .mat-nested-tree-node-parent .mat-icon, .mat-form-field-suffix {
|
||||
color: $foreground-secondary-text;
|
||||
}
|
||||
.selected-color {
|
||||
border-color: $primary-darker;
|
||||
border-color: $primary-color;
|
||||
}
|
||||
.mat-stroked-button.mat-primary:hover .mat-button-focus-overlay {
|
||||
opacity: 0.06;
|
||||
}
|
||||
.page-title-container, .page-sub-title-container {
|
||||
& .page-title-img {
|
||||
|
@ -64,6 +115,33 @@
|
|||
}
|
||||
color: $foreground-secondary-text;
|
||||
}
|
||||
.cc-data-block .cc-data-title {
|
||||
color: $primary-color;
|
||||
}
|
||||
.active-link, .active-link .fa-icon-small {
|
||||
color: $primary-color;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
fill: $primary-color;
|
||||
}
|
||||
.mat-tree-node:hover, .mat-nested-tree-node-parent:hover {
|
||||
color: $primary-color;
|
||||
cursor: pointer;
|
||||
background: $hover-background;
|
||||
& .ng-fa-icon, & .mat-icon {
|
||||
color: $primary-color;
|
||||
}
|
||||
& .sidenav-img svg {
|
||||
fill: $primary-color;
|
||||
}
|
||||
}
|
||||
.mat-tree-node .sidenav-img, .mat-nested-tree-node .sidenav-img, .mat-nested-tree-node-parent .sidenav-img,
|
||||
.page-title-container .page-title-img, svg.top-icon-small {
|
||||
fill: $foreground-text;
|
||||
}
|
||||
.rtl-snack-bar {
|
||||
background: $primary-color;
|
||||
}
|
||||
}
|
||||
|
||||
.foreground-secondary-text {
|
||||
|
@ -82,34 +160,10 @@
|
|||
border-bottom: 1px solid $foreground-divider;
|
||||
}
|
||||
|
||||
a, .cc-data-block .cc-data-title {
|
||||
a {
|
||||
color: $primary-color;
|
||||
}
|
||||
|
||||
.active-link, .active-link .fa-icon-small {
|
||||
color: $primary-color;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
fill: $primary-color;
|
||||
}
|
||||
|
||||
.mat-tree-node:hover, .mat-nested-tree-node-parent:hover {
|
||||
color: $primary-color;
|
||||
cursor: pointer;
|
||||
background: $hover-background;
|
||||
& .ng-fa-icon, & .mat-icon {
|
||||
color: $primary-color;
|
||||
}
|
||||
& .sidenav-img svg {
|
||||
fill: $primary-color;
|
||||
}
|
||||
}
|
||||
|
||||
.mat-tree-node .sidenav-img, .mat-nested-tree-node .sidenav-img, .mat-nested-tree-node-parent .sidenav-img,
|
||||
.page-title-container .page-title-img, svg.top-icon-small {
|
||||
fill: $foreground-text;
|
||||
}
|
||||
|
||||
.horizontal-button .fa-icon-small {
|
||||
fill: white;
|
||||
color: white;
|
||||
|
@ -178,18 +232,22 @@
|
|||
height: $toolbar-height;
|
||||
border-radius: 0;
|
||||
&:hover {
|
||||
background: $primary-darker;
|
||||
background: $primary-lighter;
|
||||
color: $accent-color;
|
||||
}
|
||||
}
|
||||
|
||||
.horizontal-button-show {
|
||||
background: white;
|
||||
.mat-stroked-button.mat-primary.horizontal-button-show {
|
||||
line-height: 2.4rem;
|
||||
border-radius: 12rem;
|
||||
background-color: white;
|
||||
color: $primary-color;
|
||||
&:hover {
|
||||
@include mat-elevation(4);
|
||||
}
|
||||
&:hover .mat-button-focus-overlay {
|
||||
opacity: 0.09;
|
||||
}
|
||||
|
||||
.mat-tab-label.mat-tab-label-active {
|
||||
color: $primary-darker;
|
||||
}
|
||||
|
||||
.cc-data-block {
|
||||
|
@ -237,15 +295,6 @@
|
|||
background: $foreground-divider;
|
||||
}
|
||||
|
||||
.rtl-snack-bar {
|
||||
background: $primary-darker;
|
||||
& .mat-simple-snackbar {
|
||||
justify-content: center;
|
||||
align-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.tab-badge {
|
||||
& .mat-badge-content {
|
||||
width: $dot-size * 1.5;
|
||||
|
@ -274,4 +323,10 @@
|
|||
background: none;
|
||||
}
|
||||
|
||||
.rtl-snack-bar .mat-simple-snackbar {
|
||||
justify-content: center;
|
||||
align-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -459,6 +459,10 @@ body {
|
|||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.overflow-y-hidden {
|
||||
overflow-y: hidden !important;
|
||||
}
|
||||
|
||||
.overflow-auto {
|
||||
overflow: auto;
|
||||
}
|
||||
|
@ -808,3 +812,4 @@ table {
|
|||
@keyframes blink-animation { to { visibility: hidden; }}
|
||||
|
||||
@-webkit-keyframes blink-animation { to { visibility: hidden; }}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue