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'
			},
     ...