]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/js/ui/default/staff/circ/patron/pending.js
0912eb84c22a18b09e48d93c622e62fefc3bf38e
[Evergreen.git] / Open-ILS / web / js / ui / default / staff / circ / patron / pending.js
1 angular.module('egPendingPatronsApp', 
2     ['ngRoute', 'ui.bootstrap', 'egCoreMod', 'egUiMod', 'egGridMod'])
3
4 .config(function($routeProvider, $locationProvider, $compileProvider) {
5     $locationProvider.html5Mode(true);
6     $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|mailto|blob):/); // grid export
7         
8     var resolver = {delay : 
9         ['egStartup', function(egStartup) {return egStartup.go()}]}
10
11     $routeProvider.when('/circ/patron/pending/list', {
12         templateUrl: './circ/patron/t_pending_list',
13         controller: 'PendingPatronsCtrl',
14         resolve : resolver
15     });
16
17     $routeProvider.otherwise({redirectTo : '/circ/patron/pending/list'});
18 })
19
20 .controller('PendingPatronsCtrl',
21        ['$scope','$q','$routeParams','$window','$location','egCore','egGridDataProvider',
22 function($scope , $q , $routeParams , $window , $location , egCore , egGridDataProvider) {
23
24     console.log('HERE');
25
26     var pending_patrons = [];
27     var provider = egGridDataProvider.instance({});
28     $scope.grid_data_provider = provider;
29
30     function load_patron(item) {
31         if (angular.isArray(item)) item = item[0];
32         if (!item) return;
33         $window.open(
34             $location.path(
35                 '/circ/patron/register/stage/' + item.user.usrname()).absUrl(),
36             '_blank'
37         ).focus();
38     }
39
40     $scope.load_patron = function(action, data, items) {
41         load_patron(items);
42     }
43
44     $scope.grid_controls = {
45         activateItem : load_patron
46     }
47
48     function refresh_page() {
49         pending_patrons = [];
50         provider.refresh();
51     }
52
53     if (typeof BroadcastChannel != 'undefined') {
54         // connect 2 bChannel
55         holdings_bChannel = new BroadcastChannel('eg.pending_usr.update');
56         holdings_bChannel.onmessage = function(e){
57             if (e.data && e.data.usr.home_ou == $scope.context_org.id()){
58                 // pending usr was registered, refresh grid!
59                 console.log("Got broadcast from channel eg.pending_usr.update for usr id: " + e.data.usr.id);
60                 refresh_page();
61             }
62         }
63     };
64
65     provider.get = function(offset, count) {
66         var deferred = $q.defer();
67         var recv_index = 0;
68
69         egCore.net.request(
70             'open-ils.actor',
71             'open-ils.actor.user.stage.retrieve.by_org',
72             egCore.auth.token(), $scope.context_org.id()
73
74         ).then(
75             deferred.resolve, null, 
76             function(user) {
77                 user.id = user.user.row_id();
78                 user.user.home_ou(egCore.org.get(user.user.home_ou()));
79
80                 // only one (mailing) address is captured during patron
81                 // self-registration
82                 user.mailing_address = user.mailing_addresses[0];
83                 pending_patrons[offset + recv_index++] = user;
84                 deferred.notify(user);
85             }
86         );
87
88         return deferred.promise;
89     }
90
91     $scope.context_org = egCore.org.get(egCore.auth.user().ws_ou())
92     $scope.$watch('context_org', function(newVal, oldVal) {
93         if (newVal && newVal != oldVal) refresh_page();
94     });
95 }])
96