ItEr58S10CUAsignacionRecursosLimitantesItEr57S11: Unschedule limiting task
This commit is contained in:
parent
46ed8f5ea5
commit
841cad0457
7 changed files with 96 additions and 41 deletions
|
|
@ -566,6 +566,10 @@ public abstract class ResourceAllocation<T extends DayAssignment> extends
|
|||
setOriginalTotalAssigment(getAssignedHours());
|
||||
}
|
||||
|
||||
public void removeLimitingDayAssignments() {
|
||||
allocateLimitingDayAssignments(Collections.<T>emptyList());
|
||||
}
|
||||
|
||||
public void allocateLimitingDayAssignments(List<T> assignments) {
|
||||
assert isLimiting();
|
||||
resetAssignmentsTo(assignments);
|
||||
|
|
|
|||
|
|
@ -109,4 +109,6 @@ public interface ILimitingResourceQueueModel {
|
|||
|
||||
boolean userCanRead(Order order, String loginName);
|
||||
|
||||
void unschedule(LimitingResourceQueueElement element);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel {
|
|||
|
||||
private void initializeCalendarIfAny(Resource resource) {
|
||||
if (resource != null) {
|
||||
resourceDAO.reattach(resource);
|
||||
resource.getName();
|
||||
initializeCalendarIfAny(resource.getCalendar());
|
||||
}
|
||||
}
|
||||
|
|
@ -466,6 +466,20 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel {
|
|||
return null;
|
||||
}
|
||||
|
||||
private LimitingResourceQueue retrieveQueueFromModel(LimitingResourceQueue queue) {
|
||||
return findQueue(limitingResourceQueues, queue);
|
||||
}
|
||||
|
||||
private LimitingResourceQueue findQueue(List<LimitingResourceQueue> queues,
|
||||
LimitingResourceQueue queue) {
|
||||
for (LimitingResourceQueue each : limitingResourceQueues) {
|
||||
if (each.getId().equals(queue.getId())) {
|
||||
return each;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private LimitingResourceQueueElement retrieveQueueElementFromModel(
|
||||
LimitingResourceQueueElement element) {
|
||||
return findQueueElement(unassignedLimitingResourceQueueElements,
|
||||
|
|
@ -591,4 +605,22 @@ public class LimitingResourceQueueModel implements ILimitingResourceQueueModel {
|
|||
taskDAO.save(task);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unschedule(LimitingResourceQueueElement element) {
|
||||
LimitingResourceQueue queue = retrieveQueueFromModel(element.getLimitingResourceQueue());
|
||||
|
||||
queue.removeLimitingResourceQueueElement(element);
|
||||
|
||||
// Set as unassigned element
|
||||
element.setLimitingResourceQueue(null);
|
||||
element.setStartDate(null);
|
||||
element.setStartHour(0);
|
||||
element.setEndDate(null);
|
||||
element.setEndHour(0);
|
||||
|
||||
element.getResourceAllocation().removeLimitingDayAssignments();
|
||||
unassignedLimitingResourceQueueElements.add(element);
|
||||
toBeSaved.add(element);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import org.navalplanner.business.orders.entities.Order;
|
|||
import org.navalplanner.business.planner.entities.GenericResourceAllocation;
|
||||
import org.navalplanner.business.planner.entities.LimitingResourceQueueElement;
|
||||
import org.navalplanner.business.planner.entities.Task;
|
||||
import org.navalplanner.business.resources.entities.LimitingResourceQueue;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.web.common.Util;
|
||||
import org.navalplanner.web.limitingresources.LimitingResourcesPanel.IToolbarCommand;
|
||||
|
|
@ -51,6 +52,7 @@ import org.zkoss.zk.ui.event.Events;
|
|||
import org.zkoss.zk.ui.util.Composer;
|
||||
import org.zkoss.zul.Button;
|
||||
import org.zkoss.zul.Checkbox;
|
||||
import org.zkoss.zul.Div;
|
||||
import org.zkoss.zul.Grid;
|
||||
import org.zkoss.zul.Label;
|
||||
import org.zkoss.zul.Messagebox;
|
||||
|
|
@ -161,19 +163,8 @@ public class LimitingResourcesController implements Composer {
|
|||
SeveralModificators.create(new BankHolidaysMarker()), parent);
|
||||
}
|
||||
|
||||
private void updateLimitingResourceQueues() {
|
||||
limitingResourcesPanel
|
||||
.resetLimitingResourceQueues(limitingResourceQueueModel
|
||||
.getLimitingResourceQueues());
|
||||
limitingResourcesPanel.reloadLimitingResourcesList();
|
||||
}
|
||||
|
||||
private LimitingResourcesPanel buildLimitingResourcesPanel() {
|
||||
LimitingResourcesPanel result = new LimitingResourcesPanel(
|
||||
limitingResourceQueueModel.getLimitingResourceQueues(),
|
||||
timeTracker);
|
||||
result.setVariable("limitingResourcesController", this, true);
|
||||
return result;
|
||||
return new LimitingResourcesPanel(this, timeTracker);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -328,7 +319,7 @@ public class LimitingResourcesController implements Composer {
|
|||
limitingResourceQueueModel
|
||||
.assignLimitingResourceQueueElement(element);
|
||||
Util.reloadBindings(gridUnassignedLimitingResourceQueueElements);
|
||||
updateLimitingResourceQueues();
|
||||
limitingResourcesPanel.reloadLimitingResourcesList();
|
||||
}
|
||||
|
||||
private Checkbox automaticQueueing(
|
||||
|
|
@ -344,4 +335,14 @@ public class LimitingResourcesController implements Composer {
|
|||
|
||||
}
|
||||
|
||||
public List<LimitingResourceQueue> getLimitingResourceQueues() {
|
||||
return limitingResourceQueueModel.getLimitingResourceQueues();
|
||||
}
|
||||
|
||||
public void unschedule(QueueTask task) {
|
||||
limitingResourceQueueModel.unschedule(task.getLimitingResourceQueueElement());
|
||||
Util.reloadBindings(gridUnassignedLimitingResourceQueueElements);
|
||||
task.detach();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,9 +20,8 @@
|
|||
|
||||
package org.navalplanner.web.limitingresources;
|
||||
|
||||
import static org.zkoss.ganttz.i18n.I18nHelper._;
|
||||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -61,14 +60,14 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
public String getImage();
|
||||
}
|
||||
|
||||
private LimitingResourcesController limitingResourcesController;
|
||||
|
||||
private TimeTrackerComponent timeTrackerComponent;
|
||||
|
||||
private LimitingResourcesLeftPane leftPane;
|
||||
|
||||
private QueueListComponent queueListComponent;
|
||||
|
||||
private List<LimitingResourceQueue> limitingResourceQueues = new ArrayList<LimitingResourceQueue>();
|
||||
|
||||
private MutableTreeModel<LimitingResourceQueue> treeModel;
|
||||
|
||||
private TimeTracker timeTracker;
|
||||
|
|
@ -84,33 +83,46 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
|
||||
private LimitingDependencyList dependencyList;
|
||||
|
||||
public LimitingResourcesPanel(List<LimitingResourceQueue> groups,
|
||||
public LimitingResourcesPanel(LimitingResourcesController limitingResourcesController,
|
||||
TimeTracker timeTracker) {
|
||||
init(groups, timeTracker);
|
||||
init(limitingResourcesController, timeTracker);
|
||||
}
|
||||
|
||||
public void init(List<LimitingResourceQueue> groups, TimeTracker timeTracker) {
|
||||
limitingResourceQueues.addAll(groups);
|
||||
public void init(LimitingResourcesController limitingResourcesController,
|
||||
TimeTracker timeTracker) {
|
||||
this.limitingResourcesController = limitingResourcesController;
|
||||
this.timeTracker = timeTracker;
|
||||
this.setVariable("limitingResourcesController",
|
||||
limitingResourcesController, true);
|
||||
|
||||
treeModel = createModelForTree();
|
||||
timeTrackerComponent = timeTrackerForResourcesLoadPanel(timeTracker);
|
||||
queueListComponent = new QueueListComponent(timeTracker,
|
||||
treeModel);
|
||||
|
||||
leftPane = new LimitingResourcesLeftPane(treeModel,
|
||||
queueListComponent);
|
||||
registerNeededScripts();
|
||||
}
|
||||
|
||||
public void resetLimitingResourceQueues(List<LimitingResourceQueue> queues) {
|
||||
limitingResourceQueues = new ArrayList<LimitingResourceQueue>();
|
||||
limitingResourceQueues.addAll(queues);
|
||||
}
|
||||
|
||||
public void reloadLimitingResourcesList() {
|
||||
queueListComponent.setModel(createModelForTree());
|
||||
queueListComponent.invalidate();
|
||||
}
|
||||
|
||||
private MutableTreeModel<LimitingResourceQueue> createModelForTree() {
|
||||
MutableTreeModel<LimitingResourceQueue> result = MutableTreeModel
|
||||
.create(LimitingResourceQueue.class);
|
||||
for (LimitingResourceQueue LimitingResourceQueue : getLimitingResourceQueues()) {
|
||||
result.addToRoot(LimitingResourceQueue);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<LimitingResourceQueue> getLimitingResourceQueues() {
|
||||
return limitingResourcesController.getLimitingResourceQueues();
|
||||
}
|
||||
|
||||
public ListModel getFilters() {
|
||||
String[] filters = new String[] { filterResources, filterCriterions };
|
||||
return new SimpleListModel(filters);
|
||||
|
|
@ -192,16 +204,6 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
.retrieve();
|
||||
}
|
||||
|
||||
private MutableTreeModel<LimitingResourceQueue> createModelForTree() {
|
||||
MutableTreeModel<LimitingResourceQueue> result = MutableTreeModel
|
||||
.create(LimitingResourceQueue.class);
|
||||
for (LimitingResourceQueue LimitingResourceQueue : this.limitingResourceQueues) {
|
||||
result.addToRoot(LimitingResourceQueue);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
private TimeTrackerComponent timeTrackerForResourcesLoadPanel(
|
||||
TimeTracker timeTracker) {
|
||||
return new TimeTrackerComponent(timeTracker) {
|
||||
|
|
@ -282,5 +284,8 @@ public class LimitingResourcesPanel extends HtmlMacroComponent {
|
|||
};
|
||||
}
|
||||
|
||||
public void unschedule(QueueTask task) {
|
||||
limitingResourcesController.unschedule(task);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ import org.zkoss.ganttz.timetracker.zoom.IZoomLevelChangedListener;
|
|||
import org.zkoss.ganttz.timetracker.zoom.ZoomLevel;
|
||||
import org.zkoss.ganttz.util.MenuBuilder;
|
||||
import org.zkoss.ganttz.util.MenuBuilder.ItemAction;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.ext.AfterCompose;
|
||||
import org.zkoss.zul.impl.XulElement;
|
||||
|
|
@ -132,9 +133,19 @@ public class QueueComponent extends XulElement implements
|
|||
}
|
||||
}
|
||||
|
||||
// FIXME: Implement real unnasign operation
|
||||
private void unnasign(QueueTask choosen) {
|
||||
choosen.detach();
|
||||
final LimitingResourcesPanel panel = getLimitingResourcesPanel(choosen.getParent());
|
||||
panel.unschedule(choosen);
|
||||
}
|
||||
|
||||
private LimitingResourcesPanel getLimitingResourcesPanel(Component comp) {
|
||||
if (comp == null) {
|
||||
return null;
|
||||
}
|
||||
if (comp instanceof LimitingResourcesPanel) {
|
||||
return (LimitingResourcesPanel) comp;
|
||||
}
|
||||
return getLimitingResourcesPanel(comp.getParent());
|
||||
}
|
||||
|
||||
private static QueueTask createDivForQueueElement(IDatesMapper datesMapper,
|
||||
|
|
|
|||
|
|
@ -64,7 +64,6 @@ public class QueueTask extends Div {
|
|||
+ taskUid + "')");
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public LocalDate getStart() {
|
||||
|
|
@ -83,4 +82,5 @@ public class QueueTask extends Div {
|
|||
public LimitingResourceQueueElement getLimitingResourceQueueElement() {
|
||||
return element;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue