]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/xul/staff_client/chrome/content/evergreen/admin/survey.js
first cut at porting staff client 2 survey wizard
[working/Evergreen.git] / Open-ILS / xul / staff_client / chrome / content / evergreen / admin / survey.js
1 dump('Loading survey.js\n');
2
3 var SURVEY = {};
4
5 function survey_init() {
6         /*REPLACEME populate_lib_list_with_branch('lib_menulist','lib_menupopup',mw.G.user_ou,mw.G.user_ou); */
7         SURVEY['asv'] = new asv(); SURVEY['asv'].isnew('1');
8         SURVEY['num_of_questions'] = 0;
9         document.getElementById('survey_name').focus();
10 }
11
12 function save_survey() {
13         SURVEY.asv.description(
14                 document.getElementById('survey_description').value
15         );
16         SURVEY.asv.name(
17                 document.getElementById('survey_name').value
18         );
19         SURVEY.asv.owner(
20                 document.getElementById('lib_menulist').value
21         );
22         var survey_start = document.getElementById('survey_start').value;
23         if (survey_start) {
24                 SURVEY.asv.start_date(
25                         survey_start
26                 );
27         } else {
28                 SURVEY.asv.start_date(
29                         null
30                 );
31         }
32         var survey_end = document.getElementById('survey_end').value;
33         if (survey_end) {
34                 SURVEY.asv.end_date(
35                         survey_end
36                 );
37         } else {
38                 SURVEY.asv.end_date(
39                         null
40                 );
41         }
42         if ( document.getElementById('required_checkbox').checked ) {
43                 SURVEY.asv.required('1');
44         } else {
45                 SURVEY.asv.required('0');
46         }
47         if ( document.getElementById('opac_checkbox').checked ) {
48                 SURVEY.asv.opac('1');
49         } else {
50                 SURVEY.asv.opac('0');
51         }
52         if ( document.getElementById('poll_checkbox').checked ) {
53                 SURVEY.asv.poll('1');
54         } else {
55                 SURVEY.asv.poll('0');
56         }
57
58         if ( document.getElementById('patron_summary_checkbox').checked ) {
59                 SURVEY.asv.usr_summary('1');
60         } else {
61                 SURVEY.asv.usr_summary('0');
62         }
63         g.error.sdump('D_SURVEY', 'before survey = ' + js2JSON( SURVEY.asv ) + '\n');
64         try {
65                 var result = user_request(
66                         api.FM_ASV_CREATE.app,
67                         api.FM_ASV_CREATE.method,
68                         [ g.session, SURVEY.asv ]
69                 );
70                 dump('result = ' + js2JSON( result ) + '\n');
71                 if (! (result instanceof asv) ) {
72                         throw('save_survey: result not an asv');
73                 }
74         } catch(E) {
75                 var err = ('Survey failed: ' + js2JSON(E) + '\n');
76                 g.error.sdump('D_ERROR',err);
77                 alert(err);
78                 throw(err);
79         }
80         g.error.sdump('D_SURVEY', 'after  survey = ' + js2JSON( SURVEY.asv ) + '\n');
81 }
82
83 function setDescription(e,t) {
84         var page = document.getElementById(e);
85         var desc = page.getAttribute('description');
86         var value = document.getElementById(t).value;
87         page.setAttribute('description',desc + ' ' + value); 
88 }
89
90 var new_id = -1;
91 function add_answer(e, my_asvq_id) {
92         var row = e.target.parentNode;
93         var rows = row.parentNode;
94         var answer = e.target.previousSibling; answer.select();
95
96         if (! answer.value ) { return; }
97         
98         /* XUL */
99         var n_row = document.createElement('row');
100         rows.insertBefore( n_row, row );
101         var label_1 = document.createElement('label');
102         n_row.appendChild( label_1 );
103         var label_2 = document.createElement('label');
104                 label_2.setAttribute('value', answer.value );
105         n_row.appendChild( label_2 );
106
107         /* OBJECT */
108
109         var my_asva = new asva(); my_asva.isnew('1'); my_asva.id( new_id-- );
110         my_asva.answer( answer.value );
111
112         JSAN.use('util.functional');
113         var my_asvq = util.functional.find_id_object_in_list( SURVEY.asv.questions(), my_asvq_id );
114         if (my_asvq.answers() == null) {
115                 my_asvq.answers( [] );
116         }
117
118         my_asvq.answers().push( my_asva );
119
120         var num_of_answers = my_asvq.answers().length;
121         var last_number = 96 + num_of_answers;
122         var next_number = 97 + num_of_answers;
123         var last_letter = String.fromCharCode( last_number );
124         var next_letter = String.fromCharCode( next_number );
125         label_1.setAttribute('value', last_letter + ')' );
126         row.firstChild.setAttribute('value', next_letter + ')' );
127
128         if (num_of_answers == 26) {
129                 rows.removeChild(row);
130         }
131 }
132
133 function add_question() {
134         SURVEY.num_of_questions++;
135         var question = document.getElementById('new_question');
136
137         if (! question.value ) { return; }
138
139         document.getElementById('survey_add').canAdvance = true;
140
141         var my_asvq = new asvq(); my_asvq.isnew('1'); my_asvq.id( new_id-- );
142         my_asvq.question( question.value );
143
144         if ( SURVEY.asv.questions() == null ) {
145                 SURVEY.asv.questions( [] );
146         }
147
148         SURVEY.asv.questions().push( my_asvq );
149
150         add_question_row(my_asvq);
151
152         document.getElementById('new_question_label').setAttribute('value', '#' + (SURVEY.num_of_questions + 1) );
153         question.select();
154 }
155
156 function add_question_row(my_asvq) {
157         var rows = document.getElementById('page2_grid1_rows');
158         var row = document.createElement('row');
159         rows.insertBefore(row, document.getElementById('page2_grid1_row1'));
160
161         var label_number = document.createElement('label');
162                 label_number.setAttribute('value','#' + SURVEY['num_of_questions']);
163         row.appendChild(label_number);
164
165         var grid = document.createElement('grid');
166         row.appendChild(grid);
167         var g_cols = document.createElement('columns');
168         grid.appendChild(g_cols);
169         var g_col_1 = document.createElement('column');
170         g_cols.appendChild(g_col_1);
171         var g_col_2 = document.createElement('column');
172                 g_col_2.setAttribute('flex','1');
173         g_cols.appendChild(g_col_2);
174         var g_col_3 = document.createElement('column');
175         g_cols.appendChild(g_col_3);
176         var g_rows = document.createElement('rows');
177         grid.appendChild(g_rows);
178         var g_row_1 = document.createElement('row');
179         g_rows.appendChild(g_row_1);
180         var g_label_1 = document.createElement('label');
181         g_row_1.appendChild(g_label_1);
182         var g_label_2 = document.createElement('label');
183                 g_label_2.setAttribute('value', my_asvq.question() );
184         g_row_1.appendChild(g_label_2);
185         var g_row_2 = document.createElement('row');
186         g_rows.appendChild(g_row_2);
187         var g_label2_1 = document.createElement('label');
188                 g_label2_1.setAttribute('value', 'a)' );
189         g_row_2.appendChild(g_label2_1);
190         var g_tb = document.createElement('textbox');
191                 g_tb.setAttribute('flex','1');
192         g_row_2.appendChild(g_tb);
193         var g_b = document.createElement('button');
194                 g_b.setAttribute('label','Save this Response');
195                 g_b.setAttribute('oncommand','add_answer(event,' + my_asvq.id() + ');');
196         g_row_2.appendChild(g_b);
197
198         var blank = document.createElement('row');
199         rows.insertBefore( blank , document.getElementById('page2_grid1_row1') );
200         var blank2 = document.createElement('label');
201                 blank2.setAttribute('value', ' ');
202         blank.appendChild( blank2 );
203 }
204
205 function page1_check_advance() {
206         if ( document.getElementById('survey_name').value ) {
207                 document.getElementById('survey_add').canAdvance = true;
208         } else {
209                 document.getElementById('survey_add').canAdvance = false;
210         }
211 }
212