2017-02-07 21:51:14 +01:00
backupApp . controller ( 'AppController' , function ( $scope , $cookies , $location , AppService , BrandingService , ServerStatus , SystemInfo , AppUtils , DialogService , gettextCatalog ) {
2016-03-11 22:55:32 +01:00
$scope . brandingService = BrandingService . watch ( $scope );
2015-08-21 22:04:39 +02:00
$scope . state = ServerStatus . watch ( $scope );
2015-12-22 02:15:49 +01:00
$scope . systemInfo = SystemInfo . watch ( $scope );
2017-02-07 21:51:14 +01:00
2015-08-21 22:04:39 +02:00
$scope . localized = {};
2017-02-07 21:51:14 +01:00
$scope . location = $location ;
2017-05-31 22:46:48 +02:00
$scope . saved_theme = $scope . active_theme = $cookies . get ( 'current-theme' ) || 'default' ;
2017-06-02 11:25:17 +02:00
$scope . throttle_active = false ;
2017-05-31 22:46:48 +02:00
// If we want the theme settings
// to be persisted on the server,
// set to "true" here
var save_theme_on_server = false ;
2015-11-30 21:43:09 +01:00
$scope . doReconnect = function () {
2016-09-15 11:39:27 +02:00
ServerStatus . reconnect ();
2015-11-30 21:43:09 +01:00
};
2016-10-15 14:59:04 +02:00
2016-11-01 11:39:28 +01:00
$scope . resume = function () {
2016-10-15 14:59:04 +02:00
ServerStatus . resume (). then ( function () {}, AppUtils . connectionError );
};
2016-11-01 11:39:28 +01:00
$scope . pause = function ( duration ) {
ServerStatus . pause ( duration ). then ( function () {}, AppUtils . connectionError );
};
2016-11-08 14:36:09 +01:00
$scope . isLoggedIn = $cookies . get ( 'session-auth' ) != null && $cookies . get ( 'session-auth' ) != '' ;
$scope . log_out = function () {
AppService . log_out (). then ( function () {
$cookies . remove ( 'session-auth' , { path : '/' });
location . reload ( true );
}, AppUtils . connectionError );
};
2017-02-07 21:51:14 +01:00
$scope . pauseOptions = function () {
if ( $scope . state . programState != 'Running' ) {
$scope . resume ();
} else {
DialogService . htmlDialog (
gettextCatalog . getString ( 'Pause options' ),
'templates/pause.html' ,
[ gettextCatalog . getString ( 'OK' ), gettextCatalog . getString ( 'Cancel' )],
function ( index , text , cur ) {
if ( index == 0 && cur != null && cur . time != null ) {
var time = cur . time ;
$scope . pause ( time == 'infinite' ? '' : time );
}
}
);
}
};
$scope . throttleOptions = function () {
2017-06-02 11:25:17 +02:00
DialogService . htmlDialog (
gettextCatalog . getString ( 'Throttle settings' ),
'templates/throttle.html' ,
[ gettextCatalog . getString ( 'OK' ), gettextCatalog . getString ( 'Cancel' )],
function ( index , text , cur ) {
if ( index == 0 && cur != null && cur . uploadspeed != null && cur . downloadspeed != null ) {
var patchdata = {
'max-download-speed' : cur . downloadthrottleenabled ? cur . downloadspeed : '' ,
'max-upload-speed' : cur . uploadthrottleenabled ? cur . uploadspeed : '' ,
};
AppService . patch ( '/serversettings' , patchdata , { headers : { 'Content-Type' : 'application/json; charset=utf-8' }}). then ( function ( data ) {
$scope . throttle_active = cur . downloadthrottleenabled || cur . uploadthrottleenabled ;
}, AppUtils . connectionError );
}
}
);
2017-02-07 21:51:14 +01:00
};
function updateCurrentPage () {
2017-05-31 22:46:48 +02:00
$scope . active_theme = $scope . saved_theme ;
2017-02-27 00:06:59 +01:00
if ( $location . $$path == '/' || $location . $$path == '' )
2017-02-07 21:51:14 +01:00
$scope . current_page = 'home' ;
else if ( $location . $$path == '/addstart' || $location . $$path == '/add' || $location . $$path == '/import' )
$scope . current_page = 'add' ;
else if ( $location . $$path == '/restorestart' || $location . $$path == '/restore' || $location . $$path == '/restoredirect' || $location . $$path . indexOf ( '/restore/' ) == 0 )
$scope . current_page = 'restore' ;
else if ( $location . $$path == '/settings' )
$scope . current_page = 'settings' ;
else if ( $location . $$path == '/log' )
$scope . current_page = 'log' ;
else if ( $location . $$path == '/about' )
$scope . current_page = 'about' ;
else
$scope . current_page = '' ;
};
$scope . $on ( 'serverstatechanged' , function () {
// Unwanted jQuery interference, but the menu is built with this
if ( ServerStatus . state . programState == 'Paused' ) {
$ ( '#contextmenu_pause' ). removeClass ( 'open' );
$ ( '#contextmenulink_pause' ). removeClass ( 'open' );
}
});
//$scope.$on('$routeUpdate', updateCurrentPage);
$scope . $watch ( 'location.$$path' , updateCurrentPage );
updateCurrentPage ();
2017-05-31 22:46:48 +02:00
function loadCurrentTheme () {
if ( save_theme_on_server ) {
AppService . get ( '/uisettings/ngax' ). then (
function ( data ) {
var theme = 'default' ;
if ( data . data != null && ( data . data [ 'theme' ] || '' ). trim (). length > 0 )
theme = data . data [ 'theme' ];
var now = new Date ();
var exp = new Date ( now . getFullYear () + 10 , now . getMonth (), now . getDate ());
$cookies . put ( 'current-theme' , theme , { expires : exp });
$scope . saved_theme = $scope . active_theme = theme ;
}, function () {}
);
}
};
// In case the cookie is out-of-sync
loadCurrentTheme ();
$scope . $on ( 'update_theme' , function ( event , args ) {
var theme = 'default' ;
if ( args != null && ( args . theme || '' ). trim (). length != 0 )
theme = args . theme ;
if ( save_theme_on_server ) {
// Set it here to avoid flickering when the page changes
$scope . saved_theme = $scope . active_theme = theme ;
AppService . patch ( '/uisettings/ngax' , { 'theme' : theme }, { 'headers' : { 'Content-Type' : 'application/json' }}). then (
function ( data ) {
var now = new Date ();
var exp = new Date ( now . getFullYear () + 10 , now . getMonth (), now . getDate ());
$cookies . put ( 'current-theme' , theme , { expires : exp });
$scope . saved_theme = $scope . active_theme = theme ;
}, function () {}
);
} else {
var now = new Date ();
var exp = new Date ( now . getFullYear () + 10 , now . getMonth (), now . getDate ());
$cookies . put ( 'current-theme' , theme , { expires : exp });
$scope . saved_theme = $scope . active_theme = theme ;
}
loadCurrentTheme ();
});
$scope . $on ( 'preview_theme' , function ( event , args ) {
if ( args == null || ( args . theme + '' ). trim (). length == 0 )
$scope . active_theme = $scope . saved_theme ;
else
$scope . active_theme = args . theme || '' ;
});
2017-06-02 11:25:17 +02:00
AppService . get ( '/serversettings' ). then ( function ( data ) {
2018-11-12 10:13:27 -02:00
$scope . forceActualDate = AppUtils . parseBoolString ( data . data [ '--force-actual-date' ]);
2017-06-02 11:25:17 +02:00
var ut = data . data [ 'max-upload-speed' ];
var dt = data . data [ 'max-download-speed' ];
$scope . throttle_active = ( ut != null && ut . trim (). length != 0 ) || ( dt != null && dt . trim (). length != 0 );
2017-08-24 13:55:29 +02:00
var firstpw = data . data [ 'has-asked-for-password-protection' ];
var haspw = data . data [ 'server-passphrase' ];
if ( ! firstpw && haspw == '' ) {
DialogService . dialog (
gettextCatalog . getString ( 'First run setup' ),
gettextCatalog . getString ( 'If your machine is in a multi-user environment (i.e. the machine has more than one account), you need to set a password to prevent other users from accessing data on your account.\nDo you want to set a password now?' ),
[ gettextCatalog . getString ( 'No, my machine has only a single account' ), gettextCatalog . getString ( 'Yes' )],
function ( btn ) {
AppService . patch ( '/serversettings' , { 'has-asked-for-password-protection' : 'true' }, { 'headers' : { 'Content-Type' : 'application/json' }});
if ( btn == 1 ) {
$location . path ( '/settings' );
}
}
);
}
2017-06-02 11:25:17 +02:00
}, AppUtils . connectionError );
2016-09-15 11:39:27 +02:00
});