1 dump('Loading survey.js\n');
7 function populate_lib_list_with_branch(menulist,menupopup,defaultlib,branch,id_flag) {
8 JSAN.use('util.fm_utils');
10 if (typeof defaultlib == 'object') {
11 defaultlib = defaultlib.id();
13 var popup = menupopup;
14 if (typeof(popup)!='object') popup = document.getElementById(menupopup);
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');
22 var depth = g.OpenILS.data.hash.aout[ flat_branch[i].ou_type() ].depth();
24 for (var j = 0; j < depth; j++) {
25 padding = padding + ' ';
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;
34 popup.appendChild(menuitem);
37 if (typeof(list)!='object') { list = document.getElementById(menulist); }
38 if (list && defaultlib && default_menuitem) {
39 if (list) { list.selectedItem = default_menuitem; }
42 var err = ('populate_lib_list_with_branch: Could not find ' + menupopup + '\n');
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();
59 function save_survey() {
60 SURVEY.asv.description(
61 document.getElementById('survey_description').value
64 document.getElementById('survey_name').value
67 document.getElementById('lib_menulist').value
69 var survey_start = document.getElementById('survey_start').value;
71 SURVEY.asv.start_date(
75 SURVEY.asv.start_date(
79 var survey_end = document.getElementById('survey_end').value;
89 if ( document.getElementById('required_checkbox').checked ) {
90 SURVEY.asv.required('1');
92 SURVEY.asv.required('0');
94 if ( document.getElementById('opac_checkbox').checked ) {
99 if ( document.getElementById('poll_checkbox').checked ) {
100 SURVEY.asv.poll('1');
102 SURVEY.asv.poll('0');
105 if ( document.getElementById('patron_summary_checkbox').checked ) {
106 SURVEY.asv.usr_summary('1');
108 SURVEY.asv.usr_summary('0');
110 g.error.sdump('D_SURVEY', 'before survey = ' + js2JSON( SURVEY.asv ) + '\n');
112 var result = g.network.request(
113 api.FM_ASV_CREATE.app,
114 api.FM_ASV_CREATE.method,
115 [ g.session, SURVEY.asv ]
117 if (! (result instanceof asv) ) {
118 throw('save_survey: result not an asv');
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');
127 var err = ('Survey failed: ' + js2JSON(E) + '\n');
128 g.error.sdump('D_ERROR',err);
132 g.error.sdump('D_SURVEY', 'after survey = ' + js2JSON( SURVEY.asv ) + '\n');
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);
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();
150 if (! answer.value ) { return; }
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 );
163 var my_asva = new asva(); my_asva.isnew('1'); my_asva.id( new_id-- );
164 my_asva.answer( answer.value );
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( [] );
172 my_asvq.answers().push( my_asva );
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 + ')' );
182 if (num_of_answers == 26) {
183 rows.removeChild(row);
187 function add_question() {
188 SURVEY.num_of_questions++;
189 var question = document.getElementById('new_question');
191 if (! question.value ) { return; }
193 document.getElementById('survey_add').canAdvance = true;
195 var my_asvq = new asvq(); my_asvq.isnew('1'); my_asvq.id( new_id-- );
196 my_asvq.question( question.value );
198 if ( SURVEY.asv.questions() == null ) {
199 SURVEY.asv.questions( [] );
202 SURVEY.asv.questions().push( my_asvq );
204 add_question_row(my_asvq);
206 document.getElementById('new_question_label').setAttribute('value', '#' + (SURVEY.num_of_questions + 1) );
208 if (last_answer) last_answer.focus();
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'));
216 var label_number = document.createElement('label');
217 label_number.setAttribute('value','#' + SURVEY['num_of_questions']);
218 row.appendChild(label_number);
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);
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 );
265 function page1_check_advance() {
266 if ( document.getElementById('survey_name').value ) {
267 document.getElementById('survey_add').canAdvance = true;
269 document.getElementById('survey_add').canAdvance = false;