1 /* ---------------------------------------------------------------------------
2 * Copyright (C) 2008 Georgia Public Library Service
3 * Bill Erickson <erickson@esilibrary.com>
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 * ---------------------------------------------------------------------------
17 if(!dojo._hasResource['openils.acq.Provider']) {
18 dojo._hasResource['openils.acq.Provider'] = true;
19 dojo.provide('openils.acq.Provider');
20 dojo.require('fieldmapper.Fieldmapper');
21 dojo.require('fieldmapper.dojoData');
23 /** Declare the Provider class with dojo */
24 dojo.declare('openils.acq.Provider', null, {
25 /* add instance methods here if necessary */
28 openils.acq.Provider.cache = {};
30 /* define some static provider methods ------- */
32 openils.acq.Provider.createStore = function(onComplete, limitPerm) {
33 /** Fetches the list of funding_sources and builds a grid from them */
38 while(msg = r.recv()) {
39 var provider = msg.content();
40 openils.acq.Provider.cache[provider.id()] = provider;
43 onComplete(acqpro.toStoreData(items));
46 fieldmapper.standardRequest(
47 ['open-ils.acq', 'open-ils.acq.provider.org.retrieve'],
49 params: [openils.User.authtoken],
57 * Synchronous provider retrievel method
59 openils.acq.Provider.retrieve = function(id) {
60 if(openils.acq.Provider.cache[id])
61 return openils.acq.Provider.cache[id];
63 openils.acq.Provider.cache[id] =
64 fieldmapper.standardRequest(
65 ['open-ils.acq', 'open-ils.acq.provider.retrieve'],
66 [openils.User.authtoken, id]
68 return openils.acq.Provider.cache[id];
71 openils.acq.Provider.create = function(fields, oncomplete) {
72 var provider = new acqpro()
73 for(var field in fields)
74 provider[field](fields[field]);
76 fieldmapper.standardRequest(
77 ['open-ils.acq', 'open-ils.acq.provider.create'],
79 params: [openils.User.authtoken, provider],
80 oncomplete: function(r) {
82 var id = msg.content();
91 openils.acq.Provider.retrieveLineitemProviderAttrDefs = function(providerId, oncomplete) {
92 fieldmapper.standardRequest(
93 ['open-ils.acq', 'open-ils.acq.lineitem_provider_attr_definition.provider.retrieve.atomic'],
95 params: [openils.User.authtoken, providerId],
96 oncomplete: function(r) {oncomplete(r.recv().content());}
101 openils.acq.Provider.createLineitemProviderAttrDef = function(fields, oncomplete) {
102 var attr = new acqlipad();
103 for(var field in fields)
104 attr[field](fields[field]);
106 fieldmapper.standardRequest(
107 ['open-ils.acq', 'open-ils.acq.lineitem_provider_attr_definition.create'],
109 params: [openils.User.authtoken, attr],
110 oncomplete: function(r) {oncomplete(r.recv().content());}
116 openils.acq.Provider.lineitemProviderAttrDefDeleteList = function(list, oncomplete) {
117 openils.acq.Provider._lineitemProviderAttrDefDeleteList(list, 0, oncomplete);
120 openils.acq.Provider._lineitemProviderAttrDefDeleteList = function(list, idx, oncomplete) {
121 if(idx >= list.length)
123 fieldmapper.standardRequest(
124 ['open-ils.acq', 'open-ils.acq.lineitem_provider_attr_definition.delete'],
126 params: [openils.User.authtoken, list[idx]],
127 oncomplete: function(r) {
129 stat = msg.content();
130 /* XXX CHECH FOR EVENT */
131 openils.acq.Provider._lineitemProviderAttrDefDeleteList(list, ++idx, oncomplete);
137 openils.acq.Provider.storeCache = [];
139 openils.acq.Provider.buildPermProviderSelector = function(perm, selector) {
140 dojo.require('dojo.data.ItemFileReadStore');
142 function hookupStore(store) {
143 selector.store = store;
147 function buildPicker(r) {
149 var providerList = [];
150 while (msg = r.recv()) {
151 var provider = msg.content();
152 providerList.push(provider);
155 var store = new dojo.data.ItemFileReadStore({data:acqpro.toStoreData(providerList)});
158 openils.acq.Provider.storeCache[perm] = store;
161 if (openils.acq.Provider.storeCache[perm]) {
162 hookupStore(openils.acq.Provider.storeCache[perm]);
164 fieldmapper.standardRequest(
165 ['open-ils.acq', 'open-ils.acq.provider.org.retrieve'],
166 { params: [openils.User.authtoken, null,
167 {flesh_summary:1, limit_perm:perm}],
168 oncomplete: buildPicker,