2022-08-29 21:51:42 +02:00
|
|
|
<div *ngIf="channels$ | async as response; else skeleton" style="position: relative;">
|
2022-08-29 19:26:32 +02:00
|
|
|
<form [formGroup]="channelStatusForm" class="formRadioGroup">
|
2022-11-28 16:00:50 +09:00
|
|
|
<div class="btn-group btn-group-toggle" name="radioBasic">
|
|
|
|
<label class="btn btn-primary btn-sm" [class.active]="channelStatusForm.get('status').value === 'open'">
|
|
|
|
<input type="radio" [value]="'open'" fragment="open" formControlName="status"><span i18n="open">Open</span>
|
2022-05-16 01:36:59 +04:00
|
|
|
</label>
|
2022-11-28 16:00:50 +09:00
|
|
|
<label class="btn btn-primary btn-sm" [class.active]="channelStatusForm.get('status').value === 'closed'">
|
|
|
|
<input type="radio" [value]="'closed'" fragment="closed" formControlName="status"><span i18n="closed">Closed</span>
|
2022-05-16 01:36:59 +04:00
|
|
|
</label>
|
|
|
|
</div>
|
|
|
|
</form>
|
|
|
|
|
2022-08-29 22:25:43 +02:00
|
|
|
<table class="table table-borderless" *ngIf="response.channels.length > 0" [style]="isLoading ? 'opacity: 0.75' : ''">
|
2022-05-16 01:36:59 +04:00
|
|
|
<ng-container *ngTemplateOutlet="tableHeader"></ng-container>
|
|
|
|
<tbody>
|
|
|
|
<tr *ngFor="let channel of response.channels; let i = index;">
|
2022-08-04 11:30:32 +02:00
|
|
|
<ng-container *ngTemplateOutlet="tableTemplate; context: { $implicit: channel, node: channel.node }"></ng-container>
|
2022-05-01 03:01:27 +04:00
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
2022-05-16 01:36:59 +04:00
|
|
|
|
2022-08-17 10:23:14 +02:00
|
|
|
<ngb-pagination *ngIf="response.channels.length > 0" class="pagination-container float-right"
|
|
|
|
[size]="paginationSize" [collectionSize]="response.totalItems" [rotate]="true"
|
|
|
|
[pageSize]="itemsPerPage" [(page)]="page" (pageChange)="pageChange(page)"
|
|
|
|
[maxSize]="paginationMaxSize" [boundaryLinks]="true" [ellipses]="false">
|
|
|
|
</ngb-pagination>
|
2022-07-24 12:05:09 +02:00
|
|
|
|
|
|
|
<table class="table table-borderless" *ngIf="response.channels.length === 0">
|
|
|
|
<div class="d-flex justify-content-center" i18n="lightning.empty-channels-list">No channels to display</div>
|
|
|
|
</table>
|
2022-05-15 19:22:14 +04:00
|
|
|
</div>
|
2022-05-16 01:36:59 +04:00
|
|
|
|
|
|
|
<ng-template #tableHeader>
|
|
|
|
<thead>
|
2022-10-07 00:54:33 +04:00
|
|
|
<th class="alias text-left" i18n="lightning.alias">Alias</th>
|
|
|
|
<th class="alias text-left d-none d-md-table-cell"> </th>
|
2022-08-04 11:30:32 +02:00
|
|
|
<th class="alias text-left d-none d-md-table-cell" i18n="status">Status</th>
|
2022-10-13 17:15:17 +04:00
|
|
|
<th *ngIf="status !== 'closed'" class="channels text-left d-none d-md-table-cell" i18n="transaction.fee-rate|Transaction fee rate">Fee rate</th>
|
2022-09-04 19:39:28 +02:00
|
|
|
<th *ngIf="status === 'closed'" class="channels text-left d-none d-md-table-cell" i18n="channels.closing_date">Closing date</th>
|
2022-10-07 00:54:33 +04:00
|
|
|
<th class="capacity text-right d-none d-md-table-cell" i18n="lightning.capacity">Capacity</th>
|
2022-05-16 01:36:59 +04:00
|
|
|
<th class="capacity text-right" i18n="channels.id">Channel ID</th>
|
|
|
|
</thead>
|
|
|
|
</ng-template>
|
2022-05-01 03:01:27 +04:00
|
|
|
|
2022-05-15 19:22:14 +04:00
|
|
|
<ng-template #tableTemplate let-channel let-node="node">
|
|
|
|
<td class="alias text-left">
|
2022-05-16 00:01:53 +04:00
|
|
|
<div>{{ node.alias || '?' }}</div>
|
|
|
|
<div class="second-line">
|
2023-01-16 16:47:05 -06:00
|
|
|
<app-truncate [text]="node.public_key" [maxWidth]="200" [lastChars]="6" [link]="['/lightning/node' | relativeUrl, node.public_key]">
|
|
|
|
<app-clipboard [text]="node.public_key" size="small"></app-clipboard>
|
|
|
|
</app-truncate>
|
2022-05-16 00:01:53 +04:00
|
|
|
</div>
|
2022-05-15 19:22:14 +04:00
|
|
|
</td>
|
2022-05-16 01:36:59 +04:00
|
|
|
<td class="alias text-left d-none d-md-table-cell">
|
2022-10-07 00:54:33 +04:00
|
|
|
<div class="second-line"><ng-container *ngTemplateOutlet="xChannels; context: {$implicit: node.channels }"></ng-container></div>
|
2022-08-04 11:30:32 +02:00
|
|
|
<div class="second-line">
|
|
|
|
<app-amount *ngIf="node.capacity > 100000000; else smallnode" [satoshis]="node.capacity" [digitsInfo]="'1.2-2'" [noFiat]="true"></app-amount>
|
|
|
|
<ng-template #smallnode>
|
|
|
|
{{ node.capacity | amountShortener: 1 }}
|
|
|
|
<span class="sats" i18n="shared.sats">sats</span>
|
|
|
|
</ng-template>
|
|
|
|
</div>
|
2022-05-15 19:22:14 +04:00
|
|
|
</td>
|
|
|
|
<td class="d-none d-md-table-cell">
|
2022-10-07 00:54:33 +04:00
|
|
|
<span class="badge rounded-pill badge-secondary" *ngIf="channel.status === 0" i18n="status.inactive">Inactive</span>
|
|
|
|
<span class="badge rounded-pill badge-success" *ngIf="channel.status === 1" i18n="status.active">Active</span>
|
2022-06-29 23:06:13 +02:00
|
|
|
<ng-template [ngIf]="channel.status === 2">
|
2022-10-07 00:54:33 +04:00
|
|
|
<span class="badge rounded-pill badge-secondary" *ngIf="!channel.closing_reason; else closingReason" i18n="status.closed">Closed</span>
|
2022-06-29 23:06:13 +02:00
|
|
|
<ng-template #closingReason>
|
|
|
|
<app-closing-type [type]="channel.closing_reason"></app-closing-type>
|
|
|
|
</ng-template>
|
|
|
|
</ng-template>
|
2022-05-15 19:22:14 +04:00
|
|
|
</td>
|
2022-09-04 19:39:28 +02:00
|
|
|
<td *ngIf="status !== 'closed'" class="capacity text-left d-none d-md-table-cell">
|
2022-08-04 11:30:32 +02:00
|
|
|
{{ channel.fee_rate }} <span class="symbol">ppm ({{ channel.fee_rate / 10000 | number }}%)</span>
|
2022-05-15 19:22:14 +04:00
|
|
|
</td>
|
2022-09-04 19:39:28 +02:00
|
|
|
<td *ngIf="status === 'closed'" class="capacity text-left d-none d-md-table-cell">
|
|
|
|
<app-timestamp [unixTime]="channel.closing_date"></app-timestamp>
|
|
|
|
</td>
|
2022-05-15 19:22:14 +04:00
|
|
|
<td class="capacity text-right d-none d-md-table-cell">
|
2022-08-04 11:30:32 +02:00
|
|
|
<app-amount *ngIf="channel.capacity > 100000000; else smallchannel" [satoshis]="channel.capacity" [digitsInfo]="'1.2-2'" [noFiat]="true"></app-amount>
|
|
|
|
<ng-template #smallchannel>
|
|
|
|
{{ channel.capacity | amountShortener: 1 }}
|
|
|
|
<span class="sats" i18n="shared.sats">sats</span>
|
|
|
|
</ng-template>
|
|
|
|
</td>
|
2022-05-16 01:36:59 +04:00
|
|
|
<td class="capacity text-right">
|
2022-05-15 19:22:14 +04:00
|
|
|
<a [routerLink]="['/lightning/channel' | relativeUrl, channel.id]">{{ channel.short_id }}</a>
|
|
|
|
</td>
|
|
|
|
</ng-template>
|
2022-05-16 01:36:59 +04:00
|
|
|
|
|
|
|
<ng-template #skeleton>
|
|
|
|
<table class="table table-borderless">
|
|
|
|
<ng-container *ngTemplateOutlet="tableHeader"></ng-container>
|
|
|
|
<tbody>
|
|
|
|
<tr *ngFor="let item of [1,2,3,4,5,6,7,8,9,10]">
|
|
|
|
<td class="alias text-left" style="width: 370px;">
|
|
|
|
<span class="skeleton-loader"></span>
|
|
|
|
</td>
|
|
|
|
<td class="alias text-left">
|
|
|
|
<span class="skeleton-loader"></span>
|
|
|
|
</td>
|
|
|
|
<td class="capacity text-left d-none d-md-table-cell">
|
|
|
|
<span class="skeleton-loader"></span>
|
|
|
|
</td>
|
|
|
|
<td class="channels text-left d-none d-md-table-cell">
|
|
|
|
<span class="skeleton-loader"></span>
|
|
|
|
</td>
|
|
|
|
<td class="channels text-right d-none d-md-table-cell">
|
|
|
|
<span class="skeleton-loader"></span>
|
|
|
|
</td>
|
|
|
|
<td class="channels text-left">
|
|
|
|
<span class="skeleton-loader"></span>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</ng-template>
|
2022-10-07 00:54:33 +04:00
|
|
|
|
|
|
|
<ng-template #xChannels let-i i18n="lightning.x-channels">{{ i }} channels</ng-template>
|