[Steemit javascript api 사용하기 레슨7] 업보팅 계산하기

in #kr6 years ago (edited)

안녕하세요 @fullmi 입니다.

오늘은 간단하게 리워드 계산하는 사이트의 소스를 한번 보려합니다.

https://www.steemnow.com/upvotecalc.html

위의 사이트에서 보팅파워, 스팀파워 ,보팅웨이트를 넣고 Calculate 버턴을 누르면 현재 시점에서

자신이 보팅했을때 얼마나 찍히는지 나오는데요.

저도 아는수가 없어서 일일이 소스를 보고 분석하는수밖에 없네요. 

일단 해당사이트에서 쓰는 js를 보면 jquery랑 steem-js를 사용했네요.

저는 안쓰지만.... 위의 소스를 분석하기 위해 추가해서 돌려봤습니다.

가급적 위의 사이트에서 사용한 그대로를 사용했는데요 소스는 아래와같습니다.


<!doctype html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<title>Voteing Power</title>
<script>
$(function () {
//입력한 값으로 보팅 달러 계산하기
function e() {
($("input[name='frm_steempower']").val() < 0 || $("input[name='frm_steempower']").val() > 1e7) && $("input[name='frm_steempower']").val(1e7),
($("input[name='frm_votingpower']").val() < 0 || $("input[name='frm_votingpower']").val() > 100) && $("input[name='frm_votingpower']").val(100),
($("input[name='frm_voteweight']").val() < 0 || $("input[name='frm_voteweight']").val() > 100) && $("input[name='frm_voteweight']").val(100);
var e = $("input[name='frm_steempower']").val()
, t = $("input[name='frm_votingpower']").val()
, n = $("input[name='frm_voteweight']").val()
, r = e / a
, m = parseInt(100 * t * (100 * n) / p);
m = parseInt((m + 49) / 50);
var l = parseInt(r * m * 100) * i * o;
$("#vote_value").text(l.toFixed(2)),
$("#vote_value").hide().fadeIn("fast")
}
function t() {
//리워드값 가져오기
steem.api.getRewardFund("post", function (e, t) {
n = t.reward_balance,
r = t.recent_claims,
i = n.replace(" STEEM", "") / r,
$("#reward_balance").text(parseInt(n).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")),
$("#recent_claims").text(parseInt(r / 1e9).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + "B")
}),
steem.api.getCurrentMedianHistoryPrice(function (e, t) {
o = t.base.replace(" SBD", "") / t.quote.replace(" STEEM", ""),
$("#steem_price_sbd").text("$" + o.toFixed(2))
}),
setTimeout(t, 1e4);//10*10*10*10이니까 10초마다 호출해서 가져오는거네요
}
var a, n, r, i, o, p = 1e4;
steem.api.setOptions({
}),


t();//Steem Price,Reward balance,Recent claims 값 셋팅
var m = setInterval(function () {
void 0 !== o && (clearInterval(m),
steem.api.getDynamicGlobalProperties(function (t, n) {
a = n.total_vesting_fund_steem.replace(" STEEM", "") / n.total_vesting_shares.replace(" VESTS", ""),
e()
}))
}, 200);
$("#form_calc").on("submit", function (t) {
e(),
t.preventDefault()
})
});
</script>
</head>

<body>
<div id="mainwrapper">
<br>

<div class="topbox">Steem Price
<br>
<span class="value" id="steem_price_sbd">$0.00</span>
</div>
<div class="topbox">Reward balance
<br>
<span class="value" id="reward_balance">0</span>
</div>
<div class="topbox">Recent claims
<br>
<span class="value" id="recent_claims">0</span>
</div>


<div style="clear:both;height:40px"></div>

<section class="box">
<div class="header">
<span>Upvote Calculator</span>
</div>
<div style="float:right;padding-top:36px;font-size:44px;width:40%">
<b>$
<span id="vote_value">0.00</span>
</b>
</div>
<form id="form_calc" method="get" style="padding:16px;line-height:21px">
<label for="frm_steempower">
<span style="width:130px">Steem Power</span>
<input name="frm_steempower" size="6" value="10000">
</label>
<br>
<label for="frm_votingpower">
<span style="width:130px">Voting Power</span>
<input name="frm_votingpower" size="6" value="100"> %</label>
<br>
<label for="frm_voteweight">
<span style="width:130px">Vote Weight</span>
<input name="frm_voteweight" size="6" value="100"> %</label>
<br>
<label style="display:block;margin-top:14px">
<span>&nbsp;</span>
<input type="submit" value="Calculate">
</label>
</form>
</section>

</div>


</div>
</body>

</html>
Sort:  

고생하시네요...
그래도 꾸준히 하는 모습이 멋집니다. :)

감사합니다.^^ 오늘 이벤트 아직 참여안했네요