support save session and shutdown arai2
This commit is contained in:
parent
5027707dec
commit
3f4c66a14e
|
@ -253,6 +253,7 @@
|
|||
<script src="../bower_components/angular-base64/angular-base64.min.js"></script>
|
||||
<script src="../bower_components/angular-local-storage/dist/angular-local-storage.min.js"></script>
|
||||
<script src="../bower_components/angular-busy/dist/angular-busy.min.js"></script>
|
||||
<script src="../bower_components/angular-promise-buttons/dist/angular-promise-buttons.min.js"></script>
|
||||
<script src="../bower_components/angular-dragula/dist/angular-dragula.min.js"></script>
|
||||
<script src="../bower_components/angular-bootstrap-slider/slider.js"></script>
|
||||
<script src="../bower_components/ngSweetAlert/SweetAlert.js"></script>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
"Simplified Chinese": "简体中文",
|
||||
"Operation Succeeded": "操作成功",
|
||||
"Error": "错误",
|
||||
"OK": "确定",
|
||||
"Cancel": "取消",
|
||||
|
@ -79,6 +80,15 @@
|
|||
"Download Task Refresh Interval": "下载任务刷新间隔",
|
||||
"Aria2 Version": "Aria2 版本",
|
||||
"Enabled Features": "已启用的功能",
|
||||
"Functions": "方法",
|
||||
"Save Session": "保存会话",
|
||||
"Shutdown Aria2": "关闭 Aria2",
|
||||
"Confirm Shutdown": "确认关闭",
|
||||
"Are you sure you want to shutdown aria2?": "您是否要关闭 Aria2?",
|
||||
"Session has been saved successfully.": "会话已经成功保存.",
|
||||
"Failed to save session.": "会话保存失败.",
|
||||
"Aria2 has been shutdown successfully.": "Aria2 已经成功关闭.",
|
||||
"Failed to shutdown aria2.": "关闭 Aria2 失败.",
|
||||
"Toggle Navigation": "切换导航",
|
||||
"Loading": "正在加载...",
|
||||
"More Than One Day": "超过1天",
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
angular.module('ariaNg').config(['$translateProvider', function ($translateProvider) {
|
||||
$translateProvider.translations('en-US', {
|
||||
'English': 'English',
|
||||
'Operation Succeeded': 'Operation Succeeded',
|
||||
'Error': 'Error',
|
||||
'OK': 'OK',
|
||||
'Cancel': 'Cancel',
|
||||
|
@ -83,6 +84,15 @@
|
|||
'Download Task Refresh Interval': 'Download Task Refresh Interval',
|
||||
'Aria2 Version': 'Aria2 Version',
|
||||
'Enabled Features': 'Enabled Features',
|
||||
'Functions': 'Functions',
|
||||
'Save Session': 'Save Session',
|
||||
'Shutdown Aria2': 'Shutdown Aria2',
|
||||
'Confirm Shutdown': 'Confirm Shutdown',
|
||||
'Are you sure you want to shutdown aria2?': 'Are you sure you want to shutdown aria2?',
|
||||
'Session has been saved successfully.': 'Session has been saved successfully.',
|
||||
'Failed to save session.': 'Failed to save session.',
|
||||
'Aria2 has been shutdown successfully.': 'Aria2 has been shutdown successfully.',
|
||||
'Failed to shutdown aria2.': 'Failed to shutdown aria2.',
|
||||
'Toggle Navigation': 'Toggle Navigation',
|
||||
'Loading': 'Loading...',
|
||||
'More Than One Day': 'More than 1 day',
|
||||
|
|
|
@ -1,11 +1,33 @@
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
angular.module('ariaNg').controller('Aria2StatusController', ['$rootScope', '$scope', 'aria2SettingService', function ($rootScope, $scope, aria2SettingService) {
|
||||
angular.module('ariaNg').controller('Aria2StatusController', ['$rootScope', '$scope', 'ariaNgCommonService', 'aria2SettingService', function ($rootScope, $scope, ariaNgCommonService, aria2SettingService) {
|
||||
$rootScope.loadPromise = (function () {
|
||||
return aria2SettingService.getServerStatus(function (result) {
|
||||
$scope.serverStatus = result;
|
||||
});
|
||||
})();
|
||||
|
||||
$scope.saveSession = function () {
|
||||
return aria2SettingService.saveSession(function (result) {
|
||||
if (result == 'OK') {
|
||||
ariaNgCommonService.showOperationSucceeded('Session has been saved successfully.');
|
||||
} else {
|
||||
ariaNgCommonService.showError('Failed to save session.');
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$scope.shutdown = function () {
|
||||
ariaNgCommonService.confirm('Confirm Shutdown', 'Are you sure you want to shutdown aria2?', 'warning', function (status) {
|
||||
return aria2SettingService.shutdown(function (result) {
|
||||
if (result == 'OK') {
|
||||
ariaNgCommonService.showOperationSucceeded('Aria2 has been shutdown successfully.');
|
||||
} else {
|
||||
ariaNgCommonService.showError('Failed to shutdown aria2.');
|
||||
}
|
||||
});
|
||||
}, true);
|
||||
};
|
||||
}]);
|
||||
})();
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
'base64',
|
||||
'LocalStorageModule',
|
||||
'cgBusy',
|
||||
'angularPromiseButtons',
|
||||
'ui.bootstrap-slider',
|
||||
'oitozero.ngSweetAlert',
|
||||
angularDragula(angular)
|
||||
|
|
|
@ -104,6 +104,16 @@
|
|||
callback(stat);
|
||||
}
|
||||
});
|
||||
},
|
||||
saveSession: function (callback) {
|
||||
return aria2RpcService.saveSession({
|
||||
callback: callback
|
||||
})
|
||||
},
|
||||
shutdown: function (callback) {
|
||||
return aria2RpcService.shutdown({
|
||||
callback: callback
|
||||
})
|
||||
}
|
||||
};
|
||||
}]);
|
||||
|
|
|
@ -408,6 +408,120 @@ td {
|
|||
border-color: #208fe5;
|
||||
}
|
||||
|
||||
/* angular-promise-buttons */
|
||||
@-webkit-keyframes three-quarters {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
-moz-transform: rotate(0deg);
|
||||
-ms-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
-moz-transform: rotate(360deg);
|
||||
-ms-transform: rotate(360deg);
|
||||
-o-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@-moz-keyframes three-quarters {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
-moz-transform: rotate(0deg);
|
||||
-ms-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
-moz-transform: rotate(360deg);
|
||||
-ms-transform: rotate(360deg);
|
||||
-o-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@-o-keyframes three-quarters {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
-moz-transform: rotate(0deg);
|
||||
-ms-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
-moz-transform: rotate(360deg);
|
||||
-ms-transform: rotate(360deg);
|
||||
-o-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes three-quarters {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
-moz-transform: rotate(0deg);
|
||||
-ms-transform: rotate(0deg);
|
||||
-o-transform: rotate(0deg);
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
-moz-transform: rotate(360deg);
|
||||
-ms-transform: rotate(360deg);
|
||||
-o-transform: rotate(360deg);
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
.btn-spinner {
|
||||
font-family: sans-serif;
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
.btn-spinner:not(:required) {
|
||||
-webkit-animation: three-quarters 1250ms infinite linear;
|
||||
-moz-animation: three-quarters 1250ms infinite linear;
|
||||
-ms-animation: three-quarters 1250ms infinite linear;
|
||||
-o-animation: three-quarters 1250ms infinite linear;
|
||||
animation: three-quarters 1250ms infinite linear;
|
||||
border: 3px solid #8c8c8c;
|
||||
border-right-color: transparent;
|
||||
border-radius: 100%;
|
||||
box-sizing: border-box;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
vertical-align: middle;
|
||||
overflow: hidden;
|
||||
text-indent: -9999px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.btn-primary .btn-spinner:not(:required), .btn-danger .btn-spinner:not(:required) {
|
||||
border: 3px solid #efefef;
|
||||
border-right-color: transparent;
|
||||
}
|
||||
|
||||
.btn-spinner:not(:required) {
|
||||
margin-left: -22px;
|
||||
opacity: 0;
|
||||
transition: 0.4s margin ease-out, 0.2s opacity ease-out;
|
||||
}
|
||||
|
||||
.is-loading .btn-spinner {
|
||||
transition: 0.2s margin ease-in, 0.4s opacity ease-in;
|
||||
margin-left: 5px;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* angular-dragula extend */
|
||||
.gu-mirror {
|
||||
cursor: grabbing;
|
||||
|
|
|
@ -16,5 +16,18 @@
|
|||
<span class="wholeline" ng-repeat="feature in serverStatus.enabledFeatures" ng-bind="feature"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row ng-cloak" ng-if="serverStatus">
|
||||
<div class="setting-key setting-key-without-desc col-sm-4">
|
||||
<span translate>Functions</span>
|
||||
</div>
|
||||
<div class="setting-value col-sm-8">
|
||||
<button class="btn btn-primary" ng-click="saveSession()" promise-btn>
|
||||
<span translate>Save Session</span>
|
||||
</button>
|
||||
<button class="btn btn-danger" ng-click="shutdown()">
|
||||
<span translate>Shutdown Aria2</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
"angular-base64": "^2.0.5",
|
||||
"angular-local-storage": "^0.2.7",
|
||||
"angular-busy": "^4.1.3",
|
||||
"angular-promise-buttons": "^0.1.14",
|
||||
"angular-dragula": "^1.2.7",
|
||||
"angular-bootstrap-slider": "^0.1.28",
|
||||
"ngSweetAlert": "https://github.com/oitozero/ngSweetAlert.git#8df6c30b0996f09cb4cf5e90a41115a6c09fa852"
|
||||
|
|
Reference in a new issue