]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/server/patron/take_survey.js
13c6f31ee18f3dd030fe8a638f7248f2542ed8f6
[Evergreen.git] / Open-ILS / xul / staff_client / server / patron / take_survey.js
1 var cgi;
2 var orgTree;
3 var responses = {};
4 var survey_user;
5
6
7 function save_responses (root) {
8
9         try {
10
11                 var res = [];
12                 for (var i in responses) {
13                         if (!i) continue;
14                         for (var j in responses[i]) {
15                                 if (!j) continue;
16                                 var r = new asvr();
17                                 r.usr(survey_user);
18                                 r.survey(i);
19                                 r.question(j);
20                                 r.answer(responses[i][j]);
21                                 r.answer_date( findNodeByName(root,'effective_date').value );
22                                 res.push(r);
23                         }
24                 }
25
26                 responses = {};
27
28                 var meth = 'open-ils.circ.survey.submit.anon';
29                 if (survey_user) meth = 'open-ils.circ.survey.submit.user_id';
30
31                 var req = new RemoteRequest( 'open-ils.circ', meth, res );
32                 req.send(true);
33                 var ok = req.getResultObject();
34
35                 if (ok) {
36                         alert('Survey response successfully saved!');
37                 }
38
39         } catch (e) {
40                 alert(e)
41         };
42
43         return false;
44 }
45
46 function init_survey (root, s_id, usr_id) {
47         
48         var x = findNodeByName(root,'editor');
49
50         survey_user = usr_id;
51
52         cgi = new CGI();
53         var adv = cgi.param('adv');
54
55         if (!s_id) {
56                 alert('No survey id passed in!');
57                 return false;
58         }
59
60         if (findNodeByName(root,'save_response')) {
61                 findNodeByName(root,'save_response')
62                         .setAttribute(
63                                 'onclick',
64                                 "save_responses(document.getElementById('" + root.id + "')); return false;"
65                         );
66         }
67
68         var today = new Date()
69         var month = today.getMonth() + 1
70         var day = today.getDate()
71         var year = today.getFullYear()
72         var s = "-"
73         if (findNodeByName(root,'effective_date')) {
74                 findNodeByName(root,'effective_date').value = '%04d%s%02d%s%02d'.sprintf(year,s,month,s,day);
75                 findNodeByName(root,'effective_date').id = 'e_date_' + s_id;
76         }
77
78
79         if (adv) {
80                 findNodeByName(root,'effective_date').parentNode.parentNode.setAttribute('adv','false');
81         }
82
83         var req = new RemoteRequest( 'open-ils.circ', 'open-ils.circ.survey.fleshed.retrieve', s_id );
84         req.send(true);
85         sur = req.getResultObject();
86
87
88
89         if (findNodeByName(x,'sur.name'))
90                 findNodeByName(x,'sur.name').appendChild( text( sur.name() ) );
91
92         if (findNodeByName(x,'sur.description'))
93                 findNodeByName(x,'sur.description').appendChild( text( sur.description() ) );
94
95         if (findNodeByName(x,'sur.start_date'))
96                 findNodeByName(x,'sur.start_date').appendChild( text( sur.start_date() ) );
97
98         if (findNodeByName(x,'sur.end_date'))
99                 findNodeByName(x,'sur.end_date').appendChild( text( sur.end_date() ) );
100
101         q_tmpl = findNodeByName(root,'question-tmpl').getElementsByTagName('table')[0];
102
103         x = findNodeByName(x,'questions');
104         for (var i in sur.questions()) {
105                 var q = sur.questions()[i];
106                 var new_q = q_tmpl.cloneNode(true);
107                 x.appendChild(new_q);
108
109                 findNodeByName(new_q,'q.question').appendChild( text( q.question() ) );
110
111                 var sel = findNodeByName(new_q,'answers-sel');
112                 sel.options[0] = new Option('-- Select one --');
113
114                 var rad = findNodeByName(new_q,'answers-rad');
115
116                 if (!sur.poll()) {
117                         sel.className = '';
118                         for (var j in q.answers()) {
119                                 var a = q.answers()[j];
120                                 var opt = new Option(a.answer());
121
122                                 opt.setAttribute('answer', a.id());
123                                 opt.setAttribute('question', q.id());
124                                 opt.setAttribute('survey', sur.id());
125
126                                 sel.options[sel.options.length] = opt;
127                         }
128                 } else {
129                         rad.parentNode.className = 'rad-value';
130                         for (var j in q.answers()) {
131                                 var a = q.answers()[j];
132
133                                 var opt = rad.cloneNode(true);
134                                 opt.className = '';
135
136                                 opt.firstChild.setAttribute('name','res_' + i );
137                                 opt.firstChild.setAttribute('answer', a.id());
138                                 opt.firstChild.setAttribute('question', q.id());
139                                 opt.firstChild.setAttribute('survey', sur.id());
140
141                                 opt.appendChild(text(a.answer()));
142                                 rad.parentNode.appendChild(opt);
143                         }
144                 }
145         }
146
147         return true;
148 }
149
150 function update_response (sel) {
151         var opt = sel.options[sel.selectedIndex];
152         if (!responses[opt.getAttribute('survey')])
153                 responses[opt.getAttribute('survey')] = {};
154
155         responses[opt.getAttribute('survey')][opt.getAttribute('question')] = opt.getAttribute('answer');
156 }
157 function update_response_rad (opt) {
158         if (!responses[opt.getAttribute('survey')])
159                 responses[opt.getAttribute('survey')] = {};
160
161         responses[opt.getAttribute('survey')][opt.getAttribute('question')] = opt.getAttribute('answer');
162 }
163