mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EDU-277 Implement separate feature usage statistics for PyCharm Educational Edition
This commit is contained in:
+2
@@ -27,6 +27,7 @@ import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.core.EduUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.*;
|
||||
import com.jetbrains.edu.learning.statistics.EduUsagesCollector;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.*;
|
||||
@@ -71,6 +72,7 @@ public class CCCreateCourseArchive extends DumbAwareAction {
|
||||
return;
|
||||
}
|
||||
createCourseArchive(project, module, myZipName, myLocationDir, true);
|
||||
EduUsagesCollector.createdCourseArchive();
|
||||
}
|
||||
|
||||
public static void createCourseArchive(final Project project, Module module, String zipName, String locationDir, boolean showMessage) {
|
||||
|
||||
+2
@@ -10,6 +10,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.jetbrains.edu.coursecreator.CCUtils;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.statistics.EduUsagesCollector;
|
||||
import com.jetbrains.edu.learning.stepic.EduStepicConnector;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -37,6 +38,7 @@ public class CCPushCourse extends DumbAwareAction {
|
||||
return;
|
||||
}
|
||||
EduStepicConnector.postCourseWithProgress(project, course);
|
||||
EduUsagesCollector.courseUploaded();
|
||||
}
|
||||
|
||||
}
|
||||
+2
@@ -18,6 +18,7 @@ import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholder;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.statistics.EduUsagesCollector;
|
||||
import icons.InteractiveLearningIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -59,6 +60,7 @@ public class StudyShowHintAction extends StudyActionWithShortcut {
|
||||
if (file == null) {
|
||||
return;
|
||||
}
|
||||
EduUsagesCollector.hintShown();
|
||||
String hintText = ourWarningMessage;
|
||||
if (answerPlaceholder != null) {
|
||||
String hint = answerPlaceholder.getHint();
|
||||
|
||||
+7
-6
@@ -15,6 +15,7 @@ import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.courseFormat.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.editor.StudyEditor;
|
||||
import com.jetbrains.edu.learning.statistics.EduUsagesCollector;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -36,16 +37,16 @@ abstract public class StudyTaskNavigationAction extends StudyActionWithShortcut
|
||||
if (!studyState.isValid()) {
|
||||
return;
|
||||
}
|
||||
Task nextTask = getTargetTask(studyState.getTask());
|
||||
if (nextTask == null) {
|
||||
Task targetTask = getTargetTask(studyState.getTask());
|
||||
if (targetTask == null) {
|
||||
return;
|
||||
}
|
||||
for (VirtualFile file : FileEditorManager.getInstance(project).getOpenFiles()) {
|
||||
FileEditorManager.getInstance(project).closeFile(file);
|
||||
}
|
||||
int nextTaskIndex = nextTask.getIndex();
|
||||
int lessonIndex = nextTask.getLesson().getIndex();
|
||||
Map<String, TaskFile> nextTaskFiles = nextTask.getTaskFiles();
|
||||
int nextTaskIndex = targetTask.getIndex();
|
||||
int lessonIndex = targetTask.getLesson().getIndex();
|
||||
Map<String, TaskFile> nextTaskFiles = targetTask.getTaskFiles();
|
||||
VirtualFile projectDir = project.getBaseDir();
|
||||
String lessonDirName = EduNames.LESSON + String.valueOf(lessonIndex);
|
||||
if (projectDir == null) {
|
||||
@@ -64,7 +65,7 @@ abstract public class StudyTaskNavigationAction extends StudyActionWithShortcut
|
||||
ProjectView.getInstance(project).select(taskDir, taskDir, false);
|
||||
return;
|
||||
}
|
||||
|
||||
EduUsagesCollector.taskNavigation();
|
||||
VirtualFile shouldBeActive = getFileToActivate(project, nextTaskFiles, taskDir);
|
||||
|
||||
updateProjectView(project, shouldBeActive);
|
||||
|
||||
+20
@@ -46,6 +46,26 @@ public class EduUsagesCollector extends UsagesCollector {
|
||||
ServiceManager.getService(EduUsagesCollector.class).myUsageDescriptors.get("project.opened." + projectTypeId).advance();
|
||||
}
|
||||
|
||||
public static void taskChecked() {
|
||||
ServiceManager.getService(EduUsagesCollector.class).myUsageDescriptors.get("checkTask.").advance();
|
||||
}
|
||||
|
||||
public static void hintShown() {
|
||||
ServiceManager.getService(EduUsagesCollector.class).myUsageDescriptors.get("showHint.").advance();
|
||||
}
|
||||
|
||||
public static void taskNavigation() {
|
||||
ServiceManager.getService(EduUsagesCollector.class).myUsageDescriptors.get("navigateToTask.").advance();
|
||||
}
|
||||
|
||||
public static void courseUploaded() {
|
||||
ServiceManager.getService(EduUsagesCollector.class).myUsageDescriptors.get("uploadCourse.").advance();
|
||||
}
|
||||
|
||||
public static void createdCourseArchive() {
|
||||
ServiceManager.getService(EduUsagesCollector.class).myUsageDescriptors.get("courseArchive.").advance();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<UsageDescriptor> getUsages() throws CollectUsagesException {
|
||||
|
||||
+2
@@ -21,6 +21,7 @@ import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.learning.courseFormat.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.editor.StudyEditor;
|
||||
import com.jetbrains.edu.learning.statistics.EduUsagesCollector;
|
||||
import com.jetbrains.edu.learning.ui.StudyToolWindow;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -32,6 +33,7 @@ public class PyStudyCheckAction extends StudyCheckAction {
|
||||
public static final String ACTION_ID = "PyCheckAction";
|
||||
|
||||
public void check(@NotNull Project project) {
|
||||
EduUsagesCollector.taskChecked();
|
||||
ApplicationManager.getApplication().runWriteAction(() -> CommandProcessor.getInstance().runUndoTransparentAction(() -> {
|
||||
final StudyEditor selectedEditor = StudyUtils.getSelectedStudyEditor(project);
|
||||
if (selectedEditor == null) return;
|
||||
|
||||
Reference in New Issue
Block a user