pubkey, dark theme, settings

pubkey, dark theme, settings
This commit is contained in:
Shahana Farooqui 2019-11-22 19:46:28 -05:00
parent 860e72800e
commit fabb0dd126
34 changed files with 292 additions and 111 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -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>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -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

File diff suppressed because one or more lines are too long

View file

@ -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>

View file

@ -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>

View file

@ -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;

View file

@ -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>

View file

@ -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: ''};
}

View file

@ -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>

View file

@ -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">

View file

@ -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">

View file

@ -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>

View file

@ -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>

View file

@ -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 {

View file

@ -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">

View file

@ -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>

View file

@ -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();
});
});

View file

@ -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);
}
}

View file

@ -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>

View file

@ -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();

View file

@ -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) {

View file

@ -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'

View file

@ -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: [

View file

@ -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);

View file

@ -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;
}
}

View file

@ -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; }}