Skip to content

Commit ec1d887

Browse files
committed
Merge pull request sakaiproject#1456 from steveswinsburg/feature/1454_course_grade_preview
#1454 Add course grade preview
2 parents fed375d + 3da40e8 commit ec1d887

File tree

3 files changed

+87
-4
lines changed

3 files changed

+87
-4
lines changed

gradebookng/tool/src/java/org/sakaiproject/gradebookng/GradebookNgApplication.properties

+7
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,13 @@ settingspage.displaycoursegrade.label = Display final course grade to students
241241
settingspage.displaycoursegrade.lettergrade = Letter Grade
242242
settingspage.displaycoursegrade.percentage = Percentage
243243
settingspage.displaycoursegrade.points = Points
244+
settingspage.displaycoursegrade.preview = Preview
245+
settingspage.displaycoursegrade.preview-none = -
246+
settingspage.displaycoursegrade.preview-letter = B+
247+
settingspage.displaycoursegrade.preview-percentage-first = 88%
248+
settingspage.displaycoursegrade.preview-percentage-second = (88%)
249+
settingspage.displaycoursegrade.preview-points-first = 176/200
250+
settingspage.displaycoursegrade.preview-points-second = [176/200]
244251

245252
settingspage.categories.none = No categories
246253
settingspage.categories.categoriesonly = Categories only

gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/panels/SettingsGradeReleasePanel.html

+6
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,12 @@ <h3 class="panel-title">
5555

5656
</div>
5757
</div>
58+
59+
<div class="form-group" wicket:id="courseGradePreview">
60+
<span><wicket:message key="settingspage.displaycoursegrade.preview" /></span>
61+
<span class="bg-info" wicket:id="preview">X+ 99%</span>
62+
</div>
63+
5864
</div>
5965
</div>
6066
</div>

gradebookng/tool/src/java/org/sakaiproject/gradebookng/tool/panels/SettingsGradeReleasePanel.java

+74-4
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,22 @@
11
package org.sakaiproject.gradebookng.tool.panels;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import org.apache.commons.lang.StringUtils;
37
import org.apache.wicket.ajax.AjaxRequestTarget;
48
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
59
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
610
import org.apache.wicket.markup.html.WebMarkupContainer;
11+
import org.apache.wicket.markup.html.basic.Label;
712
import org.apache.wicket.markup.html.panel.Panel;
813
import org.apache.wicket.model.IModel;
14+
import org.apache.wicket.model.Model;
915
import org.apache.wicket.model.PropertyModel;
1016
import org.apache.wicket.spring.injection.annot.SpringBean;
1117
import org.sakaiproject.gradebookng.business.GradebookNgBusinessService;
1218
import org.sakaiproject.gradebookng.tool.model.GbSettings;
19+
import org.sakaiproject.service.gradebook.shared.GradebookInformation;
1320

1421
public class SettingsGradeReleasePanel extends Panel {
1522

@@ -20,6 +27,8 @@ public class SettingsGradeReleasePanel extends Panel {
2027

2128
IModel<GbSettings> model;
2229

30+
Label preview;
31+
2332
public SettingsGradeReleasePanel(String id, IModel<GbSettings> model) {
2433
super(id, model);
2534
this.model = model;
@@ -47,7 +56,8 @@ protected void onUpdate(AjaxRequestTarget target) {
4756

4857
@Override
4958
protected void onUpdate(AjaxRequestTarget target) {
50-
//nothing required
59+
//update preview
60+
target.add(preview);
5161
}
5262
};
5363
displayCourseGrade.setOutputMarkupId(true);
@@ -72,7 +82,8 @@ public boolean isVisible() {
7282

7383
@Override
7484
protected void onUpdate(AjaxRequestTarget target) {
75-
//nothing required
85+
//update preview
86+
target.add(preview);
7687
}
7788
};
7889
letterGrade.setOutputMarkupId(true);
@@ -84,7 +95,8 @@ protected void onUpdate(AjaxRequestTarget target) {
8495

8596
@Override
8697
protected void onUpdate(AjaxRequestTarget target) {
87-
//nothing required
98+
//update preview
99+
target.add(preview);
88100
}
89101
};
90102
percentage.setOutputMarkupId(true);
@@ -96,12 +108,68 @@ protected void onUpdate(AjaxRequestTarget target) {
96108

97109
@Override
98110
protected void onUpdate(AjaxRequestTarget target) {
99-
//nothing required
111+
//update preview
112+
target.add(preview);
100113
}
101114
};
102115
points.setOutputMarkupId(true);
103116
courseGradeType.add(points);
104117

118+
//preview model, uses settings to determine out what to display
119+
Model<String> previewModel = new Model<String>() {
120+
private static final long serialVersionUID = 1L;
121+
public String getObject() {
122+
123+
List<String> parts = new ArrayList<>();
124+
125+
GradebookInformation settings = model.getObject().getGradebookInformation();
126+
127+
if(settings.isCourseLetterGradeDisplayed()) {
128+
parts.add(getString("settingspage.displaycoursegrade.preview-letter"));
129+
}
130+
131+
if(settings.isCourseAverageDisplayed()) {
132+
if(parts.isEmpty()) {
133+
parts.add(getString("settingspage.displaycoursegrade.preview-percentage-first"));
134+
} else {
135+
parts.add(getString("settingspage.displaycoursegrade.preview-percentage-second"));
136+
}
137+
}
138+
139+
if(settings.isCoursePointsDisplayed()) {
140+
if(parts.isEmpty()) {
141+
parts.add(getString("settingspage.displaycoursegrade.preview-points-first"));
142+
} else {
143+
parts.add(getString("settingspage.displaycoursegrade.preview-points-second"));
144+
}
145+
}
146+
147+
if(parts.isEmpty()) {
148+
parts.add(getString("settingspage.displaycoursegrade.preview-none"));
149+
}
150+
151+
return StringUtils.join(parts, " ");
152+
}
153+
};
154+
155+
//course grade type container
156+
final WebMarkupContainer courseGradePreview = new WebMarkupContainer("courseGradePreview") {
157+
private static final long serialVersionUID = 1L;
158+
159+
@Override
160+
public boolean isVisible() {
161+
return displayCourseGrade.getModelObject();
162+
}
163+
164+
};
165+
courseGradePreview.setOutputMarkupPlaceholderTag(true);
166+
add(courseGradePreview);
167+
168+
//preview
169+
preview = new Label("preview", previewModel);
170+
preview.setOutputMarkupId(true);
171+
courseGradePreview.add(preview);
172+
105173
//behaviour for when the 'display course grade' checkbox is changed
106174
displayCourseGrade.add(new AjaxFormComponentUpdatingBehavior("onchange") {
107175
private static final long serialVersionUID = 1L;
@@ -111,7 +179,9 @@ protected void onUpdate(AjaxRequestTarget target) {
111179

112180
boolean checked = displayCourseGrade.getModelObject();
113181
courseGradeType.setVisible(checked);
182+
courseGradePreview.setVisible(checked);
114183
target.add(courseGradeType);
184+
target.add(courseGradePreview);
115185

116186
}
117187
});

0 commit comments

Comments
 (0)