legacy survey creator
authorphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 22 Jul 2005 22:48:00 +0000 (22:48 +0000)
committerphasefx <phasefx@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 22 Jul 2005 22:48:00 +0000 (22:48 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@1370 dcc99617-32d9-48b4-a31d-7c20da2025e4

Evergreen/staff_client/chrome/content/evergreen/survey/survey.js [new file with mode: 0644]
Evergreen/staff_client/chrome/content/evergreen/survey/survey_bundle.xul [new file with mode: 0644]
Evergreen/staff_client/chrome/content/evergreen/survey/survey_overlay.xul [new file with mode: 0644]
Evergreen/staff_client/chrome/content/evergreen/survey/survey_wizard.xul [new file with mode: 0644]
Evergreen/staff_client/chrome/content/evergreen/util/error.js
Evergreen/staff_client/chrome/locale/en-US/evergreen/survey.dtd [new file with mode: 0644]
Evergreen/staff_client/chrome/skin/evergreen/survey.css [new file with mode: 0644]

diff --git a/Evergreen/staff_client/chrome/content/evergreen/survey/survey.js b/Evergreen/staff_client/chrome/content/evergreen/survey/survey.js
new file mode 100644 (file)
index 0000000..9af3461
--- /dev/null
@@ -0,0 +1,211 @@
+dump('Loading survey.js\n');
+
+var SURVEY = {};
+
+function survey_init() {
+        dump('TESTING: survey.js: ' + mw.G.main_test_variable + '\n');
+       populate_lib_list_with_branch('lib_menulist','lib_menupopup',mw.G.user_ou,mw.G.user_ou); 
+       SURVEY['asv'] = new asv(); SURVEY['asv'].isnew('1');
+       SURVEY['num_of_questions'] = 0;
+       document.getElementById('survey_name').focus();
+}
+
+function save_survey() {
+       SURVEY.asv.description(
+               document.getElementById('survey_description').value
+       );
+       SURVEY.asv.name(
+               document.getElementById('survey_name').value
+       );
+       SURVEY.asv.owner(
+               document.getElementById('lib_menulist').value
+       );
+       var survey_start = document.getElementById('survey_start').value;
+       if (survey_start) {
+               SURVEY.asv.start_date(
+                       survey_start
+               );
+       } else {
+               SURVEY.asv.start_date(
+                       null
+               );
+       }
+       var survey_end = document.getElementById('survey_end').value;
+       if (survey_end) {
+               SURVEY.asv.end_date(
+                       survey_end
+               );
+       } else {
+               SURVEY.asv.end_date(
+                       null
+               );
+       }
+       if ( document.getElementById('required_checkbox').checked ) {
+               SURVEY.asv.required('1');
+       } else {
+               SURVEY.asv.required('0');
+       }
+       if ( document.getElementById('opac_checkbox').checked ) {
+               SURVEY.asv.opac('1');
+       } else {
+               SURVEY.asv.opac('0');
+       }
+       if ( document.getElementById('poll_checkbox').checked ) {
+               SURVEY.asv.poll('1');
+       } else {
+               SURVEY.asv.poll('0');
+       }
+
+       if ( document.getElementById('patron_summary_checkbox').checked ) {
+               SURVEY.asv.usr_summary('1');
+       } else {
+               SURVEY.asv.usr_summary('0');
+       }
+       dump('before survey = ' + js2JSON( SURVEY.asv ) + '\n');
+       try {
+               var result = user_request(
+                       'open-ils.circ',
+                       'open-ils.circ.survey.create',
+                       [ mw.G.auth_ses[0], SURVEY.asv ]
+               )[0];
+               dump('result = ' + js2JSON( result ) + '\n');
+               if (! (result instanceof asv) ) {
+                       throw('save_survey: result not an asv');
+               }
+       } catch(E) {
+               dump('Survey failed: ' + js2JSON(E) + '\n');
+               alert('Survey failed: ' + js2JSON(E) + '\n');
+               throw(E);
+       }
+       dump('after  survey = ' + js2JSON( SURVEY.asv ) + '\n');
+}
+
+function setDescription(e,t) {
+       var page = document.getElementById(e);
+       var desc = page.getAttribute('description');
+       var value = document.getElementById(t).value;
+       page.setAttribute('description',desc + ' ' + value); 
+}
+
+var new_id = -1;
+function add_answer(e, my_asvq_id) {
+       var row = e.target.parentNode;
+       var rows = row.parentNode;
+       var answer = e.target.previousSibling; answer.select();
+
+       if (! answer.value ) { return; }
+       
+       /* XUL */
+       var n_row = document.createElement('row');
+       rows.insertBefore( n_row, row );
+       var label_1 = document.createElement('label');
+       n_row.appendChild( label_1 );
+       var label_2 = document.createElement('label');
+               label_2.setAttribute('value', answer.value );
+       n_row.appendChild( label_2 );
+
+       /* OBJECT */
+
+       var my_asva = new asva(); my_asva.isnew('1'); my_asva.id( new_id-- );
+       my_asva.answer( answer.value );
+
+       var my_asvq = find_id_object_in_list( SURVEY.asv.questions(), my_asvq_id );
+       if (my_asvq.answers() == null) {
+               my_asvq.answers( [] );
+       }
+
+       my_asvq.answers().push( my_asva );
+
+       var num_of_answers = my_asvq.answers().length;
+       var last_number = 96 + num_of_answers;
+       var next_number = 97 + num_of_answers;
+       var last_letter = String.fromCharCode( last_number );
+       var next_letter = String.fromCharCode( next_number );
+       label_1.setAttribute('value', last_letter + ')' );
+       row.firstChild.setAttribute('value', next_letter + ')' );
+
+       if (num_of_answers == 26) {
+               rows.removeChild(row);
+       }
+}
+
+function add_question() {
+       SURVEY.num_of_questions++;
+       var question = document.getElementById('new_question');
+
+       if (! question.value ) { return; }
+
+       document.getElementById('survey_add').canAdvance = true;
+
+       var my_asvq = new asvq(); my_asvq.isnew('1'); my_asvq.id( new_id-- );
+       my_asvq.question( question.value );
+
+       if ( SURVEY.asv.questions() == null ) {
+               SURVEY.asv.questions( [] );
+       }
+
+       SURVEY.asv.questions().push( my_asvq );
+
+       add_question_row(my_asvq);
+
+       document.getElementById('new_question_label').setAttribute('value', '#' + (SURVEY.num_of_questions + 1) );
+       question.select();
+}
+
+function add_question_row(my_asvq) {
+       var rows = document.getElementById('page2_grid1_rows');
+       var row = document.createElement('row');
+       rows.insertBefore(row, document.getElementById('page2_grid1_row1'));
+
+       var label_number = document.createElement('label');
+               label_number.setAttribute('value','#' + SURVEY['num_of_questions']);
+       row.appendChild(label_number);
+
+       var grid = document.createElement('grid');
+       row.appendChild(grid);
+       var g_cols = document.createElement('columns');
+       grid.appendChild(g_cols);
+       var g_col_1 = document.createElement('column');
+       g_cols.appendChild(g_col_1);
+       var g_col_2 = document.createElement('column');
+               g_col_2.setAttribute('flex','1');
+       g_cols.appendChild(g_col_2);
+       var g_col_3 = document.createElement('column');
+       g_cols.appendChild(g_col_3);
+       var g_rows = document.createElement('rows');
+       grid.appendChild(g_rows);
+       var g_row_1 = document.createElement('row');
+       g_rows.appendChild(g_row_1);
+       var g_label_1 = document.createElement('label');
+       g_row_1.appendChild(g_label_1);
+       var g_label_2 = document.createElement('label');
+               g_label_2.setAttribute('value', my_asvq.question() );
+       g_row_1.appendChild(g_label_2);
+       var g_row_2 = document.createElement('row');
+       g_rows.appendChild(g_row_2);
+       var g_label2_1 = document.createElement('label');
+               g_label2_1.setAttribute('value', 'a)' );
+       g_row_2.appendChild(g_label2_1);
+       var g_tb = document.createElement('textbox');
+               g_tb.setAttribute('flex','1');
+       g_row_2.appendChild(g_tb);
+       var g_b = document.createElement('button');
+               g_b.setAttribute('label','Save this Response');
+               g_b.setAttribute('oncommand','add_answer(event,' + my_asvq.id() + ');');
+       g_row_2.appendChild(g_b);
+
+       var blank = document.createElement('row');
+       rows.insertBefore( blank , document.getElementById('page2_grid1_row1') );
+       var blank2 = document.createElement('label');
+               blank2.setAttribute('value', ' ');
+       blank.appendChild( blank2 );
+}
+
+function page1_check_advance() {
+       if ( document.getElementById('survey_name').value ) {
+               document.getElementById('survey_add').canAdvance = true;
+       } else {
+               document.getElementById('survey_add').canAdvance = false;
+       }
+}
+
diff --git a/Evergreen/staff_client/chrome/content/evergreen/survey/survey_bundle.xul b/Evergreen/staff_client/chrome/content/evergreen/survey/survey_bundle.xul
new file mode 100644 (file)
index 0000000..1419b59
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/survey.dtd">
+<overlay id="survey_bundle" 
+       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+       <script>dump('survey_bundle\n');</script>
+
+       <?xul-overlay href="chrome://evergreen/content/survey/survey_overlay.xul"?>
+
+       <script src="survey.js" />
+
+</overlay>
diff --git a/Evergreen/staff_client/chrome/content/evergreen/survey/survey_overlay.xul b/Evergreen/staff_client/chrome/content/evergreen/survey/survey_overlay.xul
new file mode 100644 (file)
index 0000000..aa4e813
--- /dev/null
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+<!DOCTYPE overlay SYSTEM "chrome://evergreen/locale/survey.dtd">
+<overlay id="survey_overlay" 
+       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+       <wizardpage id="page1" 
+               description="&survey.wizard.page1;" 
+               onpageadvanced="setDescription('page2','survey_name');"
+               onpageshow="document.getElementById('survey_add').canAdvance = false; document.getElementById('survey_name').focus();"
+       >
+               <grid id="page1_grid1"/>
+       </wizardpage>
+
+       <grid id="page1_grid1">
+               <columns id="page1_grid1_columns">
+                       <column id="page1_grid1_column1"/>
+                       <column id="page1_grid1_column2"/>
+                       <column id="page1_grid1_column3"/>
+                       <column id="page1_grid1_column4"/>
+               </columns>
+               <rows id="page1_grid1_rows">
+                       <row id ="page1_grid1_row1"/>
+                       <row id ="page1_grid1_row1c"/>
+                       <row id ="page1_grid1_row1a"/>
+                       <row id ="page1_grid1_row1b"/>
+                       <row id ="page1_grid1_row2"/>
+                       <row id ="page1_grid1_row3"/>
+               </rows>
+       </grid>
+
+       <row id="page1_grid1_row1">
+               <label id="page1_row1_label1" value="Available to:" class="wizard_label"/>
+               <menulist id="lib_menulist">
+                       <menupopup id="lib_menupopup"/>
+               </menulist>
+               <label id="page1_row1_label2" value="Required:" class="wizard_label"/>
+               <checkbox id="required_checkbox"/>
+       </row>
+       
+       <row id="page1_grid1_row1c">
+               <label id="page1_row1c_label1"/>
+               <label id="page1_row1c_label2"/>
+               <label id="page1_row1c_label3" value="Poll Format:" class="wizard_label"/>
+               <checkbox id="poll_checkbox"/>
+       </row>
+
+
+       <row id="page1_grid1_row1a">
+               <label id="page1_row1a_label1"/>
+               <label id="page1_row1a_label2"/>
+               <label id="page1_row1a_label3" value="OPAC Visible:" class="wizard_label"/>
+               <checkbox id="opac_checkbox"/>
+       </row>
+
+       <row id="page1_grid1_row1b">
+               <label id="page1_row1b_label1"/>
+               <label id="page1_row1b_label2"/>
+               <label id="page1_row1b_label3" value="Staff Client:" class="wizard_label"/>
+               <checkbox id="patron_summary_checkbox"/>
+       </row>
+
+       <row id="page1_grid1_row2">
+               <label id="page1_row2_label1" value="Name:" class="wizard_label"/>
+               <textbox id="survey_name" onchange="page1_check_advance();" onkeyup="page1_check_advance();" />
+               <label id="page1_row2_label2" value="Start:" class="wizard_label"/>
+               <textbox id="survey_start"/>
+       </row>
+
+       <row id="page1_grid1_row3">
+               <label id="page1_row3_label1" value="Description:" class="wizard_label"/>
+               <textbox id="survey_description" multiline="true" rows="4"/>
+               <label id="page1_row3_label2" value="End:" class="wizard_label"/>
+               <vbox id="page1_row3_vbox1">
+               <textbox id="survey_end"/>
+               </vbox>
+       </row>
+
+       <wizardpage id="page2" 
+               description="&survey.wizard.page2;" 
+               onpageshow="document.getElementById('survey_add').canAdvance = false; document.getElementById('new_question').focus();"
+       >
+               <separator id="page2_separator1"/>
+               <grid id="page2_grid1"/>
+       </wizardpage>
+
+       <grid id='page2_grid1'>
+               <columns id="page2_grid1_columns">
+                       <column id="page2_grid1_column1"/>
+                       <column id="page2_grid1_column2" flex="1"/>
+                       <column id="page2_grid1_column3"/>
+               </columns>
+               <rows id="page2_grid1_rows"/>
+       </grid>
+
+
+       <rows id="page2_grid1_rows">
+               <row id="page2_grid1_row1">
+                       <label id="new_question_label" value="#1"/>
+                       <textbox id="new_question" flex="1"/>
+                       <button id="page2_button1" label="Save this Question" oncommand="add_question(event);"/>
+               </row>
+       </rows>
+
+</overlay>
+
diff --git a/Evergreen/staff_client/chrome/content/evergreen/survey/survey_wizard.xul b/Evergreen/staff_client/chrome/content/evergreen/survey/survey_wizard.xul
new file mode 100644 (file)
index 0000000..04a4463
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/evergreen.css" type="text/css"?>
+<?xml-stylesheet href="chrome://evergreen/skin/survey.css" type="text/css"?>
+<!-- This DTD declaration needs to be fixed for Mozilla locales -->
+<!DOCTYPE wizard SYSTEM "chrome://evergreen/locale/survey.dtd">
+<wizard id="survey_add" title="&survey.wizard.title;" 
+       orient="vertical" style="overflow: auto"
+       onload="survey_init();" width="800" height="600"
+       onwizardfinish="save_survey();"
+       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+       <script src="chrome://evergreen/content/OpenSRF/JSON.js" />
+
+       <!-- Overlays for this XUL file -->
+       <!-- <?xul-overlay href="chrome://evergreen/content/OpenSRF/OpenSRF.xul"?> -->
+       <?xul-overlay href="chrome://evergreen/content/util/util_overlay.xul"?>
+       <?xul-overlay href="chrome://evergreen/content/survey/survey_bundle.xul"?>
+
+       <!-- OpenSRF -->
+       <script>var myPackageDir = "evergreen";</script>
+       <OpenSRF id="OpenSRF_js" />
+
+       <!-- Layout to be filled in by overlays and javascript -->
+       <wizardpage id="page1"/>
+       <wizardpage id="page2"/>
+
+</wizard>
+
index a4542a9..f80b604 100644 (file)
@@ -60,6 +60,7 @@ var sdump_levels = {
        'D_PRINT' : false,
        'D_SES' : true,
        'D_SES_FUNC' : false,
+       'D_SES_RESULT' : true,
        'D_SPAWN' : false,
        'D_STRING' : false,
        'D_UTIL' : false,
diff --git a/Evergreen/staff_client/chrome/locale/en-US/evergreen/survey.dtd b/Evergreen/staff_client/chrome/locale/en-US/evergreen/survey.dtd
new file mode 100644 (file)
index 0000000..4d38767
--- /dev/null
@@ -0,0 +1,4 @@
+<!ENTITY survey.wizard.title "Add a Survey Wizard">
+<!ENTITY survey.wizard.page1 "Initial Settings">
+<!ENTITY survey.wizard.page2 "Add Questions for Survey:">
+
diff --git a/Evergreen/staff_client/chrome/skin/evergreen/survey.css b/Evergreen/staff_client/chrome/skin/evergreen/survey.css
new file mode 100644 (file)
index 0000000..71909ff
--- /dev/null
@@ -0,0 +1,7 @@
+@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); 
+@namespace html url("http://www.w3.org/TR/REC-html40"); 
+
+/* * { font-size: x-large; } */
+.test_class { }
+
+.wizard_label { text-align: right; }