Skip to content

Instantly share code, notes, and snippets.

@ronycohen
Created February 17, 2016 16:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ronycohen/6b0cfeb0c09624354666 to your computer and use it in GitHub Desktop.
Save ronycohen/6b0cfeb0c09624354666 to your computer and use it in GitHub Desktop.
<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:64f22db4208234e9ddfdcb14abe5640157f7af0e@whenagain.cloudant.com/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