all files / components/settings/ settings.controller.js

1.79% Statements 1/56
0% Branches 0/12
0% Functions 0/12
1.79% Lines 1/56
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120                                                                                                                                                                                                                                              
angular.module('webmapp')
 
    .controller('SettingsController', function SettingsController(
        $ionicPopup,
        $rootScope,
        $scope,
        $translate,
        Account,
        Auth,
        CONFIG,
        Offline,
        Utils
    ) {
        var vm = {};
 
        var registeredEvents = [];
 
        var offlineModal,
            offlineScope = $rootScope.$new();
 
        vm.isLoggedIn = Auth.isLoggedIn();
        vm.isBrowser = Utils.isBrowser();
        vm.openInAppBrowser = Utils.openInAppBrowser;
 
        Utils.createModal('core/js/modals/offlineModal.html', { backdropClickToClose: false, hardwareBackButtonClose: false }, offlineScope)
            .then(function (modal) {
                offlineModal = modal;
            });
 
        offlineScope.downloadMap = function () {
            Offline.downloadMap(offlineScope);
            offlineScope.downloadInProgress = true;
        };
 
        offlineScope.reset = function () {
            offlineScope.downloadInProgress = false;
            offlineScope.active = false;
            offlineScope.canBeEnabled = false;
            offlineScope.downloadInProgress = false;
            offlineScope.unzipInProgress = false;
            Offline.reset();
            offlineScope.hasChunkDownloaded = Offline.hasChunkDownloaded();
        };
 
        offlineScope.hide = function () {
            if (offlineScope.downloadInProgress === false &&
                offlineScope.unzipInProgress === false) {
                offlineModal.hide();
            }
        };
 
        offlineScope.toggleMode = function () {
            Offline.toggleMode();
            //MapService.initialize();
            offlineScope.active = Offline.isActive();
        };
 
        offlineScope.active = Offline.isActive();
        offlineScope.canBeEnabled = Offline.canBeEnabled();
        offlineScope.hasChunkDownloaded = Offline.hasChunkDownloaded();
        offlineScope.downloadInProgress = false;
        offlineScope.unzipInProgress = false;
        size = CONFIG.OFFLINE.size ? CONFIG.OFFLINE.size : 250;
 
        if (size > 1000) {
            size = (size / 1024).toFixed(1) + " GB";
        }
        else {
            size = size + " MB";
        }
 
        offlineScope.message = $translate.instant("La mappa offline occupa circa 250 MB di spazio, è consigliabile effettuare il download con una rete Wi-Fi (l'installazione può richiedere alcuni minuti)",
            {
                size: size
            });
 
        vm.openOfflinePage = function () {
            offlineScope.hasChunkDownloaded = Offline.hasChunkDownloaded();
            offlineModal && offlineModal.show();
        };
 
        vm.openLoginOrRegistration = function (isRegistration) {
            $rootScope.showLogin(isRegistration);
        };
 
        vm.logout = function () {
            var confirmPopup = $ionicPopup.confirm({
                title: $translate.instant("LOGOUT"),
                template: $translate.instant("Sei sicuro di voler effettuare il logout?")
            });
 
            confirmPopup.then(function (res) {
                if (res) {
                    Account.logout();
                    Auth.resetUserData();
                    $rootScope.isLoggedIn = vm.isLoggedIn = false;
                }
            });
        };
 
        registeredEvents.push(
            $rootScope.$on('logged-in', function () {
                vm.isLoggedIn = true;
            })
        );
 
        registeredEvents.push(
            $scope.$on('$destroy', function () {
                for (var i in registeredEvents) {
                    registeredEvents[i]();
                }
                delete registeredEvents;
 
                offlineModal.remove();
            })
        );
 
        return vm;
    });