Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Story burndown for project dashboard #4

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ temp-testng*
tomcat
*.log
velocity.log*

.idea/
classes/
7 changes: 6 additions & 1 deletion src/main/java/scrum/client/dashboard/DashboardWidget.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ protected Widget onInitialization() {

ScrumNavigatorWidget nav = widgets.getSidebar().getNavigator();

PagePanel storyBurndown = new PagePanel();
storyBurndown.addHeader("Story Burndown",
new HyperlinkWidget(nav.createSwitchAction(widgets.getSprintBacklog())));
storyBurndown.addSection(new StoryBurndownWidget());

PagePanel sprintBurndown = new PagePanel();
sprintBurndown.addHeader("Sprint Burndown",
new HyperlinkWidget(nav.createSwitchAction(widgets.getSprintBacklog())));
Expand Down Expand Up @@ -67,7 +72,7 @@ protected Widget onInitialization() {
events.addSection(new LatestEventsWidget());

Widget left = TableBuilder.column(5, sprintBurndown, teamsTasks, posTasks);
Widget right = TableBuilder.column(5, impediments, risks, events);
Widget right = TableBuilder.column(5, storyBurndown, impediments, risks, events);

return TableBuilder.row(5, left, right);
}
Expand Down
41 changes: 41 additions & 0 deletions src/main/java/scrum/client/dashboard/StoryBurndownWidget.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package scrum.client.dashboard;

import ilarkesto.core.time.Tm;
import scrum.client.common.AScrumWidget;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;

public class StoryBurndownWidget extends AScrumWidget {

public static final int CHART_WIDTH = 800;
public static final int CHART_HEIGHT = 270;

private Image sprintChart;

@Override
protected Widget onInitialization() {
sprintChart = new Image(getChartUrl(200));
return sprintChart;
}

@Override
protected void onUpdate() {
int width = getChartWidth();
sprintChart.setWidth(width + "px");
sprintChart.setUrl(getChartUrl(width) + "&timestamp=" + Tm.getCurrentTimeMillis());
}

private String getChartUrl(int width) {
return getCurrentSprint().getStoryBurndown(width, CHART_HEIGHT);
}

private int getChartWidth() {
int width = Window.getClientWidth() - 280;
width = width / 2;
if (width < 100) width = 100;
return width;
}

}
5 changes: 5 additions & 0 deletions src/main/java/scrum/client/sprint/Sprint.java
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,11 @@ public String getChartUrl(int width, int height) {
+ height;
}

public String getStoryBurndown(int width, int height) {
return GWT.getModuleBaseURL() + "storyBurndownChart.png?sprintId=" + getId() + "&width=" + width + "&height="
+ height;
}

public boolean isCompleted() {
return getVelocity() != null;
}
Expand Down
18 changes: 14 additions & 4 deletions src/main/java/scrum/server/ScrumWebApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@
import scrum.server.admin.SystemConfig;
import scrum.server.admin.User;
import scrum.server.admin.UserDao;
import scrum.server.common.BurndownChart;
import scrum.server.common.TaskBurndownChart;
import scrum.server.common.StoryBurndownChart;
import scrum.server.journal.ProjectEvent;
import scrum.server.pr.EmailSender;
import scrum.server.pr.SubscriptionService;
Expand All @@ -66,7 +67,8 @@ public class ScrumWebApplication extends GScrumWebApplication {

private static final Log log = Log.get(ScrumWebApplication.class);

private BurndownChart burndownChart;
private TaskBurndownChart burndownChart;
private StoryBurndownChart storyBurndownChart;
private KunagiRootConfig config;
private ScrumEntityfilePreparator entityfilePreparator;
private SystemMessage systemMessage;
Expand All @@ -86,14 +88,22 @@ protected int getDataVersion() {

// --- composites ---

public BurndownChart getBurndownChart() {
public TaskBurndownChart getBurndownChart() {
if (burndownChart == null) {
burndownChart = new BurndownChart();
burndownChart = new TaskBurndownChart();
burndownChart.setSprintDao(getSprintDao());
}
return burndownChart;
}

public StoryBurndownChart getStoryBurndownChart() {
if (storyBurndownChart == null) {
storyBurndownChart = new StoryBurndownChart();
storyBurndownChart.setSprintDao(getSprintDao());
}
return storyBurndownChart;
}

public SystemConfig getSystemConfig() {
return getSystemConfigDao().getSystemConfig();
}
Expand Down
Loading