From 6ff259cc14d7230636ffc686003b86531b3d22da Mon Sep 17 00:00:00 2001
From: NGUYEN DINH Quoc-Huy <contact@quoc-huy.com>
Date: Thu, 2 Apr 2020 21:24:55 +1100
Subject: [PATCH] Display HP needed to rank up

---
 src/app/components/pages/Witnesses.jsx | 36 +++++++++++++++++++++-----
 src/app/locales/en.json                |  3 ++-
 2 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/src/app/components/pages/Witnesses.jsx b/src/app/components/pages/Witnesses.jsx
index b759cdf0..2ac4d640 100644
--- a/src/app/components/pages/Witnesses.jsx
+++ b/src/app/components/pages/Witnesses.jsx
@@ -10,7 +10,7 @@ import Userpic from 'app/components/elements/Userpic';
 import ByteBuffer from 'bytebuffer';
 import { is, Set, List } from 'immutable';
 import * as globalActions from 'app/redux/GlobalReducer';
-import { vestsToHp, numberWithCommas } from 'app/utils/StateFunctions';
+import { vestsToHpf, numberWithCommas } from 'app/utils/StateFunctions';
 import tt from 'counterpart';
 
 const Long = ByteBuffer.Long;
@@ -117,6 +117,7 @@ class Witnesses extends React.Component {
         let witness_vote_count = 30;
         let rank = 1;
         let foundWitnessToHighlight = false;
+        let previousTotalVoteHpf = 0;
 
         const witnesses = sorted_witnesses.map(item => {
             const owner = item.get('owner');
@@ -124,12 +125,29 @@ class Witnesses extends React.Component {
                 foundWitnessToHighlight = true;
             }
             const totalVotesVests = item.get('votes');
-            const totalVotesHp = numberWithCommas(
-                vestsToHp(
-                    this.props.state,
-                    `${totalVotesVests / 1000000} VESTS`
-                )
+            const totalVotesHpf = vestsToHpf(
+                this.props.state,
+                `${totalVotesVests / 1000000} VESTS`
             );
+            const totalVotesHp = numberWithCommas(totalVotesHpf.toFixed(3));
+
+            let requiredHpToRankUp = '';
+            if (previousTotalVoteHpf !== 0) {
+                requiredHpToRankUp = (
+                    <small>
+                        {tt('witnesses_jsx.hp_required_to_rank_up', {
+                            votehp: numberWithCommas(
+                                (previousTotalVoteHpf - totalVotesHpf).toFixed(
+                                    3
+                                )
+                            ),
+                        })}
+                    </small>
+                );
+            }
+
+            previousTotalVoteHpf = totalVotesHpf;
+
             const thread = item.get('url').replace('steemit.com', 'hive.blog');
             const myVote = witness_votes ? witness_votes.has(owner) : null;
             const signingKey = item.get('signing_key');
@@ -240,7 +258,11 @@ class Witnesses extends React.Component {
                             </div>
                         </div>
                     </td>
-                    <td className="Witnesses__votes">{`${totalVotesHp} HP`}</td>
+                    <td className="Witnesses__votes">
+                        {`${totalVotesHp} HP`}
+                        <br />
+                        {requiredHpToRankUp}
+                    </td>
                     <td>{missedBlocks} blocks</td>
                     <td>
                         <Link
diff --git a/src/app/locales/en.json b/src/app/locales/en.json
index 788c0b07..e1be228d 100644
--- a/src/app/locales/en.json
+++ b/src/app/locales/en.json
@@ -502,7 +502,8 @@
         "last_block": "Last block",
         "running_version": "Running version",
         "received_hp_votes": "Received %(votehp)s worth of votes",
-        "votes_received": "Votes received"
+        "votes_received": "Votes received",
+        "hp_required_to_rank_up": "Needs %(votehp)s to level up"
     },
     "votesandcomments_jsx": {
         "no_responses_yet_click_to_respond":
-- 
GitLab