diff --git a/public/javascripts/views/list.js b/public/javascripts/views/list.js
index 0f02a72..12e844c 100644
--- a/public/javascripts/views/list.js
+++ b/public/javascripts/views/list.js
@@ -27,7 +27,7 @@ define(
this.listenTo(this.collection, 'add', this.renderTask);
- /** Load demo data and warn users **/
+ /** Load demo data **/
function loadDemoData() {
for (var i = 0; i < demoData.length; i++) {
var task = Tasks.add(demoData[i]);
@@ -44,7 +44,7 @@ define(
this.collection.fetch({
success: success,
error: function () {
- // switch to localforage database if server isn't present
+ // switch to localforage database if server isn't present and fetch again
window.hackflowyOffline=true;
$('#header').append('
Running in offline mode, data may be lost
');
Tasks.fetch({
@@ -67,18 +67,30 @@ define(
});
var a = taskView.render();
if (a.model.get('parentId') === 0) {
+ // inset it at the end of the root list
this.$el.append(a.el);
} else {
+ // insert after the currently edited sibling (same parent)
+ // or after the last sibling
var parent = $('*[data-id="' + a.model.get('parentId') + '"]');
- if (parent.length === 0) {
+ var siblings = $('*[data-parent-id="' + a.model.get('parentId') + '"]').parents('li')
+ if (siblings.length>0){
+ var editingSibling = siblings.filter('.editing')
+ var lastSibling = siblings.filter(':last');
+ if (editingSibling)
+ a.$el.insertAfter(editingSibling);
+ else
+ a.$el.insertAfter(lastSibling);
+ }
+ else if (parent.length < 0) {
+ a.$el.insertAfter(parent.parents('li:first'));
+ } else {
// TODO deal with loading order
console.error("Parent not rendered yet: ", {
selector: parent.selector,
task: task
});
this.$el.append(a.el);
- } else {
- a.$el.insertBefore(parent.parents('li:first'));
}
}
}
diff --git a/public/templates/task.html b/public/templates/task.html
index 8eb73bc..ab36747 100644
--- a/public/templates/task.html
+++ b/public/templates/task.html
@@ -17,9 +17,9 @@
<% if(model.isCompleted){%>
-
+
<%}else {%>
-
+
<%}%>