]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/javascript/widgets/Survey.js
keep on trukin
[Evergreen.git] / Open-ILS / src / javascript / widgets / Survey.js
1 /* */
2
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");
10         div.appendChild(        
11                 createAppTextNode(question.question()));
12         this.node.appendChild(div);
13
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);
19 }
20
21
22 SurveyQuestion.prototype.getNode = function() {
23         return this.node;
24 }
25
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;
30 }
31
32
33 function Survey(survey, onclick ) {
34
35         debug("Creating new survey " + survey.name() );
36         this.survey = survey;
37
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();
47
48         add_css_class(this.nameNode,    "survey_name");
49         add_css_class(this.descNode,    "survey_description");
50         add_css_class(this.node,                "survey" );
51
52         this.node.appendChild( this.nameNode );
53         this.node.appendChild( this.descNode );
54         this.node.appendChild( this.qList );
55
56         for( var i in survey.questions() ) {
57                 this.addQuestion( survey.questions()[i] );
58         }
59
60         this.button = createAppElement("input");
61         this.button.setAttribute("type", "submit");
62         this.button.value = "Submit Survey";
63         if(onclick)
64                 this.button.onclick = onclick;
65         this.node.appendChild(this.button);
66 }
67
68 Survey.prototype.setAction = function(onclick) {
69         this.button.onclick = onclick;
70 }
71
72 Survey.prototype.getName = function() {
73         debug("getting name for " + this.survey.name() ); 
74         return this.survey.name();
75 }
76
77 Survey.prototype.toString = function() {
78         return this.wrapperNode.innerHTML;
79 }
80
81 Survey.prototype.getNode = function() {
82         return this.node;
83 }
84
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]);
90         }
91
92         var item = createAppElement("li");
93         item.appendChild(questionObj.getNode());
94         this.qList.appendChild(item); 
95 }
96
97 Survey.retrieveRequired = function(user_session) {
98         var request = new RemoteRequest(
99                         "open-ils.circ",
100                         "open-ils.circ.survey.required.retrieve",
101                         user_session );
102         request.send(true);
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));
109         }
110         return surveys;
111 }
112
113
114 Survey.retrieveAll = function(user_session) {
115         var request = new RemoteRequest(
116                         "open-ils.circ",
117                         "open-ils.circ.survey.retrieve.all",
118                         user_session );
119         request.send(true);
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));
126         }
127         return surveys;
128 }
129
130
131