73 lines
1.5 KiB
JavaScript
73 lines
1.5 KiB
JavaScript
// client app
|
|
var app = loopback();
|
|
|
|
app.dataSource('api', {
|
|
connector: loopback.Server,
|
|
host: 'localhost',
|
|
port: 3000,
|
|
base: '/api',
|
|
discover: loopback.remoteModels
|
|
});
|
|
|
|
app.dataSource('local', {
|
|
connector: loopback.Memory
|
|
});
|
|
|
|
var Color = loopback.getModel('Color');
|
|
var LocalColor = app.model('LocalColor', {
|
|
dataSource: 'local',
|
|
options: {trackChanges: true}
|
|
});
|
|
|
|
LocalColor.beforeCreate = function(next, color) {
|
|
color.id = Math.random().toString().split('.')[1];
|
|
next();
|
|
}
|
|
|
|
function replicate() {
|
|
LocalColor.currentCheckpoint(function(err, cp) {
|
|
setTimeout(function() {
|
|
LocalColor.replicate(cp, Color, {}, function() {
|
|
console.log('replicated local to remote');
|
|
});
|
|
}, 0);
|
|
});
|
|
}
|
|
|
|
LocalColor.on('deleted', replicate);
|
|
LocalColor.on('changed', replicate);
|
|
LocalColor.on('deletedAll', replicate);
|
|
|
|
setInterval(function() {
|
|
Color.currentCheckpoint(function(err, cp) {
|
|
Color.replicate(cp, LocalColor, {}, function() {
|
|
console.log('replicated remote to local');
|
|
});
|
|
});
|
|
}, 1000);
|
|
|
|
function ListCtrl($scope) {
|
|
LocalColor.on('changed', update);
|
|
LocalColor.on('deleted', update);
|
|
|
|
function update() {
|
|
LocalColor.find({sort: 'name'}, function(err, colors) {
|
|
$scope.colors = colors;
|
|
console.log(colors);
|
|
$scope.$apply();
|
|
});
|
|
}
|
|
|
|
$scope.add = function() {
|
|
LocalColor.create({name: $scope.newColor});
|
|
$scope.newColor = null;
|
|
}
|
|
|
|
$scope.del = function(color) {
|
|
color.destroy();
|
|
}
|
|
|
|
update();
|
|
}
|
|
|