tabellaFunzioniCtrl.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. app.controller('tabellaFunzioniCtrl',
  2. function($scope,$http,$cookies,$window, $location,$timeout, $mdDialog, $q, $routeParams, $mdBottomSheet, $mdMedia, FunzioniOrdinanti, utilsSvc) {
  3. var vm=this;
  4. vm.maxItems = 0;
  5. vm.itemsPerPage = 100;
  6. vm.selectedIndex=-1;
  7. vm.records=[];
  8. vm.filter={
  9. filterText: '',
  10. orderField:null
  11. }
  12. vm.setSelected=function(idx) {
  13. vm.selectedIndex = idx;
  14. }
  15. vm.columnWidths=[
  16. 110, //0
  17. 150, //1
  18. 110, //2
  19. 120, //3FunzioneOrdinanFunzioneOrdinantete
  20. 120, //4
  21. 120, //5
  22. 140, //6
  23. 180 //7
  24. ];
  25. vm.largeScreen =function(){
  26. return utilsSvc.largeScreen();
  27. }
  28. vm.getListHeight = function() {
  29. containerHeight = ($window.innerHeight - $('#container').position().top - $('#view').position().top);
  30. return {'height': containerHeight + 'px'};
  31. };
  32. vm.getGridItemHeight = function() {
  33. return utilsSvc.getGridWithButtonHeight();
  34. }
  35. $window.addEventListener('resize', onResize);
  36. function onResize() {
  37. $scope.$digest();
  38. }
  39. $scope.$on('$destroy', function() {
  40. $window.removeEventListener('resize', onResize);
  41. });
  42. vm.getColumnWidth = // }
  43. // this.lastStartIdx = index;
  44. function(idx) {
  45. return {
  46. 'width': vm.columnWidths[idx] + 'px',
  47. 'min-width':vm.columnWidths[idx] + 'px',
  48. 'margin-left':'8px',
  49. 'margin-right':'8px'
  50. };
  51. }
  52. vm.getMaxListWidth = function() {
  53. var res=0;
  54. for (var i=0;i<vm.columnWidths.length;i++)
  55. res += vm.columnWidths[i]+6+8+10;
  56. if ($('#header').width()>0)
  57. $('#container').css('width',($('#header').width()+96)+'px');
  58. else
  59. $('#container').css('width','100%');
  60. return {'width': res+ 'px!important;'}
  61. }
  62. vm.setOrderField = function(field) {
  63. if (vm.filter.orderField!=field)
  64. vm.filter.orderField = field;
  65. else
  66. vm.filter.orderField = "-" +field;
  67. vm.getTblFunzioni();
  68. }
  69. vm.cancellaFunzione=function(idx,event) {
  70. event.preventDefault();
  71. event.stopPropagation();
  72. utilsSvc.showConfirm("Conferma", "Confermi la cancellazione dell'elemento selezionato?")
  73. .then(function(res){
  74. FunzioniOrdinanti.Delete({id:vm.records[idx].id})
  75. .$promise.then(function(data){
  76. vm.getTblFunzioni();
  77. })
  78. })
  79. }
  80. vm.nuovaFunzione=function(event) {
  81. FunzioniOrdinanti.New()
  82. .$promise.then(function(data){
  83. vm.records.push(data);
  84. vm.editFunzione(vm.records.length-1,event);
  85. })
  86. }
  87. vm.editFunzione = function(idx, ev) {
  88. $mdDialog.show({
  89. targetEvent:ev,
  90. templateUrl: 'templates/funzioneOrdinante.html',
  91. controller: 'funzioneOrdinanteCtrl',
  92. locals: {funzione: vm.records[idx]},
  93. multiple: true
  94. }).then(function(res){
  95. FunzioniOrdinanti.save(res).$promise.then(
  96. function(res){
  97. if (res==null ||res.value==null || res.value == '') {
  98. vm.getTblFunzioni();
  99. utilsSvc.showMessage('Salvataggio modifiche effettuato');
  100. } else {
  101. utilsSvc.show(res.value);
  102. }
  103. },
  104. function(err){
  105. utilsSvc.handleHttpError(err);
  106. }
  107. );
  108. });
  109. }
  110. vm.infiniteItems = {
  111. numLoaded_: 0,
  112. toLoad_: 0,
  113. loading_:false,
  114. lastStartIdx:-1,
  115. listPromise:null,
  116. canceler: $q.defer(),
  117. // Required.
  118. getItemAtIndex: function(index) {
  119. if (vm.maxItems==0 || index>vm.maxItems)
  120. return null;
  121. if (!vm.infiniteItems.loading_)
  122. if (index > vm.records.length) {
  123. this.fetchMoreItems_(index);
  124. return null;
  125. }
  126. return vm.records [index];
  127. },
  128. // Required.
  129. // For infinite scroll behavior, we always return a slightly
  130. // higher
  131. // number than the previously loaded items.
  132. getLength: function() {
  133. return vm.maxItems;
  134. },
  135. fetchMoreItems_: function(index) {
  136. if (this.toLoad_ < index) {
  137. this.toLoad_ += vm.itemsPerPage;
  138. utilsSvc.showWaitMessage('Ricerca in corso...');
  139. vm.infiniteItems.loading_ = true;
  140. this.listPromise = FunzioniOrdinanti.ListItems({start: vm.records.length,size:Math.max(vm.records.length+index,vm.itemsPerPage),filter: vm.filter.filterText, orderBy:vm.filter.orderField}).$promise;
  141. var mod=this;
  142. this.listPromise.then(
  143. function(data){
  144. vm.infiniteItems.loading_ = false;
  145. vm.infiniteItems.toLoad_=0;
  146. utilsSvc.cancelWaitMessage();
  147. vm.records = vm.records.concat(data);
  148. mod.numLoaded_ = vm.records.length;
  149. mod.lastStartIdx = vm.records.length;
  150. },
  151. function(error) {
  152. vm.infiniteItems.loading_ = false;
  153. vm.infiniteItems.toLoad_=0;
  154. utilsSvc.handleHttpError(error);
  155. }
  156. )
  157. }
  158. }
  159. }
  160. vm.getTblFunzioni = function(){
  161. FunzioniOrdinanti.Count({filter:vm.filter.filterText}).$promise.then(
  162. function(data){
  163. vm.records=[];
  164. vm.maxItems = data.value;
  165. vm.infiniteItems.numLoaded_ = 0;
  166. vm.infiniteItems.toLoad_ = 0;
  167. }
  168. );
  169. }
  170. vm.init = function() {
  171. vm.getTblFunzioni();
  172. }
  173. vm.init();
  174. })
  175. .controller("funzioneOrdinanteCtrl",function($scope, $mdDialog,locals){
  176. $scope.funzione = angular.copy(locals.funzione);
  177. if ($scope.funzione.funzioneOrdinante!=null)
  178. $scope.funzione.funzioneOrdinante = $scope.funzione.funzioneOrdinante.trim();
  179. if ($scope.funzione.descrizione!=null)
  180. $scope.funzione.descrizione = $scope.funzione.descrizione.trim();
  181. $scope.confirmDialog = function(){
  182. $mdDialog.hide($scope.funzione);
  183. }
  184. $scope.cancelDialog=function(){
  185. $mdDialog.cancel();
  186. }
  187. })
  188. ;