EDU-277 Implement separate feature usage statistics for PyCharm Educational Edition

This commit is contained in:
Ekaterina Tuzova
2016-06-29 11:16:01 +03:00
parent c6fb7615e2
commit 697f2e93d3
6 changed files with 35 additions and 6 deletions
@@ -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) {
@@ -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();
}
}
@@ -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();
@@ -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);
@@ -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 {
@@ -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;