ItEr46S18RFComportamentoGraficoPlanificadorItEr31S05: Adjusting initial zoom level for ResourceLoad

This commit is contained in:
Óscar González Fernández 2010-02-05 13:46:15 +01:00
parent e62c16928f
commit d9bcc10b80
5 changed files with 59 additions and 1 deletions

View file

@ -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);

View file

@ -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);
}

View file

@ -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();
}

View file

@ -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) {

View file

@ -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 {