From 29ba7b602577df87d6f3dce3b56797960bd761da Mon Sep 17 00:00:00 2001 From: Lorenzo Tilve Date: Fri, 5 Feb 2010 13:15:33 +0100 Subject: [PATCH] ItEr46S18RFComportamentoGraficoPlanificadorItEr31S05: Fixed bug related with deadline mark not visible in order day view --- .../zoom/DetailFiveTimeTrackerState.java | 32 ++-------------- .../zoom/DetailFourTimeTrackerState.java | 5 +++ .../ganttz/timetracker/zoom/DetailItem.java | 7 ++++ .../zoom/DetailOneTimeTrackerState.java | 5 +++ .../zoom/DetailThreeTimeTrackerState.java | 5 +++ .../zoom/DetailTwoTimeTrackerState.java | 5 +++ .../zoom/IDetailItemModificator.java | 3 +- .../timetracker/zoom/SeveralModificators.java | 4 +- .../timetracker/zoom/TimeTrackerState.java | 23 +++++++---- .../planner/company/CompanyPlanningModel.java | 2 + .../web/planner/order/BankHolidaysMarker.java | 38 +++++++++++++++++++ .../web/planner/order/OrderPlanningModel.java | 12 +++++- 12 files changed, 101 insertions(+), 40 deletions(-) create mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/BankHolidaysMarker.java diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailFiveTimeTrackerState.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailFiveTimeTrackerState.java index 82d530285..4ae72f9e8 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailFiveTimeTrackerState.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailFiveTimeTrackerState.java @@ -20,15 +20,10 @@ package org.zkoss.ganttz.timetracker.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 @@ -37,10 +32,8 @@ import org.zkoss.ganttz.util.Interval; */ public class DetailFiveTimeTrackerState extends TimeTrackerStateUsingJodaTime { - private static final int NUMBER_OF_DAYS_MINIMUM = 50; public static final int FIRST_LEVEL_SIZE = 140; - public static final int SECOND_LEVEL_SIZE = 20; DetailFiveTimeTrackerState(IDetailItemModificator firstLevelModificator, @@ -98,30 +91,13 @@ public class DetailFiveTimeTrackerState extends TimeTrackerStateUsingJodaTime { .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; - } - @Override protected Days getMinimumPeriod() { return Days.days(NUMBER_OF_DAYS_MINIMUM); } + @Override + protected ZoomLevel getZoomLevel() { + return ZoomLevel.DETAIL_FIVE; + } } \ No newline at end of file diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailFourTimeTrackerState.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailFourTimeTrackerState.java index 8a4b32406..724526bbd 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailFourTimeTrackerState.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailFourTimeTrackerState.java @@ -98,4 +98,9 @@ public class DetailFourTimeTrackerState extends TimeTrackerStateUsingJodaTime { return Days.days(7 * NUMBER_OF_WEEKS_MINIMUM); } + @Override + protected ZoomLevel getZoomLevel() { + return ZoomLevel.DETAIL_THREE; + } + } 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 431068782..cceba0064 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 @@ -174,4 +174,11 @@ public final class DetailItem { return offset; } + public void markBankHoliday() { + int dayOfWeek = getStartDate().dayOfWeek().get(); + if ((dayOfWeek == 6) || (dayOfWeek == 7)) { + setBankHoliday(true); + } + } + } \ No newline at end of file diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailOneTimeTrackerState.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailOneTimeTrackerState.java index 1716be061..b9e53a709 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailOneTimeTrackerState.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailOneTimeTrackerState.java @@ -112,4 +112,9 @@ public class DetailOneTimeTrackerState extends TimeTrackerState { return new Interval(year(pairYears[0]), year(pairYears[1] + 1)); } + @Override + protected ZoomLevel getZoomLevel() { + return ZoomLevel.DETAIL_ONE; + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailThreeTimeTrackerState.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailThreeTimeTrackerState.java index e3aa83a7e..a39c02c91 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailThreeTimeTrackerState.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailThreeTimeTrackerState.java @@ -113,4 +113,9 @@ public class DetailThreeTimeTrackerState extends TimeTrackerStateUsingJodaTime { return Days.days(NUMBER_OF_MONTHS_MINIMUM * 31); } + @Override + protected ZoomLevel getZoomLevel() { + return ZoomLevel.DETAIL_FOUR; + } + } \ No newline at end of file diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailTwoTimeTrackerState.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailTwoTimeTrackerState.java index b1dd19e83..9926c7a81 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailTwoTimeTrackerState.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/DetailTwoTimeTrackerState.java @@ -178,4 +178,9 @@ public class DetailTwoTimeTrackerState extends TimeTrackerState { } + @Override + protected ZoomLevel getZoomLevel() { + return ZoomLevel.DETAIL_TWO; + } + } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/IDetailItemModificator.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/IDetailItemModificator.java index 108f61946..94a5006a7 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/IDetailItemModificator.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/IDetailItemModificator.java @@ -19,12 +19,13 @@ */ package org.zkoss.ganttz.timetracker.zoom; + /** * @author Óscar González Fernández * */ public interface IDetailItemModificator { - public DetailItem applyModificationsTo(DetailItem item); + public DetailItem applyModificationsTo(DetailItem item, ZoomLevel z); } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/SeveralModificators.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/SeveralModificators.java index 56fe4329f..031977b53 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/SeveralModificators.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/SeveralModificators.java @@ -57,10 +57,10 @@ public class SeveralModificators implements IDetailItemModificator { } @Override - public DetailItem applyModificationsTo(DetailItem item) { + public DetailItem applyModificationsTo(DetailItem item, ZoomLevel z) { DetailItem result = item; for (IDetailItemModificator each : modificators) { - result = each.applyModificationsTo(result); + result = each.applyModificationsTo(result, z); } return result; } diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/TimeTrackerState.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/TimeTrackerState.java index bf9cfeb90..bbed779a1 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/TimeTrackerState.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/TimeTrackerState.java @@ -72,22 +72,29 @@ public abstract class TimeTrackerState { Interval interval); public Collection getSecondLevelDetails(Interval interval) { - // Also mark holidays and current date - return markEvens(applyConfiguredModifications(secondLevelModificator, - createDetailsForSecondLevel(interval))); + if (getZoomLevel() == ZoomLevel.DETAIL_FIVE) { + // Evens are not highlighted in day view + return applyConfiguredModifications( + secondLevelModificator, + createDetailsForSecondLevel(interval), getZoomLevel()); + } else { + return markEvens(applyConfiguredModifications( + secondLevelModificator, + createDetailsForSecondLevel(interval), getZoomLevel())); + } } public Collection getFirstLevelDetails(Interval interval) { - return markEvens(applyConfiguredModifications(firstLevelModificator, - createDetailsForFirstLevel(interval))); + return applyConfiguredModifications(firstLevelModificator, + createDetailsForFirstLevel(interval), getZoomLevel()); } private static List applyConfiguredModifications( IDetailItemModificator modificator, - Collection detailsItems) { + Collection detailsItems, ZoomLevel zoomlevel) { List result = new ArrayList(detailsItems.size()); for (DetailItem each : detailsItems) { - result.add(modificator.applyModificationsTo(each)); + result.add(modificator.applyModificationsTo(each, zoomlevel)); } return result; } @@ -138,4 +145,6 @@ public abstract class TimeTrackerState { public abstract double daysPerPixel(); + protected abstract ZoomLevel getZoomLevel(); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningModel.java index 8c2ba9982..dbd84d69f 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/company/CompanyPlanningModel.java @@ -68,6 +68,7 @@ import org.navalplanner.web.planner.chart.EarnedValueChartFiller; import org.navalplanner.web.planner.chart.IChartFiller; import org.navalplanner.web.planner.chart.EarnedValueChartFiller.EarnedValueType; import org.navalplanner.web.planner.order.OrderPlanningModel; +import org.navalplanner.web.planner.order.BankHolidaysMarker; import org.navalplanner.web.print.CutyPrint; import org.navalplanner.web.security.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -195,6 +196,7 @@ public abstract class CompanyPlanningModel implements ICompanyPlanningModel { addPrintSupport(configuration); disableSomeFeatures(configuration); OrderPlanningModel.configureInitialZoomLevelFor(planner, configuration); + configuration.setSecondLevelModificators(new BankHolidaysMarker()); planner.setConfiguration(configuration); Timeplot chartLoadTimeplot = new Timeplot(); Timeplot chartEarnedValueTimeplot = new Timeplot(); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/BankHolidaysMarker.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/BankHolidaysMarker.java new file mode 100644 index 000000000..1ac180ef5 --- /dev/null +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/BankHolidaysMarker.java @@ -0,0 +1,38 @@ +/* + * This file is part of NavalPlan + * + * Copyright (C) 2009 Fundación para o Fomento da Calidade Industrial e + * Desenvolvemento Tecnolóxico de Galicia + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.navalplanner.web.planner.order; + +import org.zkoss.ganttz.timetracker.zoom.DetailItem; +import org.zkoss.ganttz.timetracker.zoom.IDetailItemModificator; +import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; + +/** + * @author Óscar González Fernández + */ +public final class BankHolidaysMarker implements + IDetailItemModificator { + @Override + public DetailItem applyModificationsTo(DetailItem item, ZoomLevel z) { + if (z == ZoomLevel.DETAIL_FIVE) { + item.markBankHoliday(); + } + return item; + } +} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java index 96a7e7027..ffa784aa9 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/order/OrderPlanningModel.java @@ -110,6 +110,7 @@ import org.zkoss.ganttz.timetracker.TimeTracker; import org.zkoss.ganttz.timetracker.zoom.DetailItem; import org.zkoss.ganttz.timetracker.zoom.IDetailItemModificator; import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener; +import org.zkoss.ganttz.timetracker.zoom.SeveralModificators; import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; import org.zkoss.ganttz.util.Interval; import org.zkoss.zk.ui.Executions; @@ -336,14 +337,21 @@ public abstract class OrderPlanningModel implements IOrderPlanningModel { private IDetailItemModificator createDeadlineShower(Date orderDeadline) { final DateTime deadline = new DateTime(orderDeadline); - return new IDetailItemModificator() { + IDetailItemModificator deadlineMarker = new IDetailItemModificator() { @Override - public DetailItem applyModificationsTo(DetailItem item) { + public DetailItem applyModificationsTo(DetailItem item, + ZoomLevel zoomlevel) { item.markDeadlineDay(deadline); return item; } }; + return SeveralModificators.create(deadlineMarker, + createBankHolidayMarker()); + } + + public static IDetailItemModificator createBankHolidayMarker() { + return new BankHolidaysMarker(); } private void appendTabs(Tabbox chartComponent) {