From b82757f161994d4d91da07e09ab912e5ff415b02 Mon Sep 17 00:00:00 2001 From: Lorenzo Tilve Date: Fri, 21 May 2010 09:54:40 +0200 Subject: [PATCH] ItEr58S08RFAspectosGraficosRecursoLimitantesItEr57S08: Removed Year and Quarter detail levels from limiting resources zoom combo --- .../ILimitingResourceQueueModel.java | 2 ++ .../LimitingResourceQueueModel.java | 36 +++++++++++++++---- .../LimitingResourcesController.java | 11 ++++-- .../LimitingResourcesPanel.java | 21 ++++++++--- .../limitingResourcesLayout.zul | 6 ++-- 5 files changed, 61 insertions(+), 15 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/ILimitingResourceQueueModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/ILimitingResourceQueueModel.java index 114492aef..8b61743cf 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/ILimitingResourceQueueModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/ILimitingResourceQueueModel.java @@ -119,4 +119,6 @@ public interface ILimitingResourceQueueModel { void removeUnassignedLimitingResourceQueueElement( LimitingResourceQueueElement element); + void setTimeTrackerState(ZoomLevel zoomLevel); + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java index e5f871ecd..385316f34 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourceQueueModel.java @@ -34,6 +34,7 @@ import java.util.SortedSet; import org.hibernate.Hibernate; import org.hibernate.proxy.HibernateProxy; import org.joda.time.LocalDate; +import org.joda.time.Period; import org.navalplanner.business.calendars.entities.BaseCalendar; import org.navalplanner.business.calendars.entities.CalendarAvailability; import org.navalplanner.business.calendars.entities.CalendarData; @@ -113,6 +114,8 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { private Set toBeSaved = new HashSet(); + private ZoomLevel zoomLevel = ZoomLevel.DETAIL_THREE; + @Override @Transactional(readOnly = true) public void initGlobalView(boolean filterByResources) { @@ -129,7 +132,28 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { loadUnassignedLimitingResourceQueueElements(); loadLimitingResourceQueues(); final Date startingDate = getEarliestDate(); - viewInterval = new Interval(startingDate, plusFiveYears(startingDate)); + Date endDate = (new LocalDate(startingDate)).plus(intervalIncrease()) + .toDateTimeAtCurrentTime().toDate(); + viewInterval = new Interval(startingDate, endDate); + } + + private Period intervalIncrease() { + + switch (zoomLevel) { + case DETAIL_ONE: + return Period.years(5); + case DETAIL_TWO: + return Period.years(5); + case DETAIL_THREE: + return Period.years(2); + case DETAIL_FOUR: + return Period.months(6); + case DETAIL_FIVE: + return Period.weeks(6); + case DETAIL_SIX: + return Period.weeks(6); + } + return Period.years(1); } private Date getEarliestDate() { @@ -171,11 +195,6 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { return (elements.isEmpty()) ? null : elements.iterator().next(); } - private Date plusFiveYears(Date date) { - return (new LocalDate(date)).plusYears(5).toDateTimeAtCurrentTime() - .toDate(); - } - /** * Loads unassigned {@link LimitingResourceQueueElement} from DB * @@ -681,4 +700,9 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel { } } + @Override + public void setTimeTrackerState(ZoomLevel timeTrackerState) { + this.zoomLevel = timeTrackerState; + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java index c161bfcee..9d4926a46 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesController.java @@ -50,6 +50,7 @@ import org.springframework.stereotype.Component; import org.zkoss.ganttz.resourceload.IFilterChangedListener; import org.zkoss.ganttz.timetracker.TimeTracker; import org.zkoss.ganttz.timetracker.zoom.SeveralModificators; +import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -113,13 +114,19 @@ public class LimitingResourcesController implements Composer { private void reload(boolean filterByResources) { try { + if (filterBy == null) { limitingResourceQueueModel.initGlobalView(filterByResources); } else { limitingResourceQueueModel.initGlobalView(filterBy, filterByResources); } + + // Initialize interval timeTracker = buildTimeTracker(); + limitingResourceQueueModel.setTimeTrackerState(timeTracker + .getDetailLevel()); + limitingResourcesPanel = buildLimitingResourcesPanel(); addListeners(); @@ -162,8 +169,8 @@ public class LimitingResourcesController implements Composer { private TimeTracker buildTimeTracker() { return timeTracker = new TimeTracker(limitingResourceQueueModel - .getViewInterval(), limitingResourceQueueModel - .calculateInitialZoomLevel(), SeveralModificators.create(), + .getViewInterval(), ZoomLevel.DETAIL_THREE, SeveralModificators + .create(), SeveralModificators.create(new BankHolidaysMarker()), parent); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java index e11581c02..f2dd38812 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/limitingresources/LimitingResourcesPanel.java @@ -31,6 +31,7 @@ import org.navalplanner.business.planner.entities.LimitingResourceQueueElement; import org.navalplanner.business.resources.daos.IResourceDAO; import org.navalplanner.business.resources.entities.LimitingResourceQueue; import org.springframework.beans.factory.annotation.Autowired; +import org.zkoss.ganttz.resourceload.IFilterChangedListener; import org.zkoss.ganttz.timetracker.TimeTracker; import org.zkoss.ganttz.timetracker.TimeTrackerComponent; import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener; @@ -38,6 +39,7 @@ import org.zkoss.ganttz.timetracker.zoom.ZoomLevel; import org.zkoss.ganttz.util.ComponentsFinder; import org.zkoss.ganttz.util.MutableTreeModel; import org.zkoss.ganttz.util.OnZKDesktopRegistry; +import org.zkoss.ganttz.util.WeakReferencedListeners; import org.zkoss.ganttz.util.script.IScriptsRegister; import org.zkoss.zk.au.out.AuInvoke; import org.zkoss.zk.ui.Component; @@ -75,6 +77,9 @@ public class LimitingResourcesPanel extends HtmlMacroComponent { private Listbox listZoomLevels; + private WeakReferencedListeners zoomListeners = WeakReferencedListeners + .create(); + @Autowired IResourceDAO resourcesDAO; @@ -115,7 +120,6 @@ public class LimitingResourcesPanel extends HtmlMacroComponent { treeModel = createModelForTree(); timeTrackerComponent = timeTrackerForResourcesLoadPanel(timeTracker); - queueListComponent = new QueueListComponent(timeTracker, treeModel); leftPane = new LimitingResourcesLeftPane(treeModel, @@ -157,8 +161,15 @@ public class LimitingResourcesPanel extends HtmlMacroComponent { return filterbyResources; } + public void addFilterListener(IFilterChangedListener listener) { + zoomListeners.addListener(listener); + } + public ListModel getZoomLevels() { - return new SimpleListModel(ZoomLevel.values()); + ZoomLevel[] selectableZoomlevels = { ZoomLevel.DETAIL_THREE, + ZoomLevel.DETAIL_FOUR, ZoomLevel.DETAIL_FIVE, + ZoomLevel.DETAIL_SIX }; + return new SimpleListModel(selectableZoomlevels); } public void setZoomLevel(final ZoomLevel zoomLevel) { @@ -255,7 +266,7 @@ public class LimitingResourcesPanel extends HtmlMacroComponent { IZoomLevelChangedListener zoomChangedListener = new IZoomLevelChangedListener() { @Override public void zoomLevelChanged(ZoomLevel detailLevel) { - dependencyList.detach(); + dependencyList.getChildren().clear(); getFellow("insertionPointRightPanel").appendChild( dependencyList); dependencyList = generateDependencyComponentsList(); @@ -271,7 +282,9 @@ public class LimitingResourcesPanel extends HtmlMacroComponent { timeTrackerHeader.afterCompose(); timeTrackerComponent.afterCompose(); listZoomLevels = (Listbox) getFellow("listZoomLevels"); - listZoomLevels.setSelectedIndex(timeTracker.getDetailLevel().ordinal()); + // First two levels are excluded + listZoomLevels + .setSelectedIndex(timeTracker.getDetailLevel().ordinal() - 2); } private LimitingDependencyList generateDependencyComponentsList() { diff --git a/navalplanner-webapp/src/main/webapp/limitingresources/limitingResourcesLayout.zul b/navalplanner-webapp/src/main/webapp/limitingresources/limitingResourcesLayout.zul index 5fc3a8daa..4e1f1cb9d 100644 --- a/navalplanner-webapp/src/main/webapp/limitingresources/limitingResourcesLayout.zul +++ b/navalplanner-webapp/src/main/webapp/limitingresources/limitingResourcesLayout.zul @@ -22,7 +22,7 @@ @@ -43,8 +43,8 @@ resourcesLoadPanel = self; + model="${limitingResourcesPanel.zoomLevels}" + onSelect="limitingResourcesPanel.setZoomLevel(self.selectedItem.value);" >