]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/actor/user/register.js
initial plugin of staff-cats
[working/Evergreen.git] / Open-ILS / web / js / ui / default / actor / user / register.js
1 dojo.require('dojo.data.ItemFileReadStore');
2 dojo.require('dijit.form.Textarea');
3 dojo.require('dijit.form.FilteringSelect');
4 dojo.require('dijit.form.ComboBox');
5 dojo.require('fieldmapper.IDL');
6 dojo.require('openils.PermaCrud');
7 dojo.require('openils.widget.AutoGrid');
8 dojo.require('openils.widget.AutoFieldWidget');
9 dojo.require('dijit.form.CheckBox');
10
11 var pcrud;
12 var fmClasses = ['au', 'ac', 'aua', 'actsc', 'asv', 'asvq', 'asva'];
13 var fieldDoc = {};
14 var statCats;
15 var surveys;
16 var staff;
17
18
19 function load() {
20     staff = new openils.User().user;
21     pcrud = new openils.PermaCrud();
22
23     var list = pcrud.search('fdoc', {fm_class:fmClasses});
24     for(var i in list) {
25         var doc = list[i];
26         if(!fieldDoc[doc.fm_class()])
27             fieldDoc[doc.fm_class()] = {};
28         fieldDoc[doc.fm_class()][doc.field()] = doc;
29     }
30
31     statCats = fieldmapper.standardRequest(
32         ['open-ils.circ', 'open-ils.circ.stat_cat.actor.retrieve.all'],
33         {params : [openils.User.authtoken, staff.ws_ou()]}
34     );
35
36     surveys = fieldmapper.standardRequest(
37         ['open-ils.circ', 'open-ils.circ.survey.retrieve.all'],
38         {params : [openils.User.authtoken]}
39     );
40
41     loadTable();
42 }
43
44 function loadTable() {
45     var tbody = dojo.byId('uedit-tbody');
46     for(var idx = 0; tbody.childNodes[idx]; idx++) {
47         var row = tbody.childNodes[idx];
48         if(row.nodeType != row.ELEMENT_NODE) continue;
49         var fmcls = row.getAttribute('fmclass');
50         if(!fmcls) continue;
51         fleshFMRow(row, fmcls);
52     }
53
54     for(var idx in statCats) {
55         var stat = statCats[idx];
56         var row = dojo.byId('stat-cat-row-' + idx);
57         if(!row) row = dojo.byId('stat-cat-row-0').cloneNode(true);
58         row.id = 'stat-cat-row-' + idx;
59         dojo.query('[name=name]', row)[0].innerHTML = stat.name();
60         var valtd = dojo.query('[name=widget]', row)[0];
61         var span = valtd.appendChild(document.createElement('span'));
62         new dijit.form.ComboBox({}, span);
63         tbody.insertBefore(row, dojo.byId('survey-cat-divider'));
64     }
65 }
66
67
68 function fleshFMRow(row, fmcls) {
69     var fmfield = row.getAttribute('fmfield');
70     var wclass = row.getAttribute('wclass');
71     var wstyle = row.getAttribute('wstyle');
72     var fieldIdl = fieldmapper.IDL.fmclasses[fmcls].field_map[fmfield];
73
74     var existing = dojo.query('td', row);
75     var htd = existing[0] || row.appendChild(document.createElement('td'));
76     var ltd = existing[1] || row.appendChild(document.createElement('td'));
77     var wtd = existing[2] || row.appendChild(document.createElement('td'));
78
79     openils.Util.addCSSClass(htd, 'uedit-help');
80     if(fieldDoc[fmcls] && fieldDoc[fmcls][fmfield]) {
81         var link = dojo.byId('uedit-help-template').cloneNode(true);
82         link.id = '';
83         link.setAttribute('href', 'javascript:ueLoadContextHelp("'+fmcls+'","'+fmfield+'")');
84         openils.Util.removeCSSClass(link, 'hidden');
85         htd.appendChild(link);
86     }
87
88     if(!ltd.textContent) {
89         var span = document.createElement('span');
90         ltd.appendChild(document.createTextNode(fieldIdl.label));
91     }
92
93     span = document.createElement('span');
94     wtd.appendChild(span);
95
96     var widget = new openils.widget.AutoFieldWidget({
97         idlField : fieldIdl,
98         fmObject : null, // XXX
99         fmClass : fmcls,
100         parentNode : span,
101         widgetClass : wclass,
102         dijitArgs : {style: wstyle},
103         orgLimitPerms : ['UPDATE_USER'],
104     });
105     widget.build();
106 }
107
108
109 function ueLoadContextHelp(fmcls, fmfield) {
110     openils.Util.removeCSSClass(dojo.byId('uedit-help-div'), 'hidden');
111     dojo.byId('uedit-help-field').innerHTML = fieldmapper.IDL.fmclasses[fmcls].field_map[fmfield].label;
112     dojo.byId('uedit-help-text').innerHTML = fieldDoc[fmcls][fmfield].string();
113 }
114
115
116 openils.Util.addOnLoad(load);
117