ItEr46S18RFComportamentoGraficoPlanificadorItEr31S05: Adjusting initial zoom level for ResourceLoad
This commit is contained in:
parent
e62c16928f
commit
d9bcc10b80
5 changed files with 59 additions and 1 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue