settingDialog.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. (function () {
  2. 'use strict';
  3. angular.module('ariaNg').directive('ngSettingDialog', ['ariaNgCommonService', 'aria2SettingService', function (ariaNgCommonService, aria2SettingService) {
  4. return {
  5. restrict: 'E',
  6. templateUrl: 'views/setting-dialog.html',
  7. replace: true,
  8. scope: {
  9. setting: '='
  10. },
  11. link: function (scope, element, attrs) {
  12. scope.context = {
  13. isLoading: false,
  14. availableOptions: [],
  15. globalOptions: []
  16. };
  17. scope.setGlobalOption = function (key, value, optionStatus) {
  18. return aria2SettingService.setGlobalOption(key, value, function (response) {
  19. if (response.success && response.data === 'OK') {
  20. optionStatus.setSuccess();
  21. } else {
  22. optionStatus.setFailed(response.data.message);
  23. }
  24. }, true);
  25. };
  26. var loadOptions = function (type) {
  27. var keys = aria2SettingService.getAria2QuickSettingsAvailableOptions(type);
  28. if (!keys) {
  29. ariaNgCommonService.showError('Type is illegal!');
  30. return;
  31. }
  32. scope.context.availableOptions = aria2SettingService.getSpecifiedOptions(keys);
  33. };
  34. var loadAria2OptionsValue = function () {
  35. scope.context.isLoading = true;
  36. return aria2SettingService.getGlobalOption(function (response) {
  37. scope.context.isLoading = false;
  38. if (response.success) {
  39. scope.context.globalOptions = response.data;
  40. }
  41. });
  42. };
  43. angular.element('#quickSettingModal').on('hidden.bs.modal', function () {
  44. scope.setting = null;
  45. scope.context.availableOptions = [];
  46. scope.context.globalOptions = [];
  47. });
  48. scope.$watch('setting', function (setting) {
  49. if (setting) {
  50. loadOptions(setting.type);
  51. loadAria2OptionsValue();
  52. angular.element('#quickSettingModal').modal('show');
  53. }
  54. }, true);
  55. }
  56. };
  57. }]);
  58. }());