io.coffee 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. angular.module('omega').controller 'IoCtrl', ($scope, $rootScope,
  2. $window, $http, omegaTarget) ->
  3. omegaTarget.state('web.restoreOnlineUrl').then (url) ->
  4. if url
  5. $scope.restoreOnlineUrl = url
  6. $scope.exportOptions = ->
  7. $rootScope.applyOptionsConfirm().then ->
  8. plainOptions = angular.fromJson(angular.toJson($rootScope.options))
  9. content = JSON.stringify(plainOptions)
  10. blob = new Blob [content], {type: "text/plain;charset=utf-8"}
  11. saveAs(blob, "OmegaOptions.bak")
  12. $scope.importSuccess = ->
  13. $rootScope.showAlert(
  14. type: 'success'
  15. i18n: 'options_importSuccess'
  16. message: 'Options imported.'
  17. )
  18. $scope.restoreLocal = (content) ->
  19. $scope.restoringLocal = true
  20. $rootScope.resetOptions(content).then(( ->
  21. $scope.importSuccess()
  22. ), -> $scope.restoreLocalError()).finally ->
  23. $scope.restoringLocal = false
  24. $scope.restoreLocalError = ->
  25. $rootScope.showAlert(
  26. type: 'error'
  27. i18n: 'options_importFormatError'
  28. message: 'Invalid backup file!'
  29. )
  30. $scope.downloadError = ->
  31. $rootScope.showAlert(
  32. type: 'error'
  33. i18n: 'options_importDownloadError'
  34. message: 'Error downloading backup file!'
  35. )
  36. $scope.triggerFileInput = ->
  37. angular.element('#restore-local-file').click()
  38. return
  39. $scope.restoreOnline = ->
  40. omegaTarget.state('web.restoreOnlineUrl', $scope.restoreOnlineUrl)
  41. $scope.restoringOnline = true
  42. $http(
  43. method: 'GET'
  44. url: $scope.restoreOnlineUrl
  45. cache: false
  46. timeout: 10000
  47. responseType: "text"
  48. ).then(((result) ->
  49. $rootScope.resetOptions(result.data).then (->
  50. $scope.importSuccess()
  51. ), -> $scope.restoreLocalError()
  52. ), $scope.downloadError).finally ->
  53. $scope.restoringOnline = false
  54. $scope.enableOptionsSync = (args) ->
  55. enable = ->
  56. omegaTarget.setOptionsSync(true, args).finally ->
  57. $window.location.reload()
  58. if args?.force
  59. enable()
  60. else
  61. $rootScope.applyOptionsConfirm().then enable
  62. $scope.disableOptionsSync = ->
  63. omegaTarget.setOptionsSync(false).then ->
  64. $rootScope.applyOptionsConfirm().then ->
  65. $window.location.reload()
  66. $scope.resetOptionsSync = ->
  67. omegaTarget.resetOptionsSync().then ->
  68. $rootScope.applyOptionsConfirm().then ->
  69. $window.location.reload()