1 angular.module('egPendingPatronsApp',
2 ['ngRoute', 'ui.bootstrap', 'egCoreMod', 'egUiMod', 'egGridMod'])
4 .config(function($routeProvider, $locationProvider, $compileProvider) {
5 $locationProvider.html5Mode(true);
6 $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|mailto|blob):/); // grid export
8 var resolver = {delay :
9 ['egStartup', function(egStartup) {return egStartup.go()}]}
11 $routeProvider.when('/circ/patron/pending/list', {
12 templateUrl: './circ/patron/t_pending_list',
13 controller: 'PendingPatronsCtrl',
17 $routeProvider.otherwise({redirectTo : '/circ/patron/pending/list'});
20 .controller('PendingPatronsCtrl',
21 ['$scope','$q','$routeParams','$window','$location','egCore','egGridDataProvider',
22 function($scope , $q , $routeParams , $window , $location , egCore , egGridDataProvider) {
26 var pending_patrons = [];
27 var provider = egGridDataProvider.instance({});
28 $scope.grid_data_provider = provider;
30 function load_patron(item) {
31 if (angular.isArray(item)) item = item[0];
35 '/circ/patron/register/stage/' + item.user.usrname()).absUrl(),
40 function delete_patron(sel_pending_users) {
41 if (angular.isArray(sel_pending_users)){
43 angular.forEach(sel_pending_users, function(stgu){
44 promises.push(egCore.net.request(
46 'open-ils.actor.user.stage.delete',
52 $q.all(promises).then(refresh_page);
56 $scope.load_patron = function(action, data, items) {
60 $scope.deletePatron = function(action, data, items) {
64 $scope.grid_controls = {
65 activateItem : load_patron,
66 deleteItem : delete_patron
69 function refresh_page() {
74 if (typeof BroadcastChannel != 'undefined') {
76 holdings_bChannel = new BroadcastChannel('eg.pending_usr.update');
77 holdings_bChannel.onmessage = function(e){
78 if (e.data && e.data.usr.home_ou == $scope.context_org.id()){
79 // pending usr was registered, refresh grid!
80 console.log("Got broadcast from channel eg.pending_usr.update for usr id: " + e.data.usr.id);
86 provider.get = function(offset, count) {
87 var deferred = $q.defer();
92 'open-ils.actor.user.stage.retrieve.by_org',
93 egCore.auth.token(), $scope.context_org.id(),
97 deferred.resolve, null,
99 user.id = user.user.row_id();
100 user.user.home_ou(egCore.org.get(user.user.home_ou()));
102 // only one (mailing) address is captured during patron
104 user.mailing_address = user.mailing_addresses[0];
105 pending_patrons[offset + recv_index++] = user;
106 deferred.notify(user);
110 return deferred.promise;
113 $scope.context_org = egCore.org.get(egCore.auth.user().ws_ou())
114 $scope.$watch('context_org', function(newVal, oldVal) {
115 if (newVal && newVal != oldVal) refresh_page();