From 86cba1b8e1d4e278f09c149c7ff9335cbe0396b3 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 25 Nov 2016 17:48:20 +0300 Subject: [PATCH] take into account subtasks for course progress bar this is done only for courses with one lesson and one task --- .../edu/learning/ui/StudyToolWindow.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindow.java b/python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindow.java index 52fdec2b2fd6..f384605b59ce 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindow.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindow.java @@ -77,10 +77,10 @@ public abstract class StudyToolWindow extends SimpleToolWindowPanel implements D if (isToolwindow && course != null && course.isAdaptive()) { panel.add(new StepicAdaptiveReactionsPanel(project), BorderLayout.NORTH); } - + JComponent taskInfoPanel = createTaskInfoPanel(project); panel.add(taskInfoPanel, BorderLayout.CENTER); - + final JPanel courseProgress = createCourseProgress(project); if (isToolwindow && course != null && !course.isAdaptive() && EduNames.STUDY.equals(course.getCourseMode())) { panel.add(courseProgress, BorderLayout.SOUTH); @@ -92,7 +92,7 @@ public abstract class StudyToolWindow extends SimpleToolWindowPanel implements D myCardLayout.show(myContentPanel, TASK_INFO_ID); setContent(mySplitPane); - + if (isToolwindow) { StudyPluginConfigurator configurator = StudyUtils.getConfigurator(project); if (configurator != null) { @@ -113,11 +113,11 @@ public abstract class StudyToolWindow extends SimpleToolWindowPanel implements D } } } - + public void setTopComponent(@NotNull final JComponent component) { mySplitPane.setFirstComponent(component); } - + public void setDefaultTopComponent() { mySplitPane.setFirstComponent(myContentPanel); } @@ -297,10 +297,18 @@ public abstract class StudyToolWindow extends SimpleToolWindowPanel implements D int taskNum = 0; int taskSolved = 0; List lessons = course.getLessons(); - for (Lesson lesson : lessons) { - if (lesson.getName().equals(EduNames.PYCHARM_ADDITIONAL)) continue; - taskNum += lesson.getTaskList().size(); - taskSolved += getSolvedTasks(lesson); + if (lessons.size() == 1 && lessons.get(0).getTaskList().size() == 1) { + final Lesson lesson = lessons.get(0); + final Task task = lesson.getTaskList().get(0); + taskNum += task.getLastSubtaskIndex() + 1; + taskSolved += task.getActiveSubtaskIndex(); + } + else { + for (Lesson lesson : lessons) { + if (lesson.getName().equals(EduNames.PYCHARM_ADDITIONAL)) continue; + taskNum += lesson.getTaskList().size(); + taskSolved += getSolvedTasks(lesson); + } } String completedTasks = String.format("%d of %d tasks completed", taskSolved, taskNum); double percent = (taskSolved * 100.0) / taskNum;