source: tmcsimulator/trunk/webapps/einotebook/scripts/Evaluation.js @ 548

Revision 548, 5.2 KB checked in by jdalbey, 6 years ago (diff)

Evaluation.js restore radio buttons and simplify recordRating(). Add submit button to scrollframe and add collectRatings function to retrieve any rating that have been set.

  • Property svn:executable set to *
Line 
1/**
2 * Represents an evaluation (e.g., a "CMS evaluation").
3 * @param type {String} Ex: "CMS" or "ATMS" ...
4 * @param data Array(label1, text1, label2, text2, ...)
5 */
6function Evaluation(type, data)
7{
8    //========== private static members ==========//
9    Evaluation.id = (typeof Evaluation.id == 'undefined') ? 0 : ++Evaluation.id;
10   
11    //========== public constants ==========//
12    this.id = Evaluation.id;
13    this.ratingGroupName = "evaluationGroup" + this.id;   
14    this.textID = "evaluationText" + this.id;
15    this.type = type;
16    this.data = data;
17   
18    //========== public read-only members ==========//
19    this.text = "";
20    this.rating = -1;
21   
22    //========== public methods ==========//
23    this.html = html;
24    this.recordText = recordText; 
25    this.recordRating = recordRating;
26   
27    //========== private methods ==========//
28    this.smallScaleForm = smallScaleForm;
29    this.evaluationForm = evaluationForm;
30   
31    //========== function definitions ==========//
32    /**
33     * @return The html representation of this evaluation.
34     */
35    function html()
36    {
37        var text = "<table class='evaluation'>" +
38                         "<tr>" +
39                         "<th class='evaluationType' colspan='2'>" + type + " Evaluation</th>" +
40                         "</tr>" +
41                         "<tr>" +
42                         "<td><table class='evaluationInner2'>";
43       
44        for (i = 0; i < this.data.length; i += 2)
45        {
46            text += "<tr>" +
47                   "<td class='evaluationLabel'>" + this.data[i] + "</td>" +
48                   "<td class='evaluationCriteria'>" + this.data[i+1] + "</td>" +
49                   "</tr>";
50        }
51        /*  Displays the comment input field
52        text += "<tr><td colspan='2' class='evaluationResponse'>" +
53            "<input onchange='events.getEvaluation(" + this.id + ").recordText();'" +
54            " id='" + this.textID + "' type='text' value='" + this.text + "'" +
55            " class='evaluationResponseText' />"
56            + "</td>";
57        */
58        text +=    "</table>";
59        /*  Displays the ranking bubbles  */
60        text += "</td>" +
61                      "<td class='evaluationScale'>" + this.evaluationForm() + "</td>" +
62                   "</tr>";
63       
64        text +=    "</table>";
65
66               
67        return text;
68    }
69   
70    /**
71     * Stores the rating given by the evaluation scale radio button form.
72     */
73    function recordRating(givenRating) 
74    { 
75
76        this.rating = givenRating;
77
78        console.log(this.ratingGroupName + " recordRating of " + this.rating )
79    }
80
81    /**
82     * Stores the text in the written response text box.
83     */
84    function recordText() 
85    { 
86        this.text = events.doc.getElementById(this.textID).value; 
87    }
88   
89    /**
90     * @return The html for appropriate evaluation form for grading.
91     */
92    function evaluationForm()
93    {
94        return this.smallScaleForm();
95    }
96   
97    /**
98     * @return The html for a 1-5 grading scale.
99     */
100    function smallScaleForm()
101    {
102        return "<form>" +
103               "<table align='right' class='evaluationScale'>" +
104               "<tr>" +
105               "<td class='eventRadioButtonSmallScale'>Best</td>" +
106               "<td class='eventRadioButtonSmallScale'>Good</td>" +
107               "<td class='eventRadioButtonSmallScale'>Average</td>" +
108               "<td class='eventRadioButtonSmallScale'>Poor</td>" +
109               "<td class='eventRadioButtonSmallScale'>Worst</td>" +
110               "</tr>" +
111               "<tr>" +
112               "<td align='center'><input type='radio' " + 
113                       (this.rating == 5 ? "checked='true'" : "") + 
114                       " onchange='events.getEvaluation(" + this.id + 
115                       ").recordRating(5)' name='" + this.ratingGroupName + 
116                       "' value='1'></td>" +
117               "<td align='center'><input type='radio' " + 
118                       (this.rating == 4 ? "checked='true'" : "") + 
119                       " onchange='events.getEvaluation(" + this.id + 
120                       ").recordRating(4)' name='" + this.ratingGroupName + 
121                       "' value='2'></td>" +
122               "<td align='center'><input type='radio' " + 
123                       (this.rating == 3 ? "checked='true'" : "") + 
124                       " onchange='events.getEvaluation(" + this.id + 
125                       ").recordRating(3)' name='" + this.ratingGroupName + 
126                       "' value='3'></td>" +
127               "<td align='center'><input type='radio' " + 
128                       (this.rating == 2 ? "checked='true'" : "") + 
129                       " onchange='events.getEvaluation(" + this.id + 
130                       ").recordRating(2)' name='" + this.ratingGroupName + 
131                       "' value='4'></td>" +
132               "<td align='center'><input type='radio' " + 
133                       (this.rating == 1 ? "checked='true'" : "") + 
134                       " onchange='events.getEvaluation(" + this.id + 
135                       ").recordRating(1)' name='" + this.ratingGroupName + 
136                       "' value='5'></td>" +
137               "</tr>" +
138               "</table>"  +
139               "</form>";
140    }
141}
Note: See TracBrowser for help on using the repository browser.