From 0f9cde706254c353889cb8383168fb92e9efab3a Mon Sep 17 00:00:00 2001 From: liangping <18786721@qq.com> Date: Mon, 20 Sep 2021 07:14:50 +0800 Subject: [PATCH] process edge cases --- src/views/Uptime.vue | 61 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/src/views/Uptime.vue b/src/views/Uptime.vue index 15f68a9f..6956b57e 100644 --- a/src/views/Uptime.vue +++ b/src/views/Uptime.vue @@ -16,23 +16,25 @@ :key="index" sm="12" md="4" - class=" text-trancate" > {{ index+1 }} {{ x.validator.moniker }} -
-
+ +
@@ -60,7 +62,7 @@ export default { query: '', validators: [], missing: {}, - blocks: Array.from('0'.repeat(100)).map(x => [Boolean(x), Number(x)]), + blocks: Array.from('0'.repeat(50)).map(x => ({ sigs: {}, height: Number(x) })), } }, computed: { @@ -85,15 +87,16 @@ export default { initBlocks() { this.$http.getLatestBlock().then(d => { const { height } = d.block.last_commit - + const blocks = [] // update height let promise = Promise.resolve() - const blocks = [] for (let i = height - 1; i > height - 50; i -= 1) { - blocks.unshift({ sigs: {}, height: i }) - promise = promise.then(() => new Promise(resolve => { - this.fetch_status(i, height, resolve) - })) + blocks.unshift({ sigs: {}, height: i > 0 ? i : 0 }) + if (i > height - 48 && i > 0) { + promise = promise.then(() => new Promise(resolve => { + this.fetch_status(i, resolve) + })) + } } const sigs = {} @@ -106,20 +109,18 @@ export default { this.timer = setInterval(this.fetch_latest, 6000) }) }, - fetch_status(height, lastHeight, resolve) { - return this.$http.getBlockByHeight(height).then(res => { - resolve() - if (height !== lastHeight) { + fetch_status(height, resolve) { + const block = this.blocks.find(b => b.height === height) + if (block) { + this.$http.getBlockByHeight(height).then(res => { + resolve() const sigs = {} res.block.last_commit.signatures.forEach(x => { sigs[x.validator_address] = !!x.signature }) - const block = this.blocks.find(b => b.height === height) - if (typeof block !== 'undefined') { - this.$set(block, 'sigs', sigs) - } - } - }) + this.$set(block, 'sigs', sigs) + }) + } }, fetch_latest() { this.$http.getLatestBlock().then(res => {