From 26ae9b033f1a8f7a1bfe5d89f625a5d5930473e0 Mon Sep 17 00:00:00 2001 From: Michael Bumann Date: Sat, 4 Feb 2017 18:43:20 +0800 Subject: [PATCH] load data from ethereum contract --- app/controllers/index.js | 11 ----------- app/routes/index.js | 4 +++- app/services/kredits.js | 21 ++++++++++++++++++++- app/templates/index.hbs | 2 +- config/environment.js | 4 ++-- vendor/contract-abis.js | 2 +- 6 files changed, 27 insertions(+), 17 deletions(-) diff --git a/app/controllers/index.js b/app/controllers/index.js index 574b4c6..ec0dcdf 100644 --- a/app/controllers/index.js +++ b/app/controllers/index.js @@ -11,15 +11,4 @@ export default Ember.Controller.extend({ kredits: service(), - contributorsCount: computed('model.contributors.[]', function() { - return this.get('model.contributors').length; - }), - - kreditsSum: computed('model.contributors.[]', function() { - let kredits = this.get('model.contributors').mapBy('kredits'); - return kredits.reduce(function(previousValue, currentValue) { - return currentValue + previousValue; - }); - }) - }); diff --git a/app/routes/index.js b/app/routes/index.js index 10d548a..c4f6ea7 100644 --- a/app/routes/index.js +++ b/app/routes/index.js @@ -15,9 +15,11 @@ let fixtures = [ export default Ember.Route.extend({ + kredits: Ember.inject.service(), + model() { let contributors = []; - fixtures.forEach(obj => { + this.get('kredits.contributors').forEach(obj => { contributors.pushObject(Contributor.create(obj)); }); diff --git a/app/services/kredits.js b/app/services/kredits.js index 3ffff8f..cbf4a12 100644 --- a/app/services/kredits.js +++ b/app/services/kredits.js @@ -23,7 +23,6 @@ export default Ember.Service.extend({ } this.set('web3Instance', web3Instance); - return web3Instance; }.property('web3Instance'), @@ -39,6 +38,26 @@ export default Ember.Service.extend({ return this.get('kreditsContract').totalSupply(); }.property('kreditsContract'), + contributorsCount: function() { + return this.get('kreditsContract').contributorCount(); + }.property('kreditsContract'), + + contributors: function() { + var c = []; + for(var i = 0; i < this.get('contributorsCount').toNumber(); i++) { + var address = this.get('kreditsContract').contributorAddresses(i); + var person = this.get('kreditsContract').contributors(address); + var balance = this.get('kreditsContract').balanceOf(address); + console.log(person); + c.push({address: address, name: person[0], github_username: person[1], github_uid: person[2], ipfsHash: person[3], kredits: balance.toNumber()}); + }; + return c; + }.property('kreditsContract', 'contributorCount'), + + balanceOf: function(address) { + return this.get('kreditsContract').balanceOf(address).toNumber(); + }.property('kreditsContract'), + logKreditsContract: function() { Ember.Logger.debug('kreditsContract', this.get('kreditsContract')); }.on('init') diff --git a/app/templates/index.hbs b/app/templates/index.hbs index ee779e2..512e749 100644 --- a/app/templates/index.hbs +++ b/app/templates/index.hbs @@ -9,7 +9,7 @@

{{kredits.totalSupply}} kredits issued and distributed among - {{contributorsCount}} contributors. + {{kredits.contributorsCount}} contributors.

diff --git a/config/environment.js b/config/environment.js index dc8c41d..af83a49 100644 --- a/config/environment.js +++ b/config/environment.js @@ -24,12 +24,12 @@ module.exports = function(environment) { }, kreditsContract: { - ABI: contracts['Kredits'] + ABI: contracts['Kredits'].abi } }; if (environment === 'development') { - ENV.kreditsContract.address = 'abcdef123456'; + ENV.kreditsContract.address = '0xa624dc6c2539eed38273f03fc7c9fe05bfaddf66'; // ENV.APP.LOG_RESOLVER = true; // ENV.APP.LOG_ACTIVE_GENERATION = true; // ENV.APP.LOG_TRANSITIONS = true; diff --git a/vendor/contract-abis.js b/vendor/contract-abis.js index 7e343c9..abe7e3a 100644 --- a/vendor/contract-abis.js +++ b/vendor/contract-abis.js @@ -1 +1 @@ -module.exports = {"Kredits":{"abi":[{"constant":true,"inputs":[],"name":"creator","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contributors","outputs":[{"name":"name","type":"string"},{"name":"ipfsHash","type":"string"},{"name":"exists","type":"bool"},{"name":"isMember","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"kredits","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"contributorAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ipfsHash","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_member","type":"address"}],"name":"addMember","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintFor","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"contributorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_ipfsHash","type":"string"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]},"SafeMath":{"abi":[]},"Token":{"abi":[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]}}; +module.exports = {"Kredits":{"abi":[{"constant":true,"inputs":[],"name":"creator","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contributors","outputs":[{"name":"name","type":"string"},{"name":"githubUsername","type":"string"},{"name":"githubUserId","type":"string"},{"name":"ipfsHash","type":"string"},{"name":"exists","type":"bool"},{"name":"isMember","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"kredits","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"contributorAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"},{"name":"_githubUsername","type":"string"},{"name":"_githubUserId","type":"string"},{"name":"_ipfsHash","type":"string"}],"name":"updateProfile","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"ipfsHash","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_member","type":"address"}],"name":"addMember","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintFor","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"contributorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_ipfsHash","type":"string"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]},"SafeMath":{"abi":[]},"Token":{"abi":[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]}}; \ No newline at end of file