Created
February 17, 2016 16:18
-
-
Save ronycohen/6b0cfeb0c09624354666 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>Angular JS</title> | |
</head> | |
<body ng-app="myapp"> | |
<div ng-controller="DemoCtrl as demo"> | |
<h1>Hello {{demo.name}}</h1> | |
<p>ok</p> | |
</div> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.0/angular.js"></script> | |
<script src="https://npmcdn.com/pouchdb/dist/pouchdb.js"></script> | |
<script src="https://npmcdn.com/worker-pouch/dist/pouchdb.worker-pouch.js"></script> | |
<script src="https://cdn.jsdelivr.net/lodash/3.10.1/lodash.js"></script> | |
<script> | |
var app = angular.module('myapp', []); | |
app.controller('DemoCtrl', function($q) { | |
this.name = 'World'; | |
console.log("GO"); | |
var self = { | |
localDB : null, | |
remoteDB : null, | |
changeLocalDBListener : function(){ | |
var optionChange = { | |
continuous: true, | |
live: true, | |
since: 'now', | |
include_docs: true, | |
conflicts: true, | |
attachments: false, | |
batch_size : 1000}; | |
self.localDB.changes() | |
.on('change', function (localChange) {console.log('localDB change occured ', localChange.seq, localChange);}) | |
.on('error', function(e){console.error('localDB error change occured ', e);}); | |
}, | |
checkChangeWorker : function(){ | |
self.localDB = new PouchDB('localDB', {adapter: 'worker'}); | |
// self.localDB.info() | |
// .then(function(info){ | |
self.changeLocalDBListener(); | |
var time = (new Date()).getTime(); | |
setTimeout(function(){ | |
var docs = [ | |
{'_id': time + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', test: 'yo'}, | |
{'_id': time + 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', test: 'yo'}, | |
{'_id': time + 'cccccccccccccccccccccccccccccccc', test: 'yo'} | |
] | |
self.localDB.bulkDocs(docs) | |
.then(function(res){ | |
console.log("result bulkDocs: ", res); | |
}) | |
}, 2000); | |
// }) | |
}, | |
checkWorker : function(){ | |
console.log("checkWorker"); | |
PouchDB.debug.enable('*'); | |
var remoteUrl = "https://dscrindeavelfcloestorest:[email protected]/remote-test-db"; | |
self.remoteDB = new PouchDB(remoteUrl); | |
self.localDB = new PouchDB('localDB', {adapter: 'worker'}); | |
var time = (new Date()).getTime(); | |
self.localDB.destroy() | |
.then(function(res){ | |
console.log("Destroy localDB and recreate it.",res); | |
return new PouchDB('localDB', {adapter: 'worker'}); | |
}) | |
.then(function(local){ | |
console.log("localDB",local); | |
self.localDB = local; | |
return self.localDB.put({_id: time + 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', test: 'yo'}); | |
}) | |
.then(function (res) { | |
console.log("put local",res); | |
console.log("remote _db_name", self.remoteDB._db_name); | |
return self.remoteDB.info(); | |
}) | |
.then(function (res) { | |
console.log("remote info",res); | |
return self.localDB.replicate.to(remoteUrl); | |
// return self.replicate(self.localDB,remoteUrl,{retry:true}); | |
}) | |
.then(function (res) { | |
console.log("replicate remote",res); | |
return self.remoteDB.info(); | |
}) | |
.then(function (info) { | |
console.log('remote database info after replicate local To remoteDB ', info); | |
}) | |
.then(function () { | |
self.remoteDB.put({_id: time+'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', test: 'yo'}); | |
}) | |
.then(function () { | |
// return self.localDB.replicate.from(self.remoteDB); | |
return self.localDB.replicate.from(remoteUrl); | |
}) | |
.then(function () { | |
return self.remoteDB.info(); | |
}) | |
.then(function (info) { | |
console.log('remote database info after replicate remote to Local', info); | |
}) | |
.then(function () { | |
return self.remoteDB.allDocs({include_docs:true}); | |
}) | |
.then(function (docs) { | |
console.log('SUCCESS !!!!!!!!!!! remoteDB database docs', docs); | |
}) | |
.catch(function(e){ | |
console.error("Error : ", e); | |
}); | |
}, | |
replicate : function(dba, dbb, options){ | |
console.info("replicate", dba._db_name, dbb, options); | |
var defer = $q.defer(); | |
dba.replicate.to(dbb, options) | |
.on('complete', function (res) { | |
// yay, we're done! | |
console.info("complete", res, options); | |
if(_.isString(dbb)){ | |
defer.resolve(new PouchDB(dbb).info()); | |
} | |
else{ | |
defer.resolve(dbb.info()); | |
} | |
}) | |
.on('paused', function (info) { | |
// replication was paused, usually because of a lost connection | |
console.info(info, "paused"); | |
}) | |
.on('active', function (info) { | |
// replication was resumed | |
console.info(info, "active"); | |
}) | |
.on('change', function (info) { | |
// handle change | |
console.info("change", info); | |
}) | |
.on('error', function (err) { | |
// boo, something went wrong! | |
console.error("replicate: ", JSON.stringify(err)); | |
setTimeout(function(){ | |
return self.replicate(dba, dbb, options); | |
}, 2000); | |
}); | |
return defer.promise; | |
}, | |
}; | |
//launch the test | |
// self.checkWorker(); | |
self.checkChangeWorker(); | |
}); | |
</script> | |
</body> | |
</div> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment