diff --git a/src/js/level/index.js b/src/js/level/index.js index e06cfa8e..8c4a4937 100644 --- a/src/js/level/index.js +++ b/src/js/level/index.js @@ -49,10 +49,9 @@ var Level = Sandbox.extend({ this.initGoalData(options); this.initName(options); - this.on('toggleGoal', this.toggleGoal); this.on('minimizeCanvas', this.minimizeGoal); this.on('resizeCanvas', this.resizeGoal); - this.on('toggleObjective', this.toggleObjective); + this.isGoalExpanded = false; Level.__super__.initialize.apply(this, [options]); this.startOffCommand(); @@ -60,6 +59,10 @@ var Level = Sandbox.extend({ this.handleOpen(options.deferred); }, + getIsGoalExpanded: function() { + return this.isGoalExpanded; + }, + handleOpen: function(deferred) { deferred = deferred || Q.defer(); @@ -132,10 +135,10 @@ var Level = Sandbox.extend({ { name: name, onGoalClick: this.toggleGoal.bind(this), - onObjectiveClick: this.toggleObjective.bind(this) + onObjectiveClick: this.toggleObjective.bind(this), + parent: this } ); - debugger; React.render( this.levelToolbar, document.getElementById('levelToolbarMount') @@ -219,6 +222,8 @@ var Level = Sandbox.extend({ }, minimizeGoal: function (position, size) { + this.isGoalExpanded = false; + this.trigger('goalToggled'); this.goalVis.hide(); this.goalWindowPos = position; this.goalWindowSize = size; @@ -229,6 +234,9 @@ var Level = Sandbox.extend({ }, resizeGoal: function () { + if (!this.goalVis) { + return; + } this.goalVis.myResize(); }, @@ -290,6 +298,8 @@ var Level = Sandbox.extend({ }, showGoal: function(command, defer) { + this.isGoalExpanded = true; + this.trigger('goalToggled'); this.showSideVis(command, defer, this.goalCanvasHolder, this.initGoalVisualization); // show the squeezer again we are to the side if ($(this.goalVis.el).offset().left > 0.5 * $(window).width()) { @@ -311,6 +321,8 @@ var Level = Sandbox.extend({ }, hideGoal: function(command, defer) { + this.isGoalExpanded = false; + this.trigger('goalToggled'); this.hideSideVis(command, defer, this.goalCanvasHolder); }, @@ -487,7 +499,9 @@ var Level = Sandbox.extend({ }, die: function() { - this.levelToolbar.die(); + React.unmountComponentAtNode( + document.getElementById('levelToolbarMount') + ); this.hideGoal(); this.mainVis.die(); diff --git a/src/js/react_views/LevelToolbarView.jsx b/src/js/react_views/LevelToolbarView.jsx index c759c595..1248ae3e 100644 --- a/src/js/react_views/LevelToolbarView.jsx +++ b/src/js/react_views/LevelToolbarView.jsx @@ -9,12 +9,14 @@ var LevelToolbarView = React.createClass({ propTypes: { name: PropTypes.string.isRequired, onGoalClick: PropTypes.func.isRequired, - onObjectiveClick: PropTypes.func.isRequired + onObjectiveClick: PropTypes.func.isRequired, + parent: PropTypes.object.isRequired }, getInitialState: function() { return { - isHidden: true + isHidden: true, + isGoalExpanded: false }; }, @@ -22,6 +24,11 @@ var LevelToolbarView = React.createClass({ this.setState({ isHidden: false }); + this.props.parent.on('goalToggled', function() { + this.setState({ + isGoalExpanded: this.props.parent.getIsGoalExpanded() + }); + }.bind(this)); }, render: function() { @@ -49,7 +56,7 @@ var LevelToolbarView = React.createClass({