diff --git a/backend/.eslintrc b/backend/.eslintrc index 3029ebab6..1b2889e50 100644 --- a/backend/.eslintrc +++ b/backend/.eslintrc @@ -31,6 +31,7 @@ "prefer-const": 1, "prefer-rest-params": 1, "quotes": [1, "single", { "allowTemplateLiterals": true }], - "semi": 1 + "semi": 1, + "eqeqeq": 1 } } diff --git a/backend/src/api/explorer/nodes.api.ts b/backend/src/api/explorer/nodes.api.ts index 9d82dc83d..cbd70a34f 100644 --- a/backend/src/api/explorer/nodes.api.ts +++ b/backend/src/api/explorer/nodes.api.ts @@ -434,12 +434,14 @@ class NodesApi { SELECT nodes.public_key, CAST(COALESCE(nodes.capacity, 0) as INT) as capacity, CAST(COALESCE(nodes.channels, 0) as INT) as channels, nodes.alias, UNIX_TIMESTAMP(nodes.first_seen) as first_seen, UNIX_TIMESTAMP(nodes.updated_at) as updated_at, geo_names_city.names as city, geo_names_country.names as country, - geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision + geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision, + nodes.longitude, nodes.latitude, nodes.as_number, geo_names_isp.names as isp FROM nodes LEFT JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country' LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city' LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code' LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = nodes.subdivision_id AND geo_names_subdivision.type = 'division' + LEFT JOIN geo_names geo_names_isp on geo_names_isp.id = nodes.as_number AND geo_names_isp.type = 'as_organization' WHERE geo_names_country.id = ? ORDER BY capacity DESC `; @@ -449,6 +451,7 @@ class NodesApi { rows[i].country = JSON.parse(rows[i].country); rows[i].city = JSON.parse(rows[i].city); rows[i].subdivision = JSON.parse(rows[i].subdivision); + rows[i].isp = JSON.parse(rows[i].isp); } return rows; } catch (e) { @@ -463,7 +466,8 @@ class NodesApi { SELECT nodes.public_key, CAST(COALESCE(nodes.capacity, 0) as INT) as capacity, CAST(COALESCE(nodes.channels, 0) as INT) as channels, nodes.alias, UNIX_TIMESTAMP(nodes.first_seen) as first_seen, UNIX_TIMESTAMP(nodes.updated_at) as updated_at, geo_names_city.names as city, geo_names_country.names as country, - geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision + geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision, + nodes.longitude, nodes.latitude FROM nodes LEFT JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country' LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city' diff --git a/backend/src/api/explorer/nodes.routes.ts b/backend/src/api/explorer/nodes.routes.ts index cf3f75208..589e337cf 100644 --- a/backend/src/api/explorer/nodes.routes.ts +++ b/backend/src/api/explorer/nodes.routes.ts @@ -21,6 +21,7 @@ class NodesRoutes { .get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/rankings/age', this.$getOldestNodes) .get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/:public_key/statistics', this.$getHistoricalNodeStats) .get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/:public_key', this.$getNode) + .get(config.MEMPOOL.API_URL_PREFIX + 'lightning/nodes/group/:name', this.$getNodeGroup) ; } @@ -33,6 +34,39 @@ class NodesRoutes { } } + private async $getNodeGroup(req: Request, res: Response) { + try { + let nodesList; + let nodes: any[] = []; + switch (config.MEMPOOL.NETWORK) { + case 'testnet': + nodesList = ['032c7c7819276c4f706a04df1a0f1e10a5495994a7be4c1d3d28ca766e5a2b957b', '025a7e38c2834dd843591a4d23d5f09cdeb77ddca85f673c2d944a14220ff14cf7', '0395e2731a1673ef21d7a16a727c4fc4d4c35a861c428ce2c819c53d2b81c8bd55', '032ab2028c0b614c6d87824e2373529652fd7e4221b4c70cc4da7c7005c49afcf0', '029001b22fe70b48bee12d014df91982eb85ff1bd404ec772d5c83c4ee3e88d2c3', '0212e2848d79f928411da5f2ff0a8c95ec6ccb5a09d2031b6f71e91309dcde63af', '03e871a2229523d34f76e6311ff197cfe7f26c2fbec13554b93a46f4e710c47dab', '032202ec98d976b0e928bd1d91924e8bd3eab07231fc39feb3737b010071073df8', '02fa7c5a948d03d563a9f36940c2205a814e594d17c0042ced242c71a857d72605', '039c14fdec2d958e3d14cebf657451bbd9e039196615785e82c917f274e3fb2205', '033589bbcb233ffc416cefd5437c7f37e9d7cb7942d405e39e72c4c846d9b37f18', '029293110441c6e2eacb57e1255bf6ef05c41a6a676fe474922d33c19f98a7d584']; + break; + case 'signet': + nodesList = ['03ddab321b760433cbf561b615ef62ac7d318630c5f51d523aaf5395b90b751956', '033d92c7bfd213ef1b34c90e985fb5dc77f9ec2409d391492484e57a44c4aca1de', '02ad010dda54253c1eb9efe38b0760657a3b43ecad62198c359c051c9d99d45781', '025196512905b8a3f1597428b867bec63ec9a95e5089eb7dc7e63e2d2691669029', '027c625aa1fbe3768db68ebcb05b53b6dc0ce68b7b54b8900d326d167363e684fe', '03f1629af3101fcc56b7aac2667016be84e3defbf3d0c8719f836c9b41c9a57a43', '02dfb81e2f7a3c4c9e8a51b70ef82b4a24549cc2fab1f5b2fd636501774a918991', '02d01ccf832944c68f10d39006093769c5b8bda886d561b128534e313d729fdb34', '02499ed23027d4698a6904ff4ec1b6085a61f10b9a6937f90438f9947e38e8ea86', '038310e3a786340f2bd7770704c7ccfe560fd163d9a1c99d67894597419d12cbf7', '03e5e9d879b72c7d67ecd483bae023bd33e695bb32b981a4021260f7b9d62bc761', '028d16e1a0ace4c0c0a421536d8d32ce484dfe6e2f726b7b0e7c30f12a195f8cc7']; + break; + default: + nodesList = ['03fbc17549ec667bccf397ababbcb4cdc0e3394345e4773079ab2774612ec9be61', '03da9a8623241ccf95f19cd645c6cecd4019ac91570e976eb0a128bebbc4d8a437', '03ca5340cf85cb2e7cf076e489f785410838de174e40be62723e8a60972ad75144', '0238bd27f02d67d6c51e269692bc8c9a32357a00e7777cba7f4f1f18a2a700b108', '03f983dcabed6baa1eab5b56c8b2e8fdc846ab3fd931155377897335e85a9fa57c', '03e399589533581e48796e29a825839a010036a61b20744fda929d6709fcbffcc5', '021f5288b5f72c42cd0d8801086af7ce09a816d8ee9a4c47a4b436399b26cb601a', '032b01b7585f781420cd4148841a82831ba37fa952342052cec16750852d4f2dd9', '02848036488d4b8fb1f1c4064261ec36151f43b085f0b51bd239ade3ddfc940c34', '02b6b1640fe029e304c216951af9fbefdb23b0bdc9baaf327540d31b6107841fdf', '03694289827203a5b3156d753071ddd5bf92e371f5a462943f9555eef6d2d6606c', '0283d850db7c3e8ea7cc9c4abc7afaab12bbdf72b677dcba1d608350d2537d7d43']; + } + + for (let pubKey of nodesList) { + try { + const node = await nodesApi.$getNode(pubKey); + if (node) { + nodes.push(node); + } + } catch (e) {} + } + + res.header('Pragma', 'public'); + res.header('Cache-control', 'public'); + res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString()); + res.json(nodes); + } catch (e) { + res.status(500).send(e instanceof Error ? e.message : e); + } + } + private async $getNode(req: Request, res: Response) { try { const node = await nodesApi.$getNode(req.params.public_key); diff --git a/backend/src/api/lightning/clightning/clightning-convert.ts b/backend/src/api/lightning/clightning/clightning-convert.ts index 8b055832e..121fb20ea 100644 --- a/backend/src/api/lightning/clightning/clightning-convert.ts +++ b/backend/src/api/lightning/clightning/clightning-convert.ts @@ -124,7 +124,7 @@ async function buildIncompleteChannel(clChannel: any): Promise import('./previews.module').then(m => m.PreviewsModule) }, { - path: 'testnet/block/:id', - component: BlockPreviewComponent + path: 'testnet', + loadChildren: () => import('./previews.module').then(m => m.PreviewsModule) }, { - path: 'signet/block/:id', - component: BlockPreviewComponent - }, - { - path: 'address/:id', - children: [], - component: AddressPreviewComponent - }, - { - path: 'testnet/address/:id', - children: [], - component: AddressPreviewComponent - }, - { - path: 'signet/address/:id', - children: [], - component: AddressPreviewComponent - }, - { - path: 'tx/:id', - children: [], - component: TransactionPreviewComponent - }, - { - path: 'testnet/tx/:id', - children: [], - component: TransactionPreviewComponent - }, - { - path: 'signet/tx/:id', - children: [], - component: TransactionPreviewComponent - }, - { - path: 'lightning', - loadChildren: () => import('./lightning/lightning-previews.module').then(m => m.LightningPreviewsModule) - }, - { - path: 'testnet/lightning', - loadChildren: () => import('./lightning/lightning-previews.module').then(m => m.LightningPreviewsModule) - }, - { - path: 'signet/lightning', - loadChildren: () => import('./lightning/lightning-previews.module').then(m => m.LightningPreviewsModule) + path: 'signet', + loadChildren: () => import('./previews.module').then(m => m.PreviewsModule) }, ], }, @@ -643,35 +596,14 @@ if (browserWindowEnv && browserWindowEnv.BASE_MODULE === 'liquid') { }, { path: 'preview', - component: MasterPagePreviewComponent, children: [ { - path: 'block/:id', - component: BlockPreviewComponent + path: '', + loadChildren: () => import('./previews.module').then(m => m.PreviewsModule) }, { - path: 'testnet/block/:id', - component: BlockPreviewComponent - }, - { - path: 'address/:id', - children: [], - component: AddressPreviewComponent - }, - { - path: 'testnet/address/:id', - children: [], - component: AddressPreviewComponent - }, - { - path: 'tx/:id', - children: [], - component: TransactionPreviewComponent - }, - { - path: 'testnet/tx/:id', - children: [], - component: TransactionPreviewComponent + path: 'testnet', + loadChildren: () => import('./previews.module').then(m => m.PreviewsModule) }, ], }, diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 5ae0c6cb5..6ed7c43f9 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -1,5 +1,5 @@ import { BrowserModule, BrowserTransferStateModule } from '@angular/platform-browser'; -import { NgModule } from '@angular/core'; +import { ModuleWithProviders, NgModule } from '@angular/core'; import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { AppRoutingModule } from './app-routing.module'; @@ -20,6 +20,23 @@ import { ShortenStringPipe } from './shared/pipes/shorten-string-pipe/shorten-st import { CapAddressPipe } from './shared/pipes/cap-address-pipe/cap-address-pipe'; import { AppPreloadingStrategy } from './app.preloading-strategy'; +const providers = [ + ElectrsApiService, + StateService, + WebsocketService, + AudioService, + SeoService, + OpenGraphService, + StorageService, + EnterpriseService, + LanguageService, + ShortenStringPipe, + FiatShortenerPipe, + CapAddressPipe, + AppPreloadingStrategy, + { provide: HTTP_INTERCEPTORS, useClass: HttpCacheInterceptor, multi: true } +]; + @NgModule({ declarations: [ AppComponent, @@ -32,22 +49,17 @@ import { AppPreloadingStrategy } from './app.preloading-strategy'; BrowserAnimationsModule, SharedModule, ], - providers: [ - ElectrsApiService, - StateService, - WebsocketService, - AudioService, - SeoService, - OpenGraphService, - StorageService, - EnterpriseService, - LanguageService, - ShortenStringPipe, - FiatShortenerPipe, - CapAddressPipe, - AppPreloadingStrategy, - { provide: HTTP_INTERCEPTORS, useClass: HttpCacheInterceptor, multi: true } - ], + providers: providers, bootstrap: [AppComponent] }) export class AppModule { } + +@NgModule({}) +export class MempoolSharedModule{ + static forRoot(): ModuleWithProviders { + return { + ngModule: AppModule, + providers: providers + }; + } +} diff --git a/frontend/src/app/bisq/bisq-address/bisq-address.component.ts b/frontend/src/app/bisq/bisq-address/bisq-address.component.ts index 75225d9de..eccc88bc7 100644 --- a/frontend/src/app/bisq/bisq-address/bisq-address.component.ts +++ b/frontend/src/app/bisq/bisq-address/bisq-address.component.ts @@ -1,11 +1,11 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; -import { SeoService } from 'src/app/services/seo.service'; +import { SeoService } from '../../services/seo.service'; import { switchMap, filter, catchError } from 'rxjs/operators'; import { ParamMap, ActivatedRoute } from '@angular/router'; import { Subscription, of } from 'rxjs'; import { BisqTransaction } from '../bisq.interfaces'; import { BisqApiService } from '../bisq-api.service'; -import { WebsocketService } from 'src/app/services/websocket.service'; +import { WebsocketService } from '../../services/websocket.service'; @Component({ selector: 'app-bisq-address', diff --git a/frontend/src/app/bisq/bisq-block/bisq-block.component.ts b/frontend/src/app/bisq/bisq-block/bisq-block.component.ts index 2510ee67f..1bb3a24ab 100644 --- a/frontend/src/app/bisq/bisq-block/bisq-block.component.ts +++ b/frontend/src/app/bisq/bisq-block/bisq-block.component.ts @@ -1,14 +1,14 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; -import { BisqBlock } from 'src/app/bisq/bisq.interfaces'; +import { BisqBlock } from '../../bisq/bisq.interfaces'; import { Location } from '@angular/common'; import { BisqApiService } from '../bisq-api.service'; import { ActivatedRoute, ParamMap, Router } from '@angular/router'; import { Subscription, of } from 'rxjs'; import { switchMap, catchError } from 'rxjs/operators'; -import { SeoService } from 'src/app/services/seo.service'; -import { ElectrsApiService } from 'src/app/services/electrs-api.service'; +import { SeoService } from '../../services/seo.service'; +import { ElectrsApiService } from '../../services/electrs-api.service'; import { HttpErrorResponse } from '@angular/common/http'; -import { WebsocketService } from 'src/app/services/websocket.service'; +import { WebsocketService } from '../../services/websocket.service'; @Component({ selector: 'app-bisq-block', diff --git a/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.ts b/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.ts index 1e805188b..8d9ed3c11 100644 --- a/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.ts +++ b/frontend/src/app/bisq/bisq-blocks/bisq-blocks.component.ts @@ -3,9 +3,9 @@ import { BisqApiService } from '../bisq-api.service'; import { switchMap, map, take, mergeMap, tap } from 'rxjs/operators'; import { Observable } from 'rxjs'; import { BisqBlock, BisqOutput, BisqTransaction } from '../bisq.interfaces'; -import { SeoService } from 'src/app/services/seo.service'; +import { SeoService } from '../../services/seo.service'; import { ActivatedRoute, Router } from '@angular/router'; -import { WebsocketService } from 'src/app/services/websocket.service'; +import { WebsocketService } from '../../services/websocket.service'; @Component({ selector: 'app-bisq-blocks', diff --git a/frontend/src/app/bisq/bisq-dashboard/bisq-dashboard.component.ts b/frontend/src/app/bisq/bisq-dashboard/bisq-dashboard.component.ts index 402c9b6fb..fe36f1b53 100644 --- a/frontend/src/app/bisq/bisq-dashboard/bisq-dashboard.component.ts +++ b/frontend/src/app/bisq/bisq-dashboard/bisq-dashboard.component.ts @@ -1,9 +1,9 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { Observable, combineLatest, BehaviorSubject, of } from 'rxjs'; import { map, share, switchMap } from 'rxjs/operators'; -import { SeoService } from 'src/app/services/seo.service'; -import { StateService } from 'src/app/services/state.service'; -import { WebsocketService } from 'src/app/services/websocket.service'; +import { SeoService } from '../../services/seo.service'; +import { StateService } from '../../services/state.service'; +import { WebsocketService } from '../../services/websocket.service'; import { BisqApiService } from '../bisq-api.service'; import { Trade } from '../bisq.interfaces'; diff --git a/frontend/src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.ts b/frontend/src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.ts index a45bb138e..d1b8480f7 100644 --- a/frontend/src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.ts +++ b/frontend/src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.ts @@ -1,9 +1,9 @@ import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { Observable, combineLatest, BehaviorSubject, of } from 'rxjs'; import { map, share, switchMap } from 'rxjs/operators'; -import { SeoService } from 'src/app/services/seo.service'; -import { StateService } from 'src/app/services/state.service'; -import { WebsocketService } from 'src/app/services/websocket.service'; +import { SeoService } from '../../services/seo.service'; +import { StateService } from '../../services/state.service'; +import { WebsocketService } from '../../services/websocket.service'; import { BisqApiService } from '../bisq-api.service'; import { Trade } from '../bisq.interfaces'; diff --git a/frontend/src/app/bisq/bisq-market/bisq-market.component.ts b/frontend/src/app/bisq/bisq-market/bisq-market.component.ts index 90832122f..fb5967c63 100644 --- a/frontend/src/app/bisq/bisq-market/bisq-market.component.ts +++ b/frontend/src/app/bisq/bisq-market/bisq-market.component.ts @@ -3,8 +3,8 @@ import { FormBuilder, FormGroup } from '@angular/forms'; import { ActivatedRoute, Router } from '@angular/router'; import { combineLatest, merge, Observable, of } from 'rxjs'; import { map, switchMap } from 'rxjs/operators'; -import { SeoService } from 'src/app/services/seo.service'; -import { WebsocketService } from 'src/app/services/websocket.service'; +import { SeoService } from '../../services/seo.service'; +import { WebsocketService } from '../../services/websocket.service'; import { BisqApiService } from '../bisq-api.service'; import { OffersMarket, Trade } from '../bisq.interfaces'; diff --git a/frontend/src/app/bisq/bisq-stats/bisq-stats.component.ts b/frontend/src/app/bisq/bisq-stats/bisq-stats.component.ts index 11064b5fe..5ec5964b4 100644 --- a/frontend/src/app/bisq/bisq-stats/bisq-stats.component.ts +++ b/frontend/src/app/bisq/bisq-stats/bisq-stats.component.ts @@ -1,9 +1,9 @@ import { Component, OnInit } from '@angular/core'; import { BisqApiService } from '../bisq-api.service'; import { BisqStats } from '../bisq.interfaces'; -import { SeoService } from 'src/app/services/seo.service'; -import { StateService } from 'src/app/services/state.service'; -import { WebsocketService } from 'src/app/services/websocket.service'; +import { SeoService } from '../../services/seo.service'; +import { StateService } from '../../services/state.service'; +import { WebsocketService } from '../../services/websocket.service'; @Component({ selector: 'app-bisq-stats', diff --git a/frontend/src/app/bisq/bisq-transaction-details/bisq-transaction-details.component.ts b/frontend/src/app/bisq/bisq-transaction-details/bisq-transaction-details.component.ts index d10d0507e..9728372c3 100644 --- a/frontend/src/app/bisq/bisq-transaction-details/bisq-transaction-details.component.ts +++ b/frontend/src/app/bisq/bisq-transaction-details/bisq-transaction-details.component.ts @@ -1,5 +1,5 @@ import { Component, ChangeDetectionStrategy, Input, OnChanges } from '@angular/core'; -import { BisqTransaction } from 'src/app/bisq/bisq.interfaces'; +import { BisqTransaction } from '../../bisq/bisq.interfaces'; @Component({ selector: 'app-bisq-transaction-details', diff --git a/frontend/src/app/bisq/bisq-transaction/bisq-transaction.component.ts b/frontend/src/app/bisq/bisq-transaction/bisq-transaction.component.ts index c736a2fa9..fb30fc59f 100644 --- a/frontend/src/app/bisq/bisq-transaction/bisq-transaction.component.ts +++ b/frontend/src/app/bisq/bisq-transaction/bisq-transaction.component.ts @@ -1,15 +1,15 @@ import { Component, OnInit, OnDestroy } from '@angular/core'; import { ActivatedRoute, ParamMap, Router } from '@angular/router'; -import { BisqTransaction } from 'src/app/bisq/bisq.interfaces'; +import { BisqTransaction } from '../../bisq/bisq.interfaces'; import { switchMap, map, catchError } from 'rxjs/operators'; import { of, Observable, Subscription } from 'rxjs'; -import { StateService } from 'src/app/services/state.service'; -import { Block, Transaction } from 'src/app/interfaces/electrs.interface'; +import { StateService } from '../../services/state.service'; +import { Block, Transaction } from '../../interfaces/electrs.interface'; import { BisqApiService } from '../bisq-api.service'; -import { SeoService } from 'src/app/services/seo.service'; -import { ElectrsApiService } from 'src/app/services/electrs-api.service'; +import { SeoService } from '../../services/seo.service'; +import { ElectrsApiService } from '../../services/electrs-api.service'; import { HttpErrorResponse } from '@angular/common/http'; -import { WebsocketService } from 'src/app/services/websocket.service'; +import { WebsocketService } from '../../services/websocket.service'; @Component({ selector: 'app-bisq-transaction', diff --git a/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.ts b/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.ts index d0a2ba3c5..9c58577e3 100644 --- a/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.ts +++ b/frontend/src/app/bisq/bisq-transactions/bisq-transactions.component.ts @@ -4,11 +4,11 @@ import { BisqTransaction, BisqOutput } from '../bisq.interfaces'; import { Observable, Subscription } from 'rxjs'; import { switchMap, map, tap } from 'rxjs/operators'; import { BisqApiService } from '../bisq-api.service'; -import { SeoService } from 'src/app/services/seo.service'; +import { SeoService } from '../../services/seo.service'; import { FormGroup, FormBuilder } from '@angular/forms'; import { Router, ActivatedRoute } from '@angular/router'; -import { IMultiSelectOption, IMultiSelectSettings, IMultiSelectTexts } from 'src/app/components/ngx-bootstrap-multiselect/types' -import { WebsocketService } from 'src/app/services/websocket.service'; +import { IMultiSelectOption, IMultiSelectSettings, IMultiSelectTexts } from '../../components/ngx-bootstrap-multiselect/types' +import { WebsocketService } from '../../services/websocket.service'; @Component({ selector: 'app-bisq-transactions', diff --git a/frontend/src/app/bisq/bisq-transfers/bisq-transfers.component.ts b/frontend/src/app/bisq/bisq-transfers/bisq-transfers.component.ts index 2fa805c61..4346f15d3 100644 --- a/frontend/src/app/bisq/bisq-transfers/bisq-transfers.component.ts +++ b/frontend/src/app/bisq/bisq-transfers/bisq-transfers.component.ts @@ -1,9 +1,9 @@ import { Component, OnInit, ChangeDetectionStrategy, Input, OnChanges } from '@angular/core'; -import { BisqTransaction } from 'src/app/bisq/bisq.interfaces'; -import { StateService } from 'src/app/services/state.service'; +import { BisqTransaction } from '../../bisq/bisq.interfaces'; +import { StateService } from '../../services/state.service'; import { map } from 'rxjs/operators'; import { Observable } from 'rxjs'; -import { Block } from 'src/app/interfaces/electrs.interface'; +import { Block } from '../../interfaces/electrs.interface'; @Component({ selector: 'app-bisq-transfers', diff --git a/frontend/src/app/bisq/bsq-amount/bsq-amount.component.ts b/frontend/src/app/bisq/bsq-amount/bsq-amount.component.ts index 263b9d7f7..a3dd10e81 100644 --- a/frontend/src/app/bisq/bsq-amount/bsq-amount.component.ts +++ b/frontend/src/app/bisq/bsq-amount/bsq-amount.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit, ChangeDetectionStrategy, Input } from '@angular/core'; -import { StateService } from 'src/app/services/state.service'; +import { StateService } from '../../services/state.service'; import { Observable } from 'rxjs'; @Component({ diff --git a/frontend/src/app/components/about/about.component.html b/frontend/src/app/components/about/about.component.html index 36d765a17..5cfb2c905 100644 --- a/frontend/src/app/components/about/about.component.html +++ b/frontend/src/app/components/about/about.component.html @@ -187,8 +187,8 @@ -
-

Self-Hosted Integrations

+
+

Community Integrations

-
- -
-

Wallet Integrations

-
+ + + BTCPay + Bisq + + + BlueWallet + + + + Muun + - + Electrum @@ -244,18 +250,14 @@ Phoenix + + + LNBits + Mercury - - - Muun - - - - BlueWallet - Blixt diff --git a/frontend/src/app/components/about/about.component.scss b/frontend/src/app/components/about/about.component.scss index 2cd755bde..2cc5d5102 100644 --- a/frontend/src/app/components/about/about.component.scss +++ b/frontend/src/app/components/about/about.component.scss @@ -43,7 +43,6 @@ .alliances, .enterprise-sponsor, .community-integrations-sponsor, - .selfhosted-integrations-sponsor, .maintainers { margin-top: 68px; margin-bottom: 68px; @@ -117,7 +116,6 @@ .community-sponsor, .project-translators, .community-integrations-sponsor, - .selfhosted-integrations-sponsor, .maintainers { .wrapper { display: inline-block; @@ -193,6 +191,6 @@ } .community-integrations-sponsor { - max-width: 830px; + max-width: 970px; margin: auto; } diff --git a/frontend/src/app/components/about/about.component.ts b/frontend/src/app/components/about/about.component.ts index 693be2d34..d26efb411 100644 --- a/frontend/src/app/components/about/about.component.ts +++ b/frontend/src/app/components/about/about.component.ts @@ -1,13 +1,13 @@ import { ChangeDetectionStrategy, Component, Inject, LOCALE_ID, OnInit } from '@angular/core'; import { WebsocketService } from '../../services/websocket.service'; -import { SeoService } from 'src/app/services/seo.service'; -import { StateService } from 'src/app/services/state.service'; +import { SeoService } from '../../services/seo.service'; +import { StateService } from '../../services/state.service'; import { Observable } from 'rxjs'; -import { ApiService } from 'src/app/services/api.service'; -import { IBackendInfo } from 'src/app/interfaces/websocket.interface'; +import { ApiService } from '../../services/api.service'; +import { IBackendInfo } from '../../interfaces/websocket.interface'; import { Router } from '@angular/router'; import { map } from 'rxjs/operators'; -import { ITranslators } from 'src/app/interfaces/node-api.interface'; +import { ITranslators } from '../../interfaces/node-api.interface'; @Component({ selector: 'app-about', diff --git a/frontend/src/app/components/address-labels/address-labels.component.html b/frontend/src/app/components/address-labels/address-labels.component.html index 353e733ae..dfc6647f4 100644 --- a/frontend/src/app/components/address-labels/address-labels.component.html +++ b/frontend/src/app/components/address-labels/address-labels.component.html @@ -1,9 +1,16 @@ - - {{ label }} - + +
+ +   +
+
-

Address

+ + Address +
diff --git a/frontend/src/app/components/address/address-preview.component.ts b/frontend/src/app/components/address/address-preview.component.ts index 35e72435b..713f09f14 100644 --- a/frontend/src/app/components/address/address-preview.component.ts +++ b/frontend/src/app/components/address/address-preview.component.ts @@ -3,13 +3,13 @@ import { ActivatedRoute, ParamMap } from '@angular/router'; import { ElectrsApiService } from '../../services/electrs-api.service'; import { switchMap, filter, catchError, map, tap } from 'rxjs/operators'; import { Address, Transaction } from '../../interfaces/electrs.interface'; -import { StateService } from 'src/app/services/state.service'; -import { OpenGraphService } from 'src/app/services/opengraph.service'; -import { AudioService } from 'src/app/services/audio.service'; -import { ApiService } from 'src/app/services/api.service'; +import { StateService } from '../../services/state.service'; +import { OpenGraphService } from '../../services/opengraph.service'; +import { AudioService } from '../../services/audio.service'; +import { ApiService } from '../../services/api.service'; import { of, merge, Subscription, Observable } from 'rxjs'; -import { SeoService } from 'src/app/services/seo.service'; -import { AddressInformation } from 'src/app/interfaces/node-api.interface'; +import { SeoService } from '../../services/seo.service'; +import { AddressInformation } from '../../interfaces/node-api.interface'; @Component({ selector: 'app-address-preview', diff --git a/frontend/src/app/components/address/address.component.ts b/frontend/src/app/components/address/address.component.ts index 890209d38..2ae9a962b 100644 --- a/frontend/src/app/components/address/address.component.ts +++ b/frontend/src/app/components/address/address.component.ts @@ -3,13 +3,13 @@ import { ActivatedRoute, ParamMap } from '@angular/router'; import { ElectrsApiService } from '../../services/electrs-api.service'; import { switchMap, filter, catchError, map, tap } from 'rxjs/operators'; import { Address, Transaction } from '../../interfaces/electrs.interface'; -import { WebsocketService } from 'src/app/services/websocket.service'; -import { StateService } from 'src/app/services/state.service'; -import { AudioService } from 'src/app/services/audio.service'; -import { ApiService } from 'src/app/services/api.service'; +import { WebsocketService } from '../../services/websocket.service'; +import { StateService } from '../../services/state.service'; +import { AudioService } from '../../services/audio.service'; +import { ApiService } from '../../services/api.service'; import { of, merge, Subscription, Observable } from 'rxjs'; -import { SeoService } from 'src/app/services/seo.service'; -import { AddressInformation } from 'src/app/interfaces/node-api.interface'; +import { SeoService } from '../../services/seo.service'; +import { AddressInformation } from '../../interfaces/node-api.interface'; @Component({ selector: 'app-address', diff --git a/frontend/src/app/components/app/app.component.ts b/frontend/src/app/components/app/app.component.ts index c96489454..633e466a4 100644 --- a/frontend/src/app/components/app/app.component.ts +++ b/frontend/src/app/components/app/app.component.ts @@ -1,8 +1,8 @@ import { Location } from '@angular/common'; import { Component, HostListener, OnInit, Inject, LOCALE_ID, HostBinding } from '@angular/core'; import { Router, NavigationEnd } from '@angular/router'; -import { StateService } from 'src/app/services/state.service'; -import { OpenGraphService } from 'src/app/services/opengraph.service'; +import { StateService } from '../../services/state.service'; +import { OpenGraphService } from '../../services/opengraph.service'; import { NgbTooltipConfig } from '@ng-bootstrap/ng-bootstrap'; @Component({ diff --git a/frontend/src/app/components/asset-circulation/asset-circulation.component.ts b/frontend/src/app/components/asset-circulation/asset-circulation.component.ts index d64607fe1..c828e4c31 100644 --- a/frontend/src/app/components/asset-circulation/asset-circulation.component.ts +++ b/frontend/src/app/components/asset-circulation/asset-circulation.component.ts @@ -1,9 +1,9 @@ import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, OnInit } from '@angular/core'; import { combineLatest, Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { moveDec } from 'src/app/bitcoin.utils'; -import { AssetsService } from 'src/app/services/assets.service'; -import { ElectrsApiService } from 'src/app/services/electrs-api.service'; +import { moveDec } from '../../bitcoin.utils'; +import { AssetsService } from '../../services/assets.service'; +import { ElectrsApiService } from '../../services/electrs-api.service'; import { environment } from 'src/environments/environment'; @Component({ diff --git a/frontend/src/app/components/asset/asset.component.ts b/frontend/src/app/components/asset/asset.component.ts index e57bbee7a..b08ca88ef 100644 --- a/frontend/src/app/components/asset/asset.component.ts +++ b/frontend/src/app/components/asset/asset.component.ts @@ -3,15 +3,15 @@ import { ActivatedRoute, ParamMap } from '@angular/router'; import { ElectrsApiService } from '../../services/electrs-api.service'; import { switchMap, filter, catchError, take } from 'rxjs/operators'; import { Asset, Transaction } from '../../interfaces/electrs.interface'; -import { WebsocketService } from 'src/app/services/websocket.service'; -import { StateService } from 'src/app/services/state.service'; -import { AudioService } from 'src/app/services/audio.service'; -import { ApiService } from 'src/app/services/api.service'; +import { WebsocketService } from '../../services/websocket.service'; +import { StateService } from '../../services/state.service'; +import { AudioService } from '../../services/audio.service'; +import { ApiService } from '../../services/api.service'; import { of, merge, Subscription, combineLatest } from 'rxjs'; -import { SeoService } from 'src/app/services/seo.service'; +import { SeoService } from '../../services/seo.service'; import { environment } from 'src/environments/environment'; -import { AssetsService } from 'src/app/services/assets.service'; -import { moveDec } from 'src/app/bitcoin.utils'; +import { AssetsService } from '../../services/assets.service'; +import { moveDec } from '../../bitcoin.utils'; @Component({ selector: 'app-asset', diff --git a/frontend/src/app/components/assets/asset-group/asset-group.component.ts b/frontend/src/app/components/assets/asset-group/asset-group.component.ts index 29cb10dc7..27e048558 100644 --- a/frontend/src/app/components/assets/asset-group/asset-group.component.ts +++ b/frontend/src/app/components/assets/asset-group/asset-group.component.ts @@ -2,8 +2,8 @@ import { Component, OnInit } from '@angular/core'; import { ActivatedRoute, ParamMap } from '@angular/router'; import { combineLatest, Observable } from 'rxjs'; import { map, switchMap } from 'rxjs/operators'; -import { ApiService } from 'src/app/services/api.service'; -import { AssetsService } from 'src/app/services/assets.service'; +import { ApiService } from '../../../services/api.service'; +import { AssetsService } from '../../../services/assets.service'; @Component({ selector: 'app-asset-group', diff --git a/frontend/src/app/components/assets/assets-featured/assets-featured.component.ts b/frontend/src/app/components/assets/assets-featured/assets-featured.component.ts index db16a8f2b..d80cb6636 100644 --- a/frontend/src/app/components/assets/assets-featured/assets-featured.component.ts +++ b/frontend/src/app/components/assets/assets-featured/assets-featured.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { Observable } from 'rxjs'; -import { ApiService } from 'src/app/services/api.service'; +import { ApiService } from '../../../services/api.service'; @Component({ selector: 'app-assets-featured', diff --git a/frontend/src/app/components/assets/assets-nav/assets-nav.component.ts b/frontend/src/app/components/assets/assets-nav/assets-nav.component.ts index ac8dded67..d3edfc9b1 100644 --- a/frontend/src/app/components/assets/assets-nav/assets-nav.component.ts +++ b/frontend/src/app/components/assets/assets-nav/assets-nav.component.ts @@ -4,11 +4,11 @@ import { Router } from '@angular/router'; import { NgbTypeahead } from '@ng-bootstrap/ng-bootstrap'; import { merge, Observable, of, Subject } from 'rxjs'; import { distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators'; -import { AssetExtended } from 'src/app/interfaces/electrs.interface'; -import { AssetsService } from 'src/app/services/assets.service'; -import { SeoService } from 'src/app/services/seo.service'; -import { StateService } from 'src/app/services/state.service'; -import { RelativeUrlPipe } from 'src/app/shared/pipes/relative-url/relative-url.pipe'; +import { AssetExtended } from '../../../interfaces/electrs.interface'; +import { AssetsService } from '../../../services/assets.service'; +import { SeoService } from '../../../services/seo.service'; +import { StateService } from '../../../services/state.service'; +import { RelativeUrlPipe } from '../../../shared/pipes/relative-url/relative-url.pipe'; import { environment } from 'src/environments/environment'; @Component({ diff --git a/frontend/src/app/components/assets/assets.component.ts b/frontend/src/app/components/assets/assets.component.ts index e85248dd6..7368d6c8e 100644 --- a/frontend/src/app/components/assets/assets.component.ts +++ b/frontend/src/app/components/assets/assets.component.ts @@ -1,13 +1,13 @@ import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; -import { AssetsService } from 'src/app/services/assets.service'; +import { AssetsService } from '../../services/assets.service'; import { environment } from 'src/environments/environment'; import { FormGroup } from '@angular/forms'; import { filter, map, switchMap, take } from 'rxjs/operators'; import { ActivatedRoute, Router } from '@angular/router'; import { combineLatest, Observable } from 'rxjs'; -import { AssetExtended } from 'src/app/interfaces/electrs.interface'; -import { SeoService } from 'src/app/services/seo.service'; -import { StateService } from 'src/app/services/state.service'; +import { AssetExtended } from '../../interfaces/electrs.interface'; +import { SeoService } from '../../services/seo.service'; +import { StateService } from '../../services/state.service'; @Component({ selector: 'app-assets', diff --git a/frontend/src/app/components/bisq-master-page/bisq-master-page.component.ts b/frontend/src/app/components/bisq-master-page/bisq-master-page.component.ts index 52da15125..d69b37d3d 100644 --- a/frontend/src/app/components/bisq-master-page/bisq-master-page.component.ts +++ b/frontend/src/app/components/bisq-master-page/bisq-master-page.component.ts @@ -1,8 +1,8 @@ import { Component, OnInit } from '@angular/core'; import { Env, StateService } from '../../services/state.service'; import { Observable } from 'rxjs'; -import { LanguageService } from 'src/app/services/language.service'; -import { EnterpriseService } from 'src/app/services/enterprise.service'; +import { LanguageService } from '../../services/language.service'; +import { EnterpriseService } from '../../services/enterprise.service'; @Component({ selector: 'app-bisq-master-page', diff --git a/frontend/src/app/components/block-audit/block-audit.component.ts b/frontend/src/app/components/block-audit/block-audit.component.ts index 044552a3b..ff6c0ea7f 100644 --- a/frontend/src/app/components/block-audit/block-audit.component.ts +++ b/frontend/src/app/components/block-audit/block-audit.component.ts @@ -2,11 +2,11 @@ import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'; import { ActivatedRoute, ParamMap, Router } from '@angular/router'; import { Observable } from 'rxjs'; import { map, share, switchMap, tap } from 'rxjs/operators'; -import { BlockAudit, TransactionStripped } from 'src/app/interfaces/node-api.interface'; -import { ApiService } from 'src/app/services/api.service'; -import { StateService } from 'src/app/services/state.service'; -import { detectWebGL } from 'src/app/shared/graphs.utils'; -import { RelativeUrlPipe } from 'src/app/shared/pipes/relative-url/relative-url.pipe'; +import { BlockAudit, TransactionStripped } from '../../interfaces/node-api.interface'; +import { ApiService } from '../../services/api.service'; +import { StateService } from '../../services/state.service'; +import { detectWebGL } from '../../shared/graphs.utils'; +import { RelativeUrlPipe } from '../../shared/pipes/relative-url/relative-url.pipe'; import { BlockOverviewGraphComponent } from '../block-overview-graph/block-overview-graph.component'; @Component({ diff --git a/frontend/src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts b/frontend/src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts index 949024d4c..d05fbdfb9 100644 --- a/frontend/src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts +++ b/frontend/src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts @@ -2,16 +2,16 @@ import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, NgZone, O import { EChartsOption } from 'echarts'; import { Observable } from 'rxjs'; import { map, share, startWith, switchMap, tap } from 'rxjs/operators'; -import { ApiService } from 'src/app/services/api.service'; -import { SeoService } from 'src/app/services/seo.service'; +import { ApiService } from '../../services/api.service'; +import { SeoService } from '../../services/seo.service'; import { formatNumber } from '@angular/common'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from 'src/app/shared/graphs.utils'; -import { StorageService } from 'src/app/services/storage.service'; -import { MiningService } from 'src/app/services/mining.service'; -import { selectPowerOfTen } from 'src/app/bitcoin.utils'; -import { RelativeUrlPipe } from 'src/app/shared/pipes/relative-url/relative-url.pipe'; -import { StateService } from 'src/app/services/state.service'; +import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from '../../shared/graphs.utils'; +import { StorageService } from '../../services/storage.service'; +import { MiningService } from '../../services/mining.service'; +import { selectPowerOfTen } from '../../bitcoin.utils'; +import { RelativeUrlPipe } from '../../shared/pipes/relative-url/relative-url.pipe'; +import { StateService } from '../../services/state.service'; import { ActivatedRoute, Router } from '@angular/router'; @Component({ diff --git a/frontend/src/app/components/block-fees-graph/block-fees-graph.component.ts b/frontend/src/app/components/block-fees-graph/block-fees-graph.component.ts index a64c7e36e..c88e43019 100644 --- a/frontend/src/app/components/block-fees-graph/block-fees-graph.component.ts +++ b/frontend/src/app/components/block-fees-graph/block-fees-graph.component.ts @@ -2,15 +2,15 @@ import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, OnInit } import { EChartsOption, graphic } from 'echarts'; import { Observable } from 'rxjs'; import { map, share, startWith, switchMap, tap } from 'rxjs/operators'; -import { ApiService } from 'src/app/services/api.service'; -import { SeoService } from 'src/app/services/seo.service'; +import { ApiService } from '../../services/api.service'; +import { SeoService } from '../../services/seo.service'; import { formatCurrency, formatNumber, getCurrencySymbol } from '@angular/common'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from 'src/app/shared/graphs.utils'; -import { StorageService } from 'src/app/services/storage.service'; -import { MiningService } from 'src/app/services/mining.service'; +import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from '../../shared/graphs.utils'; +import { StorageService } from '../../services/storage.service'; +import { MiningService } from '../../services/mining.service'; import { ActivatedRoute } from '@angular/router'; -import { FiatShortenerPipe } from 'src/app/shared/pipes/fiat-shortener.pipe'; +import { FiatShortenerPipe } from '../../shared/pipes/fiat-shortener.pipe'; @Component({ selector: 'app-block-fees-graph', diff --git a/frontend/src/app/components/block-overview-graph/block-overview-graph.component.html b/frontend/src/app/components/block-overview-graph/block-overview-graph.component.html index 517eab653..782cbe25e 100644 --- a/frontend/src/app/components/block-overview-graph/block-overview-graph.component.html +++ b/frontend/src/app/components/block-overview-graph/block-overview-graph.component.html @@ -1,6 +1,6 @@
-
+
diff --git a/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts b/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts index 7309a0a85..f4980b088 100644 --- a/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts +++ b/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts @@ -1,5 +1,5 @@ import { Component, ElementRef, ViewChild, HostListener, Input, Output, EventEmitter, NgZone, AfterViewInit, OnDestroy } from '@angular/core'; -import { TransactionStripped } from 'src/app/interfaces/websocket.interface'; +import { TransactionStripped } from '../../interfaces/websocket.interface'; import { FastVertexArray } from './fast-vertex-array'; import BlockScene from './block-scene'; import TxSprite from './tx-sprite'; @@ -17,6 +17,7 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy { @Input() blockLimit: number; @Input() orientation = 'left'; @Input() flip = true; + @Input() disableSpinner = false; @Output() txClickEvent = new EventEmitter(); @Output() readyEvent = new EventEmitter(); diff --git a/frontend/src/app/components/block-overview-graph/block-scene.ts b/frontend/src/app/components/block-overview-graph/block-scene.ts index af64c0f20..20a219e75 100644 --- a/frontend/src/app/components/block-overview-graph/block-scene.ts +++ b/frontend/src/app/components/block-overview-graph/block-scene.ts @@ -1,6 +1,6 @@ import { FastVertexArray } from './fast-vertex-array'; import TxView from './tx-view'; -import { TransactionStripped } from 'src/app/interfaces/websocket.interface'; +import { TransactionStripped } from '../../interfaces/websocket.interface'; import { Position, Square, ViewUpdateParams } from './sprite-types'; export default class BlockScene { diff --git a/frontend/src/app/components/block-overview-graph/tx-view.ts b/frontend/src/app/components/block-overview-graph/tx-view.ts index c0b980d5c..5f2ebf898 100644 --- a/frontend/src/app/components/block-overview-graph/tx-view.ts +++ b/frontend/src/app/components/block-overview-graph/tx-view.ts @@ -1,8 +1,8 @@ import TxSprite from './tx-sprite'; import { FastVertexArray } from './fast-vertex-array'; -import { TransactionStripped } from 'src/app/interfaces/websocket.interface'; +import { TransactionStripped } from '../../interfaces/websocket.interface'; import { SpriteUpdateParams, Square, Color, ViewUpdateParams } from './sprite-types'; -import { feeLevels, mempoolFeeColors } from 'src/app/app.constants'; +import { feeLevels, mempoolFeeColors } from '../../app.constants'; const hoverTransitionTime = 300; const defaultHoverColor = hexToColor('1bd8f4'); diff --git a/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.ts b/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.ts index 603b5fcdb..e30f40b9a 100644 --- a/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.ts +++ b/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.ts @@ -1,6 +1,6 @@ import { Component, ElementRef, ViewChild, Input, OnChanges, ChangeDetectionStrategy } from '@angular/core'; -import { TransactionStripped } from 'src/app/interfaces/websocket.interface'; -import { Position } from 'src/app/components/block-overview-graph/sprite-types.js'; +import { TransactionStripped } from '../../interfaces/websocket.interface'; +import { Position } from '../../components/block-overview-graph/sprite-types.js'; @Component({ selector: 'app-block-overview-tooltip', diff --git a/frontend/src/app/components/block-prediction-graph/block-prediction-graph.component.ts b/frontend/src/app/components/block-prediction-graph/block-prediction-graph.component.ts index e88dc07be..289a1e2d3 100644 --- a/frontend/src/app/components/block-prediction-graph/block-prediction-graph.component.ts +++ b/frontend/src/app/components/block-prediction-graph/block-prediction-graph.component.ts @@ -2,15 +2,15 @@ import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, NgZone, O import { EChartsOption } from 'echarts'; import { Observable } from 'rxjs'; import { map, share, startWith, switchMap, tap } from 'rxjs/operators'; -import { ApiService } from 'src/app/services/api.service'; -import { SeoService } from 'src/app/services/seo.service'; +import { ApiService } from '../../services/api.service'; +import { SeoService } from '../../services/seo.service'; import { formatNumber } from '@angular/common'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from 'src/app/shared/graphs.utils'; -import { StorageService } from 'src/app/services/storage.service'; +import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from '../../shared/graphs.utils'; +import { StorageService } from '../../services/storage.service'; import { ActivatedRoute, Router } from '@angular/router'; -import { RelativeUrlPipe } from 'src/app/shared/pipes/relative-url/relative-url.pipe'; -import { StateService } from 'src/app/services/state.service'; +import { RelativeUrlPipe } from '../../shared/pipes/relative-url/relative-url.pipe'; +import { StateService } from '../../services/state.service'; @Component({ selector: 'app-block-prediction-graph', diff --git a/frontend/src/app/components/block-rewards-graph/block-rewards-graph.component.ts b/frontend/src/app/components/block-rewards-graph/block-rewards-graph.component.ts index 5cd9feea2..cba39eae5 100644 --- a/frontend/src/app/components/block-rewards-graph/block-rewards-graph.component.ts +++ b/frontend/src/app/components/block-rewards-graph/block-rewards-graph.component.ts @@ -2,15 +2,15 @@ import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, OnInit } import { EChartsOption, graphic } from 'echarts'; import { Observable } from 'rxjs'; import { map, share, startWith, switchMap, tap } from 'rxjs/operators'; -import { ApiService } from 'src/app/services/api.service'; -import { SeoService } from 'src/app/services/seo.service'; +import { ApiService } from '../../services/api.service'; +import { SeoService } from '../../services/seo.service'; import { formatCurrency, formatNumber, getCurrencySymbol } from '@angular/common'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from 'src/app/shared/graphs.utils'; -import { MiningService } from 'src/app/services/mining.service'; -import { StorageService } from 'src/app/services/storage.service'; +import { download, formatterXAxis, formatterXAxisLabel, formatterXAxisTimeCategory } from '../../shared/graphs.utils'; +import { MiningService } from '../../services/mining.service'; +import { StorageService } from '../../services/storage.service'; import { ActivatedRoute } from '@angular/router'; -import { FiatShortenerPipe } from 'src/app/shared/pipes/fiat-shortener.pipe'; +import { FiatShortenerPipe } from '../../shared/pipes/fiat-shortener.pipe'; @Component({ selector: 'app-block-rewards-graph', diff --git a/frontend/src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts b/frontend/src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts index cf6591548..6b5b1f047 100644 --- a/frontend/src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts +++ b/frontend/src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts @@ -2,14 +2,14 @@ import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, OnInit, H import { EChartsOption} from 'echarts'; import { Observable } from 'rxjs'; import { map, share, startWith, switchMap, tap } from 'rxjs/operators'; -import { ApiService } from 'src/app/services/api.service'; -import { SeoService } from 'src/app/services/seo.service'; +import { ApiService } from '../../services/api.service'; +import { SeoService } from '../../services/seo.service'; import { formatNumber } from '@angular/common'; import { FormBuilder, FormGroup } from '@angular/forms'; -import { StorageService } from 'src/app/services/storage.service'; -import { MiningService } from 'src/app/services/mining.service'; +import { StorageService } from '../../services/storage.service'; +import { MiningService } from '../../services/mining.service'; import { ActivatedRoute } from '@angular/router'; -import { download, formatterXAxis } from 'src/app/shared/graphs.utils'; +import { download, formatterXAxis } from '../../shared/graphs.utils'; @Component({ selector: 'app-block-sizes-weights-graph', diff --git a/frontend/src/app/components/block/block-preview.component.html b/frontend/src/app/components/block/block-preview.component.html index 38018bbb4..2535486de 100644 --- a/frontend/src/app/components/block/block-preview.component.html +++ b/frontend/src/app/components/block/block-preview.component.html @@ -1,16 +1,21 @@
-

Block

+ + Block +
-
-
+
+

Genesis {{ blockHeight }}

+
+

{{ blockHash.slice(0,32) }}

+

{{ blockHash.slice(32) }}

+
- {{blockHash.slice(0,-4)}}{{blockHash.slice(-4)}}