From a7e7b7f6bd1418076f43f067229b5403f3b1d625 Mon Sep 17 00:00:00 2001
From: Amanda Ghassaei <amandaghassaei@gmail.com>
Date: Thu, 29 Jan 2015 16:40:20 -0500
Subject: [PATCH] navbar working

---
 js/menus/MenuWrapperView.js |  8 +++++---
 js/menus/navbar.js          | 17 +++++++++++------
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/js/menus/MenuWrapperView.js b/js/menus/MenuWrapperView.js
index 378ee3ad..7d539359 100644
--- a/js/menus/MenuWrapperView.js
+++ b/js/menus/MenuWrapperView.js
@@ -13,7 +13,7 @@ MenuWrapper = Backbone.View.extend({
 
     initialize: function(options){
 
-        _.bindAll(this, "render", "_updateCurrentTab", "_setVisibility");
+        _.bindAll(this, "render", "_updateCurrentTab", "_setVisibility", "_hide", "_show");
 
         //init all tab view controllers
         this.latticeMenu = new LatticeMenuView({model:options.lattice});
@@ -84,7 +84,7 @@ MenuWrapper = Backbone.View.extend({
         var self = this;
         this._hide(function(){
             self._populateAndShow();
-        });
+        }, true);
     },
 
     _populateAndShow: function(){
@@ -104,12 +104,14 @@ MenuWrapper = Backbone.View.extend({
         }
     },
 
-    _hide: function(callback){
+    _hide: function(callback, suppressModelUpdate){
         this.$el.parent().animate({right: "-400"}, {done: callback});
+        if (!suppressModelUpdate) this.model.set("menuIsVisible", false);
     },
 
     _show: function(){
         this.$el.parent().animate({right: "0"});
+        this.model.set("menuIsVisible", true);
     },
 
     template: _.template('\
diff --git a/js/menus/navbar.js b/js/menus/navbar.js
index c18df0fe..a18cd392 100644
--- a/js/menus/navbar.js
+++ b/js/menus/navbar.js
@@ -20,21 +20,26 @@ NavBar = Backbone.View.extend({
 
         _.bindAll(this, "_setMenuVis");
 
-        this._uiStuff();
+        this.listenTo(this.model, "change:menuIsVisible", this._updateShowHideButton);
 
+        this._uiStuff();
     },
 
     _setMenuVis: function(e){
         e.preventDefault();
-        var $button = $(e.target);
+        var state = this.model.get("menuIsVisible");
+        this.model.set("menuIsVisible", !state);
+        $(e.target).blur();
+    },
+
+    _updateShowHideButton: function(){
+        var $button = $("#showHideMenu");
         var state = this.model.get("menuIsVisible");
         if(state){
-            $button.html("<< Show Menu");
-        } else {
             $button.html("Hide Menu >>");
+        } else {
+            $button.html("<< Show Menu");
         }
-        this.model.set("menuIsVisible", !state);
-        $button.blur();
     },
 
     _setNavSelection: function(e){
-- 
GitLab