Created
July 1, 2014 22:49
-
-
Save mmirolim/b1a241053fadd41ce9ab to your computer and use it in GitHub Desktop.
This file contains 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
// Enter the nodes. | |
// set different colors for task status | |
var nodeEnter = node.enter().append("g") | |
.attr("class", function (d) { | |
return "node" + " " + d.status; | |
}) | |
.attr("transform", function(d) { | |
return "translate(" + d.y + "," + d.x + ")"; }); | |
nodeEnter.append("circle") | |
.attr("r", 10); | |
// | |
<style> | |
.node circle { | |
stroke: none; | |
} | |
.node.inbox circle { | |
fill: rgb(82, 133, 243); | |
} | |
.node.active circle { | |
fill: orange; | |
} | |
.node.complete circle { | |
fill: rgb(36, 219, 36); | |
} | |
</style> | |
// | |
/** | |
* Caching service via pouchDb | |
* @link http://pouchdb.com/ | |
* @author Mirolim Mirzakhmedov mirolim777 at gmail.com | |
* @date 01.07.2014 | |
*/ | |
app.factory('CacheDB', ['$http', 'API', | |
function ($http, API) { | |
var db = new PouchDB('cachedb'); | |
return { | |
put: function (obj, id) { | |
db.put(obj, id) | |
.then(function (r) { | |
return r; | |
}); | |
}, | |
get: function (id) { | |
db.get(id) | |
.then(function (r) { | |
console.log(r, 'Result from get'); | |
return r; | |
}); | |
}, | |
query: function (map) { | |
db.query({map: map}, {include_docs: true}) | |
.then(function (r) { | |
return r; | |
}) | |
}, | |
allDocs: function (startKey, endKey, desc) { | |
db.allDocs({startkey: startKey, endkey: endKey, descending: desc}) | |
.then(function (r) { | |
console.log(r, 'Results from allDocs'); | |
return r; | |
}) | |
} | |
} | |
} | |
]); | |
// task service | |
save: function (task) { | |
var deffered = $q.defer(); | |
// backup changes | |
var timestamp = Date.now(); | |
if (!task.id) { | |
CacheDB.put(task, "backUpChanges/" + timestamp + "/00/CREATE"); | |
} else { | |
CacheDB.put(task, "backUpChanges/" + timestamp + "/" + task.id + "/UPDATE"); | |
} | |
// if not connected return promise so users can work offline | |
if (!socket.socket.connected) { | |
// set task id to something we can find | |
task.id = timestamp; | |
task.synced = false; | |
deffered.resolve(task); | |
console.log(task); | |
} | |
if (!task.id) { | |
task.status = STATUS.inbox.name; | |
socket.post(API.tasks, task, function (r) { | |
deffered.resolve(r); | |
}, function (e) { | |
deffered.reject(e); | |
}); | |
} else { | |
delete task.$$hashKey; | |
delete task.dueDateOpened; | |
socket.put(API.tasks + '/' + task.id, task, function (r) { | |
deffered.resolve(r); | |
}, function (e, status) { | |
deffered.reject(e, status); | |
}); | |
} | |
return deffered.promise; | |
}, | |
delete: function (task) { | |
// backup changes | |
CacheDB.put(task, "backUpChanges/" + Date.now() + "/" + task.id + "/DELETE"); | |
var deffered = $q.defer(); | |
socket.delete(API.tasks + '/' + task.id, function (r) { | |
deffered.resolve(r); | |
}, function (e, status) { | |
deffered.reject(e, status); | |
}); | |
return deffered.promise; | |
}, | |
// |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment