Personal portfolio website for Regina Carvalho. Built with Famous.js library.

navigation.js 4.3KB

    /** * @ngdoc function * @name domainManagerApp.controller:AboutCtrl * @description * # AboutCtrl * Controller of the domainManagerApp */ angular.module('goApp.navigation', ['famous.angular', 'ngRoute', 'ngFx', 'ngAnimate', 'goApp.data']) .controller('NavigationController',['$scope', '$rootScope', '$famous', '$timeline', '$http', '$location', '$route', '$timeout', 'Data', '$mixpanel', function ($scope, $rootScope, $famous, $timeline, $http, $location, $route, $timeout, Data, $mixpanel) { 'use strict'; $mixpanel.track('Index View'); var bg_loaded = false; var menu_opened = false; $scope.lang = 0; $rootScope.$on('background:loaded', function() { if(Data.isLangSet()){ openMenu(); } bg_loaded = true; }); $rootScope.$on('data:lang_set', function() { if(bg_loaded){ openMenu(); } $scope.lang = Data.getLang(); }); var openMenu = function() { if(!$scope.$$phase) { $scope.$apply(function(){ $scope.navigation = Data.getNavigation(); if(menu_opened == false){ menu_opened = true; $scope.menu1pos = getMenuPos($scope.navigation.length); } }); } else { $scope.navigation = Data.getNavigation(); if(menu_opened == false){ menu_opened = true; $scope.menu1pos = getMenuPos($scope.navigation.length); } } } $scope.subNavigation = []; $scope.sub2Navigation = []; $scope.last_click = ""; $scope.last_click2 = ""; $scope.btnNavclick = function(index){ if($scope.navigation[index].link == 'submenu') { if($scope.last_click != $scope.navigation[index].title){ $scope.menu2pos = getMenuPos($scope.navigation[index].submenu.length); console.log("Opening submenu: " + $scope.navigation[index].title); $scope.sub2Navigation = []; $scope.subNavigation = $scope.navigation[index].submenu; } else if ($scope.last_click === $scope.navigation[index].title && $scope.subNavigation.length === 0) { $scope.menu2pos = getMenuPos($scope.navigation[index].submenu.length); $scope.subNavigation = $scope.navigation[index].submenu; console.log("Opening submenu: " + $scope.navigation[index].title); } else { $scope.subNavigation = []; $scope.sub2Navigation = []; console.log("Closing submenu: " + $scope.navigation[index].title); } $scope.last_click = $scope.navigation[index].title; } else { console.log("> Redirecting to page " + $scope.navigation[index].link); $location.path($scope.navigation[index].link); } }; $scope.btnSubNavclick = function(index){ if($scope.subNavigation[index].link == "submenu") { if($scope.last_click2 != $scope.subNavigation[index].title){ $scope.menu3pos = getMenuPos($scope.subNavigation[index].submenu.length); $scope.sub2Navigation = []; $scope.sub2Navigation = $scope.subNavigation[index].submenu; } else if ($scope.last_click2 === $scope.subNavigation[index].title && $scope.sub2Navigation.length === 0){ $scope.menu3pos = getMenuPos($scope.subNavigation[index].submenu.length); $scope.sub2Navigation = $scope.subNavigation[index].submenu; console.log("Opening submenu: " + $scope.subNavigation[index].title); } else { $scope.sub2Navigation = []; console.log("Closing submenu: " + $scope.subNavigation[index].title); } $scope.last_click2 = $scope.subNavigation[index].title; } else { console.log("> Redirecting to page " + $scope.subNavigation[index].link); $location.path($scope.subNavigation[index].link); } }; $scope.btnSub2Navclick = function(index) { if($scope.sub2Navigation[index].link != "submenu") { console.log("> Redirecting to page " + $scope.sub2Navigation[index].link); $location.path($scope.sub2Navigation[index].link); } else { console.log("* Error: Only 2 levels of submenu allowed."); } }; var getMenuPos = function(len) { var menu_size = len * 20; var max = window.innerHeight - menu_size - 25; var pos = Math.floor(Math.random()*(max-15+1)+15) return {'margin-top': pos }; } }]);