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