This repository has been archived on 2022-01-02. You can view files and clone it, but cannot push or open issues/pull-requests.
AriaNg/src/scripts/directives/settingDialog.js

70 lines
2.6 KiB
JavaScript

(function () {
'use strict';
angular.module('ariaNg').directive('ngSettingDialog', ['ariaNgLocalizationService', 'aria2SettingService', function (ariaNgLocalizationService, aria2SettingService) {
return {
restrict: 'E',
templateUrl: 'views/setting-dialog.html',
replace: true,
scope: {
setting: '='
},
link: function (scope, element, attrs) {
scope.context = {
isLoading: false,
availableOptions: [],
globalOptions: []
};
scope.setGlobalOption = function (key, value, optionStatus) {
return aria2SettingService.setGlobalOption(key, value, function (response) {
if (response.success && response.data === 'OK') {
optionStatus.setSuccess();
} else {
optionStatus.setFailed(response.data.message);
}
}, true);
};
var loadOptions = function (type) {
var keys = aria2SettingService.getAria2QuickSettingsAvailableOptions(type);
if (!keys) {
ariaNgLocalizationService.showError('Type is illegal!');
return;
}
scope.context.availableOptions = aria2SettingService.getSpecifiedOptions(keys);
};
var loadAria2OptionsValue = function () {
scope.context.isLoading = true;
return aria2SettingService.getGlobalOption(function (response) {
scope.context.isLoading = false;
if (response.success) {
scope.context.globalOptions = response.data;
}
});
};
angular.element('#quickSettingModal').on('hidden.bs.modal', function () {
scope.setting = null;
scope.context.availableOptions = [];
scope.context.globalOptions = [];
});
scope.$watch('setting', function (setting) {
if (setting) {
loadOptions(setting.type);
loadAria2OptionsValue();
angular.element('#quickSettingModal').modal('show');
}
}, true);
}
};
}]);
}());