From 83754a01effeb230890ac080a7e1f6cecfc978ff Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Thu, 15 Jan 2015 11:34:01 +1100 Subject: [PATCH] Make side menu item visibility declarative --- .../enterprise_controller.js.coffee | 22 ------------------ .../side_menu_controller.js.coffee | 23 +++++++++++++++---- .../admin/enterprises/_side_menu.html.haml | 3 ++- 3 files changed, 20 insertions(+), 28 deletions(-) diff --git a/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee b/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee index e17e2e9c21..d218f7caea 100644 --- a/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee +++ b/app/assets/javascripts/admin/enterprises/controllers/enterprise_controller.js.coffee @@ -44,25 +44,3 @@ angular.module("admin.enterprises") count++ if shipping_method.selected count , 0 - - $scope.$watch "Enterprise.is_primary_producer", (newValue, oldValue) -> - if !newValue && $scope.Enterprise.sells == "none" - $scope.menu.hide_item_by_name('Enterprise Fees') - else - $scope.menu.show_item_by_name('Enterprise Fees') - - - $scope.$watch "Enterprise.sells", (newValue, oldValue) -> - if newValue == "none" - $scope.menu.hide_item_by_name('Shipping Methods') - $scope.menu.hide_item_by_name('Payment Methods') - $scope.menu.hide_item_by_name('Shop Preferences') - if $scope.Enterprise.is_primary_producer - $scope.menu.show_item_by_name('Enterprise Fees') - else - $scope.menu.hide_item_by_name('Enterprise Fees') - else - $scope.menu.show_item_by_name('Shipping Methods') - $scope.menu.show_item_by_name('Payment Methods') - $scope.menu.show_item_by_name('Shop Preferences') - $scope.menu.show_item_by_name('Enterprise Fees') diff --git a/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee b/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee index b893373b98..dddaa1a37d 100644 --- a/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee +++ b/app/assets/javascripts/admin/enterprises/controllers/side_menu_controller.js.coffee @@ -1,5 +1,5 @@ angular.module("admin.enterprises") - .controller "sideMenuCtrl", ($scope, Enterprise, SideMenu) -> + .controller "sideMenuCtrl", ($scope, $parse, Enterprise, SideMenu) -> $scope.Enterprise = Enterprise.enterprise $scope.menu = SideMenu $scope.select = SideMenu.select @@ -12,10 +12,23 @@ angular.module("admin.enterprises") { name: 'About', icon_class: "icon-pencil" } { name: 'Business Details', icon_class: "icon-briefcase" } { name: 'Images', icon_class: "icon-picture" } - { name: "Shipping Methods", icon_class: "icon-truck" } - { name: "Payment Methods", icon_class: "icon-money" } - { name: "Enterprise Fees", icon_class: "icon-tasks" } - { name: "Shop Preferences", icon_class: "icon-shopping-cart" } + { name: "Shipping Methods", icon_class: "icon-truck", show: "showExtraPrefs()" } + { name: "Payment Methods", icon_class: "icon-money", show: "showExtraPrefs()" } + { name: "Enterprise Fees", icon_class: "icon-tasks", show: "showEnterpriseFees()" } + { name: "Shop Preferences", icon_class: "icon-shopping-cart", show: "showExtraPrefs()" } ] $scope.select(0) + + + $scope.showItem = (item) -> + if item.show? + $parse(item.show)($scope) + else + true + + $scope.showExtraPrefs = -> + $scope.Enterprise.sells != "none" + + $scope.showEnterpriseFees = -> + $scope.Enterprise.sells != "none" || $scope.Enterprise.is_primary_producer diff --git a/app/views/admin/enterprises/_side_menu.html.haml b/app/views/admin/enterprises/_side_menu.html.haml index 383d5181fb..ff5d086570 100644 --- a/app/views/admin/enterprises/_side_menu.html.haml +++ b/app/views/admin/enterprises/_side_menu.html.haml @@ -2,8 +2,9 @@ %a.menu_item{ href: "", id: "{{ item.name.toLowerCase().replace(' ', '_') }}", ng: { repeat: '(index,item) in menu.items | filter:{visible:true}', click: 'select(index)', + show: 'showItem(item)', class: '{ selected: item.selected}', 'class-odd' => "'odd'", 'class-even' => "'even'" } } %i{ class: "{{item.icon_class}}" } - %span {{ item.name }} \ No newline at end of file + %span {{ item.name }}