parent
b7bbf94abf
commit
835dca0557
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
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
@ -1 +1 @@
|
||||
!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:"ad453b6e8bc53c913101",7:"fdc70b63fa397b86320a"}[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()}([]);
|
||||
!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:"69ceab2c54f4d2bf4227",6:"c9f217da6011a463bec0",7:"55a06eb6028cdaf8fef4"}[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
@ -0,0 +1,13 @@
|
||||
<div fxLayout="column" fxFlex="50" fxLayoutAlign="center start">
|
||||
<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="33">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">Lightning</h4>
|
||||
<div class="foreground-secondary-text">{{balances.lightning | number}} (Sats)</div>
|
||||
</div>
|
||||
<div fxFlex="34">
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayout="column" fxFlex="50" fxLayoutAlign="center start" style="background-color: bisque;height:67%;border-radius: 500px;"></div>
|
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { BalancesInfoComponent } from './balances-info.component';
|
||||
|
||||
describe('BalancesInfoComponent', () => {
|
||||
let component: BalancesInfoComponent;
|
||||
let fixture: ComponentFixture<BalancesInfoComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ BalancesInfoComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(BalancesInfoComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
@ -0,0 +1,15 @@
|
||||
import { Component, OnChanges, Input } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'rtl-balances-info',
|
||||
templateUrl: './balances-info.component.html',
|
||||
styleUrls: ['./balances-info.component.scss']
|
||||
})
|
||||
export class BalancesInfoComponent implements OnChanges {
|
||||
@Input() balances = { onchain: 0, lightning: 0 };
|
||||
|
||||
constructor() {}
|
||||
|
||||
ngOnChanges() {}
|
||||
|
||||
}
|
@ -0,0 +1 @@
|
||||
<p>Channel capacity bars coming soon</p>
|
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ChannelCapacityInfoComponent } from './channel-capacity-info.component';
|
||||
|
||||
describe('ChannelCapacityInfoComponent', () => {
|
||||
let component: ChannelCapacityInfoComponent;
|
||||
let fixture: ComponentFixture<ChannelCapacityInfoComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ ChannelCapacityInfoComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(ChannelCapacityInfoComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
@ -0,0 +1,15 @@
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
|
||||
@Component({
|
||||
selector: 'rtl-channel-capacity-info',
|
||||
templateUrl: './channel-capacity-info.component.html',
|
||||
styleUrls: ['./channel-capacity-info.component.scss']
|
||||
})
|
||||
export class ChannelCapacityInfoComponent implements OnInit {
|
||||
|
||||
constructor() { }
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
<div fxLayout="column" fxFlex="30" fxLayoutAlign="center start">
|
||||
<div fxFlex="25">
|
||||
<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">
|
||||
<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">
|
||||
<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="70" fxLayoutAlign="center start">
|
||||
<div fxFlex="25">
|
||||
<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">
|
||||
<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">
|
||||
<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>
|
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { ChannelStatusInfoComponent } from './channel-status-info.component';
|
||||
|
||||
describe('ChannelStatusInfoComponent', () => {
|
||||
let component: ChannelStatusInfoComponent;
|
||||
let fixture: ComponentFixture<ChannelStatusInfoComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ ChannelStatusInfoComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(ChannelStatusInfoComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
@ -0,0 +1,16 @@
|
||||
import { Component, OnChanges, Input } from '@angular/core';
|
||||
import { ChannelsStatus } from '../../../shared/models/lndModels';
|
||||
|
||||
@Component({
|
||||
selector: 'rtl-channel-status-info',
|
||||
templateUrl: './channel-status-info.component.html',
|
||||
styleUrls: ['./channel-status-info.component.scss']
|
||||
})
|
||||
export class ChannelStatusInfoComponent implements OnChanges {
|
||||
@Input() channelsStatus: ChannelsStatus = {};
|
||||
|
||||
constructor() {}
|
||||
|
||||
ngOnChanges() {}
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
<div fxLayout="column" fxFlex="50" fxLayoutAlign="center start">
|
||||
<div fxFlex="33">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">Daily</h4>
|
||||
<div class="foreground-secondary-text">{{fees?.day_fee_sum | number}} (Sats)</div>
|
||||
</div>
|
||||
<div fxFlex="33">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">Weekly</h4>
|
||||
<div class="foreground-secondary-text">{{fees?.week_fee_sum | number}} (Sats)</div>
|
||||
</div>
|
||||
<div fxFlex="33">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">Monthly</h4>
|
||||
<div class="foreground-secondary-text">{{fees?.month_fee_sum | number}} (Sats)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div fxLayout="column" fxFlex="50" fxLayoutAlign="center start" style="background-color:cadetblue;height:67%;border-radius: 500px;"></div>
|
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { FeeInfoComponent } from './fee-info.component';
|
||||
|
||||
describe('FeeInfoComponent', () => {
|
||||
let component: FeeInfoComponent;
|
||||
let fixture: ComponentFixture<FeeInfoComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ FeeInfoComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(FeeInfoComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
@ -0,0 +1,16 @@
|
||||
import { Component, OnChanges, Input } from '@angular/core';
|
||||
import { Fees } from '../../../shared/models/lndModels';
|
||||
|
||||
@Component({
|
||||
selector: 'rtl-fee-info',
|
||||
templateUrl: './fee-info.component.html',
|
||||
styleUrls: ['./fee-info.component.scss']
|
||||
})
|
||||
export class FeeInfoComponent implements OnChanges {
|
||||
@Input() fees: Fees;
|
||||
|
||||
constructor() {}
|
||||
|
||||
ngOnChanges() {}
|
||||
|
||||
}
|
@ -1,12 +1,30 @@
|
||||
.network-info-list .mat-list-item {
|
||||
height: 44px;
|
||||
.dashboard-card {
|
||||
position: absolute;
|
||||
top: 1rem;
|
||||
left: 1rem;
|
||||
right: 1rem;
|
||||
bottom: 1rem;
|
||||
}
|
||||
|
||||
.mat-column-bytes_sent, .mat-column-bytes_recv, .mat-column-sat_sent, .mat-column-sat_recv, .mat-column-inbound, .mat-column-ping_time {
|
||||
flex: 0 0 8%;
|
||||
min-width: 80px;
|
||||
.more-button {
|
||||
position: absolute;
|
||||
top: 7px;
|
||||
right: 7px;
|
||||
}
|
||||
|
||||
.card-chnl-balances {
|
||||
min-height: 354px;
|
||||
.dashboard-card-content {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
// .network-info-list .mat-list-item {
|
||||
// height: 44px;
|
||||
// }
|
||||
|
||||
// .mat-column-bytes_sent, .mat-column-bytes_recv, .mat-column-sat_sent, .mat-column-sat_recv, .mat-column-inbound, .mat-column-ping_time {
|
||||
// flex: 0 0 8%;
|
||||
// min-width: 80px;
|
||||
// }
|
||||
|
||||
// .card-chnl-balances {
|
||||
// min-height: 354px;
|
||||
// }
|
||||
|
@ -0,0 +1,14 @@
|
||||
<div fxLayout="column" fxFlex="100" fxLayoutAlign="center start">
|
||||
<div fxFlex="33">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">Alias</h4>
|
||||
<div class="foreground-secondary-text" [ngStyle]="{'backgroundColor': information.color}">{{information.alias}}</div>
|
||||
</div>
|
||||
<div fxFlex="33">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">Implementation</h4>
|
||||
<div class="foreground-secondary-text">{{information.lnImplementation + ' v' + information.version}}</div>
|
||||
</div>
|
||||
<div fxFlex="34">
|
||||
<h4 fxLayoutAlign="start" class="font-bold-500">Chain</h4>
|
||||
<span class="overflow-wrap foreground-secondary-text" *ngFor="let chain of chains">{{chain}}</span>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,25 @@
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
|
||||
import { NodeInfoComponent } from './node-info.component';
|
||||
|
||||
describe('NodeInfoComponent', () => {
|
||||
let component: NodeInfoComponent;
|
||||
let fixture: ComponentFixture<NodeInfoComponent>;
|
||||
|
||||
beforeEach(async(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ NodeInfoComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(NodeInfoComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
@ -0,0 +1,25 @@
|
||||
import { Component, OnChanges, Input } from '@angular/core';
|
||||
import { GetInfo } from '../../../shared/models/lndModels';
|
||||
import { CommonService } from '../../../shared/services/common.service';
|
||||
|
||||
@Component({
|
||||
selector: 'rtl-node-info',
|
||||
templateUrl: './node-info.component.html',
|
||||
styleUrls: ['./node-info.component.scss']
|
||||
})
|
||||
export class NodeInfoComponent implements OnChanges {
|
||||
@Input() information: GetInfo;
|
||||
public chains: Array<string> = [''];
|
||||
|
||||
constructor(private commonService: CommonService) { }
|
||||
|
||||
ngOnChanges() {
|
||||
if(this.information && this.information.chains && this.information.chains.length > 0) {
|
||||
this.chains = [''];
|
||||
this.information.chains.forEach(chain => {
|
||||
this.chains.push(this.commonService.titleCase(chain.chain) + ' ' + this.commonService.titleCase(chain.network));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue