changes on interface and fixes several issues in the subcontract pop-up for adding
new subcontractor deliver date. FEA: ItEr75S32AnA15S04UpdateDeliveringDateInSubcontracting
This commit is contained in:
parent
9a82aeb6af
commit
f28895fa1c
9 changed files with 296 additions and 8 deletions
|
|
@ -22,6 +22,8 @@
|
|||
package org.libreplan.business.planner.entities;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
|
|
@ -66,6 +68,7 @@ public class SubcontractedTaskData extends BaseEntity {
|
|||
result.labelsExported = subcontractedTaskData.labelsExported;
|
||||
result.materialAssignmentsExported = subcontractedTaskData.materialAssignmentsExported;
|
||||
result.hoursGroupsExported = subcontractedTaskData.hoursGroupsExported;
|
||||
result.setRequiredDeliveringDates(subcontractedTaskData.getRequiredDeliveringDates());
|
||||
|
||||
return create(result);
|
||||
}
|
||||
|
|
@ -226,6 +229,7 @@ public class SubcontractedTaskData extends BaseEntity {
|
|||
this.labelsExported = subcontratedTask.labelsExported;
|
||||
this.materialAssignmentsExported = subcontratedTask.materialAssignmentsExported;
|
||||
this.hoursGroupsExported = subcontratedTask.hoursGroupsExported;
|
||||
this.setRequiredDeliveringDates(subcontratedTask.getRequiredDeliveringDates());
|
||||
}
|
||||
|
||||
@AssertTrue(message = "external company should be subcontractor")
|
||||
|
|
@ -255,13 +259,23 @@ public class SubcontractedTaskData extends BaseEntity {
|
|||
&& externalCompany.getInteractsWithApplications();
|
||||
}
|
||||
|
||||
public void setRequiredDeliveringDates(SortedSet<SubcontractorDeliverDate> requiredDeliveringDates) {
|
||||
public void setRequiredDeliveringDates(
|
||||
SortedSet<SubcontractorDeliverDate> requiredDeliveringDates) {
|
||||
this.requiredDeliveringDates.clear();
|
||||
this.requiredDeliveringDates.addAll(requiredDeliveringDates);
|
||||
}
|
||||
|
||||
public SortedSet<SubcontractorDeliverDate> getRequiredDeliveringDates() {
|
||||
return requiredDeliveringDates;
|
||||
return Collections.unmodifiableSortedSet(this.requiredDeliveringDates);
|
||||
}
|
||||
|
||||
}
|
||||
public void addRequiredDeliveringDates(
|
||||
SubcontractorDeliverDate subDeliverDate) {
|
||||
this.requiredDeliveringDates.add(subDeliverDate);
|
||||
}
|
||||
|
||||
public void removeRequiredDeliveringDates(
|
||||
SubcontractorDeliverDate subcontractorDeliverDate) {
|
||||
this.requiredDeliveringDates.remove(subcontractorDeliverDate);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,4 +78,5 @@ public class SubcontractorDeliverDate extends BaseEntity implements DeliverDate{
|
|||
public Date getCommunicationDate() {
|
||||
return communicationDate;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -212,7 +212,7 @@
|
|||
</type>
|
||||
</property>
|
||||
|
||||
<set name="requiredDeliveringDates" inverse="true" cascade="all-delete-orphan" access="field"
|
||||
<set name="requiredDeliveringDates" inverse="false" cascade="all-delete-orphan" access="field"
|
||||
sort="org.libreplan.business.externalcompanies.entities.DeliverDateComparator">
|
||||
<key column="subcontracted_task_data_id" />
|
||||
<one-to-many class="org.libreplan.business.planner.entities.SubcontractorDeliverDate" />
|
||||
|
|
|
|||
|
|
@ -23,10 +23,12 @@ package org.libreplan.web.planner.order;
|
|||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.SortedSet;
|
||||
|
||||
import org.libreplan.business.common.exceptions.ValidationException;
|
||||
import org.libreplan.business.externalcompanies.entities.ExternalCompany;
|
||||
import org.libreplan.business.planner.entities.SubcontractedTaskData;
|
||||
import org.libreplan.business.planner.entities.SubcontractorDeliverDate;
|
||||
import org.libreplan.business.planner.entities.Task;
|
||||
|
||||
/**
|
||||
|
|
@ -65,4 +67,13 @@ public interface ISubcontractModel {
|
|||
void confirm() throws ValidationException;
|
||||
void cancel();
|
||||
|
||||
SortedSet<SubcontractorDeliverDate> getDeliverDates();
|
||||
|
||||
void addDeliverDate(Date subDeliverDate);
|
||||
|
||||
void removeRequiredDeliverDate(
|
||||
SubcontractorDeliverDate subcontractorDeliverDate);
|
||||
|
||||
boolean alreadyExistsRepeatedDeliverDate(Date newDeliverDate);
|
||||
|
||||
}
|
||||
|
|
@ -57,6 +57,7 @@ import org.libreplan.business.planner.entities.ResourceAllocation;
|
|||
import org.libreplan.business.planner.entities.ResourceAllocation.IVisitor;
|
||||
import org.libreplan.business.planner.entities.SpecificResourceAllocation;
|
||||
import org.libreplan.business.planner.entities.StretchesFunction;
|
||||
import org.libreplan.business.planner.entities.SubcontractorDeliverDate;
|
||||
import org.libreplan.business.planner.entities.Task;
|
||||
import org.libreplan.business.planner.entities.TaskElement;
|
||||
import org.libreplan.business.planner.entities.TaskGroup;
|
||||
|
|
@ -320,6 +321,7 @@ public class PlanningStateCreator {
|
|||
private void forceLoadOfDataAssociatedTo(TaskElement each) {
|
||||
forceLoadOfResourceAllocationsResourcesAndAssignmentFunction(each);
|
||||
forceLoadOfCriterions(each);
|
||||
forceLoadOfSubcontractedTaskData(each);
|
||||
|
||||
BaseCalendar calendar = each.getOwnCalendar();
|
||||
if (calendar == null) {
|
||||
|
|
@ -373,6 +375,18 @@ public class PlanningStateCreator {
|
|||
}
|
||||
}
|
||||
|
||||
private static void forceLoadOfSubcontractedTaskData(TaskElement taskElement){
|
||||
if(taskElement.isLeaf()){
|
||||
if(((Task)taskElement).getSubcontractedTaskData() != null){
|
||||
for (SubcontractorDeliverDate subDeliverDate : ((Task) taskElement)
|
||||
.getSubcontractedTaskData()
|
||||
.getRequiredDeliveringDates()) {
|
||||
subDeliverDate.getSaveDate();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void findChildrenWithQueryToAvoidProxies(TaskGroup group) {
|
||||
for (TaskElement eachTask : taskDAO.findChildrenOf(group)) {
|
||||
Hibernate.initialize(eachTask);
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ import org.libreplan.business.planner.entities.DerivedAllocation;
|
|||
import org.libreplan.business.planner.entities.DerivedDayAssignment;
|
||||
import org.libreplan.business.planner.entities.DerivedDayAssignmentsContainer;
|
||||
import org.libreplan.business.planner.entities.ResourceAllocation;
|
||||
import org.libreplan.business.planner.entities.SubcontractedTaskData;
|
||||
import org.libreplan.business.planner.entities.SubcontractorDeliverDate;
|
||||
import org.libreplan.business.planner.entities.Task;
|
||||
import org.libreplan.business.planner.entities.TaskElement;
|
||||
import org.libreplan.business.planner.entities.TaskGroup;
|
||||
|
|
@ -330,6 +332,7 @@ public class SaveCommandBuilder {
|
|||
checkConstraintHoursGroupUniqueCode(order);
|
||||
state.synchronizeTrees();
|
||||
TaskGroup rootTask = state.getRootTask();
|
||||
|
||||
if (rootTask != null) {
|
||||
// This reattachment is needed to ensure that the root task in
|
||||
// the state is the one associated to the transaction's session.
|
||||
|
|
@ -919,6 +922,7 @@ public class SaveCommandBuilder {
|
|||
}
|
||||
if (taskElement instanceof Task) {
|
||||
dontPoseAsTransient(((Task) taskElement).getConsolidation());
|
||||
dontPoseAsTransient(((Task) taskElement).getSubcontractedTaskData());
|
||||
}
|
||||
if (taskElement instanceof TaskGroup) {
|
||||
((TaskGroup) taskElement).dontPoseAsTransientPlanningData();
|
||||
|
|
@ -938,6 +942,19 @@ public class SaveCommandBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
private void dontPoseAsTransient(SubcontractedTaskData subcontractedTaskData) {
|
||||
if (subcontractedTaskData != null) {
|
||||
//dontPoseAsTransient - subcontratedTaskData
|
||||
subcontractedTaskData.dontPoseAsTransientObjectAnymore();
|
||||
|
||||
for (SubcontractorDeliverDate subDeliverDate : subcontractedTaskData
|
||||
.getRequiredDeliveringDates()) {
|
||||
//dontPoseAsTransient - DeliverDate
|
||||
subDeliverDate.dontPoseAsTransientObjectAnymore();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dontPoseAsTransient(
|
||||
SortedSet<? extends ConsolidatedValue> values) {
|
||||
for (ConsolidatedValue value : values) {
|
||||
|
|
|
|||
|
|
@ -21,21 +21,48 @@
|
|||
|
||||
package org.libreplan.web.planner.order;
|
||||
|
||||
import static org.libreplan.web.I18nHelper._;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.SortedSet;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.libreplan.business.common.exceptions.ValidationException;
|
||||
import org.libreplan.business.externalcompanies.entities.ExternalCompany;
|
||||
import org.libreplan.business.planner.entities.SubcontractedTaskData;
|
||||
import org.libreplan.business.planner.entities.SubcontractorDeliverDate;
|
||||
import org.libreplan.business.planner.entities.Task;
|
||||
import org.libreplan.business.planner.entities.TaskElement;
|
||||
import org.libreplan.web.common.IMessagesForUser;
|
||||
import org.libreplan.web.common.Level;
|
||||
import org.libreplan.web.common.MessagesForUser;
|
||||
import org.libreplan.web.common.Util;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.zkoss.ganttz.extensions.IContextWithPlannerTask;
|
||||
import org.zkoss.ganttz.servlets.CallbackServlet;
|
||||
import org.zkoss.ganttz.servlets.CallbackServlet.DisposalMode;
|
||||
import org.zkoss.ganttz.servlets.CallbackServlet.IServletRequestHandler;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.Executions;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.event.Events;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Button;
|
||||
import org.zkoss.zul.Comboitem;
|
||||
import org.zkoss.zul.Grid;
|
||||
import org.zkoss.zul.Hbox;
|
||||
import org.zkoss.zul.Label;
|
||||
import org.zkoss.zul.Row;
|
||||
import org.zkoss.zul.RowRenderer;
|
||||
import org.zkoss.zul.api.Datebox;
|
||||
import org.zkoss.zul.api.Tabpanel;
|
||||
|
||||
/**
|
||||
|
|
@ -51,10 +78,19 @@ public class SubcontractController extends GenericForwardComposer {
|
|||
|
||||
private ISubcontractModel subcontractModel;
|
||||
|
||||
private Grid gridDeliverDate;
|
||||
|
||||
private DeliverDatesRenderer deliverDatesRenderer = new DeliverDatesRenderer();
|
||||
|
||||
protected IMessagesForUser messagesForUser;
|
||||
|
||||
private Component messagesContainer;
|
||||
|
||||
@Override
|
||||
public void doAfterCompose(Component comp) throws Exception {
|
||||
super.doAfterCompose(comp);
|
||||
tabpanel = (Tabpanel) comp;
|
||||
messagesForUser = new MessagesForUser(messagesContainer);
|
||||
}
|
||||
|
||||
public void init(Task task,
|
||||
|
|
@ -101,4 +137,111 @@ public class SubcontractController extends GenericForwardComposer {
|
|||
subcontractModel.removeSubcontractedTaskData();
|
||||
}
|
||||
|
||||
public SortedSet<SubcontractorDeliverDate> getDeliverDates() {
|
||||
return subcontractModel.getDeliverDates();
|
||||
}
|
||||
|
||||
public void addDeliverDate(Datebox newDeliverDate){
|
||||
if (newDeliverDate == null || newDeliverDate.getValue() == null) {
|
||||
messagesForUser.showMessage(Level.ERROR,
|
||||
_("You must select a valid date. "));
|
||||
return;
|
||||
}
|
||||
if (thereIsSomeCommunicationDateEmpty()) {
|
||||
messagesForUser
|
||||
.showMessage(
|
||||
Level.ERROR,
|
||||
_("It will only be possible to add a Deliver Date if all the deliver date exiting in the table have a CommunicationDate not empty. "));
|
||||
return;
|
||||
}
|
||||
if(subcontractModel.alreadyExistsRepeatedDeliverDate(newDeliverDate.getValue())){
|
||||
messagesForUser
|
||||
.showMessage(
|
||||
Level.ERROR,
|
||||
_("It already exists a deliver date with the same date. "));
|
||||
return;
|
||||
}
|
||||
subcontractModel.addDeliverDate(newDeliverDate.getValue());
|
||||
Util.reloadBindings(gridDeliverDate);
|
||||
gridDeliverDate.invalidate();
|
||||
}
|
||||
|
||||
private boolean thereIsSomeCommunicationDateEmpty(){
|
||||
for(SubcontractorDeliverDate subDeliverDate : subcontractModel.getDeliverDates()){
|
||||
if(subDeliverDate.getCommunicationDate() == null){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public DeliverDatesRenderer getDeliverDatesRenderer(){
|
||||
return new DeliverDatesRenderer();
|
||||
}
|
||||
|
||||
private class DeliverDatesRenderer implements RowRenderer{
|
||||
|
||||
@Override
|
||||
public void render(Row row, Object data) throws Exception {
|
||||
SubcontractorDeliverDate subcontractorDeliverDate = (SubcontractorDeliverDate) data;
|
||||
row.setValue(subcontractorDeliverDate);
|
||||
|
||||
appendLabel(row, toString(subcontractorDeliverDate.getSaveDate()));
|
||||
appendLabel(row, toString(subcontractorDeliverDate.getSubcontractorDeliverDate()));
|
||||
appendLabel(row, toString(subcontractorDeliverDate.getCommunicationDate()));
|
||||
appendOperations(row, subcontractorDeliverDate);
|
||||
}
|
||||
|
||||
private String toString(Date date) {
|
||||
if (date == null) {
|
||||
return "";
|
||||
}
|
||||
return new SimpleDateFormat("dd/MM/yyyy HH:mm").format(date);
|
||||
}
|
||||
|
||||
private void appendLabel(Row row, String label) {
|
||||
row.appendChild(new Label(label));
|
||||
}
|
||||
|
||||
private void appendOperations(Row row,
|
||||
SubcontractorDeliverDate subcontractorDeliverDate) {
|
||||
Hbox hbox = new Hbox();
|
||||
hbox.appendChild(getDeleteButton(subcontractorDeliverDate));
|
||||
row.appendChild(hbox);
|
||||
}
|
||||
|
||||
private Button getDeleteButton(
|
||||
final SubcontractorDeliverDate subcontractorDeliverDate) {
|
||||
Button deleteButton = new Button();
|
||||
deleteButton.setDisabled(!isTheLastOne(subcontractorDeliverDate));
|
||||
|
||||
deleteButton.setImage("/common/img/ico_borrar_out.png");
|
||||
deleteButton.setHoverImage("/common/img/ico_borrar_out.png");
|
||||
deleteButton.setTooltiptext("");
|
||||
|
||||
deleteButton.addEventListener(Events.ON_CLICK, new EventListener() {
|
||||
@Override
|
||||
public void onEvent(Event event) {
|
||||
removeRequiredDeliverDate(subcontractorDeliverDate);
|
||||
}
|
||||
});
|
||||
|
||||
return deleteButton;
|
||||
}
|
||||
|
||||
private boolean isTheLastOne(final SubcontractorDeliverDate subDeliverDate){
|
||||
SubcontractorDeliverDate lastDeliverDate = getSubcontractedTaskData()
|
||||
.getRequiredDeliveringDates().first();
|
||||
if (lastDeliverDate != null) {
|
||||
return lastDeliverDate.equals(subDeliverDate) ? true : false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public void removeRequiredDeliverDate(SubcontractorDeliverDate subcontractorDeliverDate){
|
||||
subcontractModel.removeRequiredDeliverDate(subcontractorDeliverDate);
|
||||
Util.reloadBindings(gridDeliverDate);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -23,12 +23,16 @@ package org.libreplan.web.planner.order;
|
|||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
import org.libreplan.business.common.exceptions.ValidationException;
|
||||
import org.libreplan.business.externalcompanies.daos.IExternalCompanyDAO;
|
||||
import org.libreplan.business.externalcompanies.entities.ExternalCompany;
|
||||
import org.libreplan.business.planner.daos.ISubcontractedTaskDataDAO;
|
||||
import org.libreplan.business.planner.entities.SubcontractedTaskData;
|
||||
import org.libreplan.business.planner.entities.SubcontractorDeliverDate;
|
||||
import org.libreplan.business.planner.entities.Task;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
|
|
@ -42,6 +46,7 @@ import org.zkoss.ganttz.data.GanttDate;
|
|||
* {@link SubcontractedTaskData} entity.
|
||||
*
|
||||
* @author Manuel Rego Casasnovas <mrego@igalia.com>
|
||||
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
|
||||
*/
|
||||
@Service
|
||||
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
|
||||
|
|
@ -75,16 +80,29 @@ public class SubcontractModel implements ISubcontractModel {
|
|||
|
||||
SubcontractedTaskData subcontractedTaskData = task
|
||||
.getSubcontractedTaskData();
|
||||
|
||||
this.currentSubcontractedTaskData = subcontractedTaskData;
|
||||
|
||||
if (subcontractedTaskData == null) {
|
||||
this.subcontractedTaskData = SubcontractedTaskData.create(task);
|
||||
this.addDeliverDate(getEndDate());
|
||||
} else {
|
||||
subcontractedTaskDataDAO.reattach(subcontractedTaskData);
|
||||
loadRequiredDeliveringDates(subcontractedTaskData);
|
||||
this.subcontractedTaskData = SubcontractedTaskData
|
||||
.createFrom(subcontractedTaskData);
|
||||
}
|
||||
}
|
||||
|
||||
private void loadRequiredDeliveringDates(SubcontractedTaskData subcontractedTaskData){
|
||||
if(subcontractedTaskData != null){
|
||||
for (SubcontractorDeliverDate subDeliverDate : subcontractedTaskData
|
||||
.getRequiredDeliveringDates()) {
|
||||
subDeliverDate.getSaveDate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public SubcontractedTaskData getSubcontractedTaskData() {
|
||||
return subcontractedTaskData;
|
||||
|
|
@ -169,4 +187,53 @@ public class SubcontractModel implements ISubcontractModel {
|
|||
subcontractedTaskData = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SortedSet<SubcontractorDeliverDate> getDeliverDates(){
|
||||
if(subcontractedTaskData != null){
|
||||
return subcontractedTaskData.getRequiredDeliveringDates();
|
||||
}
|
||||
return new TreeSet<SubcontractorDeliverDate>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addDeliverDate(Date subDeliverDate){
|
||||
if(subcontractedTaskData != null){
|
||||
SubcontractorDeliverDate subcontractorDeliverDate = SubcontractorDeliverDate
|
||||
.create(new Date(), subDeliverDate, null);
|
||||
subcontractedTaskData
|
||||
.addRequiredDeliveringDates(subcontractorDeliverDate);
|
||||
|
||||
//update the end date of the task
|
||||
updateEndDateWithDeliverDate();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateEndDateWithDeliverDate(){
|
||||
SubcontractorDeliverDate lastDeliverDate = this
|
||||
.getSubcontractedTaskData().getRequiredDeliveringDates().last();
|
||||
task.setEndDate(lastDeliverDate.getSubcontractorDeliverDate());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean alreadyExistsRepeatedDeliverDate(Date newDeliverDate){
|
||||
for(SubcontractorDeliverDate subDeliverDate : this
|
||||
.getSubcontractedTaskData().getRequiredDeliveringDates()){
|
||||
Date deliverDate = subDeliverDate.getSubcontractorDeliverDate();
|
||||
Date currentDeliverDate = new LocalDate(deliverDate).toDateTimeAtStartOfDay().toDate();
|
||||
newDeliverDate = new LocalDate(newDeliverDate).toDateTimeAtStartOfDay().toDate();
|
||||
if(currentDeliverDate.compareTo(newDeliverDate) == 0){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeRequiredDeliverDate(
|
||||
SubcontractorDeliverDate subcontractorDeliverDate) {
|
||||
if(subcontractedTaskData != null){
|
||||
subcontractedTaskData.removeRequiredDeliveringDates(subcontractorDeliverDate);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,10 +56,6 @@
|
|||
<label value="${i18n:_('Subcontracted code')}" />
|
||||
<textbox value="@{subController.subcontractedTaskData.subcontractedCode}" />
|
||||
</row>
|
||||
<row>
|
||||
<label value="${i18n:_('End date')}" />
|
||||
<datebox value="@{subController.endDate}" />
|
||||
</row>
|
||||
<row>
|
||||
<label value="${i18n:_('Exportation options')}" />
|
||||
<vbox>
|
||||
|
|
@ -75,4 +71,29 @@
|
|||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<groupbox style="margin-top: 5px" sclass="assignedresources" closable="false">
|
||||
<caption label="${i18n:_('Deliver date')}" />
|
||||
|
||||
<separator spacing="10px"/>
|
||||
|
||||
<hbox align="bottom" sclass="add-resources-or-criteria">
|
||||
<label value="${i18n:_('New deliver date')}" />
|
||||
<datebox id="newDeliverDate" value="@{subController.endDate}" />
|
||||
<button label="${i18n:_('Add')}" onClick="subController.addDeliverDate(newDeliverDate)"/>
|
||||
</hbox>
|
||||
|
||||
<separator spacing="20px"/>
|
||||
|
||||
<grid id="gridDeliverDate"
|
||||
model="@{subController.deliverDates}"
|
||||
rowRenderer="@{subController.deliverDatesRenderer}"
|
||||
mold="paging" pageSize="10" fixedLayout="true" width="880px">
|
||||
<columns>
|
||||
<column label="${i18n:_('Save date')}" sort="auto(saveDate)" align="center" width="220px"/>
|
||||
<column label="${i18n:_('Deliver date')}" align="center" width="220px"/>
|
||||
<column label="${i18n:_('Communication date')}" align="center" width="220px"/>
|
||||
<column label="${i18n:_('Operations')}" align="center"/>
|
||||
</columns>
|
||||
</grid>
|
||||
</groupbox>
|
||||
</tabpanel>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue