JSFiddle - React, Tailwind, and code Playground
by fatmusic
HTML
<script src="https://cdn.steemjs.com/lib/latest/steem.min.js"></script>
<script src="https://echarts.baidu.com/dist/echarts.min.js"></script>
<div id="main" style="width: 800px;height:800px;"></div>
JavaScript
// Deklaracja zmiennej autora, TU możemy wstawić swój nick.
var author = 'fat.music';
// Deklaracja zmiennej, w której będziemy trzymać wyniki — głosujących.
var voters = [];
// Deklaracja zapytania, pobieramy 100 postów autora.
var query = {
tag: author,
limit: 100
};
// Wykonanie zapytania, zwracane są posty.
steem.api.getDiscussionsByBlog(query, function(err, posts) {
// Dla każdego posta wykonujemy funkcję.
posts.forEach(function(post) {
// Jeśli jesteśmy autorem, zapytanie zwraca również posty Resteemowane.
if (post.author === author) {
// Pobieramy głosujących.
steem.api.getActiveVotes(author, post.permlink, function(err, votes) {
// Dla każdego głosującego wykonujemy funkcję.
votes.forEach(function(vote) {
// Jeśli nie jesteśmy głosującym.
if (vote.voter !== author) {
// Szukamy w tablicy wyników czy już głosujący w niej jest. Patrz poniżej funkcja search.
let voterId = search('@' + vote.voter, voters);
// Jeśli nie znaleziono głosującego w tablicy. Dodajemy go.
if (voterId === false) {
voter = ({name: '@' + vote.voter, votes: 1, reward: parseInt(vote.rshares)});
voters.push(voter);
} else { // Jeśli znaleziono głosującego w tablicy. Nadpisujemy zwiększając jego liczbę głosów (votes) i nagrodę (reward).
voters[voterId] = {
name: '@' + vote.voter,
votes: voters[voterId].votes + 1,
reward: voters[voterId].reward + parseInt(vote.rshares)
}
}
}
});
});
}
});
});
// Odczekujemy 3 sekundy. I sortujemy wyniki i wyświetlamy je na console.
setTimeout(function() {
voters.sort(compare);
// Inicjujemy wykres na elemencie main
var myChart = echarts.init(document.getElementById('main'));
// Tworzymy dane do wykresu.
var data = prepareData(voters);
// Ustawiamy opcje.
option = {
title : {
text: '@' + author,
subtext: 'Post voters',
x:'center'
},
...