From: Galen Charlton Date: Wed, 27 May 2020 23:03:40 +0000 (-0400) Subject: finish up core functionality of the to be staged tab X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=0af477d9c35e57ad202b70b7404c7b3b15ada47b;p=working%2FEvergreen.git finish up core functionality of the to be staged tab * checking for refreshes * implementing the mark as staged action TODO: figure out why the to-be-staged directive gets initialized even when switch to a tab that doesn't include it. This is causing the $interval checking for refreshes to keep going unnecessarily. Signed-off-by: Galen Charlton --- diff --git a/Open-ILS/src/templates/staff/circ/curbside/index.tt2 b/Open-ILS/src/templates/staff/circ/curbside/index.tt2 index 95b4ea09f3..4ad4410f26 100644 --- a/Open-ILS/src/templates/staff/circ/curbside/index.tt2 +++ b/Open-ILS/src/templates/staff/circ/curbside/index.tt2 @@ -11,6 +11,9 @@ [% END %] diff --git a/Open-ILS/src/templates/staff/circ/curbside/t_to_be_staged_manager.tt2 b/Open-ILS/src/templates/staff/circ/curbside/t_to_be_staged_manager.tt2 index 5f693d27cd..8a207648ec 100644 --- a/Open-ILS/src/templates/staff/circ/curbside/t_to_be_staged_manager.tt2 +++ b/Open-ILS/src/templates/staff/circ/curbside/t_to_be_staged_manager.tt2 @@ -1,4 +1,7 @@
+
+ [% l('Updates to the curbside appointment list are available. Please refresh.') %] +
+ label="[% l('Refresh List')%]"> @@ -20,8 +23,12 @@ - - + +
diff --git a/Open-ILS/web/js/ui/default/staff/circ/curbside/directives/to_be_staged_manager.js b/Open-ILS/web/js/ui/default/staff/circ/curbside/directives/to_be_staged_manager.js index 1397e29f85..ce101dcc27 100644 --- a/Open-ILS/web/js/ui/default/staff/circ/curbside/directives/to_be_staged_manager.js +++ b/Open-ILS/web/js/ui/default/staff/circ/curbside/directives/to_be_staged_manager.js @@ -8,18 +8,72 @@ angular.module('egCurbsideAppDep') templateUrl: './circ/curbside/t_to_be_staged_manager', controller: ['$scope','$q','egCurbsideCoreSvc','egCore','egGridDataProvider', - '$uibModal','$timeout','$location','egConfirmDialog','ngToast', + '$uibModal','$timeout','$location','egConfirmDialog','ngToast','$interval', function($scope , $q , egCurbsideCoreSvc , egCore , egGridDataProvider , - $uibModal , $timeout , $location , egConfirmDialog , ngToast) { + $uibModal , $timeout , $location , egConfirmDialog , ngToast , $interval) { - $scope.gridControls = { - activateItem : function (item) { console.debug('gmc') } // TODO - }; + $scope.gridControls = {}; + + $scope.wasHandled = {}; + $scope.refreshNeeded = false; + latestTime = undefined; + var checkRefresh; + checkRefresh = $interval(function() { + egCurbsideCoreSvc.get_latest_to_be_staged().then(function(latest) { + if (angular.isDefined(latest)) { + if (angular.isDefined(latestTime) && latestTime != latest) { + $scope.refreshNeeded = true; + } + latestTime = latest; + } + }); + }, 10000); + $scope.$on('$destroy', function() { + if (angular.isDefined(checkRefresh)) { + $interval.cancel(checkRefresh); + checkRefresh = undefined; + }; + }); $scope.gridDataProvider = egGridDataProvider.instance({ get : function(offset, count) { + $scope.wasHandled = {}; + $scope.refreshNeeded = false; return egCurbsideCoreSvc.get_to_be_staged(offset, count); } }); + $scope.refresh_staging = function() { + $scope.gridControls.refresh(); + } + + $scope.gridCellHandlers = { }; + $scope.gridCellHandlers.mark_staged = function(id) { + egCurbsideCoreSvc.mark_staged(id).then(function(resp) { + if (evt = egCore.evt.parse(resp)) { + ngToast.danger(egCore.strings.$replace( + egCore.strings.FAILED_CURBSIDE_MARK_STAGED, + { slot_id : id, evt_code : evt.code } + )); + return; + } + if (typeof resp == 'undefined') { + ngToast.warning(egCore.strings.$replace( + egCore.strings.NOTFOUND_CURBSIDE_MARK_STAGED, + { slot_id : id } + )); + return; + } + ngToast.success(egCore.strings.$replace( + egCore.strings.SUCCESS_CURBSIDE_MARK_STAGED, + { slot_id : id } + )); + $scope.wasHandled[id] = true; + $timeout(function() { $scope.refresh_staging() }, 500); + }); + } + $scope.gridCellHandlers.wasHandled = function(id) { + return $scope.wasHandled[id]; + } + }]}}); diff --git a/Open-ILS/web/js/ui/default/staff/circ/curbside/services/core.js b/Open-ILS/web/js/ui/default/staff/circ/curbside/services/core.js index 49e5ec56b0..87f2bbbcc9 100644 --- a/Open-ILS/web/js/ui/default/staff/circ/curbside/services/core.js +++ b/Open-ILS/web/js/ui/default/staff/circ/curbside/services/core.js @@ -14,6 +14,28 @@ function(egCore , orderByFilter , $q , $filter , $uibModal , ngToast , egConfirm offset ); }; + service.get_latest_to_be_staged = function() { + return egCore.net.request( + 'open-ils.curbside', + 'open-ils.curbside.fetch_to_be_staged.latest', + egCore.auth.token() + ).then(function(resp) { + if (evt = egCore.evt.parse(resp)) { + return undefined; + } else { + return resp; + } + }); + } + + service.mark_staged = function(slot_id) { + return egCore.net.request( + 'open-ils.curbside', + 'open-ils.curbside.mark_staged', + egCore.auth.token(), + slot_id + ); + } return service; }])