app.controller('AppRootController',['$scope','$window','$timeout','$location','$firebaseAuth','$interval',function($scope,$window,$timeout,$location,$firebaseAuth,$interval){ var window = angular.element($window); $scope.load = function(){ $timeout(function(){ var preloader = angular.element(document.querySelector('.preload-screen')); preloader.css('opacity','0'); },1700) $timeout(function(){ var preloader = angular.element(document.querySelector('.preload-screen')); preloader.css('display','none'); },2700) } $scope.isOpenMenu = false; $scope.toggleMenu = function(){ if($scope.isOpenMenu){ $scope.isOpenMenu = false; }else { $scope.isOpenMenu = true; } } $scope.selectedNumber = 0; $scope.meals = {}; if(firebase.auth().currentUser){ $scope.ref = firebase.database().ref().child('users').child(firebase.auth().currentUser.uid).child('meals'); } else{ $scope.ref = firebase.database().ref().child('meals'); } $interval(function(){ if(firebase.auth().currentUser){ $scope.ref = firebase.database().ref().child('users').child(firebase.auth().currentUser.uid).child('meals'); $scope.isUserSigned = true; } else{ $scope.ref = firebase.database().ref().child('meals'); $scope.isUserSigned = false; } $scope.ref.on('value', snap => { $timeout(function(){ var selectedNumber = 0; angular.forEach(snap.val(),function(el){ if(el.isSelected === true){ selectedNumber++; } }) $scope.selectedNumber = selectedNumber; }) $scope.meals = snap.val(); }) },1000) // var ref = firebase.database().ref().child('meals'); $scope.selectedNumber = 0; $scope.ref.on('value', snap => { $timeout(function(){ var selectedNumber = 0; angular.forEach(snap.val(),function(el){ if(el.isSelected === true){ selectedNumber++; } }) $scope.selectedNumber = selectedNumber; }) $scope.meals = snap.val(); }) $scope.openSelectedMeals = function(){ if(firebase.auth().currentUser){ var selectedMeals = angular.element(document.querySelector('.selected-meals')); var appRoot = angular.element(document.querySelector('.app-root')); var overlay2 = angular.element(document.querySelector('.overlay2')); // selectedMeals.css({'transform': 'translateX(0)'}) appRoot.css({'transform': 'translateX(-281px)'}); overlay2.css({'pointer-events': 'auto','opacity':'1'}); overlay2.on('click',function(){ overlay2.css({'pointer-events': 'none','opacity':'0'}); appRoot.css({'transform': 'translateX(0px)'}); }) } else{ var loginPopupJQ = angular.element(document.querySelector('.login-popup')); loginPopupJQ.css('display','flex'); $timeout(function(){ loginPopupJQ.css('opacity','1'); },50) } } $scope.isShowMealsBtn = function(){ if($location.path() == '/select-menu'){ return true; } else{ return false; } } if(firebase.auth().currentUser){ $scope.isUserSigned = true; } else{ $scope.isUserSigned = false; } $scope.signOut = function(){ firebase.auth().signOut().then(function(success){ console.log('Sign out seccessfully: ',success); if($location.path().indexOf('shopping-cart') > -1){ $window.location.assign('/'); } }).catch(function(error){ console.log('Sign out error: ',error); }) } // login-popup $scope.isLoginActive = true; $scope.newUserObj = {}; $scope.createNewUser = function(){ firebase.auth().createUserWithEmailAndPassword($scope.newUserObj.email, $scope.newUserObj.password).then(function(success){ firebase.database().ref().child('users').child(success.uid).child('meals').set($scope.meals); var loginPopupJQ = angular.element(document.querySelector('.login-popup')); loginPopupJQ.css('opacity','0'); $timeout(function(){ loginPopupJQ.css('display','none'); },1000) }).catch(function(error){ // $scope.emailErrorMessage = error.code.replace(/auth\//g,''); $scope.passwordErrorMessage = error.message; }); } $scope.signInUserObj = {}; $scope.signInUser = function(){ firebase.auth().signInWithEmailAndPassword($scope.signInUserObj.email,$scope.signInUserObj.password).then(function(success){ console.log('Signed in successfully: ',success); var loginPopupJQ = angular.element(document.querySelector('.login-popup')); loginPopupJQ.css('opacity','0'); $timeout(function(){ loginPopupJQ.css('display','none'); },1000) // refresh user meals object var mealsObject = $scope.meals; var mealsObjectKeys = Object.keys(mealsObject); $timeout(function(){ var userObjectKeys = Object.keys($scope.meals); var newUserMealsObject = Object.assign(mealsObject); for (var i = 0; i < mealsObjectKeys.length; i++) { if(userObjectKeys.indexOf(mealsObjectKeys[i]) > -1){ if($scope.meals[mealsObjectKeys[i]].isSelected){ newUserMealsObject[mealsObjectKeys[i]].isSelected = true; } } } firebase.database().ref().child('users').child(firebase.auth().currentUser.uid).child('meals').set(newUserMealsObject); },1100) // refresh user meals object }).catch(function(error){ console.log('Sign in error: ',error.message); }) } $scope.onPasswordInput = function(){ if($scope.newUserObj.password){ $scope.isShortPassword = $scope.newUserObj.password.length < 6 ? true : false; } } $scope.cancelPopup = function(){ var loginPopupJQ = angular.element(document.querySelector('.login-popup')); loginPopupJQ.css('opacity','0'); $timeout(function(){ loginPopupJQ.css('display','none'); },1000) } $scope.openPopup = function(){ var loginPopupJQ = angular.element(document.querySelector('.login-popup')); loginPopupJQ.css('display','flex'); $timeout(function(){ loginPopupJQ.css('opacity','1'); },50) } console.log('current user: ',firebase.auth().currentUser ? firebase.auth().currentUser.uid : null) $scope.goToShoppingCart = function(){ if(firebase.auth().currentUser){ $window.location.assign('#!/shopping-cart'); } else{ var loginPopupJQ = angular.element(document.querySelector('.login-popup')); loginPopupJQ.css('display','flex'); $timeout(function(){ loginPopupJQ.css('opacity','1'); },50) } } }])