]> git.za3k.com Git - flowy.git/commitdiff
getSiblingOffset from vimflowy
authorZachary Vance <vanceza@gmail.com>
Wed, 3 Jun 2015 23:34:24 +0000 (16:34 -0700)
committerZachary Vance <vanceza@gmail.com>
Wed, 3 Jun 2015 23:34:24 +0000 (16:34 -0700)
dist/flowy.js
dist/flowy.unwrapped.js
src/models/todo.js

index 52463c0a3afc7c351b307eab49442d1e25e52749..32af476635a5698a9d678e763708b8e1f7185734 100644 (file)
@@ -744,20 +744,21 @@ var TodoModel = Backbone.Model.extend({
         if (parent && parent.isRoot() && !options.rootAllowed) return undefined;
         return parent;
     },
-    getPreviousSibling: function() {
+    getSiblingOffset: function(offset) {
         var parent = this.getParent();
         if (!parent) return undefined;
         var index = parent.findChild(this.id);
-        if (index < 0 || index === 0) return undefined;
-        return parent.getChild(index - 1);
+        if (index < 0) return undefined;
+        var numChildren = parent.getChildrenCount();
+        var siblingIndex = index + offset;
+        if (siblingIndex < 0 || siblingIndex >= numChildren) return undefined;
+        return parent.getChild(siblingIndex);
+    },
+    getPreviousSibling: function() {
+        return this.getSiblingOffset(-1);
     },
     getNextSibling: function() {
-        var parent = this.getParent();
-        if (!parent) return undefined;
-        var index = parent.findChild(this.id);
-        var numChildren = parent.getChildrenCount();
-        if (index < 0 || index === numChildren - 1) return undefined;
-        return parent.getChild(index + 1);
+        return this.getSiblingOffset(1);
     },
     nextNode: function(options) {
         options = _.defaults({}, options, {childrenAllowed: true});
index e6babb8be037631332b1eb786103bdd25fb33466..7e9d91332c55fcc28c65ab1dae6bc319b67e3f04 100644 (file)
@@ -743,20 +743,21 @@ var TodoModel = Backbone.Model.extend({
         if (parent && parent.isRoot() && !options.rootAllowed) return undefined;
         return parent;
     },
-    getPreviousSibling: function() {
+    getSiblingOffset: function(offset) {
         var parent = this.getParent();
         if (!parent) return undefined;
         var index = parent.findChild(this.id);
-        if (index < 0 || index === 0) return undefined;
-        return parent.getChild(index - 1);
+        if (index < 0) return undefined;
+        var numChildren = parent.getChildrenCount();
+        var siblingIndex = index + offset;
+        if (siblingIndex < 0 || siblingIndex >= numChildren) return undefined;
+        return parent.getChild(siblingIndex);
+    },
+    getPreviousSibling: function() {
+        return this.getSiblingOffset(-1);
     },
     getNextSibling: function() {
-        var parent = this.getParent();
-        if (!parent) return undefined;
-        var index = parent.findChild(this.id);
-        var numChildren = parent.getChildrenCount();
-        if (index < 0 || index === numChildren - 1) return undefined;
-        return parent.getChild(index + 1);
+        return this.getSiblingOffset(1);
     },
     nextNode: function(options) {
         options = _.defaults({}, options, {childrenAllowed: true});
index ab6a810bc574326029b3253060adedb1fb8b05cf..11f9206cbf5ca465bf13f2f88bf5317f5db560ca 100644 (file)
@@ -40,20 +40,21 @@ var TodoModel = Backbone.Model.extend({
         if (parent && parent.isRoot() && !options.rootAllowed) return undefined;
         return parent;
     },
-    getPreviousSibling: function() {
+    getSiblingOffset: function(offset) {
         var parent = this.getParent();
         if (!parent) return undefined;
         var index = parent.findChild(this.id);
-        if (index < 0 || index === 0) return undefined;
-        return parent.getChild(index - 1);
+        if (index < 0) return undefined;
+        var numChildren = parent.getChildrenCount();
+        var siblingIndex = index + offset;
+        if (siblingIndex < 0 || siblingIndex >= numChildren) return undefined;
+        return parent.getChild(siblingIndex);
+    },
+    getPreviousSibling: function() {
+        return this.getSiblingOffset(-1);
     },
     getNextSibling: function() {
-        var parent = this.getParent();
-        if (!parent) return undefined;
-        var index = parent.findChild(this.id);
-        var numChildren = parent.getChildrenCount();
-        if (index < 0 || index === numChildren - 1) return undefined;
-        return parent.getChild(index + 1);
+        return this.getSiblingOffset(1);
     },
     nextNode: function(options) {
         options = _.defaults({}, options, {childrenAllowed: true});