Blackboard Gradebook (untested)
This commit is contained in:
@@ -8,8 +8,10 @@ import org.json.JSONObject;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import de.sebse.fuplanner.services.kvv.types.Announcement;
|
||||||
import de.sebse.fuplanner.services.kvv.types.Grade;
|
import de.sebse.fuplanner.services.kvv.types.Grade;
|
||||||
import de.sebse.fuplanner.services.kvv.types.Modules;
|
import de.sebse.fuplanner.services.kvv.types.Modules;
|
||||||
|
import de.sebse.fuplanner.tools.UtilsDate;
|
||||||
import de.sebse.fuplanner.tools.network.NetworkCallback;
|
import de.sebse.fuplanner.tools.network.NetworkCallback;
|
||||||
import de.sebse.fuplanner.tools.network.NetworkError;
|
import de.sebse.fuplanner.tools.network.NetworkError;
|
||||||
import de.sebse.fuplanner.tools.network.NetworkErrorCallback;
|
import de.sebse.fuplanner.tools.network.NetworkErrorCallback;
|
||||||
@@ -81,6 +83,72 @@ public class ModulesGradebook extends PartModules<ArrayList<Grade>> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void upgradeBB(String ID, NetworkCallback<ArrayList<Grade>> callback, NetworkErrorCallback errorCallback) {
|
protected void upgradeBB(String ID, NetworkCallback<ArrayList<Grade>> callback, NetworkErrorCallback errorCallback) {
|
||||||
callback.onResponse(new ArrayList<>());
|
if (!mLogin.isInOnlineMode() || mLogin.getLoginTokenBB() == null || !mLogin.getLoginTokenBB().isAvailable()) {
|
||||||
|
errorCallback.onError(new NetworkError(101510, 500, "Currently running in offline mode!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
super.get(String.format("https://lms.fu-berlin.de/learn/api/public/v2/courses/%s/gradebook/columns", ID), mLogin.getLoginTokenBB().getCookies(), response -> {
|
||||||
|
String body = response.getParsed();
|
||||||
|
if (body == null) {
|
||||||
|
errorCallback.onError(new NetworkError(101511, 400, "No gradebook columns retrieved!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
JSONArray gradeColumns;
|
||||||
|
try {
|
||||||
|
JSONObject json = new JSONObject(body);
|
||||||
|
gradeColumns = json.getJSONArray("results");
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
errorCallback.onError(new NetworkError(101512, 400, "Cannot parse gradebook columns!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
get(String.format("https://lms.fu-berlin.de/learn/api/public/v2/courses/%s/gradebook/users/%s", ID, mLogin.getLoginTokenBB().getId()), mLogin.getLoginTokenBB().getCookies(), response1 -> {
|
||||||
|
String body1 = response1.getParsed();
|
||||||
|
if (body1 == null) {
|
||||||
|
errorCallback.onError(new NetworkError(101513, 400, "No gradebook entries retrieved!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
JSONArray grades;
|
||||||
|
try {
|
||||||
|
JSONObject json = new JSONObject(body1);
|
||||||
|
grades = json.getJSONArray("results");
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
errorCallback.onError(new NetworkError(101514, 400, "Cannot parse gradebook entries!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
log.d("COLS", gradeColumns);
|
||||||
|
log.d("GRADES", grades);
|
||||||
|
|
||||||
|
ArrayList<Grade> result = new ArrayList<>();
|
||||||
|
for (int i = 0; i < grades.length(); i++) {
|
||||||
|
for (int j = 0; j < gradeColumns.length(); j++) {
|
||||||
|
try {
|
||||||
|
JSONObject grade = grades.getJSONObject(i);
|
||||||
|
JSONObject column = gradeColumns.getJSONObject(j);
|
||||||
|
String grade_id = grade.getString("columnId");
|
||||||
|
String column_id = column.getString("id");
|
||||||
|
if (!grade_id.equals(column_id))
|
||||||
|
continue;
|
||||||
|
String name = column.getString("name");
|
||||||
|
JSONObject displayGrade = grade.optJSONObject("displayGrade");
|
||||||
|
double points = displayGrade != null ? displayGrade.optDouble("score", 0) : 0;
|
||||||
|
JSONObject score = column.optJSONObject("score");
|
||||||
|
double maxPoints = score != null ? score.optDouble("possible", 0) : 0;
|
||||||
|
|
||||||
|
result.add(new Grade(name, points, maxPoints));
|
||||||
|
} catch (JSONException e) {
|
||||||
|
log.e(new NetworkError(101515, 400, "Cannot parse grades!"));
|
||||||
|
log.e("ID:", i, "JSON-grades:", grades);
|
||||||
|
log.e("ID:", j, "JSON-gradeColumns:", gradeColumns);
|
||||||
|
e.printStackTrace();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
callback.onResponse(result);
|
||||||
|
}, error -> errorCallback.onError(new NetworkError(101516, error.networkResponse.statusCode, "Cannot get gradebook columns!")));
|
||||||
|
}, error -> errorCallback.onError(new NetworkError(101517, error.networkResponse.statusCode, "Cannot get gradebook entries!")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="@dimen/cardview_margin"
|
android:layout_margin="@dimen/cardview_margin"
|
||||||
android:textIsSelectable="true"
|
|
||||||
card_view:cardElevation="@dimen/card_elevation"
|
card_view:cardElevation="@dimen/card_elevation"
|
||||||
app:animationDuration="300"
|
app:animationDuration="300"
|
||||||
app:inner_view="@layout/list_announcement_body"
|
app:inner_view="@layout/list_announcement_body"
|
||||||
|
|||||||
Reference in New Issue
Block a user