From 70b3e4f5cacd68667995454bc2283a5a5e59e2ac Mon Sep 17 00:00:00 2001 From: Lorenzo Tilve Date: Tue, 8 Dec 2009 00:03:00 +0100 Subject: [PATCH] ItEr37S16RFMaquetacionDesenhoAplicacionItEr36S18: Graphical support for project deadline representaton in order scheduling view * Pending interface implementation of calls to markDeadlineDay() * Representation of current day and deadline on the same watermark column depends on CSS3 multiple background images support. --- .../ganttz/timetracker/zoom/DetailItem.java | 75 ++++++++++++++---- .../web/ganttz/img/watermark_deadline.png | Bin 0 -> 202 bytes .../timetracker/timetrackersecondlevel.zul | 6 +- .../src/main/webapp/planner/css/ganttzk.css | 16 +++- 4 files changed, 77 insertions(+), 20 deletions(-) create mode 100644 ganttzk/src/main/resources/web/ganttz/img/watermark_deadline.png diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailItem.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailItem.java index 4f31cb9bf..fe3c7ad01 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailItem.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailItem.java @@ -39,14 +39,12 @@ public final class DetailItem { private boolean currentPeriod; private int currentDayOffset; + private boolean deadlinePeriod; + private int deadlineOffset; + private DateTime startDate; - private DateTime endDate; - public DetailItem(int size, String name) { - this(size, name, false); - } - public DetailItem(int size, String name, DateTime startDate, DateTime endDate) { this(size, name, false); @@ -55,16 +53,8 @@ public final class DetailItem { 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); - this.markCurrentDay(offsetInPx); - } + public DetailItem(int size, String name) { + this(size, name, false); } public DetailItem(int size, String name, boolean even) { @@ -84,6 +74,33 @@ public final class DetailItem { this.currentDayOffset = currentdayoffset; } + public DetailItem(int size, String name, int currentdayoffset, + int deadlineoffset) { + this(size, name, currentdayoffset); + this.deadlinePeriod = true; + this.deadlineOffset = deadlineoffset; + } + + 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 void markDeadlineDay(DateTime deadline) { + if (this.startDate.isBefore(deadline) && this.endDate.isAfter(deadline)) { + int offsetInPx = Math.round((((float) Days.daysBetween( + this.startDate, deadline).getDays()) / ((float) Days + .daysBetween(this.startDate, this.endDate).getDays())) + * this.size); + this.markDeadlineDay(offsetInPx); + } + } + public int getSize() { return size; } @@ -109,6 +126,11 @@ public final class DetailItem { this.currentDayOffset = offset; } + public void markDeadlineDay(int offset) { + this.deadlinePeriod = true; + this.deadlineOffset = offset; + } + public boolean isEven() { return even; } @@ -129,4 +151,27 @@ public final class DetailItem { return currentDayOffset; } + public boolean isDeadlinePeriod() { + return deadlinePeriod; + } + + public int getDeadlineOffset() { + return deadlineOffset; + } + + public String getBackgroundOffset() { + String offset = "0px"; + if (getCurrentDayOffset() != 0) { + if (getDeadlineOffset() != 0) { + offset = getCurrentDayOffset() + "px," + getDeadlineOffset() + + "px"; + } else { + offset = getCurrentDayOffset() + "px"; + } + } else if (getDeadlineOffset() != 0) { + offset = getDeadlineOffset() + "px"; + } + return offset; + } + } \ No newline at end of file diff --git a/ganttzk/src/main/resources/web/ganttz/img/watermark_deadline.png b/ganttzk/src/main/resources/web/ganttz/img/watermark_deadline.png new file mode 100644 index 0000000000000000000000000000000000000000..8d5e02de78d654e34a9b10c083163b879e7880a3 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)L!3HEN&baUbDaPU;cPEB*=VV?2Ic!PZ?k)`f zL2$v|<&%LToCO|{#S9GG!XV7ZFl&wkP>{XE)7O>#CJ(!iwUHO=??|AKWQl7;iF1B# zZfaf$gL6@8Vo7R>LV0FMhJw4NZ$Nk>pEyvFs;7%%h{WaO1Q4(|_+kD-mc#XIa~f80 jNfc@+oXx26Ffaf*Pg3#t!`{RbKn)C@u6{1-oD!M - + style="background-position: ${each.backgroundOffset}"> diff --git a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css index 84624c84e..a7d7526e4 100644 --- a/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css +++ b/navalplanner-webapp/src/main/webapp/planner/css/ganttzk.css @@ -274,14 +274,26 @@ min-width:200px; background-color: #EEEEEE; } +#watermark .timetracker_column_today.timetracker_column_deadline, +#watermark .timetracker_column_deadline.timetracker_column_today { + background-image:url(/navalplanner-webapp/zkau/web/ganttz/img/watermark_today.png), + url("/navalplanner-webapp/zkau/web/ganttz/img/watermark_deadline.png"); +} + /* Background image for current day vertical line */ #watermark .timetracker_column_today { background-image: - url("/navalplanner-webapp/zkau/web/ganttz/img/watermark_today.png") - ; + url("/navalplanner-webapp/zkau/web/ganttz/img/watermark_today.png"); background-repeat: repeat-y; } +#watermark .timetracker_column_deadline { + background-image: + url("/navalplanner-webapp/zkau/web/ganttz/img/watermark_deadline.png"); + background-repeat: repeat-y; +} + + #watermark .bankHoliday { background-color: #FFEEEE !important; }