Rerender the distribution chart when the window resizes

This commit is contained in:
Michael Lange
2017-09-26 17:18:22 -07:00
parent eeeb544a2d
commit 496b037444
2 changed files with 23 additions and 1 deletions

View File

@@ -1,12 +1,13 @@
import Ember from 'ember';
import d3 from 'npm:d3-selection';
import 'npm:d3-transition';
import WindowResizable from '../mixins/window-resizable';
import styleStringProperty from '../utils/properties/style-string';
const { Component, computed, run, assign, guidFor } = Ember;
const sumAggregate = (total, val) => total + val;
export default Component.extend({
export default Component.extend(WindowResizable, {
classNames: ['chart', 'distribution-bar'],
classNameBindings: ['isNarrow:is-narrow'],
@@ -124,6 +125,7 @@ export default Component.extend({
.attr('y', () => isNarrow ? '50%' : 0)
.attr('clip-path', `url(#${this.get('maskId')})`)
.attr('height', () => isNarrow ? '6px' : '100%')
.attr('transform', () => isNarrow && 'translate(0, -3)')
.merge(layers)
.attr('class', (d, i) => `bar layer-${i}`)
.transition()
@@ -138,4 +140,8 @@ export default Component.extend({
}
},
/* eslint-enable */
windowResizeHandler() {
run.once(this, this.renderChart);
},
});

View File

@@ -0,0 +1,16 @@
import Ember from 'ember';
const { run, $ } = Ember;
export default Ember.Mixin.create({
setupWindowResize: function() {
run.scheduleOnce('afterRender', this, () => {
this.set('_windowResizeHandler', this.get('windowResizeHandler').bind(this));
$(window).on('resize', this.get('_windowResizeHandler'));
});
}.on('didInsertElement'),
removeWindowResize: function() {
$(window).off('resize', this.get('_windowResizeHandler'));
}.on('willDestroyElement'),
});