From c70911cdd3a0cd271ec47d48e4ee86add97fba49 Mon Sep 17 00:00:00 2001 From: ShahanaFarooqui Date: Thu, 3 Nov 2022 13:03:27 -0700 Subject: [PATCH] CLN Manual Testing Done --- backend/utils/database.js | 14 +++- server/utils/database.ts | 16 +++- .../liquidity-ads-list.component.ts | 2 +- .../utxo-tables/utxo-tables.component.html | 4 +- .../utxo-tables/utxo-tables.component.ts | 3 +- .../utxo-tables/utxos/utxos.component.html | 19 ++--- .../utxo-tables/utxos/utxos.component.scss | 7 +- .../utxo-tables/utxos/utxos.component.ts | 45 ++++++++--- .../channel-open-table.component.ts | 2 +- .../channel-pending-table.component.ts | 2 +- .../peers-channels/peers/peers.component.ts | 4 +- .../failed-transactions.component.ts | 2 +- .../forwarding-history.component.ts | 3 +- .../local-failed-transactions.component.ts | 2 +- .../routing-peers.component.html | 20 ++--- .../routing-peers/routing-peers.component.ts | 78 ++++++++----------- .../lightning-invoices-table.component.ts | 2 +- .../offer-bookmarks-table.component.ts | 2 +- .../offers-table/offers-table.component.ts | 2 +- .../payments/lightning-payments.component.ts | 2 +- .../on-chain-transaction-history.component.ts | 2 +- .../channel-inactive-table.component.ts | 2 +- .../channel-open-table.component.ts | 2 +- .../channel-pending-table.component.ts | 2 +- .../peers-channels/peers/peers.component.ts | 2 +- .../forwarding-history.component.ts | 3 +- .../routing-peers.component.html | 10 +-- .../routing-peers/routing-peers.component.ts | 6 +- .../invoices/lightning-invoices.component.ts | 2 +- .../payments/lightning-payments.component.ts | 2 +- .../on-chain-transaction-history.component.ts | 2 +- .../utxo-tables/utxo-tables.component.html | 4 +- .../utxo-tables/utxo-tables.component.ts | 3 +- .../utxo-tables/utxos/utxos.component.html | 4 +- .../utxo-tables/utxos/utxos.component.ts | 10 +-- .../channel-active-htlcs-table.component.ts | 2 +- .../channel-closed-table.component.ts | 2 +- .../channel-open-table.component.ts | 2 +- .../peers-channels/peers/peers.component.ts | 2 +- .../forwarding-history.component.ts | 3 +- .../non-routing-peers.component.ts | 2 +- .../routing-peers.component.html | 10 +-- .../routing-peers/routing-peers.component.ts | 6 +- .../invoices/lightning-invoices.component.ts | 2 +- .../payments/lightning-payments.component.ts | 2 +- .../boltz/swaps/swaps.component.ts | 2 +- .../ln-services/loop/swaps/swaps.component.ts | 2 +- .../transactions-report-table.component.ts | 3 +- 48 files changed, 189 insertions(+), 138 deletions(-) diff --git a/backend/utils/database.js b/backend/utils/database.js index b6c228a1..950944c2 100644 --- a/backend/utils/database.js +++ b/backend/utils/database.js @@ -238,7 +238,19 @@ export class DatabaseAdapter { try { const otherFiles = fs.readdirSync(this.dbFilePath); otherFiles.forEach((oFileName) => { - if (oFileName.endsWith('.json') && oFileName !== ('rtldb-' + this.selNode.ln_implementation + '-' + collectionName + '.json')) { + let collectionValid = false; + switch (this.selNode.ln_implementation) { + case 'CLN': + collectionValid = CLNCollection.reduce((acc, collection) => acc || oFileName === ('rtldb-' + this.selNode.ln_implementation + '-' + collection + '.json'), false); + break; + case 'ECL': + collectionValid = ECLCollection.reduce((acc, collection) => acc || oFileName === ('rtldb-' + this.selNode.ln_implementation + '-' + collection + '.json'), false); + break; + default: + collectionValid = LNDCollection.reduce((acc, collection) => acc || oFileName === ('rtldb-' + this.selNode.ln_implementation + '-' + collection + '.json'), false); + break; + } + if (oFileName.endsWith('.json') && !collectionValid) { fs.renameSync(this.dbFilePath + sep + oFileName, this.dbFilePath + sep + oFileName + '.tmp'); } }); diff --git a/server/utils/database.ts b/server/utils/database.ts index a51df46c..b58acfb4 100644 --- a/server/utils/database.ts +++ b/server/utils/database.ts @@ -239,7 +239,21 @@ export class DatabaseAdapter { try { const otherFiles = fs.readdirSync(this.dbFilePath); otherFiles.forEach((oFileName) => { - if (oFileName.endsWith('.json') && oFileName !== ('rtldb-' + this.selNode.ln_implementation + '-' + collectionName + '.json')) { + let collectionValid = false; + switch (this.selNode.ln_implementation) { + case 'CLN': + collectionValid = CLNCollection.reduce((acc, collection) => acc || oFileName === ('rtldb-' + this.selNode.ln_implementation + '-' + collection + '.json'), false); + break; + + case 'ECL': + collectionValid = ECLCollection.reduce((acc, collection) => acc || oFileName === ('rtldb-' + this.selNode.ln_implementation + '-' + collection + '.json'), false); + break; + + default: + collectionValid = LNDCollection.reduce((acc, collection) => acc || oFileName === ('rtldb-' + this.selNode.ln_implementation + '-' + collection + '.json'), false); + break; + } + if (oFileName.endsWith('.json') && !collectionValid) { fs.renameSync(this.dbFilePath + sep + oFileName, this.dbFilePath + sep + oFileName + '.tmp'); } }); diff --git a/src/app/cln/liquidity-ads/liquidity-ads-list/liquidity-ads-list.component.ts b/src/app/cln/liquidity-ads/liquidity-ads-list/liquidity-ads-list.component.ts index 07cc4f99..3d1ff873 100644 --- a/src/app/cln/liquidity-ads/liquidity-ads-list/liquidity-ads-list.component.ts +++ b/src/app/cln/liquidity-ads/liquidity-ads-list/liquidity-ads-list.component.ts @@ -175,7 +175,7 @@ export class CLNLiquidityAdsListComponent implements OnInit, OnDestroy { break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/cln/on-chain/utxo-tables/utxo-tables.component.html b/src/app/cln/on-chain/utxo-tables/utxo-tables.component.html index 1cf2098c..add92d02 100644 --- a/src/app/cln/on-chain/utxo-tables/utxo-tables.component.html +++ b/src/app/cln/on-chain/utxo-tables/utxo-tables.component.html @@ -4,13 +4,13 @@ UTXOs - + Dust UTXOs - + diff --git a/src/app/cln/on-chain/utxo-tables/utxo-tables.component.ts b/src/app/cln/on-chain/utxo-tables/utxo-tables.component.ts index 03b400a0..da011393 100644 --- a/src/app/cln/on-chain/utxo-tables/utxo-tables.component.ts +++ b/src/app/cln/on-chain/utxo-tables/utxo-tables.component.ts @@ -21,6 +21,7 @@ export class CLNUTXOTablesComponent implements OnInit, OnDestroy { @Output() readonly selectedTableIndexChange = new EventEmitter(); public numUtxos = 0; public numDustUtxos = 0; + public DUST_AMOUNT = 1000; private unSubs: Array> = [new Subject(), new Subject()]; constructor(private logger: LoggerService, private store: Store) { } @@ -30,7 +31,7 @@ export class CLNUTXOTablesComponent implements OnInit, OnDestroy { subscribe((utxosSeletor: { utxos: UTXO[], apiCallStatus: ApiCallStatusPayload }) => { if (utxosSeletor.utxos && utxosSeletor.utxos.length > 0) { this.numUtxos = utxosSeletor.utxos.length || 0; - this.numDustUtxos = utxosSeletor.utxos?.filter((utxo) => +(utxo.value || 0) < 1000).length || 0; + this.numDustUtxos = utxosSeletor.utxos?.filter((utxo) => +(utxo.value || 0) < this.DUST_AMOUNT).length || 0; } this.logger.info(utxosSeletor); }); diff --git a/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.html b/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.html index af6a7455..2a2ad0ea 100644 --- a/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.html +++ b/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.html @@ -16,18 +16,19 @@
+ + + + diff --git a/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.scss b/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.scss index 4ccf74d1..4835e4ff 100644 --- a/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.scss +++ b/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.scss @@ -1,4 +1,9 @@ +.mat-column-is_dust { + max-width: 1.2rem; + width: 1.2rem; +} + .mat-column-status { max-width: 1.2rem; - width:1.2rem; + width: 1.2rem; } diff --git a/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.ts b/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.ts index 0682e346..6396135c 100644 --- a/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.ts +++ b/src/app/cln/on-chain/utxo-tables/utxos/utxos.component.ts @@ -33,6 +33,7 @@ export class CLNOnChainUtxosComponent implements OnInit, AfterViewInit, OnDestro @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator | undefined; @Input() numDustUTXOs = 0; @Input() isDustUTXO = false; + @Input() dustAmount = 1000; public nodePageDefs = CLN_PAGE_DEFS; public selFilterBy = 'all'; public colWidth = '20rem'; @@ -40,6 +41,7 @@ export class CLNOnChainUtxosComponent implements OnInit, AfterViewInit, OnDestro public tableSetting: TableSetting = { tableId: 'utxos', recordsPerPage: PAGE_SIZE, sortBy: 'status', sortOrder: SortOrderEnum.DESCENDING }; public displayedColumns: any[] = []; public utxos: UTXO[]; + public dustUtxos: UTXO[]; public listUTXOs: any = new MatTableDataSource([]); public pageSize = PAGE_SIZE; public pageSizeOptions = PAGE_SIZE_OPTIONS; @@ -79,17 +81,27 @@ export class CLNOnChainUtxosComponent implements OnInit, AfterViewInit, OnDestro this.logger.info(this.displayedColumns); }); this.store.select(utxos).pipe(takeUntil(this.unSubs[1])). - subscribe((utxosSeletor: { utxos: UTXO[], apiCallStatus: ApiCallStatusPayload }) => { + subscribe((utxosSelector: { utxos: UTXO[], apiCallStatus: ApiCallStatusPayload }) => { this.errorMessage = ''; - this.apiCallStatus = utxosSeletor.apiCallStatus; + this.apiCallStatus = utxosSelector.apiCallStatus; if (this.apiCallStatus.status === APICallStatusEnum.ERROR) { this.errorMessage = !this.apiCallStatus.message ? '' : (typeof (this.apiCallStatus.message) === 'object') ? JSON.stringify(this.apiCallStatus.message) : this.apiCallStatus.message; } - this.utxos = (this.isDustUTXO) ? utxosSeletor.utxos?.filter((utxo) => +(utxo.value || 0) < 1000) : utxosSeletor.utxos ? utxosSeletor.utxos : []; - if (this.utxos && this.utxos.length > 0 && this.sort && this.paginator && this.displayedColumns.length > 0) { - this.loadUTXOsTable(this.utxos); + if (utxosSelector.utxos && utxosSelector.utxos.length > 0) { + this.dustUtxos = utxosSelector.utxos?.filter((utxo) => +(utxo.value || 0) < this.dustAmount); + this.utxos = utxosSelector.utxos; + if (this.isDustUTXO) { + if (this.dustUtxos && this.dustUtxos.length > 0 && this.sort && this.paginator && this.displayedColumns.length > 0) { + this.loadUTXOsTable(this.dustUtxos); + } + } else { + this.displayedColumns.unshift('is_dust'); + if (this.utxos && this.utxos.length > 0 && this.sort && this.paginator && this.displayedColumns.length > 0) { + this.loadUTXOsTable(this.utxos); + } + } } - this.logger.info(utxosSeletor); + this.logger.info(utxosSelector); }); } @@ -125,7 +137,7 @@ export class CLNOnChainUtxosComponent implements OnInit, AfterViewInit, OnDestro getLabel(column: string) { const returnColumn: ColumnDefinition = this.nodePageDefs[this.PAGE_ID][this.tableSetting.tableId].allowedColumns.find((col) => col.column === column); - return returnColumn ? returnColumn.label ? returnColumn.label : this.camelCaseWithReplace.transform(returnColumn.column, '_') : this.commonService.titleCase(column); + return returnColumn ? returnColumn.label ? returnColumn.label : this.camelCaseWithReplace.transform(returnColumn.column, '_') : column === 'is_dust' ? 'Dust' : this.commonService.titleCase(column); } setFilterPredicate() { @@ -136,17 +148,30 @@ export class CLNOnChainUtxosComponent implements OnInit, AfterViewInit, OnDestro rowToFilter = JSON.stringify(rowData).toLowerCase(); break; + case 'is_dust': + rowToFilter = (rowData?.value || 0) < this.dustAmount ? 'dust' : 'nondust'; + break; + + case 'status': + rowToFilter = rowData?.status?.toLowerCase() || ''; + break; + default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } - return rowToFilter.includes(fltr); + return (this.selFilterBy === 'is_dust' || this.selFilterBy === 'status') ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); }; } loadUTXOsTable(utxos: any[]) { this.listUTXOs = new MatTableDataSource([...utxos]); - this.listUTXOs.sortingDataAccessor = (data: any, sortHeaderId: string) => ((data[sortHeaderId] && isNaN(data[sortHeaderId])) ? data[sortHeaderId].toLocaleLowerCase() : data[sortHeaderId] ? +data[sortHeaderId] : null); + this.listUTXOs.sortingDataAccessor = (data: UTXO, sortHeaderId: string) => { + switch (sortHeaderId) { + case 'is_dust': return +(data.value || 0) < this.dustAmount; + default: return (data[sortHeaderId] && isNaN(data[sortHeaderId])) ? data[sortHeaderId].toLocaleLowerCase() : data[sortHeaderId] ? +data[sortHeaderId] : null; + } + }; this.listUTXOs.sort = this.sort; this.listUTXOs.sort?.sort({ id: this.tableSetting.sortBy, start: this.tableSetting.sortOrder, disableClear: true }); this.listUTXOs.paginator = this.paginator; diff --git a/src/app/cln/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts b/src/app/cln/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts index 5cdb8f9a..a3dd22be 100644 --- a/src/app/cln/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts +++ b/src/app/cln/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts @@ -304,7 +304,7 @@ export class CLNChannelOpenTableComponent implements OnInit, AfterViewInit, OnDe break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'connected' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/cln/peers-channels/channels/channels-tables/channel-pending-table/channel-pending-table.component.ts b/src/app/cln/peers-channels/channels/channels-tables/channel-pending-table/channel-pending-table.component.ts index 1466cfc0..84d966cc 100644 --- a/src/app/cln/peers-channels/channels/channels-tables/channel-pending-table/channel-pending-table.component.ts +++ b/src/app/cln/peers-channels/channels/channels-tables/channel-pending-table/channel-pending-table.component.ts @@ -206,7 +206,7 @@ export class CLNChannelPendingTableComponent implements OnInit, AfterViewInit, O break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return (this.selFilterBy === 'connected' || this.selFilterBy === 'state') ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/cln/peers-channels/peers/peers.component.ts b/src/app/cln/peers-channels/peers/peers.component.ts index 5e1d2c69..27a1fdc3 100644 --- a/src/app/cln/peers-channels/peers/peers.component.ts +++ b/src/app/cln/peers-channels/peers/peers.component.ts @@ -210,11 +210,11 @@ export class CLNPeersComponent implements OnInit, AfterViewInit, OnDestroy { break; case 'netaddr': - rowToFilter = (rowData?.netaddr?.reduce((acc, curr) => acc + curr), ' ') || ''; + rowToFilter = rowData.netaddr ? rowData.netaddr.reduce((acc, curr) => acc + curr, ' ') : ''; break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'connected' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/cln/routing/failed-transactions/failed-transactions.component.ts b/src/app/cln/routing/failed-transactions/failed-transactions.component.ts index d6f1fc6f..7719609b 100644 --- a/src/app/cln/routing/failed-transactions/failed-transactions.component.ts +++ b/src/app/cln/routing/failed-transactions/failed-transactions.component.ts @@ -159,7 +159,7 @@ export class CLNFailedTransactionsComponent implements OnInit, AfterViewInit, On break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/cln/routing/forwarding-history/forwarding-history.component.ts b/src/app/cln/routing/forwarding-history/forwarding-history.component.ts index 05cba10b..6fdef553 100644 --- a/src/app/cln/routing/forwarding-history/forwarding-history.component.ts +++ b/src/app/cln/routing/forwarding-history/forwarding-history.component.ts @@ -121,6 +121,7 @@ export class CLNForwardingHistoryComponent implements OnInit, OnChanges, AfterVi } } if (changes.selFilter && !changes.selFilter.firstChange) { + this.selFilterBy = 'all'; this.applyFilter(); } } @@ -182,7 +183,7 @@ export class CLNForwardingHistoryComponent implements OnInit, OnChanges, AfterVi break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/cln/routing/local-failed-transactions/local-failed-transactions.component.ts b/src/app/cln/routing/local-failed-transactions/local-failed-transactions.component.ts index 545d6105..78c82887 100644 --- a/src/app/cln/routing/local-failed-transactions/local-failed-transactions.component.ts +++ b/src/app/cln/routing/local-failed-transactions/local-failed-transactions.component.ts @@ -154,7 +154,7 @@ export class CLNLocalFailedTransactionsComponent implements OnInit, AfterViewIni break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'failreason' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/cln/routing/routing-peers/routing-peers.component.html b/src/app/cln/routing/routing-peers/routing-peers.component.html index de0ef04c..260183e7 100644 --- a/src/app/cln/routing/routing-peers/routing-peers.component.html +++ b/src/app/cln/routing/routing-peers/routing-peers.component.html @@ -1,18 +1,18 @@
{{errorMessage}}
-
+
Incoming
- - - {{getLabel(column)}} +
@@ -65,14 +65,14 @@
Outgoing
- - +
diff --git a/src/app/cln/routing/routing-peers/routing-peers.component.ts b/src/app/cln/routing/routing-peers/routing-peers.component.ts index 04e7a6d4..267715c2 100644 --- a/src/app/cln/routing/routing-peers/routing-peers.component.ts +++ b/src/app/cln/routing/routing-peers/routing-peers.component.ts @@ -42,8 +42,8 @@ export class CLNRoutingPeersComponent implements OnInit, OnChanges, AfterViewIni public tableSetting: TableSetting = { tableId: 'routing_peers', recordsPerPage: PAGE_SIZE, sortBy: 'total_fee', sortOrder: SortOrderEnum.DESCENDING }; public successfulEvents: ForwardingEvent[] = []; public displayedColumns: any[] = []; - public routingPeersIncoming: any = []; - public routingPeersOutgoing: any = []; + public routingPeersIncoming: any = new MatTableDataSource([]); + public routingPeersOutgoing: any = new MatTableDataSource([]); public pageSize = PAGE_SIZE; public pageSizeOptions = PAGE_SIZE_OPTIONS; public screenSize = ''; @@ -79,7 +79,7 @@ export class CLNRoutingPeersComponent implements OnInit, OnChanges, AfterViewIni this.displayedColumns = JSON.parse(JSON.stringify(this.tableSetting.columnSelection)); } this.pageSize = this.tableSetting.recordsPerPage ? +this.tableSetting.recordsPerPage : PAGE_SIZE; - this.colWidth = this.displayedColumns.length ? ((this.commonService.getContainerSize().width / this.displayedColumns.length) / 10) + 'rem' : '20rem'; + this.colWidth = this.displayedColumns.length ? ((this.commonService.getContainerSize().width / (this.displayedColumns.length * 2)) / 10) + 'rem' : '20rem'; this.logger.info(this.displayedColumns); }); this.store.select(forwardingHistory).pipe(takeUntil(this.unSubs[1])). @@ -116,57 +116,45 @@ export class CLNRoutingPeersComponent implements OnInit, OnChanges, AfterViewIni } } - applyFilterIncoming() { + applyIncomingFilter() { this.routingPeersIncoming.filter = this.filterIn.toLowerCase(); } - applyFilterOutgoing() { + applyOutgoingFilter() { this.routingPeersOutgoing.filter = this.filterOut.toLowerCase(); } getLabel(column: string) { const returnColumn: ColumnDefinition = this.nodePageDefs[this.PAGE_ID][this.tableSetting.tableId].allowedColumns.find((col) => col.column === column); - return returnColumn ? returnColumn.label ? returnColumn.label : this.camelCaseWithReplace.transform(returnColumn.column, '_') : this.commonService.titleCase(column); + return returnColumn ? returnColumn.label ? returnColumn.label : this.camelCaseWithReplace.transform(returnColumn.column, '_') : 'all'; } setFilterPredicate() { - this.routingPeersIncoming.filterPredicate = (rowDataIn: RoutingPeer, fltr: string) => { - let rowToFilterIn = ''; - switch (this.selFilterByIn) { - case 'all': - rowToFilterIn = JSON.stringify(rowDataIn).toLowerCase(); - break; - - case 'total_amount': - case 'total_fee': - rowToFilterIn = ((+(rowDataIn[this.selFilterByIn] || 0)) / 1000)?.toString() || ''; - break; - - default: - rowToFilterIn = typeof rowDataIn[this.selFilterByIn] === 'string' ? rowDataIn[this.selFilterByIn].toLowerCase() : typeof rowDataIn[this.selFilterByIn] === 'boolean' ? (rowDataIn[this.selFilterByIn] ? 'yes' : 'no') : rowDataIn[this.selFilterByIn].toString(); - break; - } - return rowToFilterIn.includes(fltr); - }; - - this.routingPeersOutgoing.filterPredicate = (rowDataOut: RoutingPeer, fltr: string) => { - let rowToFilterOut = ''; - switch (this.selFilterByOut) { - case 'all': - rowToFilterOut = JSON.stringify(rowDataOut).toLowerCase(); - break; - - case 'total_amount': - case 'total_fee': - rowToFilterOut = ((+(rowDataOut[this.selFilterByOut] || 0)) / 1000)?.toString() || ''; - break; - - default: - rowToFilterOut = typeof rowDataOut[this.selFilterByOut] === 'string' ? rowDataOut[this.selFilterByOut].toLowerCase() : typeof rowDataOut[this.selFilterByOut] === 'boolean' ? (rowDataOut[this.selFilterByOut] ? 'yes' : 'no') : rowDataOut[this.selFilterByOut].toString(); - break; - } - return rowToFilterOut.includes(fltr); - }; + this.routingPeersIncoming.filterPredicate = (rpIn: RoutingPeer, fltr: string) => JSON.stringify(rpIn).toLowerCase().includes(fltr); + this.routingPeersOutgoing.filterPredicate = (rpOut: RoutingPeer, fltr: string) => JSON.stringify(rpOut).toLowerCase().includes(fltr); + // this.routingPeersIncoming.filterPredicate = (rowData: RoutingPeer, fltr: string) => { + // let rowToFilter = ''; + // switch (this.selFilterBy) { + // case 'all': + // for (let i = 0; i < this.displayedColumns.length - 1; i++) { + // rowToFilter = rowToFilter + ( + // (this.displayedColumns[i] === '') ? + // (rowData ? rowData..toLowerCase() : '') : + // (rowData[this.displayedColumns[i]] ? rowData[this.displayedColumns[i]].toLowerCase() : '') + // ) + ', '; + // } + // break; + + // case '': + // rowToFilter = (rowData ? rowData..toLowerCase() : ''); + // break; + + // default: + // rowToFilter = (rowData[this.selFilterBy] ? rowData[this.selFilterBy].toLowerCase() : ''); + // break; + // } + // return rowToFilter.includes(fltr); + // }; } loadRoutingPeersTable(events: ForwardingEvent[]) { @@ -188,8 +176,8 @@ export class CLNRoutingPeersComponent implements OnInit, OnChanges, AfterViewIni this.routingPeersOutgoing = new MatTableDataSource([]); } this.setFilterPredicate(); - this.applyFilterIncoming(); - this.applyFilterOutgoing(); + this.applyIncomingFilter(); + this.applyOutgoingFilter(); this.logger.info(this.routingPeersIncoming); this.logger.info(this.routingPeersOutgoing); } diff --git a/src/app/cln/transactions/invoices/invoices-table/lightning-invoices-table.component.ts b/src/app/cln/transactions/invoices/invoices-table/lightning-invoices-table.component.ts index 47243771..4a20033a 100644 --- a/src/app/cln/transactions/invoices/invoices-table/lightning-invoices-table.component.ts +++ b/src/app/cln/transactions/invoices/invoices-table/lightning-invoices-table.component.ts @@ -240,7 +240,7 @@ export class CLNLightningInvoicesTableComponent implements OnInit, AfterViewInit break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return (this.selFilterBy === 'status' || this.selFilterBy === 'type') ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/cln/transactions/offers/offer-bookmarks-table/offer-bookmarks-table.component.ts b/src/app/cln/transactions/offers/offer-bookmarks-table/offer-bookmarks-table.component.ts index 6ec4cfe5..8cf3ff68 100644 --- a/src/app/cln/transactions/offers/offer-bookmarks-table/offer-bookmarks-table.component.ts +++ b/src/app/cln/transactions/offers/offer-bookmarks-table/offer-bookmarks-table.component.ts @@ -169,7 +169,7 @@ export class CLNOfferBookmarksTableComponent implements OnInit, AfterViewInit, O break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/cln/transactions/offers/offers-table/offers-table.component.ts b/src/app/cln/transactions/offers/offers-table/offers-table.component.ts index 40a767cc..8ee38cfa 100644 --- a/src/app/cln/transactions/offers/offers-table/offers-table.component.ts +++ b/src/app/cln/transactions/offers/offers-table/offers-table.component.ts @@ -250,7 +250,7 @@ export class CLNOffersTableComponent implements OnInit, AfterViewInit, OnDestroy break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'active' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/cln/transactions/payments/lightning-payments.component.ts b/src/app/cln/transactions/payments/lightning-payments.component.ts index ee117005..136e8a67 100644 --- a/src/app/cln/transactions/payments/lightning-payments.component.ts +++ b/src/app/cln/transactions/payments/lightning-payments.component.ts @@ -344,7 +344,7 @@ export class CLNLightningPaymentsComponent implements OnInit, AfterViewInit, OnD break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return (this.selFilterBy === 'status' || this.selFilterBy === 'type') ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/eclair/on-chain/on-chain-transaction-history/on-chain-transaction-history.component.ts b/src/app/eclair/on-chain/on-chain-transaction-history/on-chain-transaction-history.component.ts index 3a3d30f0..0caf2371 100644 --- a/src/app/eclair/on-chain/on-chain-transaction-history/on-chain-transaction-history.component.ts +++ b/src/app/eclair/on-chain/on-chain-transaction-history/on-chain-transaction-history.component.ts @@ -111,7 +111,7 @@ export class ECLOnChainTransactionHistoryComponent implements OnInit, OnDestroy break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/eclair/peers-channels/channels/channels-tables/channel-inactive-table/channel-inactive-table.component.ts b/src/app/eclair/peers-channels/channels/channels-tables/channel-inactive-table/channel-inactive-table.component.ts index 95189be3..264969e8 100644 --- a/src/app/eclair/peers-channels/channels/channels-tables/channel-inactive-table/channel-inactive-table.component.ts +++ b/src/app/eclair/peers-channels/channels/channels-tables/channel-inactive-table/channel-inactive-table.component.ts @@ -178,7 +178,7 @@ export class ECLChannelInactiveTableComponent implements OnInit, AfterViewInit, break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/eclair/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts b/src/app/eclair/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts index 8a0ec2b5..080d5d7a 100644 --- a/src/app/eclair/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts +++ b/src/app/eclair/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts @@ -248,7 +248,7 @@ export class ECLChannelOpenTableComponent implements OnInit, AfterViewInit, OnDe break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/eclair/peers-channels/channels/channels-tables/channel-pending-table/channel-pending-table.component.ts b/src/app/eclair/peers-channels/channels/channels-tables/channel-pending-table/channel-pending-table.component.ts index 39543c61..bbabf905 100644 --- a/src/app/eclair/peers-channels/channels/channels-tables/channel-pending-table/channel-pending-table.component.ts +++ b/src/app/eclair/peers-channels/channels/channels-tables/channel-pending-table/channel-pending-table.component.ts @@ -148,7 +148,7 @@ export class ECLChannelPendingTableComponent implements OnInit, AfterViewInit, O break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/eclair/peers-channels/peers/peers.component.ts b/src/app/eclair/peers-channels/peers/peers.component.ts index e3b997b9..7488bb42 100644 --- a/src/app/eclair/peers-channels/peers/peers.component.ts +++ b/src/app/eclair/peers-channels/peers/peers.component.ts @@ -225,7 +225,7 @@ export class ECLPeersComponent implements OnInit, AfterViewInit, OnDestroy { break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'state' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/eclair/routing/forwarding-history/forwarding-history.component.ts b/src/app/eclair/routing/forwarding-history/forwarding-history.component.ts index 1fa77aef..3f3a0420 100644 --- a/src/app/eclair/routing/forwarding-history/forwarding-history.component.ts +++ b/src/app/eclair/routing/forwarding-history/forwarding-history.component.ts @@ -107,6 +107,7 @@ export class ECLForwardingHistoryComponent implements OnInit, OnChanges, AfterVi } } if (changes.selFilter && !changes.selFilter.firstChange) { + this.selFilterBy = 'all'; this.applyFilter(); } } @@ -167,7 +168,7 @@ export class ECLForwardingHistoryComponent implements OnInit, OnChanges, AfterVi break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/eclair/routing/routing-peers/routing-peers.component.html b/src/app/eclair/routing/routing-peers/routing-peers.component.html index b3a265fb..493532b5 100644 --- a/src/app/eclair/routing/routing-peers/routing-peers.component.html +++ b/src/app/eclair/routing/routing-peers/routing-peers.component.html @@ -1,18 +1,18 @@
{{errorMessage}}
-
+
Incoming
- +
@@ -65,14 +65,14 @@
Outgoing
- +
diff --git a/src/app/eclair/routing/routing-peers/routing-peers.component.ts b/src/app/eclair/routing/routing-peers/routing-peers.component.ts index 2dfa92aa..1a710e2d 100644 --- a/src/app/eclair/routing/routing-peers/routing-peers.component.ts +++ b/src/app/eclair/routing/routing-peers/routing-peers.component.ts @@ -71,7 +71,7 @@ export class ECLRoutingPeersComponent implements OnInit, AfterViewInit, OnDestro this.displayedColumns = JSON.parse(JSON.stringify(this.tableSetting.columnSelection)); } this.pageSize = this.tableSetting.recordsPerPage ? +this.tableSetting.recordsPerPage : PAGE_SIZE; - this.colWidth = this.displayedColumns.length ? ((this.commonService.getContainerSize().width / this.displayedColumns.length) / 10) + 'rem' : '20rem'; + this.colWidth = this.displayedColumns.length ? ((this.commonService.getContainerSize().width / (this.displayedColumns.length * 2)) / 10) + 'rem' : '20rem'; this.logger.info(this.displayedColumns); }); this.store.select(payments).pipe(takeUntil(this.unSubs[1])). @@ -96,11 +96,11 @@ export class ECLRoutingPeersComponent implements OnInit, AfterViewInit, OnDestro } applyFilterIncoming() { - this.routingPeersIncoming.filter = this.filterIn.toLowerCase(); + this.routingPeersIncoming.filter = this.filterIn.trim().toLowerCase(); } applyFilterOutgoing() { - this.routingPeersOutgoing.filter = this.filterOut.toLowerCase(); + this.routingPeersOutgoing.filter = this.filterOut.trim().toLowerCase(); } getLabel(column: string) { diff --git a/src/app/eclair/transactions/invoices/lightning-invoices.component.ts b/src/app/eclair/transactions/invoices/lightning-invoices.component.ts index 9ecc9285..edc5cdc2 100644 --- a/src/app/eclair/transactions/invoices/lightning-invoices.component.ts +++ b/src/app/eclair/transactions/invoices/lightning-invoices.component.ts @@ -210,7 +210,7 @@ export class ECLLightningInvoicesComponent implements OnInit, AfterViewInit, OnD break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'status' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/eclair/transactions/payments/lightning-payments.component.ts b/src/app/eclair/transactions/payments/lightning-payments.component.ts index 4f7b809a..8ec161ae 100644 --- a/src/app/eclair/transactions/payments/lightning-payments.component.ts +++ b/src/app/eclair/transactions/payments/lightning-payments.component.ts @@ -143,7 +143,7 @@ export class ECLLightningPaymentsComponent implements OnInit, AfterViewInit, OnD break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/lnd/on-chain/utxo-tables/on-chain-transaction-history/on-chain-transaction-history.component.ts b/src/app/lnd/on-chain/utxo-tables/on-chain-transaction-history/on-chain-transaction-history.component.ts index dd5623a7..382d3108 100644 --- a/src/app/lnd/on-chain/utxo-tables/on-chain-transaction-history/on-chain-transaction-history.component.ts +++ b/src/app/lnd/on-chain/utxo-tables/on-chain-transaction-history/on-chain-transaction-history.component.ts @@ -141,7 +141,7 @@ export class OnChainTransactionHistoryComponent implements OnInit, OnChanges, On break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/lnd/on-chain/utxo-tables/utxo-tables.component.html b/src/app/lnd/on-chain/utxo-tables/utxo-tables.component.html index a48b27e8..c34cdae5 100644 --- a/src/app/lnd/on-chain/utxo-tables/utxo-tables.component.html +++ b/src/app/lnd/on-chain/utxo-tables/utxo-tables.component.html @@ -4,7 +4,7 @@ UTXOs - + @@ -16,7 +16,7 @@ Dust UTXOs - +
diff --git a/src/app/lnd/on-chain/utxo-tables/utxo-tables.component.ts b/src/app/lnd/on-chain/utxo-tables/utxo-tables.component.ts index ac3acf2c..574640fb 100644 --- a/src/app/lnd/on-chain/utxo-tables/utxo-tables.component.ts +++ b/src/app/lnd/on-chain/utxo-tables/utxo-tables.component.ts @@ -20,6 +20,7 @@ export class UTXOTablesComponent implements OnInit, OnDestroy { @Input() selectedTableIndex = 0; @Output() readonly selectedTableIndexChange = new EventEmitter(); + public DUST_AMOUNT = 1000; public numTransactions = 0; public numUtxos = 0; public numDustUtxos = 0; @@ -34,7 +35,7 @@ export class UTXOTablesComponent implements OnInit, OnDestroy { subscribe((utxosSelector: { utxos: UTXO[], apiCallStatus: ApiCallStatusPayload }) => { if (utxosSelector.utxos && utxosSelector.utxos.length > 0) { this.numUtxos = utxosSelector.utxos.length; - this.numDustUtxos = utxosSelector.utxos?.filter((utxo) => utxo.amount_sat && +utxo.amount_sat < 1000).length; + this.numDustUtxos = utxosSelector.utxos?.filter((utxo) => utxo.amount_sat && +utxo.amount_sat < this.DUST_AMOUNT).length; } this.logger.info(utxosSelector); }); diff --git a/src/app/lnd/on-chain/utxo-tables/utxos/utxos.component.html b/src/app/lnd/on-chain/utxo-tables/utxos/utxos.component.html index d5309af3..ebdf458c 100644 --- a/src/app/lnd/on-chain/utxo-tables/utxos/utxos.component.html +++ b/src/app/lnd/on-chain/utxo-tables/utxos/utxos.component.html @@ -16,9 +16,9 @@
+ + warning + + - - - - warning - - - - - + +
- + diff --git a/src/app/lnd/on-chain/utxo-tables/utxos/utxos.component.ts b/src/app/lnd/on-chain/utxo-tables/utxos/utxos.component.ts index c49660ac..f88fceb3 100644 --- a/src/app/lnd/on-chain/utxo-tables/utxos/utxos.component.ts +++ b/src/app/lnd/on-chain/utxo-tables/utxos/utxos.component.ts @@ -37,8 +37,8 @@ export class OnChainUTXOsComponent implements OnInit, OnChanges, OnDestroy { @ViewChild(MatSort, { static: false }) sort: MatSort | undefined; @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator | undefined; @Input() isDustUTXO = false; + @Input() dustAmount = 1000; public faMoneyBillWave = faMoneyBillWave; - public DUST_AMOUNT = 50000; public nodePageDefs = LND_PAGE_DEFS; public selFilterBy = 'all'; public colWidth = '20rem'; @@ -91,7 +91,7 @@ export class OnChainUTXOsComponent implements OnInit, OnChanges, OnDestroy { this.errorMessage = !this.apiCallStatus.message ? '' : (typeof (this.apiCallStatus.message) === 'object') ? JSON.stringify(this.apiCallStatus.message) : this.apiCallStatus.message; } if (utxosSelector.utxos && utxosSelector.utxos.length > 0) { - this.dustUtxos = utxosSelector.utxos?.filter((utxo) => +(utxo.amount_sat || 0) < this.DUST_AMOUNT); + this.dustUtxos = utxosSelector.utxos?.filter((utxo) => +(utxo.amount_sat || 0) < this.dustAmount); this.utxos = utxosSelector.utxos; if (this.utxos.length > 0 && this.dustUtxos.length > 0 && !this.isDustUTXO) { this.displayedColumns.unshift('is_dust'); @@ -131,7 +131,7 @@ export class OnChainUTXOsComponent implements OnInit, OnChanges, OnDestroy { break; case 'is_dust': - rowToFilter = (rowData?.amount_sat || 0) < this.DUST_AMOUNT ? 'dust' : 'non-dust'; + rowToFilter = (rowData?.amount_sat || 0) < this.dustAmount ? 'dust' : 'nondust'; break; case 'tx_id': @@ -147,7 +147,7 @@ export class OnChainUTXOsComponent implements OnInit, OnChanges, OnDestroy { break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return (this.selFilterBy === 'is_dust' || this.selFilterBy === 'address_type') ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); @@ -180,7 +180,7 @@ export class OnChainUTXOsComponent implements OnInit, OnChanges, OnDestroy { this.listUTXOs = new MatTableDataSource([...UTXOs]); this.listUTXOs.sortingDataAccessor = (data: any, sortHeaderId: string) => { switch (sortHeaderId) { - case 'is_dust': return +(data.amount_sat || 0) < this.DUST_AMOUNT; + case 'is_dust': return +(data.amount_sat || 0) < this.dustAmount; case 'tx_id': return data.outpoint.txid_str.toLocaleLowerCase(); case 'output': return +data.outpoint.output_index; default: return (data[sortHeaderId] && isNaN(data[sortHeaderId])) ? data[sortHeaderId].toLocaleLowerCase() : data[sortHeaderId] ? +data[sortHeaderId] : null; diff --git a/src/app/lnd/peers-channels/channels/channels-tables/channel-active-htlcs-table/channel-active-htlcs-table.component.ts b/src/app/lnd/peers-channels/channels/channels-tables/channel-active-htlcs-table/channel-active-htlcs-table.component.ts index 8f2348cf..8e2f2cf6 100644 --- a/src/app/lnd/peers-channels/channels/channels-tables/channel-active-htlcs-table/channel-active-htlcs-table.component.ts +++ b/src/app/lnd/peers-channels/channels/channels-tables/channel-active-htlcs-table/channel-active-htlcs-table.component.ts @@ -140,7 +140,7 @@ export class ChannelActiveHTLCsTableComponent implements OnInit, AfterViewInit, break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/lnd/peers-channels/channels/channels-tables/channel-closed-table/channel-closed-table.component.ts b/src/app/lnd/peers-channels/channels/channels-tables/channel-closed-table/channel-closed-table.component.ts index 0a826ac8..68b3666c 100644 --- a/src/app/lnd/peers-channels/channels/channels-tables/channel-closed-table/channel-closed-table.component.ts +++ b/src/app/lnd/peers-channels/channels/channels-tables/channel-closed-table/channel-closed-table.component.ts @@ -122,7 +122,7 @@ export class ChannelClosedTableComponent implements OnInit, AfterViewInit, OnDes break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'close_type' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/lnd/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts b/src/app/lnd/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts index c456216b..7db74299 100644 --- a/src/app/lnd/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts +++ b/src/app/lnd/peers-channels/channels/channels-tables/channel-open-table/channel-open-table.component.ts @@ -338,7 +338,7 @@ export class ChannelOpenTableComponent implements OnInit, AfterViewInit, OnDestr break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'active' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/lnd/peers-channels/peers/peers.component.ts b/src/app/lnd/peers-channels/peers/peers.component.ts index 8c6f3620..359cafa4 100644 --- a/src/app/lnd/peers-channels/peers/peers.component.ts +++ b/src/app/lnd/peers-channels/peers/peers.component.ts @@ -198,7 +198,7 @@ export class PeersComponent implements OnInit, AfterViewInit, OnDestroy { break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/lnd/routing/forwarding-history/forwarding-history.component.ts b/src/app/lnd/routing/forwarding-history/forwarding-history.component.ts index 137597c1..db46aa88 100644 --- a/src/app/lnd/routing/forwarding-history/forwarding-history.component.ts +++ b/src/app/lnd/routing/forwarding-history/forwarding-history.component.ts @@ -108,6 +108,7 @@ export class ForwardingHistoryComponent implements OnInit, AfterViewInit, OnChan } } if (changes.selFilter && !changes.selFilter.firstChange) { + this.selFilterBy = 'all'; this.applyFilter(); } } @@ -158,7 +159,7 @@ export class ForwardingHistoryComponent implements OnInit, AfterViewInit, OnChan break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/lnd/routing/non-routing-peers/non-routing-peers.component.ts b/src/app/lnd/routing/non-routing-peers/non-routing-peers.component.ts index 8eddbf9b..a5f2ea1b 100644 --- a/src/app/lnd/routing/non-routing-peers/non-routing-peers.component.ts +++ b/src/app/lnd/routing/non-routing-peers/non-routing-peers.component.ts @@ -207,7 +207,7 @@ export class NonRoutingPeersComponent implements OnInit, AfterViewInit, OnDestro break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/lnd/routing/routing-peers/routing-peers.component.html b/src/app/lnd/routing/routing-peers/routing-peers.component.html index adf444ac..346f1980 100644 --- a/src/app/lnd/routing/routing-peers/routing-peers.component.html +++ b/src/app/lnd/routing/routing-peers/routing-peers.component.html @@ -1,18 +1,18 @@
{{errorMessage}}
-
+
Incoming
- +
@@ -69,14 +69,14 @@
Outgoing
- +
diff --git a/src/app/lnd/routing/routing-peers/routing-peers.component.ts b/src/app/lnd/routing/routing-peers/routing-peers.component.ts index 5a12c869..aff3648e 100644 --- a/src/app/lnd/routing/routing-peers/routing-peers.component.ts +++ b/src/app/lnd/routing/routing-peers/routing-peers.component.ts @@ -71,7 +71,7 @@ export class RoutingPeersComponent implements OnInit, AfterViewInit, OnDestroy { this.displayedColumns = JSON.parse(JSON.stringify(this.tableSetting.columnSelection)); } this.pageSize = this.tableSetting.recordsPerPage ? +this.tableSetting.recordsPerPage : PAGE_SIZE; - this.colWidth = this.displayedColumns.length ? ((this.commonService.getContainerSize().width / this.displayedColumns.length) / 10) + 'rem' : '20rem'; + this.colWidth = this.displayedColumns.length ? ((this.commonService.getContainerSize().width / (this.displayedColumns.length * 2)) / 10) + 'rem' : '20rem'; this.logger.info(this.displayedColumns); }); this.store.select(forwardingHistory).pipe(takeUntil(this.unSubs[1])). @@ -125,11 +125,11 @@ export class RoutingPeersComponent implements OnInit, AfterViewInit, OnDestroy { } applyFilterIncoming() { - this.routingPeersIncoming.filter = this.filterIn.toLowerCase(); + this.routingPeersIncoming.filter = this.filterIn.trim().toLowerCase(); } applyFilterOutgoing() { - this.routingPeersOutgoing.filter = this.filterOut.toLowerCase(); + this.routingPeersOutgoing.filter = this.filterOut.trim().toLowerCase(); } getLabel(column: string) { diff --git a/src/app/lnd/transactions/invoices/lightning-invoices.component.ts b/src/app/lnd/transactions/invoices/lightning-invoices.component.ts index 434d8cfd..0d8192b1 100644 --- a/src/app/lnd/transactions/invoices/lightning-invoices.component.ts +++ b/src/app/lnd/transactions/invoices/lightning-invoices.component.ts @@ -209,7 +209,7 @@ export class LightningInvoicesComponent implements OnInit, AfterViewInit, OnDest break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return (this.selFilterBy === 'is_keysend' || this.selFilterBy === 'is_amp') ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/lnd/transactions/payments/lightning-payments.component.ts b/src/app/lnd/transactions/payments/lightning-payments.component.ts index 4fe59b7d..1e246f03 100644 --- a/src/app/lnd/transactions/payments/lightning-payments.component.ts +++ b/src/app/lnd/transactions/payments/lightning-payments.component.ts @@ -466,7 +466,7 @@ export class LightningPaymentsComponent implements OnInit, AfterViewInit, OnDest break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr); diff --git a/src/app/shared/components/ln-services/boltz/swaps/swaps.component.ts b/src/app/shared/components/ln-services/boltz/swaps/swaps.component.ts index 73f4ec56..f1c6f948 100755 --- a/src/app/shared/components/ln-services/boltz/swaps/swaps.component.ts +++ b/src/app/shared/components/ln-services/boltz/swaps/swaps.component.ts @@ -133,7 +133,7 @@ export class BoltzSwapsComponent implements OnInit, AfterViewInit, OnChanges, On break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'status' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/shared/components/ln-services/loop/swaps/swaps.component.ts b/src/app/shared/components/ln-services/loop/swaps/swaps.component.ts index 91c026c8..ebf65362 100755 --- a/src/app/shared/components/ln-services/loop/swaps/swaps.component.ts +++ b/src/app/shared/components/ln-services/loop/swaps/swaps.component.ts @@ -115,7 +115,7 @@ export class SwapsComponent implements OnInit, AfterViewInit, OnChanges, OnDestr break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return this.selFilterBy === 'state' ? rowToFilter.indexOf(fltr) === 0 : rowToFilter.includes(fltr); diff --git a/src/app/shared/components/transactions-report-table/transactions-report-table.component.ts b/src/app/shared/components/transactions-report-table/transactions-report-table.component.ts index 2adf8107..3c8c35ee 100644 --- a/src/app/shared/components/transactions-report-table/transactions-report-table.component.ts +++ b/src/app/shared/components/transactions-report-table/transactions-report-table.component.ts @@ -68,6 +68,7 @@ export class TransactionsReportTableComponent implements OnInit, AfterViewInit, this.loadTransactionsTable(this.dataList); } if (changes.selFilter && !changes.selFilter.firstChange) { + this.selFilterBy = 'all'; this.applyFilter(); } } @@ -115,7 +116,7 @@ export class TransactionsReportTableComponent implements OnInit, AfterViewInit, break; default: - rowToFilter = typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); + rowToFilter = !rowData[this.selFilterBy] ? '' : typeof rowData[this.selFilterBy] === 'string' ? rowData[this.selFilterBy].toLowerCase() : typeof rowData[this.selFilterBy] === 'boolean' ? (rowData[this.selFilterBy] ? 'yes' : 'no') : rowData[this.selFilterBy].toString(); break; } return rowToFilter.includes(fltr);
- + warning