Update search results ordering
This commit is contained in:
parent
f3bd50d4ab
commit
321181d708
@ -195,6 +195,7 @@ export class SearchFormComponent implements OnInit {
|
|||||||
const matchesTxId = this.regexTransaction.test(searchText) && !this.regexBlockhash.test(searchText);
|
const matchesTxId = this.regexTransaction.test(searchText) && !this.regexBlockhash.test(searchText);
|
||||||
const matchesBlockHash = this.regexBlockhash.test(searchText);
|
const matchesBlockHash = this.regexBlockhash.test(searchText);
|
||||||
const matchesAddress = !matchesTxId && this.regexAddress.test(searchText);
|
const matchesAddress = !matchesTxId && this.regexAddress.test(searchText);
|
||||||
|
const publicKey = matchesAddress && searchText.startsWith('0');
|
||||||
const otherNetworks = findOtherNetworks(searchText, this.network as any || 'mainnet', this.env);
|
const otherNetworks = findOtherNetworks(searchText, this.network as any || 'mainnet', this.env);
|
||||||
const liquidAsset = this.assets ? (this.assets[searchText] || []) : [];
|
const liquidAsset = this.assets ? (this.assets[searchText] || []) : [];
|
||||||
const pools = this.pools.filter(pool => pool["name"].toLowerCase().includes(searchText.toLowerCase())).slice(0, 10);
|
const pools = this.pools.filter(pool => pool["name"].toLowerCase().includes(searchText.toLowerCase())).slice(0, 10);
|
||||||
@ -203,6 +204,10 @@ export class SearchFormComponent implements OnInit {
|
|||||||
searchText = searchText.replace(/\//g, '-');
|
searchText = searchText.replace(/\//g, '-');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (publicKey) {
|
||||||
|
otherNetworks.length = 0;
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
searchText: searchText,
|
searchText: searchText,
|
||||||
hashQuickMatch: +(matchesBlockHeight || matchesBlockHash || matchesTxId || matchesAddress || matchesUnixTimestamp || matchesDateTime),
|
hashQuickMatch: +(matchesBlockHeight || matchesBlockHash || matchesTxId || matchesAddress || matchesUnixTimestamp || matchesDateTime),
|
||||||
@ -212,6 +217,7 @@ export class SearchFormComponent implements OnInit {
|
|||||||
txId: matchesTxId,
|
txId: matchesTxId,
|
||||||
blockHash: matchesBlockHash,
|
blockHash: matchesBlockHash,
|
||||||
address: matchesAddress,
|
address: matchesAddress,
|
||||||
|
publicKey: publicKey,
|
||||||
addresses: matchesAddress && addressPrefixSearchResults.length === 1 && searchText === addressPrefixSearchResults[0] ? [] : addressPrefixSearchResults, // If there is only one address and it matches the search text, don't show it in the dropdown
|
addresses: matchesAddress && addressPrefixSearchResults.length === 1 && searchText === addressPrefixSearchResults[0] ? [] : addressPrefixSearchResults, // If there is only one address and it matches the search text, don't show it in the dropdown
|
||||||
otherNetworks: otherNetworks,
|
otherNetworks: otherNetworks,
|
||||||
nodes: lightningResults.nodes,
|
nodes: lightningResults.nodes,
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : 13 }"></ng-container>
|
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : 13 }"></ng-container>
|
||||||
</button>
|
</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template [ngIf]="results.address">
|
<ng-template [ngIf]="results.address && !results.publicKey">
|
||||||
<div class="card-title" i18n="search.bitcoin-address">{{ networkName }} Address</div>
|
<div class="card-title" i18n="search.bitcoin-address">{{ networkName }} Address</div>
|
||||||
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
|
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
|
||||||
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : isMobile ? 17 : 30 }"></ng-container>
|
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : isMobile ? 17 : 30 }"></ng-container>
|
||||||
@ -35,26 +35,26 @@
|
|||||||
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : 13 }"></ng-container>
|
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : 13 }"></ng-container>
|
||||||
</button>
|
</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template [ngIf]="results.otherNetworks.length">
|
|
||||||
<div class="card-title danger" i18n="search.other-networks">Other Network Address</div>
|
|
||||||
<ng-template ngFor [ngForOf]="results.otherNetworks" let-otherNetwork let-i="index">
|
|
||||||
<button (click)="clickItem(results.hashQuickMatch + i)" [class.active]="(results.hashQuickMatch + i) === activeIdx" [class.inactive]="!otherNetwork.isNetworkAvailable" type="button" role="option" class="dropdown-item">
|
|
||||||
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: otherNetwork.address| shortenString : isMobile ? 12 : 20 }"></ng-container> <b>({{ otherNetwork.network.charAt(0).toUpperCase() + otherNetwork.network.slice(1) }})</b>
|
|
||||||
</button>
|
|
||||||
</ng-template>
|
|
||||||
</ng-template>
|
|
||||||
<ng-template [ngIf]="results.addresses.length">
|
<ng-template [ngIf]="results.addresses.length">
|
||||||
<div class="card-title" i18n="search.bitcoin-addresses">{{ networkName }} Addresses</div>
|
<div class="card-title" i18n="search.bitcoin-addresses">{{ networkName }} Addresses</div>
|
||||||
<ng-template ngFor [ngForOf]="results.addresses" let-address let-i="index">
|
<ng-template ngFor [ngForOf]="results.addresses" let-address let-i="index">
|
||||||
<button (click)="clickItem(results.hashQuickMatch + results.otherNetworks.length + i)" [class.active]="(results.hashQuickMatch + results.otherNetworks.length + i) === activeIdx" type="button" role="option" class="dropdown-item">
|
<button (click)="clickItem(results.hashQuickMatch + i)" [class.active]="(results.hashQuickMatch + i) === activeIdx" type="button" role="option" class="dropdown-item">
|
||||||
<ngb-highlight [result]="address | shortenString : isMobile ? 25 : 36" [term]="results.searchText"></ngb-highlight>
|
<ngb-highlight [result]="address | shortenString : isMobile ? 25 : 36" [term]="results.searchText"></ngb-highlight>
|
||||||
</button>
|
</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
<ng-template [ngIf]="results.pools.length">
|
||||||
|
<div class="card-title" i18n="search.mining-pools">Mining Pools</div>
|
||||||
|
<ng-template ngFor [ngForOf]="results.pools" let-pool let-i="index">
|
||||||
|
<button (click)="clickItem(results.hashQuickMatch + results.addresses.length + i)" [class.active]="results.hashQuickMatch + results.addresses.length + i === activeIdx" [class.inactive]="!pool.active" type="button" role="option" class="dropdown-item">
|
||||||
|
<ngb-highlight [result]="pool.name" [term]="results.searchText"></ngb-highlight>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
|
</ng-template>
|
||||||
<ng-template [ngIf]="results.nodes.length">
|
<ng-template [ngIf]="results.nodes.length">
|
||||||
<div class="card-title" i18n="search.lightning-nodes">Lightning Nodes</div>
|
<div class="card-title" i18n="search.lightning-nodes">Lightning Nodes</div>
|
||||||
<ng-template ngFor [ngForOf]="results.nodes" let-node let-i="index">
|
<ng-template ngFor [ngForOf]="results.nodes" let-node let-i="index">
|
||||||
<button (click)="clickItem(results.hashQuickMatch + results.otherNetworks.length + results.addresses.length + i)" [class.inactive]="node.status === 0" [class.active]="results.hashQuickMatch + results.otherNetworks.length + results.addresses.length + i === activeIdx" [routerLink]="['/lightning/node' | relativeUrl, node.public_key]" type="button" role="option" class="dropdown-item">
|
<button (click)="clickItem(results.hashQuickMatch + results.addresses.length + results.pools.length + i)" [class.inactive]="node.status === 0" [class.active]="results.hashQuickMatch + results.addresses.length + results.pools.length + i === activeIdx" [routerLink]="['/lightning/node' | relativeUrl, node.public_key]" type="button" role="option" class="dropdown-item">
|
||||||
<ngb-highlight [result]="node.alias" [term]="results.searchText"></ngb-highlight> <span class="symbol">{{ node.public_key | shortenString : 10 }}</span>
|
<ngb-highlight [result]="node.alias" [term]="results.searchText"></ngb-highlight> <span class="symbol">{{ node.public_key | shortenString : 10 }}</span>
|
||||||
</button>
|
</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
@ -62,19 +62,25 @@
|
|||||||
<ng-template [ngIf]="results.channels.length">
|
<ng-template [ngIf]="results.channels.length">
|
||||||
<div class="card-title" i18n="search.lightning-channels">Lightning Channels</div>
|
<div class="card-title" i18n="search.lightning-channels">Lightning Channels</div>
|
||||||
<ng-template ngFor [ngForOf]="results.channels" let-channel let-i="index">
|
<ng-template ngFor [ngForOf]="results.channels" let-channel let-i="index">
|
||||||
<button (click)="clickItem(results.hashQuickMatch + results.otherNetworks.length + results.addresses.length + results.nodes.length + i)" [class.inactive]="channel.status === 2" [class.active]="results.hashQuickMatch + results.otherNetworks.length + results.addresses.length + results.nodes.length + i === activeIdx" type="button" role="option" class="dropdown-item">
|
<button (click)="clickItem(results.hashQuickMatch + results.addresses.length + results.pools.length + results.nodes.length + i)" [class.inactive]="channel.status === 2" [class.active]="results.hashQuickMatch + results.addresses.length + results.pools.length + results.nodes.length + i === activeIdx" type="button" role="option" class="dropdown-item">
|
||||||
<ngb-highlight [result]="channel.short_id" [term]="results.searchText"></ngb-highlight> <span class="symbol">{{ channel.id }}</span>
|
<ngb-highlight [result]="channel.short_id" [term]="results.searchText"></ngb-highlight> <span class="symbol">{{ channel.id }}</span>
|
||||||
</button>
|
</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ng-template [ngIf]="results.pools.length">
|
<ng-template [ngIf]="results.otherNetworks.length">
|
||||||
<div class="card-title" i18n="search.mining-pools">Mining Pools</div>
|
<div class="card-title danger" i18n="search.other-networks">Other Network Address</div>
|
||||||
<ng-template ngFor [ngForOf]="results.pools" let-pool let-i="index">
|
<ng-template ngFor [ngForOf]="results.otherNetworks" let-otherNetwork let-i="index">
|
||||||
<button (click)="clickItem(results.hashQuickMatch + results.otherNetworks.length + results.addresses.length + results.nodes.length + results.channels.length + i)" [class.active]="results.hashQuickMatch + results.otherNetworks.length + results.addresses.length + results.nodes.length + results.channels.length + i === activeIdx" [class.inactive]="!pool.active" type="button" role="option" class="dropdown-item">
|
<button (click)="clickItem(results.hashQuickMatch + results.addresses.length + results.pools.length + results.nodes.length + results.channels.length + i)" [class.active]="(results.hashQuickMatch + results.addresses.length + results.pools.length + results.nodes.length + results.channels.length + i) === activeIdx" [class.inactive]="!otherNetwork.isNetworkAvailable" type="button" role="option" class="dropdown-item">
|
||||||
<ngb-highlight [result]="pool.name" [term]="results.searchText"></ngb-highlight>
|
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: otherNetwork.address | shortenString : isMobile ? 12 : 20 }"></ng-container> <b>({{ otherNetwork.network.charAt(0).toUpperCase() + otherNetwork.network.slice(1) }})</b>
|
||||||
</button>
|
</button>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
<ng-template [ngIf]="results.address && results.publicKey">
|
||||||
|
<div class="card-title" i18n="search.bitcoin-address">{{ networkName }} Address</div>
|
||||||
|
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
|
||||||
|
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText | shortenString : isMobile ? 17 : 30 }"></ng-container>
|
||||||
|
</button>
|
||||||
|
</ng-template>
|
||||||
<ng-template [ngIf]="results.liquidAsset.length">
|
<ng-template [ngIf]="results.liquidAsset.length">
|
||||||
<div class="card-title" i18n="search.liquid-asset">Liquid Asset</div>
|
<div class="card-title" i18n="search.liquid-asset">Liquid Asset</div>
|
||||||
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
|
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
|
||||||
|
@ -27,7 +27,7 @@ export class SearchResultsComponent implements OnChanges {
|
|||||||
ngOnChanges() {
|
ngOnChanges() {
|
||||||
this.activeIdx = 0;
|
this.activeIdx = 0;
|
||||||
if (this.results) {
|
if (this.results) {
|
||||||
this.resultsFlattened = [...(this.results.hashQuickMatch ? [this.results.searchText] : []), ...this.results.otherNetworks, ...this.results.addresses, ...this.results.nodes, ...this.results.channels, ...this.results.pools];
|
this.resultsFlattened = [...(this.results.hashQuickMatch ? [this.results.searchText] : []), ...this.results.addresses, ...this.results.pools, ...this.results.nodes, ...this.results.channels, ...this.results.otherNetworks];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user