diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java index 1156336bb..b250b1b34 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/TaskComponent.java @@ -220,6 +220,9 @@ public class TaskComponent extends Div implements AfterCompose { cssClass += task.isLimitingAndHasDayAssignments() ? " limiting-assigned " : " limiting-unassigned "; } + if (task.belongsClosedProject()) { + cssClass += " project-closed "; + } return cssClass; } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java index b55ed9ec8..b04f93b9d 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/DefaultFundamentalProperties.java @@ -267,4 +267,9 @@ public class DefaultFundamentalProperties implements ITaskFundamentalProperties return false; } + @Override + public boolean belongsClosedProject() { + return false; + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java index a2e8fae6e..b814e6fdc 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/ITaskFundamentalProperties.java @@ -107,4 +107,6 @@ public interface ITaskFundamentalProperties { boolean isManualAnyAllocation(); + public boolean belongsClosedProject(); + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java index 6d8e60ac2..56f4c4faf 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/data/Task.java @@ -451,4 +451,8 @@ public abstract class Task implements ITaskFundamentalProperties { return fundamentalProperties.isManualAnyAllocation(); } + public boolean belongsClosedProject() { + return fundamentalProperties.belongsClosedProject(); + } + } diff --git a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java index 31125cbd5..ade32b1c6 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java +++ b/libreplan-business/src/main/java/org/libreplan/business/planner/entities/TaskElement.java @@ -31,6 +31,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.ConcurrentModificationException; import java.util.Date; +import java.util.EnumSet; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -47,6 +48,7 @@ import org.libreplan.business.common.BaseEntity; import org.libreplan.business.common.entities.ProgressType; import org.libreplan.business.orders.entities.Order; import org.libreplan.business.orders.entities.OrderElement; +import org.libreplan.business.orders.entities.OrderStatusEnum; import org.libreplan.business.orders.entities.TaskSource; import org.libreplan.business.planner.entities.Dependency.Type; import org.libreplan.business.resources.daos.IResourcesSearcher; @@ -622,6 +624,18 @@ public abstract class TaskElement extends BaseEntity { return "assigned"; } + public Boolean belongsClosedProject() { + EnumSet CLOSED = EnumSet.of(OrderStatusEnum.CANCELLED, + OrderStatusEnum.FINISHED, OrderStatusEnum.STORED); + + Order order = getOrderElement().getOrder(); + if(CLOSED.contains(order.getState())) { + return true; + } + + return false; + } + public abstract boolean hasLimitedResourceAllocation(); public void removePredecessorsDayAssignmentsFor(Scenario scenario) { diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/planner/TaskElementAdapter.java b/libreplan-webapp/src/main/java/org/libreplan/web/planner/TaskElementAdapter.java index 544efda96..8865e957d 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/planner/TaskElementAdapter.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/planner/TaskElementAdapter.java @@ -1107,6 +1107,11 @@ public class TaskElementAdapter { && ((Task) taskElement).isManualAnyAllocation(); } + @Override + public boolean belongsClosedProject() { + return taskElement.belongsClosedProject(); + } + } @Override