145 lines
4.4 KiB
JavaScript
145 lines
4.4 KiB
JavaScript
backupApp.service('SystemInfo', function($rootScope, $timeout, $cookies, AppService, AppUtils, gettextCatalog) {
|
|
|
|
var state = {};
|
|
this.state = state;
|
|
|
|
|
|
function reloadBackendConfig() {
|
|
if (state.BackendModules == null)
|
|
return;
|
|
|
|
var tmp = angular.copy(state.BackendModules);
|
|
state.GroupedBackendModules = [];
|
|
|
|
var push_with_type = function(m, order, alternate) {
|
|
m = angular.copy(m);
|
|
m.GroupType = state.GroupTypes[order];
|
|
if (alternate != null)
|
|
m.DisplayName = alternate;
|
|
m.OrderKey = order;
|
|
state.GroupedBackendModules.push(m);
|
|
return true;
|
|
};
|
|
|
|
for(var i in state.BackendModules)
|
|
{
|
|
var m = state.BackendModules[i];
|
|
var used = false;
|
|
|
|
if (state.backendgroups.local[m.Key] !== undefined)
|
|
used |= push_with_type(m, 0, state.backendgroups.local[m.Key]);
|
|
|
|
if (state.backendgroups.std[m.Key] !== undefined)
|
|
used |= push_with_type(m, 1, state.backendgroups.std[m.Key]);
|
|
|
|
if (state.backendgroups.prop[m.Key] !== undefined)
|
|
used |= push_with_type(m, 2, state.backendgroups.prop[m.Key]);
|
|
|
|
if (!used)
|
|
push_with_type(m, 3);
|
|
}
|
|
};
|
|
|
|
|
|
function reloadTexts() {
|
|
state.backendgroups = this.backendgroups = {
|
|
std: {
|
|
'ftp': null,
|
|
'ssh': null,
|
|
'webdav': null,
|
|
'openstack': gettextCatalog.getString('OpenStack Object Storage / Swift'),
|
|
's3': gettextCatalog.getString('S3 Compatible'),
|
|
'aftp': gettextCatalog.getString('FTP (Alternative)')
|
|
},
|
|
local: {'file': null},
|
|
prop: {
|
|
'e2':null,
|
|
's3': null,
|
|
'azure': null,
|
|
'googledrive': null,
|
|
'onedrive': null,
|
|
'onedrivev2': null,
|
|
'sharepoint': null,
|
|
'msgroup': null,
|
|
'cloudfiles': null,
|
|
'gcs': null,
|
|
'openstack': null,
|
|
'b2': null,
|
|
'mega': null,
|
|
'idrive': null,
|
|
'box': null,
|
|
'od4b': null,
|
|
'mssp': null,
|
|
'dropbox': null,
|
|
'sia': null,
|
|
'storj': null,
|
|
'tardigrade': null,
|
|
'jottacloud': null,
|
|
'rclone': null,
|
|
'cos': null,
|
|
'aliyunoss': null
|
|
}
|
|
};
|
|
|
|
state.GroupTypes = this.GroupTypes = [
|
|
gettextCatalog.getString('Local storage'),
|
|
gettextCatalog.getString('Standard protocols'),
|
|
gettextCatalog.getString('Proprietary'),
|
|
gettextCatalog.getString('Others')
|
|
];
|
|
|
|
reloadBackendConfig();
|
|
|
|
if (state.GroupedBackendModules != null)
|
|
for(var n in state.GroupedBackendModules)
|
|
state.GroupedBackendModules[n].GroupType = this.GroupTypes[state.GroupedBackendModules[n].OrderKey];
|
|
|
|
$rootScope.$broadcast('systeminfochanged');
|
|
};
|
|
|
|
reloadTexts();
|
|
$rootScope.$on('gettextLanguageChanged', reloadTexts);
|
|
|
|
|
|
this.watch = function(scope, m) {
|
|
scope.$on('systeminfochanged', function() {
|
|
if (m) m();
|
|
|
|
$timeout(function() {
|
|
scope.$digest();
|
|
});
|
|
});
|
|
|
|
if (m) $timeout(m);
|
|
return state;
|
|
};
|
|
|
|
this.notifyChanged = function() {
|
|
$rootScope.$broadcast('systeminfochanged');
|
|
};
|
|
|
|
function loadSystemInfo(reload) {
|
|
AppService.get('/systeminfo').then(function(data) {
|
|
angular.copy(data.data, state);
|
|
|
|
if (reload !== true) {
|
|
uiLanguage = $cookies.get('ui-locale');
|
|
if ((uiLanguage || '').trim().length == 0) {
|
|
gettextCatalog.setCurrentLanguage(state.BrowserLocale.Code.replace("-", "_"));
|
|
} else {
|
|
gettextCatalog.setCurrentLanguage(uiLanguage.replace("-", "_"));
|
|
}
|
|
}
|
|
|
|
reloadTexts();
|
|
reloadBackendConfig();
|
|
$rootScope.$broadcast('systeminfochanged');
|
|
}, AppUtils.connectionError)
|
|
}
|
|
|
|
loadSystemInfo();
|
|
$rootScope.$on('ui_language_changed', function() {
|
|
loadSystemInfo(true);
|
|
});
|
|
});
|