From 3d8b044b17314e9280bd3f467cfa19eeb821890d Mon Sep 17 00:00:00 2001 From: Diego Pino Date: Mon, 23 Apr 2012 16:48:38 +0200 Subject: [PATCH] Add table with summary of the status of tasks --- .../web/dashboard/DashboardController.java | 27 ++++++++++++++--- .../web/dashboard/DashboardModel.java | 11 +++++++ .../web/dashboard/IDashboardModel.java | 5 ++++ .../webapp/dashboard/_dashboardfororder.zul | 29 +++++++++++++++++++ 4 files changed, 68 insertions(+), 4 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardController.java b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardController.java index ebaf7c1e5..393599732 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardController.java @@ -23,9 +23,7 @@ import static org.libreplan.web.I18nHelper._; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -33,6 +31,7 @@ import java.util.TreeSet; import org.apache.commons.lang.StringUtils; import org.libreplan.business.orders.entities.Order; +import org.libreplan.business.planner.entities.TaskStatusEnum; import org.libreplan.web.common.Util; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -40,6 +39,8 @@ import org.springframework.stereotype.Component; import org.zkoss.zk.ui.util.Clients; import org.zkoss.zk.ui.util.GenericForwardComposer; import org.zkoss.zul.Div; +import org.zkoss.zul.Grid; +import org.zkoss.zul.Label; import org.zkoss.zul.Window; @@ -57,6 +58,8 @@ public class DashboardController extends GenericForwardComposer { private Window dashboardWindow; + private Grid gridTasksSummary; + private Div projectDashboardChartsDiv; private Div projectDashboardNoTasksWarningDiv; @@ -81,10 +84,26 @@ public class DashboardController extends GenericForwardComposer { if (this.dashboardWindow != null) { renderGlobalProgress(); renderTaskStatus(); - } - + renderTasksSummary(); + } } + private void renderTasksSummary() { + Map taskStatus = dashboardModel.calculateTaskStatus(); + + taskStatus("lblTasksFinished", taskStatus.get(TaskStatusEnum.FINISHED)); + taskStatus("lblTasksBlocked", taskStatus.get(TaskStatusEnum.BLOCKED)); + taskStatus("lblTasksInProgress", taskStatus.get(TaskStatusEnum.IN_PROGRESS)); + taskStatus("lblTasksReadyToStart", taskStatus.get(TaskStatusEnum.READY_TO_START)); + } + + private void taskStatus(String key, Integer value) { + Label label = (Label) gridTasksSummary.getFellowIfAny(key); + if (label != null) { + label.setValue(String.format(_("%d tasks"), value)); + } + } + private void renderTaskStatus() { TaskStatus taskStatus = TaskStatus.create(); taskStatus.data(_("Finished"), diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java index c7bd15ee1..552bcf180 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/DashboardModel.java @@ -291,6 +291,17 @@ public class DashboardModel implements IDashboardModel { } return histogram; } + + public Map calculateTaskStatus() { + AccumulateTasksStatusVisitor visitor = new AccumulateTasksStatusVisitor(); + TaskElement rootTask = getRootTask(); + if (this.getRootTask() == null) { + throw new RuntimeException("Root task is null"); + } + resetTasksStatusInGraph(); + rootTask.acceptVisitor(visitor); + return visitor.getTaskStatusData(); + } private void calculateTaskStatusStatistics() { AccumulateTasksStatusVisitor visitor = new AccumulateTasksStatusVisitor(); diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/IDashboardModel.java b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/IDashboardModel.java index 5e4622473..d37899688 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/IDashboardModel.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/dashboard/IDashboardModel.java @@ -21,8 +21,10 @@ package org.libreplan.web.dashboard; import java.math.BigDecimal; import java.util.List; +import java.util.Map; import org.libreplan.business.orders.entities.Order; +import org.libreplan.business.planner.entities.TaskStatusEnum; interface IDashboardModel { @@ -67,4 +69,7 @@ interface IDashboardModel { /* Time KPI: "Lead/Lag in task completion" */ List getLagInTaskCompletionHistogram(); + + Map calculateTaskStatus(); + } diff --git a/libreplan-webapp/src/main/webapp/dashboard/_dashboardfororder.zul b/libreplan-webapp/src/main/webapp/dashboard/_dashboardfororder.zul index 5c1ab6447..8fb93554a 100644 --- a/libreplan-webapp/src/main/webapp/dashboard/_dashboardfororder.zul +++ b/libreplan-webapp/src/main/webapp/dashboard/_dashboardfororder.zul @@ -42,6 +42,35 @@ + + + + + + + + + + + + + + + + + + + + +