1 angular.module('egWorkLogApp',
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('/admin/workstation/log', {
12 templateUrl: './admin/workstation/t_log',
13 controller: 'WorkLogCtrl',
17 $routeProvider.otherwise({redirectTo : '/admin/workstation/log'});
20 .controller('WorkLogCtrl',
21 ['$scope','$q','$routeParams','$window','$timeout','egCore','egGridDataProvider','egWorkLog',
22 function($scope , $q , $routeParams , $window , $timeout , egCore , egGridDataProvider , egWorkLog ) {
24 var work_log_entries = [];
25 var patron_log_entries = [];
27 var work_log_provider = egGridDataProvider.instance({});
28 var patron_log_provider = egGridDataProvider.instance({});
29 $scope.grid_work_log_provider = work_log_provider;
30 $scope.grid_patron_log_provider = patron_log_provider;
32 function load_item(log_entries) {
33 if (!log_entries) return;
34 if (!angular.isArray(log_entries)) log_entries = [log_entries];
35 angular.forEach(log_entries, function(log_entry) {
37 egCore.env.basePath + '/cat/item/' + log_entry.item_id,
43 $scope.load_item = function(action, data, entries) {
47 function load_patron(log_entries) {
48 if (!log_entries) return;
49 if (!angular.isArray(log_entries)) log_entries = [log_entries];
50 angular.forEach(log_entries, function(log_entry) {
53 '/circ/patron/' + log_entry.patron_id + '/checkout',
59 $scope.load_patron = function(action, data, entries) {
63 $scope.grid_controls = {
64 activateItem : load_patron
67 $scope.refresh_ui = function() {
68 work_log_entries = [];
69 patron_log_entries = [];
70 work_log_provider.refresh();
71 patron_log_provider.refresh();
74 function fetch_hold(deferred,entry) {
75 return egCore.pcrud.search('ahr',
76 { 'id' : entry.hold_id }, {
79 'ahr' : ['usr','current_copy'],
84 entry.patron_id = hold.usr().id();
85 entry.user = hold.usr().family_name();
86 if (hold.current_copy()) {
87 entry.item = hold.current_copy().barcode();
93 function fetch_patron(deferred,entry) {
94 return egCore.pcrud.search('au',
95 { 'id' : entry.patron_id }, {}
98 entry.user = usr.family_name();
103 work_log_provider.get = function(offset, count) {
104 var log_entries = egWorkLog.retrieve_all();
105 console.log(log_entries);
106 var deferred = $q.defer();
109 var entries = count ?
110 log_entries.work_log.slice(offset, offset + count) :
111 log_entries.work_log;
115 // notify right away and in order; fetch_* will
116 // fill in entry later if necessary
117 promises.push($timeout(function() { deferred.notify(el) }));
118 if (el.action == 'requested_hold') {
119 promises.push(fetch_hold(deferred,el));
120 } else if (el.action == 'registered_patron') {
121 promises.push(fetch_patron(deferred,el));
122 } else if (el.action == 'edited_patron') {
123 promises.push(fetch_patron(deferred,el));
124 } else if (el.action == 'paid_bill') {
125 promises.push(fetch_patron(deferred,el));
129 $q.all(promises).then(deferred.resolve);
131 return deferred.promise;
134 patron_log_provider.get = function(offset, count) {
135 var log_entries = egWorkLog.retrieve_all();
136 console.log(log_entries);
137 var deferred = $q.defer();
140 var entries = count ?
141 log_entries.patron_log.slice(offset, offset + count) :
142 log_entries.patron_log;
143 log_entries.patron_log.forEach(
146 // notify right away and in order; fetch_* will
147 // fill in entry later if necessary
148 promises.push($timeout(function() { deferred.notify(el) }));
149 if (el.action == 'requested_hold') {
150 promises.push(fetch_hold(deferred,el));
151 } else if (el.action == 'registered_patron') {
152 promises.push(fetch_patron(deferred,el));
153 } else if (el.action == 'edited_patron') {
154 promises.push(fetch_patron(deferred,el));
155 } else if (el.action == 'paid_bill') {
156 promises.push(fetch_patron(deferred,el));
160 $q.all(promises).then(deferred.resolve);
162 return deferred.promise;