From 1ef862e82ba714c20c3e95b8fa1c241efe1f2e61 Mon Sep 17 00:00:00 2001 From: Susana Montes Pedreira Date: Thu, 6 May 2010 12:38:19 +0200 Subject: [PATCH] ItEr57S14AdaptacionAsignacionConsolidacion: changes the resource allocation interface. adds some changes to previously adapt the content of the resource allocation interface. --- .../web/planner/allocation/AllocationRow.java | 18 ---- .../web/planner/allocation/FormBinder.java | 47 +++++----- .../allocation/IResourceAllocationModel.java | 2 + .../ResourceAllocationController.java | 54 ++++++++--- .../allocation/ResourceAllocationModel.java | 8 ++ .../main/webapp/common/css/navalplan_zk.css | 24 +++++ .../_tabPanelLimitingResourceAllocation.zul | 12 +-- ..._tabPanelNonLimitingResourceAllocation.zul | 90 ++++++++----------- .../src/main/webapp/planner/order.zul | 2 +- 9 files changed, 142 insertions(+), 115 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java index 88cff794e..b0b0a0638 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/AllocationRow.java @@ -42,7 +42,6 @@ import org.navalplanner.web.planner.allocation.ResourceAllocationController.Deri import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; -import org.zkoss.zul.Checkbox; import org.zkoss.zul.Constraint; import org.zkoss.zul.Decimalbox; import org.zkoss.zul.Detail; @@ -177,8 +176,6 @@ public abstract class AllocationRow { private Grid derivedAllocationsGrid; - private Checkbox satisfiedCheckbox; - private void initializeResourcesPerDayInput() { resourcesPerDayInput.setConstraint(new SimpleConstraint( SimpleConstraint.NO_NEGATIVE)); @@ -419,19 +416,4 @@ public abstract class AllocationRow { } } - public Checkbox getSatisfiedCheckbox() { - if (satisfiedCheckbox != null) { - satisfiedCheckbox.setChecked(isSatisfied()); - return satisfiedCheckbox; - } - Checkbox result = new Checkbox(); - result.setChecked(isSatisfied()); - result.setDisabled(true); - return satisfiedCheckbox = result; - } - - public void loadSatisfied() { - satisfiedCheckbox.setChecked(isSatisfied()); - } - } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java index f8b32d88a..eb8a4544f 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/FormBinder.java @@ -74,8 +74,6 @@ public class FormBinder { private AllocationResult lastAllocation; - private Datebox taskStartDateBox; - private Datebox endDate; private Button applyButton; @@ -247,18 +245,6 @@ public class FormBinder { return allocationRowsHandler.getCalculatedValue(); } - public void setTaskStartDateBox(Datebox taskStartDateBox) { - this.taskStartDateBox = taskStartDateBox; - this.taskStartDateBox.setDisabled(true); - loadValueForTaskStartDateBox(); - onChangeEnableApply(taskStartDateBox); - } - - private void loadValueForTaskStartDateBox() { - this.taskStartDateBox.setValue(allocationRowsHandler.getTask() - .getStartDate()); - } - private void onChangeEnableApply(InputElement inputElement) { inputElement.addEventListener(Events.ON_CHANGE, onChangeEnableApply); @@ -366,11 +352,29 @@ public class FormBinder { private void reloadValues() { loadHoursValues(); - loadIsSatisfiedValues(); loadValueForAssignedHoursComponent(); - loadValueForTaskStartDateBox(); loadValueForEndDate(); loadDerivedAllocations(); + loadSclassRowSatisfied(); + } + + @SuppressWarnings("unchecked") + private void loadSclassRowSatisfied() { + try { + List rows = (List) allocationsGrid + .getRows().getChildren(); + for (org.zkoss.zul.Row row : rows) { + if (row.getValue() instanceof AllocationRow) { + if (!((AllocationRow) row.getValue()).isSatisfied()) { + row.setSclass("allocation-not-satisfied"); + } else { + row.setSclass("allocation-satisfied"); + } + } + } + } catch (ClassCastException e) { + throw new RuntimeException(); + } } private void loadHoursValues() { @@ -379,12 +383,6 @@ public class FormBinder { } } - private void loadIsSatisfiedValues() { - for (AllocationRow each : rows) { - each.loadSatisfied(); - } - } - private void loadDerivedAllocations() { for (AllocationRow each : rows) { each.reloadDerivedAllocationsGrid(); @@ -605,9 +603,4 @@ public class FormBinder { return sum; } - public void setStartDate(Date date) { - taskStartDateBox.setValue(date); - doApply(); - } - } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/IResourceAllocationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/IResourceAllocationModel.java index 907d4aba7..67caaee6e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/IResourceAllocationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/IResourceAllocationModel.java @@ -73,6 +73,8 @@ public interface IResourceAllocationModel extends INewAllocationsAdder { ProportionalDistributor addDefaultAllocations(); + Date getTaskStart(); + void setStartDate(Date date); } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java index 528b45200..232820d3e 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationController.java @@ -62,6 +62,7 @@ import org.zkoss.zul.Columns; import org.zkoss.zul.Datebox; import org.zkoss.zul.Decimalbox; import org.zkoss.zul.Grid; +import org.zkoss.zul.Hbox; import org.zkoss.zul.Intbox; import org.zkoss.zul.Label; import org.zkoss.zul.ListModelList; @@ -100,7 +101,7 @@ public class ResourceAllocationController extends GenericForwardComposer { private Intbox assignedHoursComponent; - private Datebox taskStartDateBox; + private Datebox taskStartDatebox = new Datebox(); private Grid calculationTypesGrid; @@ -133,6 +134,7 @@ public class ResourceAllocationController extends GenericForwardComposer { @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); + taskEndDate = new Datebox(); allResourcesPerDay = new Decimalbox(); newAllocationSelector.setLimitingResourceFilter(false); makeReadyInputsForCalculationTypes(); @@ -140,7 +142,7 @@ public class ResourceAllocationController extends GenericForwardComposer { } private void makeReadyInputsForCalculationTypes() { - final String width = "300px"; + final String width = "90px"; taskEndDate.setWidth(width); assignedHoursComponent = new Intbox(); } @@ -157,11 +159,19 @@ public class ResourceAllocationController extends GenericForwardComposer { @Override public Component cellFor(Integer column, CalculationTypeRadio data) { - return data.createRadio(); + return data.createComponent(getController()); } }; } + private Datebox getTaskEndDate() { + return taskEndDate; + } + + public ResourceAllocationController getController() { + return this; + } + /** * Shows Resource Allocation window * @param task @@ -180,7 +190,6 @@ public class ResourceAllocationController extends GenericForwardComposer { formBinder = allocationRows .createFormBinder(resourceAllocationModel); formBinder.setAssignedHoursComponent(assignedHoursComponent); - formBinder.setTaskStartDateBox(taskStartDateBox); formBinder.setEndDate(taskEndDate); formBinder.setAllResourcesPerDay(allResourcesPerDay); formBinder.setApplyButton(applyButton); @@ -202,6 +211,10 @@ public class ResourceAllocationController extends GenericForwardComposer { } } + public Date getTaskStart() { + return resourceAllocationModel.getTaskStart(); + } + public enum HoursRendererColumn { @@ -224,8 +237,7 @@ public class ResourceAllocationController extends GenericForwardComposer { @Override public Component cell(HoursRendererColumn column, AggregatedHoursGroup data) { - Intbox result = new Intbox(data.getHours()); - result.setDisabled(true); + Label result = new Label(Integer.toString(data.getHours())); return result; } }; @@ -346,6 +358,15 @@ public class ResourceAllocationController extends GenericForwardComposer { public abstract Component input( ResourceAllocationController resourceAllocationController); + public Component createComponent( + ResourceAllocationController resourceAllocationController) { + if (this.equals(END_DATE)) { + return createHbox(resourceAllocationController.taskEndDate); + } else { + return createRadio(); + } + } + public Radio createRadio() { Radio result = new Radio(); result.setLabel(getName()); @@ -353,6 +374,16 @@ public class ResourceAllocationController extends GenericForwardComposer { return result; } + public Hbox createHbox(Datebox datebox) { + Hbox hbox = new Hbox(); + hbox.setSpacing("65px"); + Radio radio = createRadio(); + + hbox.appendChild(radio); + hbox.appendChild(datebox); + return hbox; + } + public void doTheSelectionOn(Radiogroup radiogroup) { for (int i = 0; i < radiogroup.getItemCount(); i++) { Radio radio = radiogroup.getItemAtIndex(i); @@ -501,8 +532,6 @@ public class ResourceAllocationController extends GenericForwardComposer { private void renderResourceAllocation(Row row, final AllocationRow data) throws Exception { row.setValue(data); - append(row, data.createDetail()); - append(row, data.getSatisfiedCheckbox()); append(row, new Label(data.getName())); append(row, data.getHoursInput()); append(row, data.getResourcesPerDayInput()); @@ -516,12 +545,16 @@ public class ResourceAllocationController extends GenericForwardComposer { removeAllocation(data); } }); + + if (!data.isSatisfied()) { + row.setSclass("allocation-not-satisfied"); + } else { + row.setSclass("allocation-satisfied"); + } } private void renderAggregatingRow(Row row) { ResourceAllocationController controller = ResourceAllocationController.this; - append(row, new Label()); - append(row, new Label()); append(row, new Label(_("Sum of all rows"))); append(row, CalculationTypeRadio.NUMBER_OF_HOURS.input(controller)); append(row, CalculationTypeRadio.RESOURCES_PER_DAY @@ -567,7 +600,6 @@ public class ResourceAllocationController extends GenericForwardComposer { public void setStartDate(Date date) { resourceAllocationModel.setStartDate(date); - formBinder.setStartDate(date); } } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationModel.java index a2dea0034..21e287e49 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/planner/allocation/ResourceAllocationModel.java @@ -383,6 +383,14 @@ public class ResourceAllocationModel implements IResourceAllocationModel { return AggregatedHoursGroup.sum(task.getAggregatedByCriterions()); } + @Override + public Date getTaskStart() { + if (task == null) { + return null; + } + return task.getStartDate(); + } + @Override public void setStartDate(Date date) { if (task != null) { diff --git a/navalplanner-webapp/src/main/webapp/common/css/navalplan_zk.css b/navalplanner-webapp/src/main/webapp/common/css/navalplan_zk.css index cce7804b0..d2af259b8 100644 --- a/navalplanner-webapp/src/main/webapp/common/css/navalplan_zk.css +++ b/navalplanner-webapp/src/main/webapp/common/css/navalplan_zk.css @@ -1261,6 +1261,30 @@ overflow: visible; background-color: #CDE6F5; } +/* Resource allocation*/ +.allocation-not-satisfied .resource-allocation tr.z-grid-odd td.z-row-inner, .allocation-not-satisfied tr.z-grid-odd { + background-color: #EECCCC; +} + +.allocation-not-satisfied td.z-row-inner { + background-color: #EECCCC; +} + +.assignedresources .allocation-not-satisfied td.z-row-inner { + background-color: #EECCCC; +} + +.allocation-satisfied .resource-allocation tr.z-grid-odd td.z-row-inner, .allocation-satisfied tr.z-grid-odd { + background-color: none; +} + +.allocation-satisfied td.z-row-inner { + background-color: none; +} + +.assignedresources .allocation-satisfied td.z-row-inner { + background-color: none; +} /* Advanced allocation */ diff --git a/navalplanner-webapp/src/main/webapp/planner/_tabPanelLimitingResourceAllocation.zul b/navalplanner-webapp/src/main/webapp/planner/_tabPanelLimitingResourceAllocation.zul index cd71399a8..0337e7f9f 100644 --- a/navalplanner-webapp/src/main/webapp/planner/_tabPanelLimitingResourceAllocation.zul +++ b/navalplanner-webapp/src/main/webapp/planner/_tabPanelLimitingResourceAllocation.zul @@ -38,22 +38,22 @@ - - - + + + - - + + diff --git a/navalplanner-webapp/src/main/webapp/planner/_tabPanelNonLimitingResourceAllocation.zul b/navalplanner-webapp/src/main/webapp/planner/_tabPanelNonLimitingResourceAllocation.zul index dba5e4e9c..4aac464e4 100644 --- a/navalplanner-webapp/src/main/webapp/planner/_tabPanelNonLimitingResourceAllocation.zul +++ b/navalplanner-webapp/src/main/webapp/planner/_tabPanelNonLimitingResourceAllocation.zul @@ -32,51 +32,41 @@ - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + @@ -89,6 +79,7 @@ + @@ -97,15 +88,10 @@ rowRenderer="@{allocationController.resourceAllocationRenderer}" style="margin-bottom: 5px" fixedLayout="true"> - - - - - - + + + + diff --git a/navalplanner-webapp/src/main/webapp/planner/order.zul b/navalplanner-webapp/src/main/webapp/planner/order.zul index 63e4f5a11..780862710 100644 --- a/navalplanner-webapp/src/main/webapp/planner/order.zul +++ b/navalplanner-webapp/src/main/webapp/planner/order.zul @@ -62,7 +62,7 @@ + width="870px" visible="false">