From 6d2f42f5348125935afd0cfd3248e9c6fbb31736 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Sat, 1 Jul 2017 19:45:57 +0200 Subject: [PATCH] Fix issue with navigator sorter --- src/navigator/view/ItemsView.js | 1 + src/utils/Sorter.js | 35 +++++++++++++++++++-------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/navigator/view/ItemsView.js b/src/navigator/view/ItemsView.js index 48b4eac3f..7aba9c0ec 100644 --- a/src/navigator/view/ItemsView.js +++ b/src/navigator/view/ItemsView.js @@ -22,6 +22,7 @@ module.exports = Backbone.View.extend({ containerSel: '.' + pfx + 'items', itemSel: '.' + pfx + 'item', ppfx: this.ppfx, + ignoreViewChildren: 1, pfx, nested: 1 }); diff --git a/src/utils/Sorter.js b/src/utils/Sorter.js index e56d23bcd..2baa667ef 100644 --- a/src/utils/Sorter.js +++ b/src/utils/Sorter.js @@ -26,6 +26,7 @@ module.exports = Backbone.View.extend({ this.direction = o.direction || 'v'; // v (vertical), h (horizontal), a (auto) this.onMoveClb = o.onMove || ''; this.relative = o.relative || 0; + this.ignoreViewChildren = o.ignoreViewChildren || 0; this.plh = o.placer || ''; // Frame offset this.wmargin = o.wmargin || 0; @@ -240,7 +241,7 @@ module.exports = Backbone.View.extend({ if (src) { var srcModel = this.getSourceModel(); - srcModel.set('status', 'freezed'); + srcModel && srcModel.set('status', 'freezed'); this.$document.on('mouseup', this.endMove); } @@ -459,7 +460,6 @@ module.exports = Backbone.View.extend({ result.result = false; } - console.log(result); return result; }, @@ -505,6 +505,7 @@ module.exports = Backbone.View.extend({ this.prevTargetDim = this.getDim(target); this.cacheDimsP = this.getChildrenDim(this.targetP); this.cacheDims = this.getChildrenDim(target); + //console.log('dims', this.cacheDims, target); } // If the target is the previous one will return the cached dims @@ -556,23 +557,26 @@ module.exports = Backbone.View.extend({ * @param {HTMLELement} el Element root * @retun {Array} * */ - getChildrenDim(elem) { + getChildrenDim(trg) { var dims = []; - if(!elem) + if(!trg) return dims; // Get children based on getChildrenContainer - var $elem = $(elem); - var elemData = $elem.data('model'); - if (elemData && elemData.view) { - elem = elemData.view.getChildrenContainer(); + var trgModel = this.getTargetModel(trg); + if (trgModel && trgModel.view && !this.ignoreViewChildren) { + trg = trgModel.view.getChildrenContainer(); } - var ch = elem.children; //TODO filter match + var ch = trg.children; + for (var i = 0, len = ch.length; i < len; i++) { var el = ch[i]; - if(!this.matches(el, this.itemSel)) + + if (!el.matches(this.itemSel)) { continue; + } + var dim = this.getDim(el); var dir = this.direction; @@ -581,12 +585,13 @@ module.exports = Backbone.View.extend({ else if(dir == 'h') dir = false; else - dir = this.isInFlow(el, elem); + dir = this.isInFlow(el, trg); dim.push(dir); dim.push(el); dims.push(dim); } + return dims; }, @@ -733,8 +738,10 @@ module.exports = Backbone.View.extend({ if (src) { var srcModel = this.getSourceModel(); - srcModel.set('status', ''); - srcModel.set('status', 'selected'); + if (srcModel) { + srcModel.set('status', ''); + srcModel.set('status', 'selected'); + } } if(this.moved) @@ -777,8 +784,6 @@ module.exports = Backbone.View.extend({ var dragInfo = validTarget.dragInfo; var dropContent = this.dropContent; - console.log('MOVE ', validTarget); - if (targetCollection && droppable && draggable) { index = pos.method === 'after' ? index + 1 : index; var opts = {at: index, noIncrement: 1};