mainAppModule.controller('genericTableCtrl',function($scope,ajaxService){ $scope.info = { table : { isEmpty : true, items : null, totalItemsCount : null, filteredItemsCount : null, totalPageNum : null, crtPageNum : null, crtPageGroup : null, groupSelectOptions : null, pageSelectOptions : null, additInfo : null }, params : { type : null, info : { queryEntity : null, pageNum : null, pageGroup : null, addit : null } }, searchJson : null, search : null, jsonRequestUrl : "", lastAction : "", status : { show : false, message : "" } }; $scope.template = { table : angular.copy($scope.info.table), params : angular.copy($scope.info.params), status : angular.copy($scope.info.status) }; $scope.formRetrTableInfoParams = function(type){ $scope.info.lastAction = type; $params = angular.copy($scope.template.params); $params.type = type; $params.info.queryEntity = $scope.info.search["successMemento"]; $params.info.pageNum = $scope.info.table.crtPageNum == null ? 1 : $scope.info.table.crtPageNum; $params.info.pageGroup = $scope.info.table.crtPageGroup == null ? 5 : $scope.info.table.crtPageGroup; $params.info = angular.toJson($params.info); return $params; }; $scope.retrieveItems = function(params){ ajaxService.sendXTR($scope.info.jsonRequestUrl,$.param(params)) .then(function(result){ $scope.info.table = result; }, function(status){ console.log("Eroare la request XHR trimis in functia 'retrieveItems' :"); console.log(status); }); }; $scope.$watch('info.searchJson',function(newValue,oldValue){ if(newValue != oldValue){ var jsonObj = angular.fromJson(newValue); if(jsonObj.entity != undefined){ $scope.info.search = new Array(); for(var i = 0;i < jsonObj.fields.length;++i){ $scope.info.search[jsonObj.fields[i]] = ""; } $scope.info.search["successMemento"] = null; $scope.template.search = angular.copy($scope.info.search); console.log($scope.template.search); console.log($scope.info.searchJson); $scope.info.searchJson = angular.toJson(jsonObj.entity); } } }); $scope.onSearch = function(event){ if(event.which == 13){ $search = $scope.info.search; var isSearchOnFields = false; for(var field in $search) if(field != "successMemento" && $search[field] != ""){ isSearchOnFields = true; break; } if(isSearchOnFields){ var searchJson = angular.copy($scope.info.searchJson); for(var field in $search){ if(field != "successMemento"){ searchJson = searchJson.replace("\"" + field + "\"","\"" + $scope.info.search[field] + "\""); } $scope.info.search["successMemento"] = angular.fromJson(searchJson); } } else $search["successMemento"] = null; $scope.retrieveItems($scope.formRetrTableInfoParams("onSearch")); } }; $scope.onCancelFilter = function(){ $scope.info.search = angular.copy($scope.template.search); $scope.retrieveItems($scope.formRetrTableInfoParams("onCancelFilter")); }; $scope.onInitPage = function(){ $scope.retrieveItems($scope.formRetrTableInfoParams("onInitPage")); }; $scope.onChangePage = function(){ $scope.retrieveItems($scope.formRetrTableInfoParams("onChangePage")); }; $scope.onChangeGroup = function(){ $scope.retrieveItems($scope.formRetrTableInfoParams("onChangeGroup")); }; });