revamp the interface of the General Data tab in the Project

Details perspective, in order to show the deliver dates.

FEA: ItEr75S32AnA15S04UpdateDeliveringDateInSubcontracting
This commit is contained in:
Susana Montes Pedreira 2011-12-19 20:16:33 +01:00
parent ab1e701870
commit e6cdb15a66
3 changed files with 189 additions and 102 deletions

View file

@ -29,6 +29,8 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.annotation.Resource;
@ -37,6 +39,8 @@ import org.apache.commons.logging.LogFactory;
import org.hibernate.validator.InvalidValue;
import org.libreplan.business.calendars.entities.BaseCalendar;
import org.libreplan.business.common.exceptions.ValidationException;
import org.libreplan.business.externalcompanies.entities.DeadlineCommunication;
import org.libreplan.business.externalcompanies.entities.DeliverDateComparator;
import org.libreplan.business.externalcompanies.entities.ExternalCompany;
import org.libreplan.business.orders.entities.HoursGroup;
import org.libreplan.business.orders.entities.Order;
@ -1499,4 +1503,10 @@ public class OrderCRUDController extends GenericForwardComposer {
}
}
public SortedSet<DeadlineCommunication> getDeliverDates() {
if(getOrder() != null){
return getOrder().getDeliveringDates();
}
return new TreeSet<DeadlineCommunication>(new DeliverDateComparator());
}
}

View file

@ -44,6 +44,7 @@ import org.libreplan.business.common.entities.Configuration;
import org.libreplan.business.common.entities.EntityNameEnum;
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
import org.libreplan.business.externalcompanies.daos.IExternalCompanyDAO;
import org.libreplan.business.externalcompanies.entities.DeadlineCommunication;
import org.libreplan.business.externalcompanies.entities.ExternalCompany;
import org.libreplan.business.labels.daos.ILabelDAO;
import org.libreplan.business.labels.entities.Label;
@ -273,12 +274,17 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel {
forceLoadCriterionRequirements(order);
forceLoadCalendar(this.getCalendar());
forceLoadCustomer(order.getCustomer());
forceLoadDeliveringDates(order);
forceLoadLabels(order);
forceLoadMaterialAssignments(order);
forceLoadTaskQualityForms(order);
initOldCodes();
}
private void forceLoadDeliveringDates(Order order){
order.getDeliveringDates().size();
}
private void forceLoadLabels(OrderElement orderElement) {
orderElement.getLabels().size();
for (OrderElement each : orderElement.getChildren()) {

View file

@ -62,108 +62,179 @@
<orderElementTree id="orderElementTree" showCreateTemplateButton="true" />
</tabpanel>
<tabpanel id="tabPanelGeneralData" fulfill="tabGeneralData.onSelect">
<grid fixedLayout="true">
<columns>
<column width="200px" />
<column />
</columns>
<rows>
<row>
<label value="${i18n:_('Name')}" />
<textbox value="@{controller.order.name}" width="500px"/>
</row>
<row>
<label value="${i18n:_('Code')}" />
<hbox>
<textbox value="@{controller.order.code}" width="250px"
disabled="@{controller.codeAutogenerated}" />
<checkbox label="${i18n:_('Generate code')}"
checked="@{controller.codeAutogenerated}" />
</hbox>
</row>
<row>
<label value="${i18n:_('External code')}" />
<textbox value="@{controller.order.externalCode}"
width="250px" disabled="true"/>
</row>
<row>
<label value="${i18n:_('Scheduling mode')}" />
<combobox id="schedulingMode" />
</row>
<row>
<label value="${i18n:_('Starting date')}" />
<datebox id="initDate"
value="@{controller.order.initDate}" />
</row>
<row>
<label value="${i18n:_('Deadline')}" />
<datebox id="deadline"
value="@{controller.order.deadline}" />
</row>
<row>
<label value="${i18n:_('Responsible')}" />
<textbox
value="@{controller.order.responsible}" width="500px"/>
</row>
<row>
<label value="${i18n:_('Customer')}" />
<bandboxSearch id="bdExternalCompanies" widthBandbox="485px" widthListbox="500px"
finder="ExternalCompanyBandboxFinder"
model="@{controller.externalCompaniesAreClient}"
selectedElement="@{controller.order.customer}"/>
</row>
<row>
<label value="${i18n:_('Customer reference')}" />
<textbox value="@{controller.order.customerReference}" width="500px"/>
</row>
<row>
<label value="${i18n:_('Description')}" />
<textbox
value="@{controller.order.description}"
rows="6" width="500px" />
</row>
<row>
<label value="${i18n:_('Dependencies have priority')}" />
<checkbox
checked="@{controller.order.dependenciesConstraintsHavePriority}" />
</row>
<row>
<label value="${i18n:_('Calendar')}" />
<combobox id="calendarCombobox" width="200px"
model="@{controller.baseCalendars}"
itemRenderer="@{controller.baseCalendarsComboitemRenderer}"
onSelect="controller.setBaseCalendar(self.selectedItem.value);" />
</row>
<row>
<label value="${i18n:_('Budget')}" />
<hbox align="center">
<label value="${i18n:_('Work')}" />
<decimalbox id="boxWorkBudget" width="150px" scale = "2"
value="@{controller.order.workBudget}"
onChange="controller.reloadTotalBudget(txtTotalBudget)" />
<separator bar="false" spacing="15px" orient="vertical"/>
<label value="${i18n:_('Materials')}" />
<decimalbox id="boxMaterialsBudget" width="150px" scale="2"
value="@{controller.order.materialsBudget}"
onChange="controller.reloadTotalBudget(txtTotalBudget)" />
<separator bar="false" spacing="15px" orient="vertical"/>
<label value=" ${i18n:_('Total')} :" />
<label id="txtTotalBudget" value="@{controller.order.totalBudget}"/>
</hbox>
</row>
<row>
<label value="${i18n:_('Total hours')}" />
<label value="@{controller.order.totalHours}" width="200px"/>
</row>
<row>
<label value="${i18n:_('State')}" />
<listbox id="listOrderStatus" mold="select" rows="1" width="220px"
model="@{controller.orderStatus}"
selectedItem="@{controller.order.state}"
itemRenderer="org.libreplan.web.common.EnumsListitemRenderer" />
</row>
</rows>
</grid>
<hbox>
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false">
<caption label="${i18n:_('Identification')}" />
<separator spacing="10px"/>
<grid fixedLayout="true" width="550px">
<columns>
<column width="200px" />
<column />
</columns>
<rows>
<row>
<label value="${i18n:_('Name')}" />
<textbox value="@{controller.order.name}" width="200px"/>
</row>
<row>
<label value="${i18n:_('Code')}" />
<hbox>
<textbox value="@{controller.order.code}" width="200px"
disabled="@{controller.codeAutogenerated}" />
<checkbox label="${i18n:_('Generate code')}"
checked="@{controller.codeAutogenerated}" />
</hbox>
</row>
<row>
<label value="${i18n:_('Responsible')}" />
<textbox
value="@{controller.order.responsible}" width="200px"/>
</row>
<row>
<label value="${i18n:_('Description')}" />
<textbox
value="@{controller.order.description}"
rows="7" width="330px" />
</row>
<row>
<label value="${i18n:_('State')}" />
<listbox id="listOrderStatus" mold="select" rows="1" width="220px"
model="@{controller.orderStatus}"
selectedItem="@{controller.order.state}"
itemRenderer="org.libreplan.web.common.EnumsListitemRenderer" />
</row>
</rows>
</grid>
</groupbox>
<div>
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false">
<caption label="${i18n:_('Planning Configuration')}" />
<separator spacing="10px"/>
<grid fixedLayout="true">
<columns>
<column width="180px" />
<column />
</columns>
<rows>
<row>
<label value="${i18n:_('Starting date')}" />
<datebox id="initDate"
value="@{controller.order.initDate}" />
</row>
<row>
<label value="${i18n:_('Deadline')}" />
<datebox id="deadline"
value="@{controller.order.deadline}" />
</row>
<row>
<label value="${i18n:_('Calendar')}" />
<combobox id="calendarCombobox" width="200px"
model="@{controller.baseCalendars}"
itemRenderer="@{controller.baseCalendarsComboitemRenderer}"
onSelect="controller.setBaseCalendar(self.selectedItem.value);" />
</row>
<row>
<label value="${i18n:_('Scheduling mode')}" />
<combobox id="schedulingMode" />
</row>
<row>
<label value="${i18n:_('Dependencies have priority')}" />
<checkbox
checked="@{controller.order.dependenciesConstraintsHavePriority}" />
</row>
</rows>
</grid>
</groupbox>
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false">
<caption label="${i18n:_('Cost')}" />
<separator spacing="10px"/>
<grid fixedLayout="true">
<columns>
<column width="120px" />
<column />
</columns>
<rows>
<row>
<label value="${i18n:_('Budget')}" />
<hbox align="center">
<label value="${i18n:_('Work')}" />
<decimalbox id="boxWorkBudget" width="80px" scale = "2"
value="@{controller.order.workBudget}"
onChange="controller.reloadTotalBudget(txtTotalBudget)" />
<separator bar="false" spacing="15px" orient="vertical"/>
<label value="${i18n:_('Materials')}" />
<decimalbox id="boxMaterialsBudget" width="80px" scale="2"
value="@{controller.order.materialsBudget}"
onChange="controller.reloadTotalBudget(txtTotalBudget)" />
<separator bar="false" spacing="15px" orient="vertical"/>
<label value=" ${i18n:_('Total')} :" />
<label id="txtTotalBudget" value="@{controller.order.totalBudget}"/>
</hbox>
</row>
<row>
<label value="${i18n:_('Total hours')}" />
<label value="@{controller.order.totalHours}"/>
</row>
</rows>
</grid>
</groupbox>
</div>
</hbox>
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false">
<caption label="${i18n:_('Customer information')}" />
<separator spacing="10px"/>
<hbox>
<separator spacing="10px"/>
<grid fixedLayout="true">
<columns>
<column width="200px" />
<column />
</columns>
<rows>
<row>
<label value="${i18n:_('External code')}" />
<textbox value="@{controller.order.externalCode}"
width="350px" disabled="true"/>
</row>
<row>
<label value="${i18n:_('Customer')}" />
<bandboxSearch id="bdExternalCompanies" widthBandbox="465px" widthListbox="480px"
finder="ExternalCompanyBandboxFinder"
model="@{controller.externalCompaniesAreClient}"
selectedElement="@{controller.order.customer}"/>
</row>
<row>
<label value="${i18n:_('Customer reference')}" />
<textbox value="@{controller.order.customerReference}" width="465px"/>
</row>
</rows>
</grid>
<separator spacing="20px"/>
<grid id="gridDeliverDate"
model="@{controller.deliverDates}"
mold="paging" pageSize="4" fixedLayout="true" width="400px">
<columns>
<column label="${i18n:_('Deliver date')}" align="center" width="200px"/>
<column label="${i18n:_('Communication date')}" align="center"/>
</columns>
<rows>
<row self="@{each='deliverDate'}" value="@{deliverDate}">
<label value="@{deliverDate.deliverDate, converter='org.libreplan.web.common.typeconverters.DateConverter'}" />
<label value="@{deliverDate.saveDate, converter='org.libreplan.web.common.typeconverters.DateConverter'}" />
</row>
</rows>
</grid>
</hbox>
</groupbox>
</tabpanel>
<tabpanel>
<listOrderElementHours id="orderElementHours" fulfill="tabAssignedHours.onSelect"/>