From d9bcc10b8081ebad0fc0ddcd42163dce1c8aca09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Fri, 5 Feb 2010 13:46:15 +0100 Subject: [PATCH] ItEr46S18RFComportamentoGraficoPlanificadorItEr31S05: Adjusting initial zoom level for ResourceLoad --- .../zkoss/ganttz/timetracker/TimeTracker.java | 5 +++ .../ganttz/timetracker/zoom/ZoomLevel.java | 42 +++++++++++++++++++ .../web/resourceload/IResourceLoadModel.java | 2 + .../resourceload/ResourceLoadController.java | 3 +- .../web/resourceload/ResourceLoadModel.java | 8 ++++ 5 files changed, 59 insertions(+), 1 deletion(-) diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java index 4c8c00317..5ee4e56a0 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/TimeTracker.java @@ -68,6 +68,11 @@ public class TimeTracker { private boolean registeredFirstTask = false; + public TimeTracker(Interval interval, ZoomLevel zoomLevel, Component parent) { + this(interval, zoomLevel, SeveralModificators.empty(), + SeveralModificators.empty(), parent); + } + public TimeTracker(Interval interval, Component componentOnWhichGiveFeedback) { this(interval, SeveralModificators.empty(), SeveralModificators.empty(), componentOnWhichGiveFeedback); diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java index e4e9ea7cf..0bfcb55d2 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/timetracker/zoom/ZoomLevel.java @@ -22,6 +22,8 @@ package org.zkoss.ganttz.timetracker.zoom; import static org.zkoss.ganttz.i18n.I18nHelper._; +import org.joda.time.Days; +import org.joda.time.LocalDate; /** * @author Francisco Javier Moran RĂșa */ @@ -34,6 +36,11 @@ public enum ZoomLevel { IDetailItemModificator secondLevel) { return new DetailOneTimeTrackerState(firstLevel, secondLevel); } + + @Override + public boolean isSuitableFor(int days) { + return days > 950; + } }, DETAIL_TWO(_("Quarter")) { @Override @@ -42,6 +49,11 @@ public enum ZoomLevel { IDetailItemModificator secondLevel) { return new DetailTwoTimeTrackerState(firstLevel, secondLevel); } + + @Override + public boolean isSuitableFor(int days) { + return days > 550; + } }, DETAIL_THREE(_("Month")) { @Override @@ -50,6 +62,11 @@ public enum ZoomLevel { IDetailItemModificator secondLevel) { return new DetailThreeTimeTrackerState(firstLevel, secondLevel); } + + @Override + public boolean isSuitableFor(int days) { + return days > 175; + } }, DETAIL_FOUR(_("Week")) { @Override @@ -58,6 +75,11 @@ public enum ZoomLevel { IDetailItemModificator secondLevel) { return new DetailFourTimeTrackerState(firstLevel, secondLevel); } + + @Override + public boolean isSuitableFor(int days) { + return days > 50; + } }, DETAIL_FIVE(_("Day")) { @Override @@ -66,6 +88,11 @@ public enum ZoomLevel { IDetailItemModificator secondLevel) { return new DetailFiveTimeTrackerState(firstLevel, secondLevel); } + + @Override + public boolean isSuitableFor(int days) { + return true; + } }; private String name; @@ -119,4 +146,19 @@ public enum ZoomLevel { } + public static ZoomLevel getDefaultZoomByDates(LocalDate initDate, + LocalDate endDate) { + if (initDate != null && endDate != null) { + int days = Days.daysBetween(initDate, endDate).getDays(); + for (ZoomLevel each : ZoomLevel.values()) { + if (each.isSuitableFor(days)) { + return each; + } + } + } + return ZoomLevel.DETAIL_ONE; + } + + protected abstract boolean isSuitableFor(int days); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java index 8b00ab9d9..3c44cfe19 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/IResourceLoadModel.java @@ -24,6 +24,7 @@ import java.util.List; import org.navalplanner.business.orders.entities.Order; import org.zkoss.ganttz.data.resourceload.LoadTimelinesGroup; +import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; import org.zkoss.ganttz.util.Interval; public interface IResourceLoadModel { @@ -36,4 +37,5 @@ public interface IResourceLoadModel { Interval getViewInterval(); + ZoomLevel calculateInitialZoomLevel(); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java index 5242af904..68c7bf75c 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadController.java @@ -85,7 +85,8 @@ public class ResourceLoadController implements Composer { private ResourcesLoadPanel buildResourcesLoadPanel() { return new ResourcesLoadPanel(resourceLoadModel.getLoadTimeLines(), - new TimeTracker(resourceLoadModel.getViewInterval(), parent)); + new TimeTracker(resourceLoadModel.getViewInterval(), + resourceLoadModel.calculateInitialZoomLevel(), parent)); } public void filterBy(Order order) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java index 6326b6b1e..0f7ecf64e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/resourceload/ResourceLoadModel.java @@ -34,6 +34,7 @@ import java.util.Map; import java.util.Set; import java.util.Map.Entry; +import org.joda.time.LocalDate; import org.navalplanner.business.orders.daos.IOrderDAO; import org.navalplanner.business.orders.entities.Order; import org.navalplanner.business.planner.daos.IResourceAllocationDAO; @@ -54,6 +55,7 @@ import org.springframework.transaction.annotation.Transactional; import org.zkoss.ganttz.data.resourceload.LoadPeriod; import org.zkoss.ganttz.data.resourceload.LoadTimeLine; import org.zkoss.ganttz.data.resourceload.LoadTimelinesGroup; +import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; import org.zkoss.ganttz.util.Interval; @Component @@ -306,6 +308,12 @@ public class ResourceLoadModel implements IResourceLoadModel { return viewInterval; } + public ZoomLevel calculateInitialZoomLevel() { + Interval interval = getViewInterval(); + return ZoomLevel.getDefaultZoomByDates(new LocalDate(interval + .getStart()), new LocalDate(interval.getFinish())); + } + } class PeriodsBuilder {