]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/admin/org_unit_settings.js
org unit setting editor that is more context-specific, which honors parent settings...
[Evergreen.git] / Open-ILS / xul / staff_client / server / admin / org_unit_settings.js
1 dojo.require("dijit.layout.LayoutContainer");
2 dojo.require("dijit.layout.ContentPane");
3 dojo.require('dijit.form.FilteringSelect');
4 dojo.require("dojox.grid.Grid");
5 dojo.require("fieldmapper.Fieldmapper");
6 dojo.require("fieldmapper.dojoData");
7 dojo.require("fieldmapper.OrgUtils");
8 dojo.require('dojo.cookie');
9 dojo.require('openils.CGI');
10 dojo.require('openils.User');
11 dojo.require('openils.Event');
12
13 var authtoken;
14 var contextOrg;
15 var user;
16 var contextSelector;
17
18 function osInit(data) {
19     authtoken = dojo.cookie('ses') || new openils.CGI().param('ses');
20     user = new openils.User({authtoken:authtoken}).user;
21     contextOrg = user.ws_ou();
22     contextSelector = dojo.byId('os-context-selector');
23
24     var names = [];
25     for(var key in osSettings)
26         names.push(key);
27
28     fieldmapper.standardRequest(
29         [   'open-ils.actor', 
30             'open-ils.actor.ou_setting.ancestor_default.batch'],
31         {   async: true,
32             params: [contextOrg, names],
33             oncomplete: function(r) {
34                 var data = r.recv().content();
35                 if(e = openils.Event.parse(data))
36                     return alert(e);
37                 osLoadGrid(data);
38             }
39         }
40     );
41     buildMergedOrgSel(contextSelector, user.ws_ou(), 0);
42     // open-ils.actor.user.get_work_ous.ids
43 }
44 dojo.addOnLoad(osInit);
45
46 function osChangeContect() {
47     contextOrg = getSelectorVal(contextSelector);
48 }
49
50 function osLoadGrid(data) {
51     var gridData = {items:[]}
52     for(var key in data) {
53         if(data[key]) {
54             osSettings[key].context = data[key].org;
55             osSettings[key].value = data[key].value;
56         }
57         gridData.items.push({name:key});
58     }
59     gridData.identifier = 'name';
60     var store = new dojo.data.ItemFileReadStore({data:gridData});
61     var model = new dojox.grid.data.DojoData(
62         null, store, {rowsPerPage: 100, clientSort: true, query:{name:'*'}});
63
64     osGrid.setModel(model);
65     osGrid.setStructure(osGridLayout);
66     osGrid.update();
67 }
68
69 function osGetGridData(rowIdx) {
70     var data = this.grid.model.getRow(rowIdx);
71     if(!data) return '';
72     var value = osSettings[data.name][this.field];
73     if(value == null) return '';
74     switch(this.field) {
75         case 'context':
76             return fieldmapper.aou.findOrgUnit(value).shortname();
77         default:
78             return value;
79     }
80 }
81
82 function osGetEditLink(rowIdx) {
83     var data = this.grid.model.getRow(rowIdx);
84     if(!data) return '';
85     return this.value.replace(/SETTING/, data.name);
86 }
87
88 function osLaunchEditor(name) {
89 }
90