Skip to content

Commit bd8730f

Browse files
committed
Revert "[bugfix] Recompute row meta index when previous prepend causes shift (Addepar#623)"
This reverts commit 5efba8c.
1 parent 322d9c8 commit bd8730f

File tree

2 files changed

+10
-52
lines changed

2 files changed

+10
-52
lines changed

addon/-private/collapse-tree.js

+10-33
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export class TableRowMeta extends EmberObject {
2727
*/
2828
_cellMetaCache = new Map();
2929
_isCollapsed = false;
30-
_lastKnownIndex = null;
3130

3231
@computed('_rowValue.isCollapsed')
3332
get isCollapsed() {
@@ -96,18 +95,6 @@ export class TableRowMeta extends EmberObject {
9695
return parentMeta ? get(parentMeta, 'depth') + 1 : 0;
9796
}
9897

99-
@computed('_lastKnownIndex', '_prevSiblingMeta.index')
100-
get index() {
101-
let prevSiblingIndex = get(this, '_prevSiblingMeta.index');
102-
let lastKnownIndex = get(this, '_lastKnownIndex');
103-
104-
if (lastKnownIndex === prevSiblingIndex) {
105-
return lastKnownIndex + 1;
106-
}
107-
108-
return lastKnownIndex;
109-
}
110-
11198
@computed('_tree.length')
11299
get first() {
113100
if (get(this, '_tree.length') === 0) {
@@ -125,18 +112,18 @@ export class TableRowMeta extends EmberObject {
125112
@computed('_tree.length')
126113
get next() {
127114
let tree = get(this, '_tree');
128-
if (get(this, '_lastKnownIndex') + 1 >= get(tree, 'length')) {
115+
if (get(this, 'index') + 1 >= get(tree, 'length')) {
129116
return null;
130117
}
131-
return tree.objectAt(get(this, '_lastKnownIndex') + 1);
118+
return tree.objectAt(get(this, 'index') + 1);
132119
}
133120

134121
@computed('_tree.length')
135122
get prev() {
136-
if (get(this, '_lastKnownIndex') === 0) {
123+
if (get(this, 'index') === 0) {
137124
return null;
138125
}
139-
return get(this, '_tree').objectAt(get(this, '_lastKnownIndex') - 1);
126+
return get(this, '_tree').objectAt(get(this, 'index') - 1);
140127
}
141128

142129
toggleCollapse() {
@@ -705,28 +692,18 @@ export default class CollapseTree extends EmberObject.extend(EmberArray) {
705692
@return {{ value: object, parents: Array<object> }}
706693
*/
707694
objectAt(index) {
708-
let length = get(this, 'length');
709-
if (index >= length || index < 0) {
695+
if (index >= get(this, 'length') || index < 0) {
710696
return undefined;
711697
}
712698

713-
let root = get(this, 'root');
714-
let rowMetaCache = this.get('rowMetaCache');
715-
716699
// We add a "fake" top level node to account for the root node
717700
let normalizedIndex = index + 1;
718-
let result = root.objectAt(normalizedIndex);
719-
let meta = rowMetaCache.get(result);
701+
let result = get(this, 'root').objectAt(normalizedIndex);
702+
let meta = this.get('rowMetaCache').get(result);
720703

721-
// Set the last known index on the meta and link the next siblings meta
722-
// so that its index can recompute in case it conflicts from shifting
723-
set(meta, '_lastKnownIndex', index);
724-
725-
if (index < length - 1) {
726-
let nextSibling = root.objectAt(normalizedIndex + 1);
727-
let nextMeta = rowMetaCache.get(nextSibling);
728-
set(nextMeta, '_prevSiblingMeta', meta);
729-
}
704+
// Set the perceived index on the meta. It should be safe to do this here, since
705+
// the row will always be retrieved via `objectAt` before being used.
706+
set(meta, 'index', index);
730707

731708
return result;
732709
}

tests/unit/-private/collapse-tree-test.js

-19
Original file line numberDiff line numberDiff line change
@@ -173,25 +173,6 @@ module('Unit | Private | CollapseTree', function(hooks) {
173173
}
174174
});
175175

176-
test('rowMeta index is recomputed when row is added or removed', function(assert) {
177-
let rows = generateTree([1, [2, 3, [4, 5], 6], 7]);
178-
tree = CollapseTree.create({ rows, rowMetaCache, enableTree: true });
179-
180-
let nodes = tree.toArray();
181-
nodes.forEach((node, i) => assert.equal(metaFor(node).get('index'), i));
182-
183-
rows.unshiftObject({ value: 0 });
184-
185-
let firstNode = run(() => tree.objectAt(0));
186-
nodes = [firstNode].concat(nodes);
187-
nodes.forEach((node, i) => assert.equal(metaFor(node).get('index'), i));
188-
189-
rows.pushObject({ value: 8 });
190-
191-
let lastNode = run(() => tree.objectAt(8));
192-
nodes.concat(lastNode).forEach((node, i) => assert.equal(metaFor(node).get('index'), i));
193-
});
194-
195176
test('can disable tree', function(assert) {
196177
tree = CollapseTree.create({
197178
rows: generateTree([0, [1, 2]]),

0 commit comments

Comments
 (0)