]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/admin/survey.js
another great renaming, and an un-naming
[Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / admin / survey.js
1 dump('Loading survey.js\n');
2
3 var SURVEY = {};
4 var last_answer;
5 var last_button;
6
7 function populate_lib_list_with_branch(menulist,menupopup,defaultlib,branch,id_flag) {
8         JSAN.use('util.fm_utils');
9         var default_menuitem;
10         if (typeof defaultlib == 'object') {
11                 defaultlib = defaultlib.id();   
12         }
13         var popup = menupopup;
14         if (typeof(popup)!='object') popup = document.getElementById(menupopup);
15         if (popup) {
16                 //empty_widget(popup);
17                 var padding_flag = true;
18                 var flat_branch = util.fm_utils.flatten_ou_branch( branch );
19                 for (var i in flat_branch) {
20                         var menuitem = document.createElement('menuitem');
21                         var padding = '';
22                         var depth = g.OpenILS.data.hash.aout[ flat_branch[i].ou_type() ].depth();
23                         if (padding_flag) {
24                                 for (var j = 0; j < depth; j++) { 
25                                         padding = padding + '  '; 
26                                 }
27                         }
28                         menuitem.setAttribute('label', padding + flat_branch[i].name() );
29                         menuitem.setAttribute('value', flat_branch[i].id() );
30                         if (id_flag) menuitem.setAttribute('id', 'libitem' + flat_branch[i].id() );
31                         if (defaultlib == flat_branch[i].id()) {
32                                 default_menuitem = menuitem;
33                         }
34                         popup.appendChild(menuitem);
35                 }
36                 var list = menulist;
37                 if (typeof(list)!='object') { list = document.getElementById(menulist); }
38                 if (list && defaultlib && default_menuitem) {
39                         if (list) { list.selectedItem = default_menuitem; }
40                 }
41         } else {
42                         var err = ('populate_lib_list_with_branch: Could not find ' + menupopup + '\n');
43                         dump(err);
44                         alert(err);
45         }
46 }
47
48
49 function survey_init() {
50         dump('survey_init()\n');
51         var user_ou = g.OpenILS.data.list.au[0].home_ou();
52         var user_branch = g.OpenILS.data.hash.aou[ user_ou ];
53         populate_lib_list_with_branch('lib_menulist','lib_menupopup',user_ou,user_branch); 
54         SURVEY['asv'] = new asv(); SURVEY['asv'].isnew('1');
55         SURVEY['num_of_questions'] = 0;
56         document.getElementById('survey_name').focus();
57 }
58
59 function save_survey() {
60         SURVEY.asv.description(
61                 document.getElementById('survey_description').value
62         );
63         SURVEY.asv.name(
64                 document.getElementById('survey_name').value
65         );
66         SURVEY.asv.owner(
67                 document.getElementById('lib_menulist').value
68         );
69         var survey_start = document.getElementById('survey_start').value;
70         if (survey_start) {
71                 SURVEY.asv.start_date(
72                         survey_start
73                 );
74         } else {
75                 SURVEY.asv.start_date(
76                         null
77                 );
78         }
79         var survey_end = document.getElementById('survey_end').value;
80         if (survey_end) {
81                 SURVEY.asv.end_date(
82                         survey_end
83                 );
84         } else {
85                 SURVEY.asv.end_date(
86                         null
87                 );
88         }
89         if ( document.getElementById('required_checkbox').checked ) {
90                 SURVEY.asv.required('1');
91         } else {
92                 SURVEY.asv.required('0');
93         }
94         if ( document.getElementById('opac_checkbox').checked ) {
95                 SURVEY.asv.opac('1');
96         } else {
97                 SURVEY.asv.opac('0');
98         }
99         if ( document.getElementById('poll_checkbox').checked ) {
100                 SURVEY.asv.poll('1');
101         } else {
102                 SURVEY.asv.poll('0');
103         }
104
105         if ( document.getElementById('patron_summary_checkbox').checked ) {
106                 SURVEY.asv.usr_summary('1');
107         } else {
108                 SURVEY.asv.usr_summary('0');
109         }
110         g.error.sdump('D_SURVEY', 'before survey = ' + js2JSON( SURVEY.asv ) + '\n');
111         try {
112                 var result = g.network.request(
113                         api.FM_ASV_CREATE.app,
114                         api.FM_ASV_CREATE.method,
115                         [ g.session, SURVEY.asv ]
116                 );
117                 if (! (result instanceof asv) ) {
118                         throw('save_survey: result not an asv');
119                 } else {
120                         var surveys_list = g.OpenILS.data.list.asv;
121                         var surveys_hash = g.OpenILS.data.hash.asv;
122                         surveys_list.push( result );
123                         surveys_hash[ result.id() ] = result;
124                         g.OpenILS.data.stash('list','hash');
125                 }
126         } catch(E) {
127                 var err = ('Survey failed: ' + js2JSON(E) + '\n');
128                 g.error.sdump('D_ERROR',err);
129                 alert(err);
130                 throw(err);
131         }
132         g.error.sdump('D_SURVEY', 'after  survey = ' + js2JSON( SURVEY.asv ) + '\n');
133 }
134
135 var original_description;
136 function setDescription(e,t) {
137         var page = document.getElementById(e);
138         var desc = page.getAttribute('description');
139         if (!original_description) original_description = desc;
140         var value = document.getElementById(t).value;
141         page.setAttribute('description',original_description + ' ' + value); 
142 }
143
144 var new_id = -1;
145 function add_answer(e, my_asvq_id) {
146         var row = e.target.parentNode;
147         var rows = row.parentNode;
148         var answer = e.target.previousSibling; answer.select();
149
150         if (! answer.value ) { return; }
151         
152         /* XUL */
153         var n_row = document.createElement('row');
154         rows.insertBefore( n_row, row );
155         var label_1 = document.createElement('label');
156         n_row.appendChild( label_1 );
157         var label_2 = document.createElement('label');
158                 label_2.setAttribute('value', answer.value );
159         n_row.appendChild( label_2 );
160
161         /* OBJECT */
162
163         var my_asva = new asva(); my_asva.isnew('1'); my_asva.id( new_id-- );
164         my_asva.answer( answer.value );
165
166         JSAN.use('util.functional');
167         var my_asvq = util.functional.find_id_object_in_list( SURVEY.asv.questions(), my_asvq_id );
168         if (my_asvq.answers() == null) {
169                 my_asvq.answers( [] );
170         }
171
172         my_asvq.answers().push( my_asva );
173
174         var num_of_answers = my_asvq.answers().length;
175         var last_number = 96 + num_of_answers;
176         var next_number = 97 + num_of_answers;
177         var last_letter = String.fromCharCode( last_number );
178         var next_letter = String.fromCharCode( next_number );
179         label_1.setAttribute('value', last_letter + ')' );
180         row.firstChild.setAttribute('value', next_letter + ')' );
181
182         if (num_of_answers == 26) {
183                 rows.removeChild(row);
184         }
185 }
186
187 function add_question() {
188         SURVEY.num_of_questions++;
189         var question = document.getElementById('new_question');
190
191         if (! question.value ) { return; }
192
193         document.getElementById('survey_add').canAdvance = true;
194
195         var my_asvq = new asvq(); my_asvq.isnew('1'); my_asvq.id( new_id-- );
196         my_asvq.question( question.value );
197
198         if ( SURVEY.asv.questions() == null ) {
199                 SURVEY.asv.questions( [] );
200         }
201
202         SURVEY.asv.questions().push( my_asvq );
203
204         add_question_row(my_asvq);
205
206         document.getElementById('new_question_label').setAttribute('value', '#' + (SURVEY.num_of_questions + 1) );
207         //question.select();
208         if (last_answer) last_answer.focus();
209 }
210
211 function add_question_row(my_asvq) {
212         var rows = document.getElementById('page2_grid1_rows');
213         var row = document.createElement('row');
214         rows.insertBefore(row, document.getElementById('page2_grid1_row1'));
215
216         var label_number = document.createElement('label');
217                 label_number.setAttribute('value','#' + SURVEY['num_of_questions']);
218         row.appendChild(label_number);
219
220         var grid = document.createElement('grid');
221         row.appendChild(grid);
222         var g_cols = document.createElement('columns');
223         grid.appendChild(g_cols);
224         var g_col_1 = document.createElement('column');
225         g_cols.appendChild(g_col_1);
226         var g_col_2 = document.createElement('column');
227                 g_col_2.setAttribute('flex','1');
228         g_cols.appendChild(g_col_2);
229         var g_col_3 = document.createElement('column');
230         g_cols.appendChild(g_col_3);
231         var g_rows = document.createElement('rows');
232         grid.appendChild(g_rows);
233         var g_row_1 = document.createElement('row');
234         g_rows.appendChild(g_row_1);
235         var g_label_1 = document.createElement('label');
236         g_row_1.appendChild(g_label_1);
237         var g_label_2 = document.createElement('label');
238                 g_label_2.setAttribute('value', my_asvq.question() );
239         g_row_1.appendChild(g_label_2);
240         var g_row_2 = document.createElement('row');
241         g_rows.appendChild(g_row_2);
242         var g_label2_1 = document.createElement('label');
243                 g_label2_1.setAttribute('value', 'a)' );
244         g_row_2.appendChild(g_label2_1);
245         var g_tb = document.createElement('textbox');
246                 g_tb.setAttribute('flex','1');
247         g_row_2.appendChild(g_tb);
248         if (last_button) last_button.setAttribute('accesskey','');
249         var g_b = document.createElement('button');
250                 g_b.setAttribute('label','Save this Response');
251                 g_b.setAttribute('accesskey','R');
252                 g_b.setAttribute('oncommand','add_answer(event,' + my_asvq.id() + ');');
253         g_row_2.appendChild(g_b);
254
255         var blank = document.createElement('row');
256         rows.insertBefore( blank , document.getElementById('page2_grid1_row1') );
257         var blank2 = document.createElement('label');
258                 blank2.setAttribute('value', ' ');
259         blank.appendChild( blank2 );
260
261         last_answer = g_tb;
262         last_button = g_b;
263 }
264
265 function page1_check_advance() {
266         if ( document.getElementById('survey_name').value ) {
267                 document.getElementById('survey_add').canAdvance = true;
268         } else {
269                 document.getElementById('survey_add').canAdvance = false;
270         }
271 }
272