From 395ebd927220bd5c636673a279f1fce21d556bfd Mon Sep 17 00:00:00 2001 From: root Date: Thu, 8 Aug 2019 11:50:39 +0530 Subject: [PATCH 1/6] Socket Live data --- server/socket/block.ts | 60 ++++++++++++++++++- .../block-append/block-append.component.css | 12 ++++ .../block-append/block-append.component.html | 37 ++++++++++++ .../block-append.component.spec.ts | 24 ++++++++ .../block-append/block-append.component.ts | 26 ++++++++ src/app/view/home/home.module.ts | 5 +- .../latestblocks/latestblocks.component.html | 9 +-- .../latestblocks/latestblocks.component.ts | 51 ++++++++++++++-- src/assets/css/style.css | 9 ++- 9 files changed, 221 insertions(+), 12 deletions(-) create mode 100644 src/app/view/home/block-append/block-append.component.css create mode 100644 src/app/view/home/block-append/block-append.component.html create mode 100644 src/app/view/home/block-append/block-append.component.spec.ts create mode 100644 src/app/view/home/block-append/block-append.component.ts diff --git a/server/socket/block.ts b/server/socket/block.ts index ecad358..7f97f54 100644 --- a/server/socket/block.ts +++ b/server/socket/block.ts @@ -9,8 +9,7 @@ export async function universalGetLatestBlockDetails(socket) { letest_block_duration = ""; const BlockchainLatestBlockQuery = await getConnection().query( - "SELECT timestamp,height,edge_bits,hash,secondary_scaling, previous_id, total_difficulty_cuckaroo, total_difficulty_cuckatoo, total_difficulty_progpow, total_difficulty_randomx FROM blockchain_block ORDER BY timestamp DESC LIMIT 1" - ); + "SELECT bb.timestamp,bb.proof,bb.height,bb.edge_bits,bb.hash,bb.secondary_scaling, bb.previous_id, bb.total_difficulty_cuckaroo, bb.total_difficulty_cuckatoo, bb.total_difficulty_progpow, bb.total_difficulty_randomx, COUNT(DISTINCT(bi.block_id)) AS input_count, COUNT(DISTINCT(bk.block_id)) AS kernel_count, COUNT(DISTINCT(bo.block_id)) AS output_count FROM blockchain_block bb LEFT JOIN blockchain_input bi ON bi.block_id = bb.hash LEFT JOIN blockchain_kernel bk ON bk.block_id = bb.hash LEFT JOIN blockchain_output bo ON bo.block_id = bb.hash group by bb.hash, bb.timestamp ORDER BY bb.timestamp DESC LIMIT 1"); const BlockchainPreviousBlockQuery = await getConnection().query( "SELECT total_difficulty_cuckaroo, total_difficulty_cuckatoo, total_difficulty_progpow, total_difficulty_randomx FROM blockchain_block WHERE hash=" + "'" + @@ -132,10 +131,58 @@ export async function universalGetLatestBlockDetails(socket) { BlockchainPreviousBlockQuery[0].total_difficulty_randomx; } + if(BlockchainLatestBlockQuery[0].proof == "RandomX"){ + var Difficulty = targetdifficultyrandomx; + }else if(BlockchainLatestBlockQuery[0].proof == "ProgPow"){ + var Difficulty = targetdifficultyprogpow; + }else if(BlockchainLatestBlockQuery[0].proof == "Cuckoo" ){ + var Difficulty = targetdifficultycuckatoo; + } + block_height = BlockchainLatestBlockQuery[0].height; + + var current_date = new Date(); + // var current_date = new Date("Sat Apr 2 2018 15:04:00 GMT+0530 (IST)"); + + var enddaydif = + Math.abs( + BlockchainLatestBlockQuery[0].timestamp.getTime() - + current_date.getTime(), + ) / + (1000 * 60 * 60 * 24); + var enddayrnd = Math.round(enddaydif); + // if(enddayrnd < 1) { + var millseconds = Math.abs( + BlockchainLatestBlockQuery[0].timestamp.getTime() - + current_date.getTime(), + ); + + var seconds = Math.floor(millseconds / 1000); + var days = Math.floor(seconds / 86400); + var hours = Math.floor((seconds % 86400) / 3600); + var minutes = Math.floor(((seconds % 86400) % 3600) / 60); + seconds = seconds % 60; + var dateTimeDurationString = ''; + + if (days > 0 && (hours === 0 && minutes === 0)) + dateTimeDurationString += days > 1 ? days + 'd ' : days + 'd '; + if (days > 0 && (hours > 0 || minutes > 0)) + dateTimeDurationString += days > 1 ? days + 'd ' : days + 'd '; + if (hours > 0 && minutes > 0) + dateTimeDurationString += hours > 1 ? hours + 'h ' : hours + 'h '; + if (hours > 0 && minutes === 0) + dateTimeDurationString += hours > 1 ? hours + 'h ' : hours + 'h '; + if (minutes > 0) + dateTimeDurationString += minutes > 1 ? minutes + 'm ' : minutes + 'm '; + if (seconds > 0) + dateTimeDurationString += seconds > 1 ? seconds + 's ' : seconds + 's '; + var TotalCuckoo = parseInt(BlockchainLatestBlockQuery[0].total_difficulty_cuckatoo) + parseInt(BlockchainLatestBlockQuery[0].total_difficulty_cuckaroo); + let balance = BlockchainLatestBlockQuery[0].hash.substring(2, 62); + let arr = balance.match(/.{1,6}/g); + var hasharray = arr.map(i => '#' + i); socket.emit("latestblockdetail", { block_height, @@ -149,6 +196,15 @@ export async function universalGetLatestBlockDetails(socket) { targetdifficultyprogpow, targetdifficultyrandomx, TotalCuckoo, + age : dateTimeDurationString, + input_count: BlockchainLatestBlockQuery[0].input_count, + kernal_count: BlockchainLatestBlockQuery[0].kernal_count, + output_count: BlockchainLatestBlockQuery[0].output_count, + proof: BlockchainLatestBlockQuery[0].proof, + hasharray: hasharray, + Difficulty: Difficulty, + hashstart:BlockchainLatestBlockQuery[0].hash.slice(0, 2), + hashend:BlockchainLatestBlockQuery[0].hash.slice(62,64), TotalDifficultyCuckaroo: BlockchainLatestBlockQuery[0].total_difficulty_cuckaroo, TotalDifficultyCuckatoo: diff --git a/src/app/view/home/block-append/block-append.component.css b/src/app/view/home/block-append/block-append.component.css new file mode 100644 index 0000000..0948015 --- /dev/null +++ b/src/app/view/home/block-append/block-append.component.css @@ -0,0 +1,12 @@ +@keyframes MyAnimation { + 0% { + margin-top: -50px; + } + 100% { + margin-top: 0px; + } +} + +.my-animation { + animation: MyAnimation 2s; +} diff --git a/src/app/view/home/block-append/block-append.component.html b/src/app/view/home/block-append/block-append.component.html new file mode 100644 index 0000000..39f06fa --- /dev/null +++ b/src/app/view/home/block-append/block-append.component.html @@ -0,0 +1,37 @@ +
+
+
+
+
+
Height
{{ blockdetails.blockchain_block_height }}
+
+
+ +
+
+
Age
{{ blockdetails.age }}
+
+
+
Difficulty
{{ blockdetails.target_difficulty | number }}
+
+
+
Pow Algo
{{ blockdetails.PoWAlgo }}
+
+
+
#Inputs
{{ blockdetails.input_count }}
+
+
+
#Outputs
{{ blockdetails.output_count }}
+
+
+
#Kernels
{{ blockdetails.kernal_count }}
+
+
+
+
diff --git a/src/app/view/home/block-append/block-append.component.spec.ts b/src/app/view/home/block-append/block-append.component.spec.ts new file mode 100644 index 0000000..9f04313 --- /dev/null +++ b/src/app/view/home/block-append/block-append.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BlockAppendComponent } from './block-append.component'; + +describe('BlockAppendComponent', () => { + let component: BlockAppendComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [BlockAppendComponent], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(BlockAppendComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/view/home/block-append/block-append.component.ts b/src/app/view/home/block-append/block-append.component.ts new file mode 100644 index 0000000..d6bd93d --- /dev/null +++ b/src/app/view/home/block-append/block-append.component.ts @@ -0,0 +1,26 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-block-append', + templateUrl: './block-append.component.html', + styleUrls: ['./block-append.component.css'], +}) +export class BlockAppendComponent implements OnInit { + public blockdetails: any; + public clickValue: any; + + constructor() {} + + ngOnInit() { + console.log(this.blockdetails); + } + + public onClickPlus(height) { + // this.beforeClick = true; + this.clickValue = 'hash_' + height; + } + + public onClickMinus(height) { + this.clickValue = 0; + } +} diff --git a/src/app/view/home/home.module.ts b/src/app/view/home/home.module.ts index 325be79..fe5a3c8 100644 --- a/src/app/view/home/home.module.ts +++ b/src/app/view/home/home.module.ts @@ -7,6 +7,7 @@ import { GraphListComponent } from './graph-list/graph-list.component'; import { BlockDetailListComponent } from './block-detail-list/block-detail-list.component'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { SharedModule } from '../../shared/shared.module'; +import { BlockAppendComponent } from './block-append/block-append.component'; import { HttpClientModule, HttpClient, HttpParams } from '@angular/common/http'; import { CookieService } from 'ngx-cookie-service'; @@ -22,6 +23,7 @@ import { CustomLoader } from 'src/app/app.module'; LatestblocksComponent, GraphListComponent, BlockDetailListComponent, + BlockAppendComponent ], imports: [ CommonModule, @@ -30,9 +32,10 @@ import { CustomLoader } from 'src/app/app.module'; ReactiveFormsModule, SharedModule, TranslateModule.forChild({ - loader: {provide: TranslateLoader, useClass: CustomLoader, deps : [HttpClient]}, + loader: {provide: TranslateLoader, useClass: CustomLoader, deps : [HttpClient]}, }) ], + entryComponents: [BlockAppendComponent], providers: [TransServiceService,CookieService,ChartService], }) export class HomeModule {} diff --git a/src/app/view/home/latestblocks/latestblocks.component.html b/src/app/view/home/latestblocks/latestblocks.component.html index 904b39f..ac40fb6 100644 --- a/src/app/view/home/latestblocks/latestblocks.component.html +++ b/src/app/view/home/latestblocks/latestblocks.component.html @@ -45,6 +45,7 @@ +
@@ -197,7 +198,7 @@
Total Difficulty
- + @@ -248,7 +249,7 @@
-
+
User Agent
{{ peer.user_agent }}
@@ -279,8 +280,8 @@
- + - \ No newline at end of file + diff --git a/src/app/view/home/latestblocks/latestblocks.component.ts b/src/app/view/home/latestblocks/latestblocks.component.ts index 0d966d8..e9c981e 100644 --- a/src/app/view/home/latestblocks/latestblocks.component.ts +++ b/src/app/view/home/latestblocks/latestblocks.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ViewContainerRef, ViewChild,ComponentFactoryResolver} from '@angular/core'; import { HttpClient, HttpParams, HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { ChartService } from '../../../shared/services/chart.service'; import { FormGroup, FormControl } from '@angular/forms'; import { TransServiceService } from '../../../shared/services/trans-service.service'; import { map, catchError } from 'rxjs/operators'; import { throwError} from 'rxjs'; +import { BlockAppendComponent } from '../block-append/block-append.component'; @Component({ selector: 'epic-explorer-latestblocks', @@ -14,21 +15,28 @@ import { throwError} from 'rxjs'; export class LatestblocksComponent implements OnInit { public hashvalues: any; public pagedata: any = []; + public blockAppend: any; + public blockdetails: any; + public lastblock: any; public clickValue: any; public clickPeer: any; public beforeClick: boolean = false; public clickonMobile: boolean = true; public peers: any; - + paginationForm = new FormGroup({ pagesize: new FormControl(20), }); - constructor(private chartService: ChartService,public translate: TransServiceService,public http: HttpClient) {} + @ViewChild('block', { read: ViewContainerRef,static: true }) block: ViewContainerRef; + + + constructor(private chartService: ChartService,public translate: TransServiceService,public http: HttpClient, private resolver: ComponentFactoryResolver) {} ngOnInit() { this. getpeersList(); this.gettinghashList(1, 20); + this.getLastCeatedBlock(); } public gettinghashList(CurrentPage, PageSize) { @@ -46,6 +54,41 @@ export class LatestblocksComponent implements OnInit { ); } + getLastCeatedBlock() { + this.chartService.getLatestblockdetails().subscribe(response => { + this.blockdetails = response; + console.log(this.blockdetails); + if (this.lastblock != this.blockdetails.block_height) { + console.log('Create'); + this.createBlock(); + } + this.lastblock = this.blockdetails.block_height; + }); + } + + public createBlock() { + const blockFactory = this.resolver.resolveComponentFactory( + BlockAppendComponent, + ); + const block = this.block.createComponent(blockFactory); + this.blockAppend = {}; + this.blockAppend['blockchain_block_hash'] = this.blockdetails.hash; + this.blockAppend[ + 'blockchain_block_height' + ] = this.blockdetails.block_height; + this.blockAppend['age'] = this.blockdetails.age; + this.blockAppend['target_difficulty'] = this.blockdetails.Difficulty; + this.blockAppend['PoWAlgo'] = this.blockdetails.proof; + this.blockAppend['input_count'] = this.blockdetails.input_count; + this.blockAppend['output_count'] = this.blockdetails.output_count; + this.blockAppend['kernal_count'] = this.blockdetails.kernel_count; + this.blockAppend['hashstart'] = this.blockdetails.hashstart; + this.blockAppend['hashend'] = this.blockdetails.hashend; + this.blockAppend['hasharray'] = this.blockdetails.hasharray; + + block.instance.blockdetails = this.blockAppend; + } + public getpeersList() { this.chartService.apiGetRequest('','/blockchain_kernel/getpeers').subscribe( res => { @@ -58,7 +101,7 @@ export class LatestblocksComponent implements OnInit { // this.peers = [{"id": 1,"capabilities":{"bits":15},"user_agent":"MW/Epic 1.0.0","version":1,"addr":"54.233.177.64:3414","direction":"Outbound","total_difficulty":{"cuckaroo":1630,"cuckatoo":706,"randomx":138024,"progpow":49792},"height":10},{"id": 2,"capabilities":{"bits":15},"user_agent":"MW/Epic 1.0.0","version":1,"addr":"95.216.102.217:3414","direction":"Outbound","total_difficulty":{"cuckaroo":1630,"cuckatoo":706,"randomx":138024,"progpow":49792},"height":10},{"id": 3,"capabilities":{"bits":15},"user_agent":"MW/Epic 1.0.0","version":1,"addr":"90.190.172.177:3414","direction":"Outbound","total_difficulty":{"cuckaroo":2,"cuckatoo":2,"randomx":1024,"progpow":256},"height":0},{"id": 4,"capabilities":{"bits":15},"user_agent":"MW/Epic 1.0.0","version":1,"addr":"67.189.82.196:3414","direction":"Outbound","total_difficulty":{"cuckaroo":1630,"cuckatoo":706,"randomx":138024,"progpow":49792},"height":10},{"id": 5,"capabilities":{"bits":15},"user_agent":"MW/Epic 1.0.0","version":1,"addr":"167.71.72.2:3414","direction":"Outbound","total_difficulty":{"cuckaroo":1630,"cuckatoo":706,"randomx":138024,"progpow":49792},"height":10}]; } - + public onClickPlus(height) { // this.beforeClick = true; diff --git a/src/assets/css/style.css b/src/assets/css/style.css index ceeaa84..970f744 100644 --- a/src/assets/css/style.css +++ b/src/assets/css/style.css @@ -645,7 +645,14 @@ body.dark_theme { .dark_theme .view_content table{border-color: #384566;} .dark_theme .card-body{background-color: #1c2437;} .diff_margin{margin-bottom: -10px !important; margin-top: -10px !important;} - +@keyframes yellowfade { + from { + background: yellow; + } + to { + background: transparent; + } +} .item-highlight { animation: yellowfade 5s ; -moz-animation: yellowfade 5s ; From 959da68b0c675d8a6bddc067ebfd8854fff5478b Mon Sep 17 00:00:00 2001 From: SuriyaR Date: Thu, 8 Aug 2019 12:02:41 +0530 Subject: [PATCH 2/6] Changes --- .../shared/components/siteheader/siteheader.component.html | 4 ++-- src/app/view/home/graph-list/graph-list.component.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app/shared/components/siteheader/siteheader.component.html b/src/app/shared/components/siteheader/siteheader.component.html index 1a91a37..5e65f3e 100644 --- a/src/app/shared/components/siteheader/siteheader.component.html +++ b/src/app/shared/components/siteheader/siteheader.component.html @@ -13,10 +13,10 @@ diff --git a/src/app/view/home/graph-list/graph-list.component.ts b/src/app/view/home/graph-list/graph-list.component.ts index 260cb53..f02feda 100644 --- a/src/app/view/home/graph-list/graph-list.component.ts +++ b/src/app/view/home/graph-list/graph-list.component.ts @@ -970,6 +970,7 @@ export class GraphListComponent implements OnInit { }, options: null, }; + resolve(); }); } transactionlinechartFunc(Tdate, Ttotalinput, Ttotalkernal, Ttotaloutput) { From 4902c0d0555c7fbcf6a97f1e75dec5a3cb7ec29e Mon Sep 17 00:00:00 2001 From: root Date: Thu, 8 Aug 2019 12:06:56 +0530 Subject: [PATCH 3/6] Socket Live data --- server/controllers/BlockchainBlock.ts | 9 ++++++--- server/socket/block.ts | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/server/controllers/BlockchainBlock.ts b/server/controllers/BlockchainBlock.ts index a05a04a..072276c 100644 --- a/server/controllers/BlockchainBlock.ts +++ b/server/controllers/BlockchainBlock.ts @@ -1139,9 +1139,11 @@ export class BlockchainBlockController { var alog_type = TotalDifficultyNBlockRequestData.Type; var Difftype = TotalDifficultyNBlockRequestData.Difftype; if (TotalDifficultyNBlockRequestData.Interval && TotalDifficultyNBlockRequestData.Interval != '1 day') { - var dateFormat = 'YYYY-MM-DD'; + var dateFormat = 'YYYY-MM-DD HH:mm:ss'; + var tickFormat = '%m-%d'; }else{ - var dateFormat = 'HH:mm'; + var dateFormat = 'YYYY-MM-DD HH:mm:ss'; + var tickFormat = '%H-%M'; } if(Difftype == "target"){ var TotalDifficultyNBlockQuery = await getConnection() @@ -1233,7 +1235,8 @@ export class BlockchainBlockController { // DifficultyProgpow: DifficultyProgpow, Maxrange: Maxrange, Minrange: (Minrange * 0.2), - TargetDifficulty: TargetDifficulty + TargetDifficulty: TargetDifficulty, + tickFormat: tickFormat }, }); } catch (error) { diff --git a/server/socket/block.ts b/server/socket/block.ts index 7f97f54..bdc78a8 100644 --- a/server/socket/block.ts +++ b/server/socket/block.ts @@ -198,11 +198,11 @@ export async function universalGetLatestBlockDetails(socket) { TotalCuckoo, age : dateTimeDurationString, input_count: BlockchainLatestBlockQuery[0].input_count, - kernal_count: BlockchainLatestBlockQuery[0].kernal_count, + kernel_count: BlockchainLatestBlockQuery[0].kernel_count, output_count: BlockchainLatestBlockQuery[0].output_count, proof: BlockchainLatestBlockQuery[0].proof, hasharray: hasharray, - Difficulty: Difficulty, + // Difficulty: Difficulty, hashstart:BlockchainLatestBlockQuery[0].hash.slice(0, 2), hashend:BlockchainLatestBlockQuery[0].hash.slice(62,64), TotalDifficultyCuckaroo: From bf64b6363bf22b7ed13a99ce87d318dfd6fdbc5a Mon Sep 17 00:00:00 2001 From: SuriyaR Date: Thu, 8 Aug 2019 12:20:49 +0530 Subject: [PATCH 4/6] Changs --- src/app/shared/components/header/header.component.html | 2 +- src/app/shared/components/siteheader/siteheader.component.html | 2 +- .../home/block-detail-list/block-detail-list.component.html | 3 --- .../view/home/block-detail-list/block-detail-list.component.ts | 2 +- src/assets/css/style.css | 1 + 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/app/shared/components/header/header.component.html b/src/app/shared/components/header/header.component.html index 27d9453..2ecffc6 100755 --- a/src/app/shared/components/header/header.component.html +++ b/src/app/shared/components/header/header.component.html @@ -41,7 +41,7 @@ - diff --git a/src/app/shared/components/siteheader/siteheader.component.html b/src/app/shared/components/siteheader/siteheader.component.html index 5e65f3e..c724c92 100644 --- a/src/app/shared/components/siteheader/siteheader.component.html +++ b/src/app/shared/components/siteheader/siteheader.component.html @@ -36,7 +36,7 @@