From cf89df815dbd07ba374e483114eed7feb3e600a8 Mon Sep 17 00:00:00 2001 From: Is Isilon Date: Sat, 30 Jan 2016 07:59:39 +0800 Subject: [PATCH] Improved insertion order of new nodes --- public/javascripts/views/list.js | 22 +++++++++++++++++----- public/templates/task.html | 4 ++-- 2 files changed, 19 insertions(+), 7 deletions(-) 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 {%> - + <%}%>