]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/web/js/ui/default/actor/user/register.js
experimental flattened/idl-aware user editor that takes advantage of auto-widgets...
[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('fieldmapper.IDL');
5 dojo.require('openils.PermaCrud');
6 dojo.require('openils.widget.AutoGrid');
7 dojo.require('openils.widget.AutoFieldWidget');
8 dojo.require('dijit.form.CheckBox');
9
10 var pcrud;
11 var fmClasses = ['au', 'ac', 'aua', 'actsc', 'asv', 'asvq', 'asva'];
12 var fieldDoc = {};
13
14
15 function load() {
16     pcrud = new openils.PermaCrud();
17     pcrud.search('fdoc', 
18         {fm_class:fmClasses},
19         {
20             oncomplete : function(r) {
21                 var list = openils.Util.readResponse(r, null, true);
22                 for(var i in list) {
23                     var doc = list[i];
24                     if(!fieldDoc[doc.fm_class()])
25                         fieldDoc[doc.fm_class()] = {};
26                     fieldDoc[doc.fm_class()][doc.field()] = doc;
27                 }
28                 loadTable();
29             }
30         }
31     );
32 }
33
34 function loadTable() {
35     var tbody = dojo.byId('uedit-tbody');
36
37     for(var idx = 0; tbody.childNodes[idx]; idx++) {
38
39         var row = tbody.childNodes[idx];
40         if(row.nodeType != row.ELEMENT_NODE) continue;
41         var fmcls = row.getAttribute('fmclass');
42         if(!fmcls) continue;
43
44         var fmfield = row.getAttribute('fmfield');
45         var wclass = row.getAttribute('wclass');
46         var wstyle = row.getAttribute('wstyle');
47         var fieldIdl = fieldmapper.IDL.fmclasses[fmcls].field_map[fmfield];
48
49         if(!fieldIdl)
50             console.log("failed loading " + fmcls + ' : ' + fmfield);
51
52         var existing = dojo.query('td', row);
53         var htd = existing[0] || row.appendChild(document.createElement('td'));
54         var ltd = existing[1] || row.appendChild(document.createElement('td'));
55         var wtd = existing[2] || row.appendChild(document.createElement('td'));
56
57         openils.Util.addCSSClass(htd, 'uedit-help');
58         if(fieldDoc[fmcls] && fieldDoc[fmcls][fmfield]) {
59             var link = dojo.byId('uedit-help-template').cloneNode(true);
60             link.id = '';
61             link.setAttribute('href', 'javascript:ueLoadContextHelp("'+fmcls+'","'+fmfield+'")');
62             openils.Util.removeCSSClass(link, 'hidden');
63             htd.appendChild(link);
64             console.log(link.href);
65         }
66
67         if(!ltd.textContent) {
68             var span = document.createElement('span');
69             ltd.appendChild(document.createTextNode(fieldIdl.label));
70         }
71
72         span = document.createElement('span');
73         wtd.appendChild(span);
74
75         var widget = new openils.widget.AutoFieldWidget({
76             idlField : fieldIdl,
77             fmObject : null, // XXX
78             fmClass : fmcls,
79             parentNode : span,
80             widgetClass : wclass,
81             dijitArgs : {style: wstyle},
82             orgLimitPerms : ['UPDATE_USER'],
83         });
84         widget.build();
85     }
86 }
87
88 function ueLoadContextHelp(fmcls, fmfield) {
89     openils.Util.removeCSSClass(dojo.byId('uedit-help-div'), 'hidden');
90     dojo.byId('uedit-help-field').innerHTML = fieldmapper.IDL.fmclasses[fmcls].field_map[fmfield].label;
91     dojo.byId('uedit-help-text').innerHTML = fieldDoc[fmcls][fmfield].string();
92 }
93
94
95 openils.Util.addOnLoad(load);
96