From 7643e3ff983f13efc31790a716fce33a8e1d52d9 Mon Sep 17 00:00:00 2001 From: Lorenzo Tilve Date: Fri, 10 Jul 2009 21:08:25 +0200 Subject: [PATCH] ItEr16S09RFComportamentoGraficoPlanificadorItEr15S12: Watermark weekend days is shown with different style in day-grained zoomlevel --- .../util/zoom/DetailFiveTimeTrackerState.java | 27 +++++++++ .../ganttz/util/zoom/TimeTrackerState.java | 57 ++++++++++++------- .../resources/web/ganttz/zul/timetracker.zul | 1 + .../src/main/webapp/planner/css/ganttzk.css | 5 ++ 4 files changed, 68 insertions(+), 22 deletions(-) diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/DetailFiveTimeTrackerState.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/DetailFiveTimeTrackerState.java index cd5262509..e3c06a6c4 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/DetailFiveTimeTrackerState.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/DetailFiveTimeTrackerState.java @@ -1,9 +1,14 @@ package org.zkoss.ganttz.util.zoom; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + import org.joda.time.DateTime; import org.joda.time.Days; import org.joda.time.LocalDate; import org.joda.time.ReadablePeriod; +import org.zkoss.ganttz.util.Interval; /** * Zoom level for weeks in the first level and days in the second level @@ -65,4 +70,26 @@ public class DetailFiveTimeTrackerState extends TimeTrackerStateUsingJodaTime { return down ? date.withDayOfWeek(1) : date.withDayOfWeek(1) .plusWeeks(1); } + + @Override + // Just change styles for holidays + public Collection getSecondLevelDetails(Interval interval) { + // Also mark holidays and current date + List items = (List) createDetailsForSecondLevel(interval); + ArrayList result = new ArrayList(); + int dayOfWeek; + + for (DetailItem detailItem : items) { + dayOfWeek = detailItem.getStartDate().dayOfWeek().get(); + if ((dayOfWeek == 6) || (dayOfWeek == 7)) { + detailItem.setBankHoliday(true); + result.add(detailItem); + } else { + detailItem.setBankHoliday(false); + result.add(detailItem); + } + } + return result; + } + } \ No newline at end of file diff --git a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/TimeTrackerState.java b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/TimeTrackerState.java index a8e58a44b..9097b19c2 100644 --- a/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/TimeTrackerState.java +++ b/navalplanner-gantt-zk/src/main/java/org/zkoss/ganttz/util/zoom/TimeTrackerState.java @@ -14,11 +14,11 @@ import java.util.List; import org.joda.time.DateTime; import org.joda.time.Days; -import org.joda.time.JodaTimePermission; import org.zkoss.ganttz.util.Interval; /** - * @author Francisco Javier Moran Rúa + * @author Francisco Javier Moran Rúa + * @author Lorenzo Tilve Álvaro */ public abstract class TimeTrackerState { @@ -28,7 +28,8 @@ public abstract class TimeTrackerState { /** * This class was conceived as an immutable class but it required to * procesate twice DetailItem collections so it has now proper setters - * @author Francisco Javier Moran Rúa + * @author Francisco Javier Moran Rúa + * @author Lorenzo Tilve Álvaro */ public final static class DetailItem { @@ -36,37 +37,39 @@ public abstract class TimeTrackerState { private String name; private boolean even; + private boolean bankHoliday; + private boolean currentPeriod; private int currentDayOffset; private DateTime startDate; - private DateTime endDate; + private DateTime endDate; public DetailItem(int size, String name) { this(size, name, false); } - public DetailItem(int size, String name, - DateTime startDate, DateTime endDate) { + public DetailItem(int size, String name, DateTime startDate, + DateTime endDate) { this(size, name, false); this.startDate = startDate; this.endDate = endDate; this.markCurrentDay(); } - public void markCurrentDay( ) { - if ( this.startDate.isBeforeNow() && this.endDate.isAfterNow() ) { - int offsetInPx = Math.round( - ( ( (float) Days.daysBetween(this.startDate, new DateTime() ).getDays() ) / - ( (float) Days.daysBetween(this.startDate, this.endDate).getDays() ) - ) * this.size); + public void markCurrentDay() { + if (this.startDate.isBeforeNow() && this.endDate.isAfterNow()) { + int offsetInPx = Math + .round((((float) Days.daysBetween(this.startDate, + new DateTime()).getDays()) / ((float) Days + .daysBetween(this.startDate, this.endDate) + .getDays())) + * this.size); this.markCurrentDay(offsetInPx); } } - - public DetailItem(int size, String name, boolean even) { this.size = size; this.name = name; @@ -79,6 +82,7 @@ public abstract class TimeTrackerState { this.size = size; this.name = name; this.even = false; + this.bankHoliday = false; this.currentPeriod = true; this.currentDayOffset = currentdayoffset; } @@ -91,6 +95,14 @@ public abstract class TimeTrackerState { return name; } + public DateTime getStartDate() { + return startDate; + } + + public DateTime getEndDate() { + return endDate; + } + public void setEven(boolean even) { this.even = even; } @@ -100,16 +112,18 @@ public abstract class TimeTrackerState { this.currentDayOffset = offset; } -/* public DetailItem markEven(boolean even) { - return new DetailItem(size, name, even, - currentPeriod, currentDayOffset); - } */ - - public boolean isEven() { return even; } + public boolean isBankHoliday() { + return bankHoliday; + } + + public void setBankHoliday(boolean bankHoliday) { + this.bankHoliday = bankHoliday; + } + public boolean isCurrentPeriod() { return currentPeriod; } @@ -133,11 +147,10 @@ public abstract class TimeTrackerState { for (DetailItem detailItem : items) { detailItem.setEven(even); - result.add( detailItem ); + result.add(detailItem); even = !even; } return result; - } protected abstract Collection createDetailsForFirstLevel( diff --git a/navalplanner-gantt-zk/src/main/resources/web/ganttz/zul/timetracker.zul b/navalplanner-gantt-zk/src/main/resources/web/ganttz/zul/timetracker.zul index d5608f37e..f708e1609 100644 --- a/navalplanner-gantt-zk/src/main/resources/web/ganttz/zul/timetracker.zul +++ b/navalplanner-gantt-zk/src/main/resources/web/ganttz/zul/timetracker.zul @@ -34,6 +34,7 @@ top = self; diff --git a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css index c465c7757..c1acb45f6 100644 --- a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css +++ b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css @@ -232,6 +232,11 @@ zkTasklist.GANTT_PANEL_LEFT = 300 background-repeat: repeat-y; } +#watermark .bankHoliday { + background-color: #FFEEEE; !important; +} + + /* Reduce spacing and font-size for watermark legend */ .z-columns, .z-column { font-size: 8px !important;