1 angular.module('egZ3950Mod', ['egCoreMod', 'ui.bootstrap'])
2 .factory('egZ3950TargetSvc',
3 ['$q', 'egCore', 'egAuth',
4 function($q, egCore, egAuth) {
11 service.loadTargets = function() {
14 'open-ils.search.z3950.retrieve_services',
16 ).then(function(res) {
17 // keep the reference, just clear the list
18 service.targets.length = 0;
19 // native Evergreen search goes first
20 var localTarget = res['native-evergreen-catalog'];
21 delete res['native-evergreen-catalog'];
22 angular.forEach(res, function(value, key) {
31 service.targets.sort(function (a, b) {
34 return a < b ? -1 : (a > b ? 1 : 0);
36 service.targets.unshift({
37 code: 'native-evergreen-catalog',
38 settings: localTarget,
46 service.loadActiveSearchFields = function() {
47 // don't want to throw away the reference, otherwise
48 // directives bound to searchFields won't
50 var curFormInput = {};
51 for (var field in service.searchFields) {
52 curFormInput[field] = service.searchFields[field].query;
53 delete service.searchFields[field];
55 angular.forEach(service.targets, function(target, idx) {
56 if (target.selected) {
57 angular.forEach(target.settings.attrs, function(attr, key) {
58 if (!(key in service.searchFields)) service.searchFields[key] = {
60 query : (key in curFormInput) ? curFormInput[key] : ''
67 service.clearSearchFields = function() {
68 for (var field in service.searchFields) {
69 service.searchFields[field].query = '';
73 // return the selected Z39.50 targets and search strings
74 // in a format suitable for passing directly to
75 // open-ils.search.z3950.search_class
76 service.currentQuery = function() {
84 angular.forEach(service.targets, function(target, idx) {
85 if (target.selected) {
86 query.service.push(target.code);
87 query.username.push(target.username);
88 query.password.push(target.password);
91 angular.forEach(service.searchFields, function(value, key) {
92 if (value.query && value.query.trim()) {
93 query.search[key] = value.query.trim();
102 .directive("egZ3950TargetList", function () {
109 templateUrl: './cat/z3950/t_target',
111 ['$scope','egZ3950TargetSvc',
112 function($scope , egZ3950TargetSvc) {
113 $scope.targets = egZ3950TargetSvc.targets;
114 $scope.$watch('targets', function(oldVal, newVal) {
115 egZ3950TargetSvc.loadActiveSearchFields();
120 .directive("egZ3950SearchFieldList", ['egZ3950TargetSvc',
121 function(egZ3950TargetSvc) {
126 templateUrl: './cat/z3950/t_search_fields',
127 link: function(scope, elem, attr) {
128 scope.fields = egZ3950TargetSvc.searchFields;