diff --git a/app/controllers/blocks.js b/app/controllers/blocks.js index 21f82d0..a21d52e 100644 --- a/app/controllers/blocks.js +++ b/app/controllers/blocks.js @@ -3,10 +3,8 @@ /** * Module dependencies. */ - var mongoose = require('mongoose'), Block = mongoose.model('Block'); -//, _ = require('lodash'); /** @@ -35,10 +33,13 @@ exports.show = function(req, res) { } }; + /** * List of blocks by date */ exports.list = function(req, res) { + var limit = req.query.limit || 0; + //helper to convert timestamps to yyyy-mm-dd format var formatTimestamp = function (date) { var yyyy = date.getUTCFullYear().toString(); @@ -69,11 +70,11 @@ exports.list = function(req, res) { '$lte': lte } }) + .limit(limit) + .sort('-time') .exec(function(err, blocks) { if (err) { - res.render('error', { - status: 500 - }); + res.status(500).send(err); } else { res.jsonp({ blocks: blocks, @@ -86,5 +87,3 @@ exports.list = function(req, res) { } }); }; - - diff --git a/app/controllers/transactions.js b/app/controllers/transactions.js index 8146d04..833fc66 100644 --- a/app/controllers/transactions.js +++ b/app/controllers/transactions.js @@ -1,17 +1,12 @@ 'use strict'; - -var Transaction = require('../models/Transaction'); -var Block = require('../models/Block'); -var Address = require('../models/Address'); -var async = require('async'); -//, _ = require('lodash'); - - - /** * Module dependencies. */ +var Transaction = require('../models/Transaction'); +var Block = require('../models/Block'); +var Address = require('../models/Address'); +var async = require('async'); /** @@ -33,6 +28,7 @@ exports.transaction = function(req, res, next, txid) { /** + * Show transaction */ exports.show = function(req, res) { @@ -41,6 +37,7 @@ exports.show = function(req, res) { } }; + var getTransaction = function(txid, cb) { Transaction.fromIdWithInfo(txid, function(err, tx) { if (err) { @@ -51,9 +48,14 @@ var getTransaction = function(txid, cb) { }); }; -exports.transactions = function(req, res, next) { + +/** + * List of transaction + */ +exports.list = function(req, res, next) { var bId = req.query.block; var aId = req.query.address; + var limit = req.query.limit || 1000; if (bId) { Block.fromHashWithInfo(bId, function(err, block) { @@ -69,7 +71,7 @@ exports.transactions = function(req, res, next) { }); }); } - else { + else if (aId) { var a = Address.new(aId); a.update(function(err) { @@ -84,7 +86,18 @@ exports.transactions = function(req, res, next) { res.jsonp(results); }); }); - + } + else { + Transaction + .find() + .limit(limit) + .sort('-time') + .exec(function(err, txs) { + if (err) { + res.status(500).send(err); + } else { + res.jsonp(txs); + } + }); } }; - diff --git a/config/routes.js b/config/routes.js index 51a3413..07086bc 100644 --- a/config/routes.js +++ b/config/routes.js @@ -18,8 +18,7 @@ module.exports = function(app) { var transactions = require('../app/controllers/transactions'); app.get('/api/tx/:txid', transactions.show); app.param('txid', transactions.transaction); - - app.get('/api/txs', transactions.transactions); + app.get('/api/txs', transactions.list); // Address routes var addresses = require('../app/controllers/addresses'); diff --git a/public/js/controllers/index.js b/public/js/controllers/index.js index 3af4836..30de7da 100755 --- a/public/js/controllers/index.js +++ b/public/js/controllers/index.js @@ -2,10 +2,10 @@ var TRANSACTION_DISPLAYED = 5; var BLOCKS_DISPLAYED = 5; -angular.module('mystery.system').controller('IndexController', ['$scope', 'Global', 'socket', function($scope, Global, socket) { +angular.module('mystery.system').controller('IndexController', ['$scope', 'Global', 'socket', 'Blocks', 'Transactions', function($scope, Global, socket, Blocks, Transactions) { $scope.global = Global; - socket.on('tx', function(data) { - var tx = data; + + socket.on('tx', function(tx) { console.log('Transaction received! ' + JSON.stringify(tx)); if ($scope.txs.length === TRANSACTION_DISPLAYED) { $scope.txs.pop(); @@ -13,8 +13,7 @@ angular.module('mystery.system').controller('IndexController', ['$scope', 'Globa $scope.txs.unshift(tx); }); - socket.on('block', function(data) { - var block = data; + socket.on('block', function(block) { console.log('Block received! ' + JSON.stringify(block)); if ($scope.blocks.length === BLOCKS_DISPLAYED) { $scope.blocks.pop(); @@ -22,8 +21,21 @@ angular.module('mystery.system').controller('IndexController', ['$scope', 'Globa $scope.blocks.unshift(block); }); + $scope.index = function() { + Blocks.get({ + limit: BLOCKS_DISPLAYED + }, function(res) { + $scope.blocks = res.blocks; + }); + + Transactions.query({ + limit: TRANSACTION_DISPLAYED + }, function(txs) { + $scope.txs = txs; + }); + }; + $scope.txs = []; $scope.blocks = []; - }]); diff --git a/public/js/controllers/search.js b/public/js/controllers/search.js index 878e713..43a3199 100644 --- a/public/js/controllers/search.js +++ b/public/js/controllers/search.js @@ -5,7 +5,6 @@ angular.module('mystery.search').controller('SearchController', ['$scope', '$rou $scope.search = function() { var q = $scope.q; - var path; $scope.badQuery = false; $scope.q = ''; diff --git a/public/js/services/transactions.js b/public/js/services/transactions.js index d245dbf..33c3795 100644 --- a/public/js/services/transactions.js +++ b/public/js/services/transactions.js @@ -32,3 +32,6 @@ angular.module('mystery.transactions').factory('TransactionsByAddress', ['$resou }); }]); +angular.module('mystery.transactions').factory('Transactions', ['$resource', function($resource) { + return $resource('/api/txs'); +}]); diff --git a/public/views/index.html b/public/views/index.html index e9192bb..c2c4495 100644 --- a/public/views/index.html +++ b/public/views/index.html @@ -1,4 +1,4 @@ -
+