Ng grid ng网格totalServerItems问题

Ng grid ng网格totalServerItems问题,ng-grid,Ng Grid,我使用ng网格显示返回的JSON数据 restApp.js function request(method, url, data, params){ var deferred = $q.defer(); var fullpath = _server+url; if(typeof(data) == 'string'){ params = data; data = null; fullpath = fullpath+par

我使用ng网格显示返回的JSON数据

restApp.js

function request(method, url, data, params){
    var deferred = $q.defer();

    var fullpath = _server+url;

    if(typeof(data) == 'string'){
        params = data;
        data = null;

        fullpath = fullpath+params;
    }
    //alert(fullpath);

    $http({
        method: method,
        url: fullpath,
        data: data
    }).success(function(data){
    console.log(data);
        deferred.resolve(data);
    }).error(function(err){
        deferred.reject(err);
    });

    return deferred.promise;
}


var getAlertsWithOptions = function(pageNum, per_page, search, sort, public_alert){
    /*Returns all alerts, with the option of specifying 
    pagination, searching and sorting. In case pagination 
    is requested, both parameters ‘page’ and ‘per_page’ can 
    be supplied to customize the pagination. Default value 
    for ‘per_page’ if not supplied will be 10, default for 
    ‘page’ is 1. Sorting is also possible by supplying a 
    ‘sort’ request parameter with any combination of the 
    values ‘priority’, ‘state’, ‘createdAt’, ‘summary’, 
    ‘active’,’details’. Using ‘-‘ in front of the sort 
    field will sort in descending order. Default sort field 
    if no sorting supplied will be ‘-createdAt’. Filtering 
    is provided via the ‘q’ request parameter. This will 
    filter alerts by their ‘summary’ or ‘details’ fields.
    Filtering is case-insensitive*/
    var url = 'alert';
    var params = '';
    //alert(totalServerItems);
    var options = [];
    //alert(pageNum+"--"+per_page+"--"+search+"--"+sort+"--"+public_alert);
        if(typeof(pageNum) != 'undefined'){                
            options.push('page=' + pageNum);
        }
        if(typeof(per_page) != 'undefined'){                
            options.push('per_page=' + per_page);
        }
        if(typeof(search) != 'undefined' || search != null){                
            options.push('q=' + search);
        }
        if(typeof (sort) != 'undefined'){              
            options.push('sort=' + sort);
        }
        if(typeof (public_alert) != 'undefined'){              
            options.push('public=' + public_alert);
        }

        if (options.length > 0) {
            params = '?';
            params = params + options.join('&');                
        }

    return request('GET',url,params);
}
var adminAlertCtrl = angular.module('siApp').controller('adminAlertController',['$scope','restApp', '$modal', 'selectedAlert', 'loadAlerts',
function($scope, restApp, $modal, selectedAlert, loadAlerts){

$scope.displayAlert = false;
$scope.close = function(){$scope.displayAlert = false}
var _currentSort = '';

$scope.sortOptions = [
    {name:"Date", value:"-createdAt"},
    {name:"Priority", value:"priority"},
    {name:"Status", value:"state"},
    {name:"Name",value:"summary"},
    {name:"Details",value:"details"},
    {name:"Privacy", value:"publicAlert"}];

var initLoad = true;
$scope.$watch('sortModel', function(newVal){
    _currentSort = newVal;
    if(initLoad) {
        initLoad = false;
        return;
    }

    //the 1 represents the page starting on. Every time a new sort is specified, we take the user back to the first page of this newly sorted data
    restApp.getAlertsWithOptions(1, $scope.pagingOptions.pageSize, $scope.searchFilter, [_currentSort.value]).then(function(data){
        if (data !== 'No alerts found') {
            //add dateObj to filter
            data.map(function(_alert){
                return _alert.dateObj = new Date(_alert.createdAt).toDateString();
            });
            $scope.myData = data;
        } else {
            $scope.myData = [];
        }
    },function(err){
        alert('Error refreshing alerts: '+ err);
    });
 });


//add dateObj to filter
if(loadAlerts != "No alerts found") {
    loadAlerts.map(function(_alert){
        return _alert.dateObj = new Date(_alert.createdAt).toDateString();
    });
    $scope.myData = loadAlerts;
 }else{
    $scope.displayAlert = true;
    $scope.pageAlert= {type: "warning", message:"No Alerts Found"}
    $scope.myData = [];
 }
$scope.totalServerItems = 0;
 //ngGrid
 $scope.pagingOptions = {
    pageSizes: [5,10,20],
    pageSize: 10,
    currentPage: 1,
    input:'text',
    totalServerItems: 'totalServerItems'
 };

 $scope.gridOptions = {
    columnDefs: [
        {field:"summary", displayName:"Name", sortable:false, cellTemplate: "<div><a ng-click='editAlert(row.entity)'>{{row.entity[col.field]}}</a></div>" },
        {field:"dateObj", displayName:"Date", sortable:false, cellTemplate: "<div>{{row.entity[col.field]}} </div>    "},
        {field:"priority",width:"90px" ,sortable:false, displayName:"Priority", cellTemplate:"<div ng-class='{high: row.getProperty(col.field) === \"HIGH\", med: row.getProperty(col.field) === \"MEDIUM\",  low: row.getProperty(col.field) === \"LOW\" }'>{{row.entity[col.field]}}</div>"},
        {field:"details", displayName: "Details", sortable:false},
        {field:"state", displayName:"Status", sortable:false}
     ],
    enablePaging: true,
    showFooter: true,
    pagingOptions: $scope.pagingOptions,
    multiSelect: false,

    data: 'myData'
 };

    function getPagedDataSet(pageSize, pageNum){
        console.log('page data set');
        console.log(pageSize);
        console.log(pageNum);


        restApp.getAlertsWithOptions(pageNum, pageSize, $scope.searchFilter, [_currentSort.value]).then(function(data){
            console.log('retireved data back for new page');

            //update the new page on the grid
            data.map(function(_alert){
                return _alert.dateObj = new Date(_alert.createdAt).toDateString();
            });
            $scope.totalServerItems = data.length;
            $scope.myData = data;
            alert($scope.totalServerItems);
        },function(err){
            console.log(err);
        })

    }

    $scope.$watch('pagingOptions', function (newVal, oldVal) {

      if (newVal !== oldVal && newVal.currentPage !== oldVal.currentPage) {
            getPagedDataSet($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage);
      }
    }, true);


  function reload(){
   restApp.getAlertsWithOptions(1, $scope.pagingOptions.pageSize, $scope.searchFilter, [_currentSort.value]).then(function(data){
       if (data !== 'No alerts found') {
           //add dateObj to filter
           data.map(function(_alert){
               return _alert.dateObj = new Date(_alert.createdAt).toDateString();
           });
           $scope.myData = data;
       } else {
           $scope.myData = [];
       }
   },function(err){
       alert('Error refreshing alerts: '+ err);
   });
 }

 $scope.searchFilter = '';
 $scope.filter = function(){
   restApp.getAlertsWithOptions(1, $scope.pagingOptions.pageSize,     $scope.searchFilter, ['-createdAt']).then(function(data){
     //add dateObj to filter          
       if (data !== 'No alerts found') {
           data.map(function(_alert){
               return _alert.dateObj = new Date(_alert.createdAt).toDateString();
           });
           $scope.myData = data;
       } else {
           $scope.myData = [];
       }

   },function(err){
       alert('Error searching alerts: '+ err);
   });
 }

 $scope.refresh = function(){
   $scope.displayAlert = false;
   reload();
 }

 $scope.editAlert = function(selAlert){
  //pass alert to selectedAlert

   selAlert = selAlert || {
        "publicAlert" : "1",
        "source" : "S",
        "priority" : "MEDIUM",
        "state" : "NEW"
   };

   selectedAlert.setAlert(selAlert);


   var modalInstance = $modal.open({
       templateUrl: 'views/alertModal.html',
       controller: "alertModalCtrl",
       backdrop: 'static',
       resolve:{
           states: alertCtrl.aStates,
           priorities: alertCtrl.aPriorities
       }
   });

   modalInstance.result.then(function(result){

       var msg = 'Alert Successfully ';
       if (result === 'create') {
           msg += 'Created';
       } else {
           msg += 'Updated';
       }
       reload();
       $scope.pageAlert = {
           "type": 'success',
           "message": msg
       }
       $scope.displayAlert = true;
   },function(){
       console.log('modal canceled');
   })

}
}]);

adminAlertCtrl.loadData = function($q, restApp){
var deferred = $q.defer();

restApp.getAlertsWithOptions(1, 10, undefined, ['-createdAt']).then(function(data){
    deferred.resolve(data);
},function(err){
    deferred.reject(err);
});

return deferred.promise;
}

adminAlertCtrl.aStates = function($q, restApp){
  var deferred = $q.defer();

restApp.getAlertState().then(function(states){
    deferred.resolve(states);
},function(err){
    deferred.reject(err);
});

return deferred.promise;
}

adminAlertCtrl.aPriorities = function($q, restApp){
var deferred = $q.defer();

restApp.getAlertPriority().then(function(priorities){
    deferred.resolve(priorities);
},function(err){
    deferred.reject(err);
});

return deferred.promise;
}
adminAlertCtrl.js

function request(method, url, data, params){
    var deferred = $q.defer();

    var fullpath = _server+url;

    if(typeof(data) == 'string'){
        params = data;
        data = null;

        fullpath = fullpath+params;
    }
    //alert(fullpath);

    $http({
        method: method,
        url: fullpath,
        data: data
    }).success(function(data){
    console.log(data);
        deferred.resolve(data);
    }).error(function(err){
        deferred.reject(err);
    });

    return deferred.promise;
}


var getAlertsWithOptions = function(pageNum, per_page, search, sort, public_alert){
    /*Returns all alerts, with the option of specifying 
    pagination, searching and sorting. In case pagination 
    is requested, both parameters ‘page’ and ‘per_page’ can 
    be supplied to customize the pagination. Default value 
    for ‘per_page’ if not supplied will be 10, default for 
    ‘page’ is 1. Sorting is also possible by supplying a 
    ‘sort’ request parameter with any combination of the 
    values ‘priority’, ‘state’, ‘createdAt’, ‘summary’, 
    ‘active’,’details’. Using ‘-‘ in front of the sort 
    field will sort in descending order. Default sort field 
    if no sorting supplied will be ‘-createdAt’. Filtering 
    is provided via the ‘q’ request parameter. This will 
    filter alerts by their ‘summary’ or ‘details’ fields.
    Filtering is case-insensitive*/
    var url = 'alert';
    var params = '';
    //alert(totalServerItems);
    var options = [];
    //alert(pageNum+"--"+per_page+"--"+search+"--"+sort+"--"+public_alert);
        if(typeof(pageNum) != 'undefined'){                
            options.push('page=' + pageNum);
        }
        if(typeof(per_page) != 'undefined'){                
            options.push('per_page=' + per_page);
        }
        if(typeof(search) != 'undefined' || search != null){                
            options.push('q=' + search);
        }
        if(typeof (sort) != 'undefined'){              
            options.push('sort=' + sort);
        }
        if(typeof (public_alert) != 'undefined'){              
            options.push('public=' + public_alert);
        }

        if (options.length > 0) {
            params = '?';
            params = params + options.join('&');                
        }

    return request('GET',url,params);
}
var adminAlertCtrl = angular.module('siApp').controller('adminAlertController',['$scope','restApp', '$modal', 'selectedAlert', 'loadAlerts',
function($scope, restApp, $modal, selectedAlert, loadAlerts){

$scope.displayAlert = false;
$scope.close = function(){$scope.displayAlert = false}
var _currentSort = '';

$scope.sortOptions = [
    {name:"Date", value:"-createdAt"},
    {name:"Priority", value:"priority"},
    {name:"Status", value:"state"},
    {name:"Name",value:"summary"},
    {name:"Details",value:"details"},
    {name:"Privacy", value:"publicAlert"}];

var initLoad = true;
$scope.$watch('sortModel', function(newVal){
    _currentSort = newVal;
    if(initLoad) {
        initLoad = false;
        return;
    }

    //the 1 represents the page starting on. Every time a new sort is specified, we take the user back to the first page of this newly sorted data
    restApp.getAlertsWithOptions(1, $scope.pagingOptions.pageSize, $scope.searchFilter, [_currentSort.value]).then(function(data){
        if (data !== 'No alerts found') {
            //add dateObj to filter
            data.map(function(_alert){
                return _alert.dateObj = new Date(_alert.createdAt).toDateString();
            });
            $scope.myData = data;
        } else {
            $scope.myData = [];
        }
    },function(err){
        alert('Error refreshing alerts: '+ err);
    });
 });


//add dateObj to filter
if(loadAlerts != "No alerts found") {
    loadAlerts.map(function(_alert){
        return _alert.dateObj = new Date(_alert.createdAt).toDateString();
    });
    $scope.myData = loadAlerts;
 }else{
    $scope.displayAlert = true;
    $scope.pageAlert= {type: "warning", message:"No Alerts Found"}
    $scope.myData = [];
 }
$scope.totalServerItems = 0;
 //ngGrid
 $scope.pagingOptions = {
    pageSizes: [5,10,20],
    pageSize: 10,
    currentPage: 1,
    input:'text',
    totalServerItems: 'totalServerItems'
 };

 $scope.gridOptions = {
    columnDefs: [
        {field:"summary", displayName:"Name", sortable:false, cellTemplate: "<div><a ng-click='editAlert(row.entity)'>{{row.entity[col.field]}}</a></div>" },
        {field:"dateObj", displayName:"Date", sortable:false, cellTemplate: "<div>{{row.entity[col.field]}} </div>    "},
        {field:"priority",width:"90px" ,sortable:false, displayName:"Priority", cellTemplate:"<div ng-class='{high: row.getProperty(col.field) === \"HIGH\", med: row.getProperty(col.field) === \"MEDIUM\",  low: row.getProperty(col.field) === \"LOW\" }'>{{row.entity[col.field]}}</div>"},
        {field:"details", displayName: "Details", sortable:false},
        {field:"state", displayName:"Status", sortable:false}
     ],
    enablePaging: true,
    showFooter: true,
    pagingOptions: $scope.pagingOptions,
    multiSelect: false,

    data: 'myData'
 };

    function getPagedDataSet(pageSize, pageNum){
        console.log('page data set');
        console.log(pageSize);
        console.log(pageNum);


        restApp.getAlertsWithOptions(pageNum, pageSize, $scope.searchFilter, [_currentSort.value]).then(function(data){
            console.log('retireved data back for new page');

            //update the new page on the grid
            data.map(function(_alert){
                return _alert.dateObj = new Date(_alert.createdAt).toDateString();
            });
            $scope.totalServerItems = data.length;
            $scope.myData = data;
            alert($scope.totalServerItems);
        },function(err){
            console.log(err);
        })

    }

    $scope.$watch('pagingOptions', function (newVal, oldVal) {

      if (newVal !== oldVal && newVal.currentPage !== oldVal.currentPage) {
            getPagedDataSet($scope.pagingOptions.pageSize, $scope.pagingOptions.currentPage);
      }
    }, true);


  function reload(){
   restApp.getAlertsWithOptions(1, $scope.pagingOptions.pageSize, $scope.searchFilter, [_currentSort.value]).then(function(data){
       if (data !== 'No alerts found') {
           //add dateObj to filter
           data.map(function(_alert){
               return _alert.dateObj = new Date(_alert.createdAt).toDateString();
           });
           $scope.myData = data;
       } else {
           $scope.myData = [];
       }
   },function(err){
       alert('Error refreshing alerts: '+ err);
   });
 }

 $scope.searchFilter = '';
 $scope.filter = function(){
   restApp.getAlertsWithOptions(1, $scope.pagingOptions.pageSize,     $scope.searchFilter, ['-createdAt']).then(function(data){
     //add dateObj to filter          
       if (data !== 'No alerts found') {
           data.map(function(_alert){
               return _alert.dateObj = new Date(_alert.createdAt).toDateString();
           });
           $scope.myData = data;
       } else {
           $scope.myData = [];
       }

   },function(err){
       alert('Error searching alerts: '+ err);
   });
 }

 $scope.refresh = function(){
   $scope.displayAlert = false;
   reload();
 }

 $scope.editAlert = function(selAlert){
  //pass alert to selectedAlert

   selAlert = selAlert || {
        "publicAlert" : "1",
        "source" : "S",
        "priority" : "MEDIUM",
        "state" : "NEW"
   };

   selectedAlert.setAlert(selAlert);


   var modalInstance = $modal.open({
       templateUrl: 'views/alertModal.html',
       controller: "alertModalCtrl",
       backdrop: 'static',
       resolve:{
           states: alertCtrl.aStates,
           priorities: alertCtrl.aPriorities
       }
   });

   modalInstance.result.then(function(result){

       var msg = 'Alert Successfully ';
       if (result === 'create') {
           msg += 'Created';
       } else {
           msg += 'Updated';
       }
       reload();
       $scope.pageAlert = {
           "type": 'success',
           "message": msg
       }
       $scope.displayAlert = true;
   },function(){
       console.log('modal canceled');
   })

}
}]);

adminAlertCtrl.loadData = function($q, restApp){
var deferred = $q.defer();

restApp.getAlertsWithOptions(1, 10, undefined, ['-createdAt']).then(function(data){
    deferred.resolve(data);
},function(err){
    deferred.reject(err);
});

return deferred.promise;
}

adminAlertCtrl.aStates = function($q, restApp){
  var deferred = $q.defer();

restApp.getAlertState().then(function(states){
    deferred.resolve(states);
},function(err){
    deferred.reject(err);
});

return deferred.promise;
}

adminAlertCtrl.aPriorities = function($q, restApp){
var deferred = $q.defer();

restApp.getAlertPriority().then(function(priorities){
    deferred.resolve(priorities);
},function(err){
    deferred.reject(err);
});

return deferred.promise;
}
var adminartCtrl=angular.module('siApp').controller('adminartcontroller',['scope','restApp','$modal','selectedAlert','loadAlerts',',
功能($scope、restApp、$modal、selectedAlert、loadAlerts){
$scope.displayAlert=false;
$scope.close=function(){$scope.displayAlert=false}
var_currentSort='';
$scope.sortOptions=[
{name:“Date”,value:“-createdAt”},
{name:“Priority”,value:“Priority”},
{name:“Status”,value:“state”},
{name:“name”,value:“summary”},
{name:“Details”,value:“Details”},
{名称:“隐私”,值:“公共警报”}];
var initLoad=true;
$scope.$watch('sortModel',函数(newVal){
_currentSort=newVal;
if(initLoad){
initLoad=false;
返回;
}
//1表示从开始的页面。每次指定新排序时,我们都会将用户带回新排序数据的第一页
restApp.getAlertsWithOptions(1,$scope.PaginOptions.pageSize,$scope.searchFilter,[\u currentSort.value])。然后(函数(数据){
如果(数据!=“未找到警报”){
//将dateObj添加到筛选器
data.map(函数(_警报){
return _alert.dateObj=新日期(_alert.createdAt).toDateString();
});
$scope.myData=数据;
}否则{
$scope.myData=[];
}
},函数(err){
警报('刷新警报时出错:'+err);
});
});
//将dateObj添加到筛选器
如果(loadAlerts!=“未找到警报”){
loadAlerts.map(函数(\u alert){
return _alert.dateObj=新日期(_alert.createdAt).toDateString();
});
$scope.myData=loadAlerts;
}否则{
$scope.displayAlert=true;
$scope.pageAlert={类型:“警告”,消息:“未找到警报”}
$scope.myData=[];
}
$scope.totalServerItems=0;
//ngGrid
$scope.pagingOptions={
页面大小:[5,10,20],
页面大小:10,
当前页面:1,
输入:'text',
totalServerItems:“totalServerItems”
};
$scope.gridOptions={
columnDefs:[
{field:“summary”,displayName:“Name”,sortable:false,cellTemplate:“{{{row.entity[col.field]}}”,
{field:“dateObj”,displayName:“Date”,sortable:false,cellTemplate:“{{row.entity[col.field]}}”,
{field:“priority”,width:“90px”,sortable:false,displayName:“priority”,cellTemplate:{{{row.entity[col.field]}},
{字段:“详细信息”,显示名称:“详细信息”,可排序:false},
{字段:“状态”,显示名称:“状态”,可排序:false}
],
enablePaging:true,
showFooter:是的,
分页选项:$scope.pagingOptions,
多选:错,
数据:“myData”
};
函数getPagedDataSet(pageSize,pageNum){
log(“页面数据集”);
console.log(页面大小);
console.log(pageNum);
restApp.getAlertsWithOptions(pageNum,pageSize,$scope.searchFilter,[\u currentSort.value])。然后(函数(数据){
log(“为新页面返回已退役的数据”);
//更新网格上的新页面
data.map(函数(_警报){
return _alert.dateObj=新日期(_alert.createdAt).toDateString();
});
$scope.totalServerItems=data.length;
$scope.myData=数据;
警报($scope.totalServerItems);
},函数(err){
控制台日志(err);
})
}
$scope.$watch('pagingOptions',函数(newVal,oldVal){
如果(newVal!==oldVal&&newVal.currentPage!==oldVal.currentPage){
getPagedDataSet($scope.pagingOptions.pageSize,$scope.pagingOptions.currentPage);
}
},对);
函数重载(){
restApp.getAlertsWithOptions(1,$scope.PaginOptions.pageSize,$scope.searchFilter,[\u currentSort.value])。然后(函数(数据){
如果(数据!=“未找到警报”){
//将dateObj添加到筛选器
data.map(函数(_警报){
return _alert.dateObj=新日期(_alert.createdAt).toDateString();
});
$scope.myData=数据;
}否则{
$scope.myData=[];
}
},函数(err){
警报('刷新警报时出错:'+err);
});
}
$scope.searchFilter='';
$scope.filter=函数(){
restApp.getAlertsWithOptions(1,$scope.PaginOptions.pageSize,$scope.searchFilter,['-createdAt'])。然后(函数(数据){
//将dateObj添加到筛选器
如果(数据!=“未找到警报”){
data.map(函数(_警报){
return _alert.dateObj=新日期(_alert.createdAt).toDateString();
});
$scope.myData=数据;
}否则{
$scope.myData=[];
}
},函数(err){
警报(“搜索警报时出错:”+err);
});
}
$scope.refresh=函数(){
$scope.displayAlert=false;
重新加载();
}
$scope.editAlert=函数(selAlert){
//将警报传递给选定的警报
seallert=seallert | |{
“公共警报”:“1”,
“来源”:“S”,
“优先级”:“中等”,
“州”:“新”
};
选择Alert.setAlert(selAlert);
var modalInstance=$modal.open({
templateUrl:'views/alertModal.html',
控制器:“alertModalCtrl”,
背景:“静态”,
决心:{
状态:alertCtrl.aStates,
优先级:alertCtrl.aPriorities
}
});
modalInstance.result.then(函数(结果){
var msg=‘警报成功’;
如果(结果=='create'){
msg+=“已创建”;
}否则{
msg+=‘已更新’;
}
重新加载();
$scope.pageAlert={
“类型”:“成功”,
“消息”:msg
}
$scope.displayAlert=true;
},函数(){
console.log('modal cancelled');
})
}
}]);
adminAlertCtrl.loadData=函数($q,restApp){
var deferred=$q.deferred();
restApp.getAlertsWithOptions(1,10,未定义,['-createdAt'])。然后(函数(数据){
判定元件