From c371a3630a39747f9ec19defe2b4c79c9690b5c6 Mon Sep 17 00:00:00 2001 From: Hassan McKusick Date: Tue, 10 May 2016 14:12:48 -0400 Subject: [PATCH 1/5] only call didRenderCollection if table is defined --- addon/components/table-columns.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addon/components/table-columns.js b/addon/components/table-columns.js index 00c8de9..67ad46f 100644 --- a/addon/components/table-columns.js +++ b/addon/components/table-columns.js @@ -198,7 +198,9 @@ export default Ember.Component.extend({ didRender() { this._super(...arguments); run.next(() => { - this.get('table').didRenderCollection(); + if (this.get('table')) { + this.get('table').didRenderCollection(); + } }); this._setTableWidthAndPosition(); }, From 99ee28eef2cd6f5baaf6a072cf5788bf9d5a5fdb Mon Sep 17 00:00:00 2001 From: Hassan McKusick Date: Tue, 10 May 2016 15:02:45 -0400 Subject: [PATCH 2/5] Fix more undefined/destroyed issues --- addon/components/justa-table.js | 6 +++++- addon/components/table-rows.js | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/addon/components/justa-table.js b/addon/components/justa-table.js index fc40cfb..10a16c6 100644 --- a/addon/components/justa-table.js +++ b/addon/components/justa-table.js @@ -156,7 +156,11 @@ export default Component.extend(InViewportMixin, { // windows does not respect the height set, so it needs a 2px buffer if horizontal scrollbar this.$('.table-columns').height(shouldAddHeightBuffer ? totalHeight + 2 : totalHeight); - run.next(() => this.set('containerSize', totalHeight)); + run.next(() => { + if (!this.get('isDestroyed') || !this.get('isDestroying')) { + this.set('containerSize', totalHeight) + } + }); }, _hasHorizontalScroll() { diff --git a/addon/components/table-rows.js b/addon/components/table-rows.js index f906c0d..a4cc6cb 100644 --- a/addon/components/table-rows.js +++ b/addon/components/table-rows.js @@ -47,7 +47,9 @@ export default Component.extend({ }, _updateChildren() { - let children = this.get('_children').sortBy('index'); + let children = this.get('_children'); + if (!children) { return; } + children = children.sortBy('index'); if (!get(children, 'length')) { return; } From 7c838114543a0951fb928336bc1b0e155960fe60 Mon Sep 17 00:00:00 2001 From: Hassan McKusick Date: Wed, 11 May 2016 10:00:10 -0400 Subject: [PATCH 3/5] Missed a semicolon --- addon/components/justa-table.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addon/components/justa-table.js b/addon/components/justa-table.js index 10a16c6..810b3b6 100644 --- a/addon/components/justa-table.js +++ b/addon/components/justa-table.js @@ -158,7 +158,7 @@ export default Component.extend(InViewportMixin, { run.next(() => { if (!this.get('isDestroyed') || !this.get('isDestroying')) { - this.set('containerSize', totalHeight) + this.set('containerSize', totalHeight); } }); }, From a3c63b8579eb82e4f80f33835092eb0889e4cb29 Mon Sep 17 00:00:00 2001 From: Hassan McKusick Date: Wed, 11 May 2016 10:50:58 -0400 Subject: [PATCH 4/5] fix JSHint --- addon/components/table-rows.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addon/components/table-rows.js b/addon/components/table-rows.js index a4cc6cb..8f2238a 100644 --- a/addon/components/table-rows.js +++ b/addon/components/table-rows.js @@ -48,7 +48,9 @@ export default Component.extend({ _updateChildren() { let children = this.get('_children'); - if (!children) { return; } + if (!children) { + return; + } children = children.sortBy('index'); if (!get(children, 'length')) { return; From f9f1e3b40b674fa021a611dfd3fe9b2cb8bf5c95 Mon Sep 17 00:00:00 2001 From: Hassan McKusick Date: Wed, 11 May 2016 12:17:20 -0400 Subject: [PATCH 5/5] rerender on next ember run loop to avoid multiple rerenders being called in one loop --- addon/components/justa-table.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addon/components/justa-table.js b/addon/components/justa-table.js index 810b3b6..9ad3477 100644 --- a/addon/components/justa-table.js +++ b/addon/components/justa-table.js @@ -381,7 +381,9 @@ export default Component.extend(InViewportMixin, { */ _setupResizeListener() { this._resizeHandler = () => { - this.rerender(); + Ember.run.next(() => { + this.rerender(); + }, this); }; window.addEventListener('resize', this._resizeHandler, true);