2016-08-22 12:59:56 +02:00

143 lines
5.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Controller of menu toggle.
// Learn more about Sidenav directive of angular material
// https://material.angularjs.org/latest/#/demo/material.components.sidenav
appControllers.controller('menuCtrl', function ($scope, $timeout, $mdUtil, $mdSidenav, $log, $ionicHistory, $state, $ionicPlatform, $mdDialog, $mdBottomSheet, $mdMenu, $mdSelect) {
$scope.toggleLeft = buildToggler('left');
// buildToggler is for create menu toggle.
// Parameter :
// navID = id of navigation bar.
function buildToggler(navID) {
var debounceFn = $mdUtil.debounce(function () {
$mdSidenav(navID).toggle();
}, 0);
return debounceFn;
};// End buildToggler.
// navigateTo is for navigate to other page
// by using targetPage to be the destination state.
// Parameter :
// stateNames = target state to go
$scope.navigateTo = function (stateName) {
$timeout(function () {
$mdSidenav('left').close();
if ($ionicHistory.currentStateName() != stateName) {
$ionicHistory.nextViewOptions({
disableAnimate: true,
disableBack: true
});
$state.go(stateName);
}
}, ($scope.isAndroid == false ? 300 : 0));
};// End navigateTo.
//closeSideNav is for close side navigation
//It will use with event on-swipe-left="closeSideNav()" on-drag-left="closeSideNav()"
//When user swipe or drag md-sidenav to left side
$scope.closeSideNav = function(){
$mdSidenav('left').close();
};
//End closeSideNav
// $ionicPlatform.registerBackButtonAction(callback, priority, [actionId])
//
// Register a hardware back button action. Only one action will execute
// when the back button is clicked, so this method decides which of
// the registered back button actions has the highest priority.
//
// For example, if an actionsheet is showing, the back button should
// close the actionsheet, but it should not also go back a page view
// or close a modal which may be open.
//
// The priorities for the existing back button hooks are as follows:
// Return to previous view = 100
// Close side menu = 150
// Dismiss modal = 200
// Close action sheet = 300
// Dismiss popup = 400
// Dismiss loading overlay = 500
//
// Your back button action will override each of the above actions
// whose priority is less than the priority you provide. For example,
// an action assigned a priority of 101 will override the return to
// previous view action, but not any of the other actions.
//
// Learn more at : http://ionicframework.com/docs/api/service/$ionicPlatform/#registerBackButtonAction
$ionicPlatform.registerBackButtonAction(function(){
if($mdSidenav("left").isOpen()){
//If side navigation is open it will close and then return
$mdSidenav('left').close();
}
else if(jQuery('md-bottom-sheet').length > 0 ) {
//If bottom sheet is open it will close and then return
$mdBottomSheet.cancel();
}
else if(jQuery('[id^=dialog]').length > 0 ){
//If popup dialog is open it will close and then return
$mdDialog.cancel();
}
else if(jQuery('md-menu-content').length > 0 ){
//If md-menu is open it will close and then return
$mdMenu.hide();
}
else if(jQuery('md-select-menu').length > 0 ){
//If md-select is open it will close and then return
$mdSelect.hide();
}
else{
// If control :
// side navigation,
// bottom sheet,
// popup dialog,
// md-menu,
// md-select
// is not opening, It will show $mdDialog to ask for
// Confirmation to close the application or go to the view of lasted state.
// Check for the current state that not have previous state.
// It will show $mdDialog to ask for Confirmation to close the application.
if($ionicHistory.backView() == null){
//Check is popup dialog is not open.
if(jQuery('[id^=dialog]').length == 0 ) {
// mdDialog for show $mdDialog to ask for
// Confirmation to close the application.
$mdDialog.show({
controller: 'DialogController',
templateUrl: 'confirm-dialog.html',
targetEvent: null,
locals: {
displayOption: {
title: "Confirmation",
content: "Do you want to close the application?",
ok: "Confirm",
cancel: "Cancel"
}
}
}).then(function () {
//If user tap Confirm at the popup dialog.
//Application will close.
ionic.Platform.exitApp();
}, function () {
// For cancel button actions.
}); //End mdDialog
}
}
else{
//Go to the view of lasted state.
$ionicHistory.goBack();
}
}
},100);
//End of $ionicPlatform.registerBackButtonAction
}); // End of menu toggle controller.