Merge pull request #135 from colkito/fix/angular-code-improve

several improvements for angular code style
This commit is contained in:
Matias Alejo Garcia 2014-01-23 10:12:49 -08:00
commit 9cd370b7e9
16 changed files with 180 additions and 179 deletions

View File

@ -1,7 +1,7 @@
'use strict'; 'use strict';
angular.module('insight.address').controller('AddressController', angular.module('insight.address').controller('AddressController',
function($scope, $rootScope, $routeParams, $location, Global, Address, get_socket) { function($scope, $rootScope, $routeParams, $location, Global, Address, getSocket) {
$scope.global = Global; $scope.global = Global;
$scope.findOne = function() { $scope.findOne = function() {
@ -24,7 +24,8 @@ function($scope, $rootScope, $routeParams, $location, Global, Address, get_socke
$location.path('/'); $location.path('/');
}); });
}; };
var socket = get_socket($scope);
var socket = getSocket($scope);
socket.emit('subscribe', $routeParams.addrStr); socket.emit('subscribe', $routeParams.addrStr);
socket.on($routeParams.addrStr, function(tx) { socket.on($routeParams.addrStr, function(tx) {
console.log('atx ' + tx.txid); console.log('atx ' + tx.txid);
@ -33,7 +34,6 @@ function($scope, $rootScope, $routeParams, $location, Global, Address, get_socke
$rootScope.$broadcast('tx', tx.txid); $rootScope.$broadcast('tx', tx.txid);
}); });
$scope.params = $routeParams; $scope.params = $routeParams;
});
});

View File

@ -1,7 +1,7 @@
'use strict'; 'use strict';
angular.module('insight.blocks').controller('BlocksController', angular.module('insight.blocks').controller('BlocksController',
function ($scope, $rootScope, $routeParams, $location, Global, Block, Blocks, BlockByHeight) { function($scope, $rootScope, $routeParams, $location, Global, Block, Blocks, BlockByHeight) {
$scope.global = Global; $scope.global = Global;
if ($routeParams.blockHeight) { if ($routeParams.blockHeight) {
@ -44,4 +44,5 @@ angular.module('insight.blocks').controller('BlocksController',
}; };
$scope.params = $routeParams; $scope.params = $routeParams;
}); });

View File

@ -1,15 +1,15 @@
'use strict'; 'use strict';
angular.module('insight.system').controller('FooterController', angular.module('insight.system').controller('FooterController',
function ($scope, get_socket, Version) { function($scope, Version) {
var getVersion = function() { var _getVersion = function() {
Version.get({}, Version.get({},
function(res) { function(res) {
$scope.version = res.version; $scope.version = res.version;
}); });
}; };
$scope.version = getVersion(); $scope.version = _getVersion();
}); });

View File

@ -1,7 +1,7 @@
'use strict'; 'use strict';
angular.module('insight.system').controller('HeaderController', angular.module('insight.system').controller('HeaderController',
function ($scope, get_socket, Global, Block) { function($scope, getSocket, Global, Block) {
$scope.global = Global; $scope.global = Global;
$scope.menu = [ $scope.menu = [
@ -15,10 +15,10 @@ angular.module('insight.system').controller('HeaderController',
} }
]; ];
var socket = get_socket($scope); var socket = getSocket($scope);
socket.emit('subscribe', 'inv'); socket.emit('subscribe', 'inv');
var getBlock = function(hash) { var _getBlock = function(hash) {
Block.get({ Block.get({
blockHash: hash blockHash: hash
}, function(res) { }, function(res) {
@ -29,7 +29,7 @@ angular.module('insight.system').controller('HeaderController',
socket.on('block', function(block) { socket.on('block', function(block) {
var blockHash = block.hash.toString(); var blockHash = block.hash.toString();
console.log('Updated Blocks Height!'); console.log('Updated Blocks Height!');
getBlock(blockHash); _getBlock(blockHash);
}); });

View File

@ -2,11 +2,12 @@
var TRANSACTION_DISPLAYED = 5; var TRANSACTION_DISPLAYED = 5;
var BLOCKS_DISPLAYED = 5; var BLOCKS_DISPLAYED = 5;
angular.module('insight.system').controller('IndexController', angular.module('insight.system').controller('IndexController',
function($scope, $rootScope, Global, get_socket, Blocks, Block, Transactions, Transaction) { function($scope, $rootScope, Global, getSocket, Blocks, Block, Transactions, Transaction) {
$scope.global = Global; $scope.global = Global;
var getTransaction = function(txid) { var _getTransaction = function(txid) {
Transaction.get({ Transaction.get({
txId: txid txId: txid
}, function(res) { }, function(res) {
@ -14,7 +15,7 @@ angular.module('insight.system').controller('IndexController',
}); });
}; };
var getBlock = function(hash) { var _getBlock = function(hash) {
Block.get({ Block.get({
blockHash: hash blockHash: hash
}, function(res) { }, function(res) {
@ -22,7 +23,7 @@ angular.module('insight.system').controller('IndexController',
}); });
}; };
var socket = get_socket($scope); var socket = getSocket($scope);
socket.emit('subscribe', 'inv'); socket.emit('subscribe', 'inv');
//show errors //show errors
@ -31,22 +32,24 @@ angular.module('insight.system').controller('IndexController',
socket.on('tx', function(tx) { socket.on('tx', function(tx) {
var txStr = tx.txid.toString(); var txStr = tx.txid.toString();
console.log('Transaction received! ' + JSON.stringify(tx)); console.log('Transaction received! ' + JSON.stringify(tx));
if (parseInt($scope.txs.length) > parseInt(TRANSACTION_DISPLAYED) - 1) { if (parseInt($scope.txs.length, 10) > parseInt(TRANSACTION_DISPLAYED, 10) - 1) {
$scope.txs.pop(); $scope.txs.pop();
} }
getTransaction(txStr);
_getTransaction(txStr);
}); });
socket.on('block', function(block) { socket.on('block', function(block) {
var blockHash = block.hash.toString(); var blockHash = block.hash.toString();
console.log('Block received! ' + JSON.stringify(block)); console.log('Block received! ' + JSON.stringify(block));
if (parseInt($scope.blocks.length) > parseInt(BLOCKS_DISPLAYED) - 1) { if (parseInt($scope.blocks.length, 10) > parseInt(BLOCKS_DISPLAYED, 10) - 1) {
$scope.blocks.pop(); $scope.blocks.pop();
} }
getBlock(blockHash);
_getBlock(blockHash);
}); });
$scope.human_since = function(time) { $scope.humanSince = function(time) {
var m = moment.unix(time); var m = moment.unix(time);
return m.max().fromNow(); return m.max().fromNow();
}; };

View File

@ -1,7 +1,7 @@
'use strict'; 'use strict';
angular.module('insight.search').controller('SearchController', angular.module('insight.search').controller('SearchController',
function ($scope, $routeParams, $location, $timeout, Global, Block, Transaction, Address, BlockByHeight) { function($scope, $routeParams, $location, $timeout, Global, Block, Transaction, Address, BlockByHeight) {
$scope.global = Global; $scope.global = Global;
$scope.search = function() { $scope.search = function() {
@ -36,8 +36,8 @@ angular.module('insight.search').controller('SearchController',
}, 2000); }, 2000);
$scope.q = q; $scope.q = q;
}); });
}); });
}); });
}); });
}; };

View File

@ -1,7 +1,7 @@
'use strict'; 'use strict';
angular.module('insight.status').controller('StatusController', angular.module('insight.status').controller('StatusController',
function($scope, $routeParams, $location, $rootScope, Global, Status, Sync, get_socket) { function($scope, $routeParams, $location, $rootScope, Global, Status, Sync, getSocket) {
$scope.global = Global; $scope.global = Global;
$scope.getStatus = function(q) { $scope.getStatus = function(q) {
@ -22,25 +22,25 @@ function($scope, $routeParams, $location, $rootScope, Global, Status, Sync, get_
}); });
}; };
var on_sync_update = function(sync) { var _onSyncUpdate = function(sync) {
$scope.sync = sync; $scope.sync = sync;
}; };
$scope.getSync = function() { $scope.getSync = function() {
Sync.get({}, Sync.get({},
function(sync) { function(sync) {
on_sync_update(sync); _onSyncUpdate(sync);
}, },
function(e) { function(e) {
$scope.sync = { error: 'Could not get sync information' + e }; $scope.sync = { error: 'Could not get sync information' + e };
}); });
}; };
var socket = get_socket($scope); var socket = getSocket($scope);
socket.emit('subscribe', 'sync'); socket.emit('subscribe', 'sync');
socket.on('status', function(sync) { socket.on('status', function(sync) {
console.log('[status.js.55::] sync status update received!'); console.log('[status.js.55::] sync status update received!');
on_sync_update(sync); _onSyncUpdate(sync);
}); });
}); });

View File

@ -1,7 +1,7 @@
'use strict'; 'use strict';
angular.module('insight.transactions').controller('transactionsController', angular.module('insight.transactions').controller('transactionsController',
function ($scope, $rootScope, $routeParams, $location, Global, Transaction, TransactionsByBlock, TransactionsByAddress) { function($scope, $rootScope, $routeParams, $location, Global, Transaction, TransactionsByBlock, TransactionsByAddress) {
$scope.global = Global; $scope.global = Global;
$scope.loading = false; $scope.loading = false;
$scope.loadedBy = null; $scope.loadedBy = null;
@ -9,18 +9,15 @@ function ($scope, $rootScope, $routeParams, $location, Global, Transaction, Tran
var pageNum = 0; var pageNum = 0;
var pagesTotal = 1; var pagesTotal = 1;
$scope.findThis = function() { var _aggregateItems = function(items) {
$scope.findTx($routeParams.txId);
};
$scope.aggregateItems = function(items) {
if (!items) return []; if (!items) return [];
var l = items.length; var l = items.length;
var ret = []; var ret = [];
var tmp = {}; var tmp = {};
var u=0; var u = 0;
// TODO multiple output address // TODO multiple output address
// //
for(var i=0; i < l; i++) { for(var i=0; i < l; i++) {
@ -29,14 +26,14 @@ function ($scope, $rootScope, $routeParams, $location, Global, Transaction, Tran
// non standard input // non standard input
if (items[i].scriptSig && !items[i].addr) { if (items[i].scriptSig && !items[i].addr) {
items[i].addr = 'Unparsed address [' + u++ + ']'; items[i].addr = 'Unparsed address [' + u++ + ']';
items[i].notAddr = true; items[i].notAddr = true;
notAddr = true; notAddr = true;
} }
// non standard output // non standard output
if (items[i].scriptPubKey && !items[i].scriptPubKey.addresses) { if (items[i].scriptPubKey && !items[i].scriptPubKey.addresses) {
items[i].scriptPubKey.addresses = ['Unparsed address [' + u++ + ']']; items[i].scriptPubKey.addresses = ['Unparsed address [' + u++ + ']'];
items[i].notAddr = true; items[i].notAddr = true;
notAddr = true; notAddr = true;
} }
@ -48,7 +45,7 @@ function ($scope, $rootScope, $routeParams, $location, Global, Transaction, Tran
continue; continue;
} }
var addr = items[i].addr || (items[i].scriptPubKey && items[i].scriptPubKey.addresses[0] ); var addr = items[i].addr || (items[i].scriptPubKey && items[i].scriptPubKey.addresses[0]);
if (!tmp[addr]) { if (!tmp[addr]) {
tmp[addr] = {}; tmp[addr] = {};
@ -57,6 +54,7 @@ function ($scope, $rootScope, $routeParams, $location, Global, Transaction, Tran
tmp[addr].addr = addr; tmp[addr].addr = addr;
tmp[addr].items = []; tmp[addr].items = [];
} }
tmp[addr].valueSat += items[i].valueSat; tmp[addr].valueSat += items[i].valueSat;
tmp[addr].value = tmp[addr].valueSat / 100000000; tmp[addr].value = tmp[addr].valueSat / 100000000;
tmp[addr].items.push(items[i]); tmp[addr].items.push(items[i]);
@ -67,12 +65,47 @@ function ($scope, $rootScope, $routeParams, $location, Global, Transaction, Tran
angular.forEach(tmp, function(v) { angular.forEach(tmp, function(v) {
ret.push(v); ret.push(v);
}); });
return (ret);
return ret;
}; };
$scope.processTX = function(tx) { var _processTX = function(tx) {
tx.vinSimple = $scope.aggregateItems(tx.vin); tx.vinSimple = _aggregateItems(tx.vin);
tx.voutSimple = $scope.aggregateItems(tx.vout); tx.voutSimple = _aggregateItems(tx.vout);
};
var _paginate = function (data) {
$scope.loading = false;
pagesTotal = data.pagesTotal;
pageNum += 1;
data.txs.forEach(function(tx) {
_processTX(tx);
$scope.txs.push(tx);
});
};
var _byBlock = function() {
TransactionsByBlock.get({
block: $routeParams.blockHash,
pageNum: pageNum
}, function(data) {
_paginate(data);
});
};
var _byAddress = function () {
TransactionsByAddress.get({
address: $routeParams.addrStr,
pageNum: pageNum
}, function(data) {
_paginate(data);
});
};
$scope.findThis = function() {
$scope.findTx($routeParams.txId);
}; };
$scope.findTx = function(txid) { $scope.findTx = function(txid) {
@ -80,7 +113,7 @@ function ($scope, $rootScope, $routeParams, $location, Global, Transaction, Tran
txId: txid txId: txid
}, function(tx) { }, function(tx) {
$scope.tx = tx; $scope.tx = tx;
$scope.processTX(tx); _processTX(tx);
$scope.txs.unshift(tx); $scope.txs.unshift(tx);
}, function(e) { }, function(e) {
if (e.status === 400) { if (e.status === 400) {
@ -92,58 +125,32 @@ function ($scope, $rootScope, $routeParams, $location, Global, Transaction, Tran
else { else {
$rootScope.flashMessage = 'Transaction Not Found'; $rootScope.flashMessage = 'Transaction Not Found';
} }
$location.path('/'); $location.path('/');
}); });
}; };
$scope.byBlock = function() { //Initial load
TransactionsByBlock.get({
block: $routeParams.blockHash,
pageNum: pageNum
}, function(data) {
$scope.paginate(data);
});
};
$scope.byAddress = function () {
TransactionsByAddress.get({
address: $routeParams.addrStr,
pageNum: pageNum
}, function(data) {
$scope.paginate(data);
});
};
$scope.paginate = function (data) {
$scope.loading = false;
pagesTotal = data.pagesTotal;
pageNum += 1;
data.txs.forEach(function(tx) {
$scope.processTX(tx);
$scope.txs.push(tx);
});
};
$scope.load = function(from) { $scope.load = function(from) {
$scope.loadedBy = from; $scope.loadedBy = from;
$scope.loadMore(); $scope.loadMore();
}; };
//Load more transactions for pagination
$scope.loadMore = function() { $scope.loadMore = function() {
if (pageNum < pagesTotal && !$scope.loading) { if (pageNum < pagesTotal && !$scope.loading) {
$scope.loading = true; $scope.loading = true;
if ($scope.loadedBy === 'address') { if ($scope.loadedBy === 'address') {
$scope.byAddress(); _byAddress();
} }
else { else {
$scope.byBlock(); _byBlock();
} }
} }
}; };
//Init without txs
$scope.txs = []; $scope.txs = [];
$scope.$on('tx', function(event, txid) { $scope.$on('tx', function(event, txid) {

View File

@ -1,9 +1,6 @@
'use strict'; 'use strict';
angular.element(document).ready(function() { angular.element(document).ready(function() {
//Fixing facebook bug with redirect
if (window.location.hash === '#_=_') window.location.hash = '#!';
//Then init the app //Then init the app
angular.bootstrap(document, ['insight']); angular.bootstrap(document, ['insight']);
}); });

View File

@ -1,33 +1,31 @@
'use strict'; 'use strict';
angular.module('insight.blocks').factory('Block', angular.module('insight.blocks')
function($resource) { .factory('Block',
return $resource('/api/block/:blockHash', { function($resource) {
blockHash: '@blockHash' return $resource('/api/block/:blockHash', {
}, { blockHash: '@blockHash'
get: { }, {
method: 'GET', get: {
interceptor: { method: 'GET',
response: function (res) { interceptor: {
return res.data; response: function (res) {
}, return res.data;
responseError: function (res) { },
if (res.status === 404) { responseError: function (res) {
return res; if (res.status === 404) {
return res;
}
} }
} }
} }
} });
})
.factory('Blocks',
function($resource) {
return $resource('/api/blocks');
})
.factory('BlockByHeight',
function($resource) {
return $resource('/api/block-index/:blockHeight');
}); });
});
angular.module('insight.blocks').factory('Blocks',
function($resource) {
return $resource('/api/blocks');
});
angular.module('insight.blocks').factory('BlockByHeight',
function($resource) {
return $resource('/api/block-index/:blockHeight');
});

View File

@ -1,13 +1,12 @@
'use strict'; 'use strict';
//Global service for global variables //Global service for global variables
angular.module('insight.system').factory('Global',[ angular.module('insight.system')
.factory('Global',[
function() { function() {
} }
]); ])
.factory('Version',
angular.module('insight.system').factory('Version', function($resource) {
function($resource) { return $resource('/api/version');
return $resource('/api/version'); });
});

View File

@ -46,7 +46,7 @@ ScopedSocket.prototype.emit = function(event, data, callback) {
}); });
}; };
angular.module('insight.socket').factory('get_socket', angular.module('insight.socket').factory('getSocket',
function($rootScope) { function($rootScope) {
var socket = io.connect(); var socket = io.connect();
return function(scope) { return function(scope) {
@ -59,4 +59,3 @@ function($rootScope) {
return scopedSocket; return scopedSocket;
}; };
}); });

View File

@ -1,14 +1,13 @@
'use strict'; 'use strict';
angular.module('insight.status').factory('Status', angular.module('insight.status')
function($resource) { .factory('Status',
return $resource('/api/status', { function($resource) {
q: '@q' return $resource('/api/status', {
q: '@q'
});
})
.factory('Sync',
function($resource) {
return $resource('/api/sync');
}); });
});
angular.module('insight.status').factory('Sync',
function($resource) {
return $resource('/api/sync');
});

View File

@ -1,41 +1,39 @@
'use strict'; 'use strict';
angular.module('insight.transactions').factory('Transaction', angular.module('insight.transactions')
function($resource) { .factory('Transaction',
return $resource('/api/tx/:txId', { function($resource) {
txId: '@txId' return $resource('/api/tx/:txId', {
}, { txId: '@txId'
get: { }, {
method: 'GET', get: {
interceptor: { method: 'GET',
response: function (res) { interceptor: {
return res.data; response: function (res) {
}, return res.data;
responseError: function (res) { },
if (res.status === 404) { responseError: function (res) {
return res; if (res.status === 404) {
return res;
}
} }
} }
} }
} });
})
.factory('TransactionsByBlock',
function($resource) {
return $resource('/api/txs', {
block: '@block'
});
})
.factory('TransactionsByAddress',
function($resource) {
return $resource('/api/txs', {
address: '@address'
});
})
.factory('Transactions',
function($resource) {
return $resource('/api/txs');
}); });
});
angular.module('insight.transactions').factory('TransactionsByBlock',
function($resource) {
return $resource('/api/txs', {
block: '@block'
});
});
angular.module('insight.transactions').factory('TransactionsByAddress',
function($resource) {
return $resource('/api/txs', {
address: '@address'
});
});
angular.module('insight.transactions').factory('Transactions',
function($resource) {
return $resource('/api/txs');
});

View File

@ -22,7 +22,7 @@
<td> <td>
<a href="/#!/block/{{b.hash}}">{{b.height}}</a> <a href="/#!/block/{{b.hash}}">{{b.height}}</a>
</td> </td>
<td>{{human_since(b.time)}}</td> <td>{{humanSince(b.time)}}</td>
<td>{{b.tx.length}}</td> <td>{{b.tx.length}}</td>
<td>{{b.size}}</td> <td>{{b.size}}</td>
<td>{{b.confirmations}}</td> <td>{{b.confirmations}}</td>
@ -53,7 +53,7 @@
<td> <td>
<a class="ellipsis" href="/#!/tx/{{tx.txid}}">{{tx.txid}}</a> <a class="ellipsis" href="/#!/tx/{{tx.txid}}">{{tx.txid}}</a>
</td> </td>
<td><span class="ellipsis">{{human_since(tx.time)}}</span></td> <td><span class="ellipsis">{{humanSince(tx.time)}}</span></td>
<td>{{tx.valueOut}}</td> <td>{{tx.valueOut}}</td>
</tr> </tr>
</tbody> </tbody>
@ -61,28 +61,28 @@
<div class="m50v"></div> <div class="m50v"></div>
<h4> Other Bitcoin Links </h4> <h4> Other Bitcoin Links </h4>
<ul style="line-height: 22px;"> <ul style="line-height: 22px;">
<li> <li>
<a href="">Most Popular Addresses</a> <a href="">Most Popular Addresses</a>
<small> - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolores.</small> <small> - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolores.</small>
</li> </li>
<li> <li>
<a href="">Addresses</a> <a href="">Addresses</a>
<small> - Addresses which have received the most payments</small> <small> - Addresses which have received the most payments</small>
</li> </li>
<li> <li>
<a href="">Lorem ipsum dolor.</a> <a href="">Lorem ipsum dolor.</a>
<small> - Lorem ipsum dolor sit amet.</small> <small> - Lorem ipsum dolor sit amet.</small>
</li> </li>
<li> <li>
<a href="">Most Popular Addresses</a> <a href="">Most Popular Addresses</a>
<small> - Addresses which have received the most payments</small> <small> - Addresses which have received the most payments</small>
</li> </li>
<li> <li>
<a href="">Lorem ipsum dolor sit.</a> <a href="">Lorem ipsum dolor sit.</a>
<small> - Lorem ipsum dolor sit amet, consectetur adipisicing.</small> <small> - Lorem ipsum dolor sit amet, consectetur adipisicing.</small>
</li> </li>
<li> <li>
<a href="">Addresses</a> <a href="">Addresses</a>
<small> - Addresses which have received the most payments</small> <small> - Addresses which have received the most payments</small>
</li> </li>
</ul> </ul>

View File

@ -1,8 +1,8 @@
<div class="alert alert-warning" data-ng-show="txs.length && !txs[0].txid">There are not transactions</div> <div class="alert alert-warning" data-ng-show="!txs[0].txid && !loading">There are not transactions</div>
<div class="block-tx fader" data-ng-show="txs && txs[0].txid" data-ng-repeat="tx in txs"> <div class="block-tx fader" data-ng-show="txs && txs[0].txid" data-ng-repeat="tx in txs">
<div data-ng-include src="'/views/transaction/tx.html'"></div> <div data-ng-include src="'/views/transaction/tx.html'"></div>
</div> </div>
<div class="progress progress-striped active" data-ng-show="!txs.length || loading"> <div class="progress progress-striped active" data-ng-show="loading">
<div class="progress-bar progress-bar-info" style="width: 100%"> <div class="progress-bar progress-bar-info" style="width: 100%">
<span>Loading...</span> <span>Loading...</span>
</div> </div>