mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
getting next recommendation in check listener (EDU-882)
This commit is contained in:
@@ -191,7 +191,7 @@
|
||||
<extensions defaultExtensionNs="Edu">
|
||||
<optionsProvider instance="com.jetbrains.edu.learning.stepic.StepicStudyOptions"/>
|
||||
<checkListener implementation="com.jetbrains.edu.learning.twitter.StudyTwitterAction"/>
|
||||
|
||||
<checkListener implementation="com.jetbrains.edu.learning.stepic.EduNextRecommendationCheckListener"/>
|
||||
<!--course creator-->
|
||||
<optionsProvider instance="com.jetbrains.edu.coursecreator.settings.CCOptions"/>
|
||||
</extensions>
|
||||
|
||||
@@ -84,6 +84,7 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun
|
||||
else {
|
||||
checkForEduCourse(indicator);
|
||||
}
|
||||
runAfterTaskCheckedActions();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,26 +142,10 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun
|
||||
|
||||
if (myTask instanceof ChoiceTask) {
|
||||
final Pair<Boolean, String> result = EduAdaptiveStepicConnector.checkChoiceTask(myProject, (ChoiceTask)myTask, user);
|
||||
processStepicCheckOutput(indicator, result);
|
||||
processStepicCheckOutput(result);
|
||||
}
|
||||
else if (myTask instanceof TheoryTask) {
|
||||
final int lessonId = myTask.getLesson().getId();
|
||||
final boolean reactionPosted = EduAdaptiveStepicConnector.postRecommendationReaction(String.valueOf(lessonId),
|
||||
String.valueOf(user.getId()),
|
||||
EduAdaptiveStepicConnector.NEXT_RECOMMENDATION_REACTION);
|
||||
|
||||
if (reactionPosted) {
|
||||
if (myStatusBeforeCheck != StudyStatus.Solved) {
|
||||
myTask.setStatus(StudyStatus.Solved);
|
||||
EduAdaptiveStepicConnector.addNextRecommendedTask(myProject, myTask.getLesson(), indicator,
|
||||
EduAdaptiveStepicConnector.NEXT_RECOMMENDATION_REACTION);
|
||||
}
|
||||
}
|
||||
else {
|
||||
ApplicationManager.getApplication().invokeLater(() ->
|
||||
StudyUtils
|
||||
.showErrorPopupOnToolbar(myProject, "Unable to get next recommendation"));
|
||||
}
|
||||
myTask.setStatus(StudyStatus.Solved);
|
||||
}
|
||||
else {
|
||||
final StudyTestsOutputParser.TestsOutput testOutput = getTestOutput(indicator);
|
||||
@@ -172,26 +157,21 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun
|
||||
}
|
||||
else {
|
||||
final Pair<Boolean, String> pair = EduAdaptiveStepicConnector.checkCodeTask(myProject, myTask, user);
|
||||
processStepicCheckOutput(indicator, pair);
|
||||
processStepicCheckOutput(pair);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processStepicCheckOutput(@NotNull ProgressIndicator indicator, @Nullable Pair<Boolean, String> pair) {
|
||||
private void processStepicCheckOutput(@Nullable Pair<Boolean, String> pair) {
|
||||
if (pair != null && pair.getFirst() != null) {
|
||||
if (pair.getFirst()) {
|
||||
onTaskSolved("Congratulations! Remote tests passed.");
|
||||
if (myStatusBeforeCheck != StudyStatus.Solved) {
|
||||
EduAdaptiveStepicConnector.addNextRecommendedTask(myProject, myTask.getLesson(), indicator,
|
||||
EduAdaptiveStepicConnector.NEXT_RECOMMENDATION_REACTION);
|
||||
}
|
||||
}
|
||||
else {
|
||||
final String checkMessage = pair.getSecond();
|
||||
onTaskFailed(checkMessage);
|
||||
}
|
||||
runAfterTaskCheckedActions();
|
||||
}
|
||||
else {
|
||||
ApplicationManager.getApplication().invokeLater(() -> {
|
||||
|
||||
+1
@@ -62,6 +62,7 @@ public class EduAdaptiveStepicConnector {
|
||||
public static final int NEXT_RECOMMENDATION_REACTION = 2;
|
||||
public static final int TOO_HARD_RECOMMENDATION_REACTION = 0;
|
||||
public static final int TOO_BORING_RECOMMENDATION_REACTION = -1;
|
||||
public static final String LOADING_NEXT_RECOMMENDATION = "Loading Next Recommendation";
|
||||
private static final Logger LOG = Logger.getInstance(EduAdaptiveStepicConnector.class);
|
||||
private static final int CONNECTION_TIMEOUT = 60 * 1000;
|
||||
private static final String CODE_TASK_TYPE = "code";
|
||||
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.jetbrains.edu.learning.stepic;
|
||||
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.jetbrains.edu.learning.checker.StudyCheckListener;
|
||||
import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class EduNextRecommendationCheckListener implements StudyCheckListener {
|
||||
|
||||
private StudyStatus myStatusBeforeCheck;
|
||||
|
||||
@Override
|
||||
public void beforeCheck(@NotNull Project project, @NotNull Task task) {
|
||||
myStatusBeforeCheck = task.getStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCheck(@NotNull Project project, @NotNull Task task) {
|
||||
if (myStatusBeforeCheck == StudyStatus.Solved) {
|
||||
return;
|
||||
}
|
||||
StudyStatus statusAfterCheck = task.getStatus();
|
||||
if (statusAfterCheck != StudyStatus.Solved) {
|
||||
return;
|
||||
}
|
||||
ProgressManager.getInstance().run(new com.intellij.openapi.progress.Task.Backgroundable(project, EduAdaptiveStepicConnector.LOADING_NEXT_RECOMMENDATION) {
|
||||
@Override
|
||||
public void run(@NotNull ProgressIndicator indicator) {
|
||||
EduAdaptiveStepicConnector.addNextRecommendedTask(project, task.getLesson(), indicator, EduAdaptiveStepicConnector.NEXT_RECOMMENDATION_REACTION);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -141,9 +141,9 @@ public class StepicAdaptiveReactionsPanel extends JPanel {
|
||||
final com.jetbrains.edu.learning.courseFormat.tasks.Task task = StudyUtils.getCurrentTask(myProject);
|
||||
if (task != null && task.getStatus() != StudyStatus.Solved) {
|
||||
final ProgressIndicatorBase progress = new ProgressIndicatorBase();
|
||||
progress.setText("Loading Next Recommendation");
|
||||
progress.setText(EduAdaptiveStepicConnector.LOADING_NEXT_RECOMMENDATION);
|
||||
ProgressManager.getInstance().run(new Task.Backgroundable(myProject,
|
||||
"Loading Next Recommendation") {
|
||||
EduAdaptiveStepicConnector.LOADING_NEXT_RECOMMENDATION) {
|
||||
@Override
|
||||
public void run(@NotNull ProgressIndicator indicator) {
|
||||
StepicAdaptiveReactionsPanel.this.setEnabledRecursive(false);
|
||||
|
||||
Reference in New Issue
Block a user