support sort peer list in task detail page

This commit is contained in:
MaysWind 2016-06-11 22:24:49 +08:00
parent feb79aca2c
commit 4febf421e3
7 changed files with 77 additions and 6 deletions

View file

@ -293,6 +293,7 @@
<script src="scripts/directives/setting.js"></script>
<script src="scripts/filters/dateDuration.js"></script>
<script src="scripts/filters/fileOrderBy.js"></script>
<script src="scripts/filters/peerOrderBy.js"></script>
<script src="scripts/filters/percent.js"></script>
<script src="scripts/filters/taskOrderBy.js"></script>
<script src="scripts/filters/taskStatus.js"></script>

View file

@ -64,7 +64,7 @@
"Address": "地址",
"Status": "状态",
"Percent": "完成度",
"Download / Upload Speed": "下载 / 上传速度",
"Speed": "速度",
"No Data": "无数据",
"No connected peers": "没有连接到其他节点",
"Failed to change some tasks state.": "修改一些任务状态时失败.",

View file

@ -68,7 +68,7 @@
'Address': 'Address',
'Status': 'Status',
'Percent': 'Percent',
'Download / Upload Speed': 'Download / Upload Speed',
'Speed': 'Speed',
'No Data': 'No Data',
'No connected peers': 'No connected peers',
'Failed to change some tasks state.': 'Failed to change some tasks state.',

View file

@ -152,6 +152,28 @@
}, true);
};
$scope.changePeerListDisplayOrder = function (type, autoSetReverse) {
var oldType = ariaNgCommonService.parseOrderType(ariaNgSettingService.getPeerListDisplayOrder());
var newType = ariaNgCommonService.parseOrderType(type);
if (autoSetReverse && newType.type == oldType.type) {
newType.reverse = !oldType.reverse;
}
ariaNgSettingService.setPeerListDisplayOrder(newType.getValue());
};
$scope.isSetPeerListDisplayOrder = function (type) {
var orderType = ariaNgCommonService.parseOrderType(ariaNgSettingService.getPeerListDisplayOrder());
var targetType = ariaNgCommonService.parseOrderType(type);
return orderType.equals(targetType);
};
$scope.getPeerListOrderType = function () {
return ariaNgSettingService.getPeerListDisplayOrder();
};
$scope.loadTaskOption = function (task) {
$rootScope.loadPromise = aria2TaskService.getTaskOptions(task.gid, function (response) {
if (response.success) {

View file

@ -0,0 +1,29 @@
(function () {
'use strict';
angular.module('ariaNg').filter('peerOrderBy', ['orderByFilter', 'ariaNgCommonService', function (orderByFilter, ariaNgCommonService) {
return function (array, type) {
if (!angular.isArray(array)) {
return array;
}
var orderType = ariaNgCommonService.parseOrderType(type);
if (orderType == null) {
return array;
}
if (orderType.type == 'address') {
return orderByFilter(array, ['ip', 'port'], orderType.reverse);
} else if (orderType.type == 'percent') {
return orderByFilter(array, ['completePercent'], orderType.reverse);
} else if (orderType.type == 'dspeed') {
return orderByFilter(array, ['downloadSpeed'], orderType.reverse);
} else if (orderType.type == 'uspeed') {
return orderByFilter(array, ['uploadSpeed'], orderType.reverse);
} else {
return array;
}
}
}]);
})();

View file

@ -140,6 +140,18 @@
},
setFileListDisplayOrder: function (value) {
setOption('fileListDisplayOrder', value);
},
getPeerListDisplayOrder: function () {
var value = getOption('peerListDisplayOrder');
if (!value) {
value = 'default:asc';
}
return value;
},
setPeerListDisplayOrder: function (value) {
setOption('peerListDisplayOrder', value);
}
};
}]);

View file

@ -191,21 +191,28 @@
<div class="task-table-title hidden-xs">
<div class="row">
<div class="col-sm-3">
<span translate>Address</span>
<a ng-click="changePeerListDisplayOrder('address:asc', true)" translate>Address</a>
<i class="fa" ng-class="{'fa-sort-asc fa-order-asc': isSetPeerListDisplayOrder('address:asc'), 'fa-sort-desc fa-order-desc': isSetPeerListDisplayOrder('address:desc')}"></i>
</div>
<div class="col-sm-3">
<span translate>Status</span>
</div>
<div class="col-sm-2 col-xs-4">
<span translate>Percent</span>
<a ng-click="changePeerListDisplayOrder('percent:desc', true)" translate>Percent</a>
<i class="fa" ng-class="{'fa-sort-asc fa-order-asc': isSetPeerListDisplayOrder('percent:asc'), 'fa-sort-desc fa-order-desc': isSetPeerListDisplayOrder('percent:desc')}"></i>
</div>
<div class="col-sm-4 col-xs-4">
<span translate>Download / Upload Speed</span>
<a ng-click="changePeerListDisplayOrder('dspeed:desc', true)" translate>Download</a>
<i class="fa" ng-class="{'fa-sort-asc fa-order-asc': isSetPeerListDisplayOrder('dspeed:asc'), 'fa-sort-desc fa-order-desc': isSetPeerListDisplayOrder('dspeed:desc')}"></i>
<span>/</span>
<a ng-click="changePeerListDisplayOrder('uspeed:desc', true)" translate>Upload</a>
<i class="fa" ng-class="{'fa-sort-asc fa-order-asc': isSetPeerListDisplayOrder('uspeed:asc'), 'fa-sort-desc fa-order-desc': isSetPeerListDisplayOrder('uspeed:desc')}"></i>
<span translate>Speed</span>
</div>
</div>
</div>
<div class="task-table-body">
<div class="row" ng-repeat="peer in peers">
<div class="row" ng-repeat="peer in peers | peerOrderBy: getPeerListOrderType()">
<div class="col-sm-3">
<span ng-bind="peer.ip + ':' + peer.port"></span>
</div>