1
私はすべてのデータの並べ替えを有効にしようとしています。クライアント側でもページ分割を行っています。私はページングの別の問題を抱えています。最初の25レコードのみを表示しています。ページを変更すると、25レコードの新しいセットは表示されませんが、このソートの問題を理解したいと思います。ここで角列のソートクリックのヘッダー
function DataUploadHistoryController($window, $scope, $modal, $state, toaster, PagerService, DataUploadHistoryFactory, $timeout) {
var vm = this;
vm.uploads = [];
vm.includeCancelled = false;
vm.uploadDataModal = {};
vm.pager = {};
vm.setPage = setPage;
vm.itemsByPage=25;
$scope.sortType = 'uploadDate';
$scope.sortReverse = true;
activate();
function activate() {
getUploadHistory();
$scope.$watch('vm.includeCancelled', getUploadHistory);
$scope.$on('closeUploadModal', function(event, response) {
if (vm.uploadDataModal.opened) {
vm.uploadDataModal.close();
getUploadHistory();
var poller = function() {
DataUploadHistoryFactory.getUploadById(response.dataLoadExecutionId).success(function(response) {
if(response.status.statusCd !== 'NEW'){
if(response.status.statusCd === 'ERROR')
toaster.error('Could not load execution. Please remove.');
else
toaster.success('Data execution load complete.');
getUploadHistory();
return;
}
$timeout(poller, 5000);
})
}
poller();
};
});
$scope.$on('cancelUploadModal', function(event, response) {
if (vm.uploadDataModal.opened) {
vm.uploadDataModal.close();
getUploadHistory();
};
});
/*
$scope.$on('closeDownloadTemplateModal', function() {
if (vm.downloadTemplateModal.opened)
vm.downloadTemplateModal.close();
});
*/
}
var checkProcessingPoller = function() {
DataUploadHistoryFactory.getUploadHistory(vm.includeCancelled).then(
function(response) {
_.each(response.data, function(upload) {
if(upload.processing = upload.status && ['PROCESSING'].indexOf(upload.status.statusCd.trim()) > -1){
$timeout(checkProcessingPoller, 5000);
console.log("Checking Status");
}
});
vm.uploads = response.data;
});
}
checkProcessingPoller();
function getUploadHistory() {
DataUploadHistoryFactory.getUploadHistory(vm.includeCancelled).then(
function(response) {
_.each(response.data, function(upload) {
upload.inProgress = upload.status && ['INPROGRESS','NEW'].indexOf(upload.status.statusCd.trim()) > -1;
});
vm.uploads = response.data;
if($state.params.reupload){
uploadProductionData();
$state.params.reupload = false;
}
vm.setPage(1);
vm.itemsByPage=25;
});
}
$scope.sortBy = function(keyName){
$scope.sortReverse = !$scope.sortReverse;
$scope.sortType = keyName;
};
は、ヘッダのクリックを修正するHTML
<div class="chrthdr" ui-view="header"></div>
<div id="userResults">
<div class="card card-full-width">
<div class="card-header dark-blue">
<a class="card-config" data-toggle="uploadHistory" data-placement="left"><i class="glyphicon glyphicon-info-sign"></i></a>
<div class="card-title">Data History</div>
</div>
<div class='form-horizontal range-date' style="overflow-y: auto;">
<form>
<div class="panel-body">
<div>
<span class="btn btn-primary btn-xs pull-left" style="margin-bottom: 5px; margin-right: 5px" type="button" ng-click="vm.uploadProductionData()">Upload Data</span>
<label>
<input type="checkbox" ng-model="vm.includeCancelled">Include removed executions
</label>
<!--<span class="btn btn-primary btn-xs pull-left" style="margin-bottom: 5px; margin-left: 5px" type="button" ng-click="vm.viewTemplates()">Download Template</span>-->
</div>
<div>
<table class="table">
<tr>
<th ng-click="sortBy('uploadDate')" >Upload Date
<span ng-show="sortType == 'uploadDate' && sortReverse" class="fa fa-caret-down"></span>
<span ng-show="sortType == 'uploadDate' && !sortReverse" class="fa fa-caret-up"></span>
</th>
<th>Product</th>
<th>Comments</th>
<th ng-click="sortBy('templateName')">Template
<span ng-show="sortType == 'templateName' && sortReverse" class="fa fa-caret-down"></span>
<span ng-show="sortType == 'templateName' && !sortReverse" class="fa fa-caret-up"></span>
</th>
<th>Last Updated By</th>
<th>Last Updated</th>
<th>Status
<span class="fa fa-caret-down"></span>
</th>
<th>Actions</th>
</tr>
<tr ng-repeat="upload in vm.uploads | orderBy:'uploadDate':true | limitTo: vm.itemsByPage">
<td style="white-space: nowrap;">{{upload.uploadDate}}</td>
<td>{{upload.product}}</td>
<td style="white-space: nowrap;">{{upload.comments}}</td>
<td style="white-space: nowrap;">{{upload.templateName}}</td>
<td style="white-space: nowrap;">{{upload.lastUpdatedByUser}}</td>
<td style="white-space: nowrap;">{{upload.lastUpdateDate}}</td>
<td style="white-space: nowrap;">{{upload.status.statusName}}</td>
<td>
<button class="btn btn-primary btn-xs pull-left" style="margin-bottom: 5px; " ng-hide="upload.status.statusCd === 'NEW' || upload.status.statusCd === 'ERROR'" ng-click="vm.loadStagingPage(upload.dataLoadExecutionId, upload.product, upload.status)">View</button>
<span class="btn btn-primary btn-xs pull-left" style="margin-bottom: 5px; " type="button" ng-click="vm.cancelDataExecution(upload.dataLoadExecutionId)" ng-show="upload.inProgress || upload.status.statusCd === 'ERROR'">Remove</span>
</td>
</tr>
</table>
<div class="text-center">
<ul ng-if="vm.pager.pages.length" class="pagination">
<li ng-class="{disabled:vm.pager.currentPage === 1}">
<a ng-click="vm.setPage(1)">First</a>
</li>
<li ng-class="{disabled:vm.pager.currentPage === 1}">
<a ng-click="vm.setPage(vm.pager.currentPage - 1)">Previous</a>
</li>
<li ng-repeat="page in vm.pager.pages" ng-class="{active:vm.pager.currentPage === page}">
<a ng-click="vm.setPage(page)">{{page}}</a>
</li>
<li ng-class="{disabled:vm.pager.currentPage === vm.pager.totalPages}">
<a ng-click="vm.setPage(vm.pager.currentPage + 1)">Next</a>
</li>
<li ng-class="{disabled:vm.pager.currentPage === vm.pager.totalPages}">
<a ng-click="vm.setPage(vm.pager.totalPages)">Last</a>
</li>
</ul>
</div>
</div>
</div>
</form>
</div>
</div>
ありがとうございます - 元のorderBy私が持っていたuploadDateは私がd isplay - 既定の並べ替えを維持する方法はありますか? – Buccaneer
私はあなたを理解しているか分かりません。あなたがトップ( '$ scope.sortType = 'uploadDate';')で定義したので、そのコントローラが最初にヒットした時のデフォルト値になります。 – austinthedeveloper
混乱して申し訳ありません、私はここでgoogleロジックでページングを実装しました。各ページを25の結果に分割します。ソートを選択すると、そのページの結果だけに基づいてソートされます。つまり、ページ1のテンプレート名にソートがある場合、結果のアルファベット順にソートされますページ1、結果セット全体ではなく、別のページに移動したときに同じソートがそこにありますが、再びその特定のページの25のレコードのみがソートされます。 – Buccaneer