3 function SurveyQuestion(question) {
4 debug("Creating new survey question " + question.question() );
5 this.question = question;
6 this.node = createAppElement("div");
7 add_css_class( this.node, "survey_question" );
8 var div = createAppElement("div");
9 add_css_class(div, "survey_question_question");
11 createAppTextNode(question.question()));
12 this.node.appendChild(div);
14 this.selector = createAppElement("select");
15 add_css_class( this.selector, "survey_answer_selector" );
16 this.selector.name = "survey_question_" + question.id();
17 this.selector.value = "survey_question_" + question.id();
18 this.node.appendChild(this.selector);
22 SurveyQuestion.prototype.getNode = function() {
26 SurveyQuestion.prototype.addAnswer = function(answer) {
27 var option = new Option( answer.answer(), answer.id() );
28 add_css_class( option, "survey_answer" );
29 this.selector.options[ this.selector.options.length ] = option;
33 function Survey(survey, onclick ) {
35 debug("Creating new survey " + survey.name() );
38 this.node = createAppElement("div");
39 this.wrapperNode = createAppElement("div");
40 this.wrapperNode.appendChild(this.node);
41 this.nameNode = createAppElement("div");
42 this.nameNode.appendChild(createAppTextNode(survey.name()));
43 this.descNode = createAppElement("div");
44 this.descNode.appendChild( createAppTextNode(survey.description()));
45 this.qList = createAppElement("ol");
46 this.questions = new Array();
48 add_css_class(this.nameNode, "survey_name");
49 add_css_class(this.descNode, "survey_description");
50 add_css_class(this.node, "survey" );
52 this.node.appendChild( this.nameNode );
53 this.node.appendChild( this.descNode );
54 this.node.appendChild( this.qList );
56 for( var i in survey.questions() ) {
57 this.addQuestion( survey.questions()[i] );
60 this.button = createAppElement("input");
61 this.button.setAttribute("type", "submit");
62 this.button.value = "Submit Survey";
64 this.button.onclick = onclick;
65 this.node.appendChild(this.button);
68 Survey.prototype.setAction = function(onclick) {
69 this.button.onclick = onclick;
72 Survey.prototype.getName = function() {
73 debug("getting name for " + this.survey.name() );
74 return this.survey.name();
77 Survey.prototype.toString = function() {
78 return this.wrapperNode.innerHTML;
81 Survey.prototype.getNode = function() {
85 Survey.prototype.addQuestion = function(question) {
86 var questionObj = new SurveyQuestion(question);
87 this.questions.push(questionObj);
88 for( var i in question.answers() ) {
89 questionObj.addAnswer(question.answers()[i]);
92 var item = createAppElement("li");
93 item.appendChild(questionObj.getNode());
94 this.qList.appendChild(item);
97 Survey.retrieveRequired = function(user_session) {
98 var request = new RemoteRequest(
100 "open-ils.circ.survey.required.retrieve",
103 var surveys = new Array();
104 var results = request.getResultObject();
105 for(var index in results) {
106 var s = results[index];
107 debug("Retrieved survey " + s.name());
108 surveys.push(new Survey(s));
114 Survey.retrieveAll = function(user_session) {
115 var request = new RemoteRequest(
117 "open-ils.circ.survey.retrieve.all",
120 var surveys = new Array();
121 var results = request.getResultObject();
122 for(var index in results) {
123 var s = results[index];
124 debug("Retrieved survey " + s.name());
125 surveys.push(new Survey(s));