]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/admin/copy_locations.js
a83acb2f63db194589f179a0bcfb9a4278f63fdb
[Evergreen.git] / Open-ILS / xul / staff_client / server / admin / copy_locations.js
1 var RETRIEVE_CL = 'open-ils.circ:open-ils.circ.copy_location.retrieve.all';
2 var CREATE_CL = 'open-ils.circ:open-ils.circ.copy_location.create';
3 var UPDATE_CL = 'open-ils.circ:open-ils.circ.copy_location.update';
4 var DELETE_CL = 'open-ils.circ:open-ils.circ.copy_location.delete';
5
6
7 var YES;
8 var NO;
9 var locationSet;
10 var focusOrg;
11
12 var myPerms = [
13         'CREATE_COPY_LOCATION',
14         'UPDATE_COPY_LOCATION', 
15         'DELETE_COPY_LOCATION',
16         ];
17
18 function clEditorInit() {
19         cgi = new CGI();
20         session = cgi.param('ses');
21         if(!session) throw "User session is not defined!";
22         fetchUser(session);
23         $('user').appendChild(text(USER.usrname()));
24         YES = $('yes').innerHTML;
25         NO = $('no').innerHTML;
26     locationSet = [];
27
28         setTimeout( 
29                 function() { 
30                         fetchHighestWorkPermOrgs( SESSION, USER.id(), myPerms ); 
31                         $('cl_new_name').focus();
32                         clBuildNew();
33                         clGo(); 
34                 }, 20 );
35 }
36
37
38 function clHoldMsg() {
39         alert($('cl_hold_msg').innerHTML);
40 }
41
42 function clGo() {       
43     setTimeout(function(){clGo2();}, 500);
44 }
45
46 function clGo2() {      
47     locationSet = {};
48     var req = new Request(RETRIEVE_CL, focusOrg);
49     req.request._last = true;
50     req.callback(clAppendLocation);
51     req.send();
52
53     /*  if we need to add view-all ability, can use this... 
54     var org_list = OILS_WORK_PERMS['CREATE_COPY_LOCATION'];
55     for(var i = 0; i < org_list.length; i++) {
56             var req = new Request(RETRIEVE_CL, org_list[i]);
57             req.callback(clAppendLocation);
58         if(i == org_list.length - 1) 
59             req.request._last = true;
60         req.send();
61     }
62     */
63 }
64
65 function clAppendLocation(r) {
66     var cls = r.getResultObject();
67         if(checkILSEvent(cls)) throw cls;
68     for(var i = 0; i < cls.length; i++) 
69         locationSet[cls[i].id()] = cls[i];
70     if(r._last) 
71         clDraw();
72 }
73
74 function clBuildNew() {
75         org_list = OILS_WORK_PERMS['CREATE_COPY_LOCATION'];
76     var org;
77     if(org_list.length == 0)
78         return;
79         var selector = $('cl_new_owner');
80         var fselector = $('cl_org_filter');
81         buildMergedOrgSel(selector, org_list, 0);
82         buildMergedOrgSel(fselector, org_list, 0);
83     var org = findOrgUnit(org_list[0]);
84     if(org_list.length > 1 || (org.children() &&  org.children()[0])) {
85                 selector.disabled = false;
86         fselector.disabled = false;
87     }
88
89     fselector.onchange = function() {
90         focusOrg = getSelectorVal(fselector);
91         clGo();
92     }
93     
94     focusOrg = USER.ws_ou();
95     if(!orgIsMineFromSet(org_list, USER.ws_ou())) 
96         focusOrg = org_list[0];
97     setSelector(fselector, focusOrg);
98
99
100         var sub = $('sc_new_submit');
101         sub.disabled = false;
102         sub.onclick = clCreateNew;
103 }
104
105 function clCreateNew() {
106         var cl = new acpl();
107         cl.name( $('cl_new_name').value );
108         cl.owning_lib( getSelectorVal( $('cl_new_owner')));
109         cl.holdable( ($('cl_new_hold_yes').checked) ? 1 : 0 );
110         cl.opac_visible( ($('cl_new_vis_yes').checked) ? 1 : 0 );
111         cl.circulate( ($('cl_new_circulate_yes').checked) ? 1 : 0 );
112
113         var req = new Request(CREATE_CL, SESSION, cl);
114         req.send(true);
115         var res = req.result();
116         if(checkILSEvent(res)) throw res;
117         alertId('cl_update_success');
118         clGo();
119 }
120
121 var rowTemplate;
122 function clDraw() {
123
124     var cls = [];
125     for(var x in locationSet)
126         cls.push(locationSet[x]);
127
128         var tbody = $('cl_tbody');
129         if(!rowTemplate)
130                 rowTemplate = tbody.removeChild($('cl_row'));
131         removeChildren(tbody);
132
133     for(var i = 0; i < cls.length; i++) /* force stringify */
134         cls[i].name(new String(cls[i].name()));
135
136         cls = cls.sort( function(a,b) {
137                         if( a.name().toLowerCase() > b.name().toLowerCase() ) return 1;
138                         if( a.name().toLowerCase() < b.name().toLowerCase() ) return -1;
139                         return 0;
140                 });
141
142         for( var c in cls ) {
143                 var cl = cls[c];
144                 var row = rowTemplate.cloneNode(true);
145                 clBuildRow( tbody, row, cl );
146                 tbody.appendChild(row);
147         }
148 }
149
150 function clBuildRow( tbody, row, cl ) {
151         $n( row, 'cl_name').appendChild(text(cl.name()));
152         $n( row, 'cl_owner').appendChild(text(findOrgUnit(cl.owning_lib()).name()));
153         $n( row, 'cl_holdable').appendChild(text( (cl.holdable()) ? YES : NO ) );
154         $n( row, 'cl_visible').appendChild(text( (cl.opac_visible()) ? YES : NO ) );
155         $n( row, 'cl_circulate').appendChild(text( (cl.circulate()) ? YES : NO ) );
156
157         var edit = $n( row, 'cl_edit');
158         edit.onclick = function() { clEdit( cl, tbody, row ); };
159     checkPermOrgDisabled(edit, cl.owning_lib(), 'UPDATE_COPY_LOCATION');
160
161         var del = $n( row, 'cl_delete' );
162         del.onclick = function() { clDelete( cl, tbody, row ); };
163         checkPermOrgDisabled(del, cl.owning_lib(), 'DELETE_COPY_LOCATION');
164 }
165
166 function clEdit( cl, tbody, row ) {
167
168         cleanTbody(tbody, 'edit');
169         var r = $('cl_edit').cloneNode(true);
170         r.setAttribute('edit','1');
171         
172         var name = $n(r, 'cl_edit_name');
173         name.setAttribute('size', cl.name().length + 3);
174         name.value = cl.name();
175
176         $n(r, 'cl_edit_owner').appendChild(text(findOrgUnit(cl.owning_lib()).name()));
177
178         var arr = _clOptions(r);
179         if(cl.holdable()) arr[0].checked = true;
180         else arr[1].checked = true;
181         if(cl.opac_visible()) arr[2].checked = true;
182         else arr[3].checked = true;
183         if(cl.circulate()) arr[4].checked = true;
184         else arr[5].checked = true;
185
186         $n(r, 'cl_edit_cancel').onclick = function(){cleanTbody(tbody,'edit');}
187         $n(r, 'cl_edit_commit').onclick = function(){clEditCommit( tbody, r, cl ); }
188
189         insRow(tbody, row, r);
190         name.focus();
191         name.select();
192 }
193
194 function _clOptions(r) {
195         var arr = [];
196         arr[0] = $n( $n(r,'cl_edit_holdable_yes'), 'cl_edit_holdable');
197         arr[1] = $n( $n(r,'cl_edit_holdable_no'), 'cl_edit_holdable');
198         arr[2] = $n( $n(r,'cl_edit_visible_yes'), 'cl_edit_visible');
199         arr[3] = $n( $n(r,'cl_edit_visible_no'), 'cl_edit_visible');
200         arr[4] = $n( $n(r,'cl_edit_circulate_yes'), 'cl_edit_circulate');
201         arr[5] = $n( $n(r,'cl_edit_circulate_no'), 'cl_edit_circulate');
202         return arr;
203 }
204
205 function clEditCommit( tbody, r, cl ) {
206
207         var arr = _clOptions(r);
208         if(arr[0].checked) cl.holdable(1);
209         else cl.holdable(0);
210         if(arr[2].checked) cl.opac_visible(1);
211         else cl.opac_visible(0);
212         if(arr[4].checked) cl.circulate(1);
213         else cl.circulate(0);
214         cl.name($n(r, 'cl_edit_name').value);
215
216         var req = new Request( UPDATE_CL, SESSION, cl );
217         req.send(true);
218         var res = req.result();
219         if(checkILSEvent(res)) throw res;
220         alertId('cl_update_success');
221
222         clGo();
223 }
224
225
226 function clDelete( cl, tbody, row ) {
227         if(!confirm($('cl_delete_confirm').innerHTML)) return;
228         var req = new Request( DELETE_CL, SESSION, cl.id() );
229         req.send(true);
230         var res = req.result();
231         if(checkILSEvent(res)) throw res;
232         alertId('cl_update_success');
233         clGo();
234 }
235
236