Merge pull request #434 from matiu/bug/sockets

Bug/sockets
This commit is contained in:
Gustavo Maximiliano Cortez 2014-03-20 14:32:02 -03:00
commit 47486b73db
12 changed files with 113 additions and 52 deletions

View File

@ -3,23 +3,16 @@
module.exports = function(grunt) {
//Load NPM tasks
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-css');
grunt.loadNpmTasks('grunt-markdown');
grunt.loadNpmTasks('grunt-macreload');
// Project Configuration
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
jshint: {
all: {
src: ['Gruntfile.js', 'public/src/js/**/*.js'],
options: {
jshintrc: true
}
}
},
concat: {
options: {
process: function(src, filepath) {
@ -83,15 +76,33 @@ module.exports = function(grunt) {
}
]
}
},
macreload: {
chrome: {
browser: 'chrome',
editor: 'macvim'
}
},
watch: {
main: {
files: ['public/src/js/**/*.js'],
tasks: ['concat:main', 'uglify:main', 'macreload'],
},
css: {
files: ['public/src/css/**/*.css'],
tasks: ['concat:css', 'cssmin', 'macreload'],
},
},
});
//Making grunt default to force in order not to break the project.
grunt.option('force', true);
//Default task(s).
grunt.registerTask('default', ['jshint']);
grunt.registerTask('default', ['watch']);
//Compile task (concat + minify)
grunt.registerTask('compile', ['concat', 'uglify', 'cssmin']);
grunt.registerTask('compile', ['concat', 'uglify', 'cssmin', 'macreload']);
};

View File

@ -59,10 +59,36 @@ To compile and minify the web application's assets:
```$ grunt compile```
There is a convinent Gruntfile.js for automation during editing the code
```$ grunt```
In case you are developing *insight* and *insight-api* toghether, you can do the following:
* Install insight and insight-api on the same path ($IROOT)
```
$ cd $IROOT/insight
$ grunt
```
in other terminal:
```
$ cd $IROOT/insight-api
$ ln -s ../insight/public
$ INSIGHT_PUBLIC_PATH=public node insight.js
```
```INSIGHT_PUBLIC_PATH=insight/public grunt```
at insight-api's home path (edit the path according your setup).
**also** in the insight-api path. (So you will have to grunt process running, one for insight and one for insight-api).
## Note
For more details about the *insight API* configs and end-poinst, just go to [insight API github repository](https://github.com/bitpay/insight-api) or read the [documentation](https://github.com/bitpay/insight-api/blob/master/README.md)
For more details about the *insight API* configs and end-point, just go to [insight API github repository](https://github.com/bitpay/insight-api) or read the [documentation](https://github.com/bitpay/insight-api/blob/master/README.md)
## Contribute

View File

@ -1,7 +1,7 @@
{
"name": "insight-bitcore",
"description": "An open-source frontend for the Insight API. The Insight API provides you with a convenient, powerful and simple way to query and broadcast data on the bitcoin network and build your own services with it.",
"version": "0.1.3",
"version": "0.1.4",
"author": {
"name": "Ryan X Charles",
"email": "ryan@bitpay.com"
@ -47,7 +47,7 @@
"start": "INSIGHT_PUBLIC_PATH=public node node_modules/insight-bitcore-api/insight.js"
},
"dependencies": {
"insight-bitcore-api": "git://github.com/bitpay/insight-api"
"insight-bitcore-api": "~0.1.5"
},
"devDependencies": {
"bower": "~1.2.8",
@ -56,6 +56,8 @@
"grunt-contrib-jshint": "~0.8.0",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-uglify": "~0.3.2",
"grunt-contrib-watch": "*",
"grunt-macreload": "*",
"grunt-css": "~0.5.4",
"grunt-markdown": "~0.5.0"
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -2,6 +2,7 @@
-------------------------------------------------- */
@charset "UTF-8";
html,
body {
color: #373D42;

View File

@ -4,8 +4,28 @@ angular.module('insight.address').controller('AddressController',
function($scope, $rootScope, $routeParams, $location, Global, Address, getSocket) {
$scope.global = Global;
var socket = getSocket($scope);
var _startSocket = function () {
socket.emit('subscribe', $routeParams.addrStr);
socket.on($routeParams.addrStr, function(tx) {
$rootScope.$broadcast('tx', tx);
var beep = new Audio('/sound/transaction.mp3');
beep.play();
});
};
socket.on('connect', function() {
_startSocket();
});
$scope.params = $routeParams;
$scope.findOne = function() {
$rootScope.currentAddr = $routeParams.addrStr;
_startSocket();
Address.get({
addrStr: $routeParams.addrStr
@ -27,15 +47,4 @@ angular.module('insight.address').controller('AddressController',
});
};
var socket = getSocket($scope);
socket.on('connect', function() {
socket.emit('subscribe', $routeParams.addrStr);
socket.on($routeParams.addrStr, function(tx) {
console.log('AddressTx event received ' + tx);
$rootScope.$broadcast('tx', tx);
});
});
$scope.params = $routeParams;
});

View File

@ -17,9 +17,9 @@ angular.module('insight.system').controller('IndexController',
};
var socket = getSocket($scope);
socket.on('connect', function() {
socket.emit('subscribe', 'inv');
var _startSocket = function() {
socket.emit('subscribe', 'inv');
socket.on('tx', function(tx) {
$scope.txs.unshift(tx);
if (parseInt($scope.txs.length, 10) >= parseInt(TRANSACTION_DISPLAYED, 10)) {
@ -30,9 +30,14 @@ angular.module('insight.system').controller('IndexController',
socket.on('block', function() {
_getBlocks();
});
};
socket.on('connect', function() {
_startSocket();
});
$scope.humanSince = function(time) {
var m = moment.unix(time);
return m.max().fromNow();
@ -40,6 +45,7 @@ angular.module('insight.system').controller('IndexController',
$scope.index = function() {
_getBlocks();
_startSocket();
};
$scope.txs = [];

View File

@ -26,7 +26,21 @@ angular.module('insight.status').controller('StatusController',
$scope.sync = sync;
};
var _startSocket = function () {
socket.emit('subscribe', 'sync');
socket.on('status', function(sync) {
_onSyncUpdate(sync);
});
};
var socket = getSocket($scope);
socket.on('connect', function() {
_startSocket();
});
$scope.getSync = function() {
_startSocket();
Sync.get({},
function(sync) {
_onSyncUpdate(sync);
@ -38,12 +52,4 @@ angular.module('insight.status').controller('StatusController',
};
});
};
var socket = getSocket($scope);
socket.on('connect', function() {
socket.emit('subscribe', 'sync');
socket.on('status', function(sync) {
_onSyncUpdate(sync);
});
});
});