Changes the SchedulingProgressPerOrder report.

It changes the interface for the selection of orders.

FEA : ItEr60S15AnA04S11RFAdaptacionFiltradosInformes
This commit is contained in:
Susana Montes Pedreira 2010-08-19 15:14:58 +02:00
parent 828c065c23
commit 2cd19b4cea
4 changed files with 118 additions and 30 deletions

View file

@ -40,8 +40,16 @@ public interface ISchedulingProgressPerOrderModel {
AdvanceType advanceType, Date startingDate, Date endingDate,
LocalDate referenceDate);
void init();
List<Order> getOrders();
List<AdvanceType> getAdvanceTypes();
void removeSelectedOrder(Order order);
boolean addSelectedOrder(Order order);
List<Order> getSelectedOrders();
}

View file

@ -23,6 +23,7 @@ package org.navalplanner.web.reports;
import static org.navalplanner.web.I18nHelper._;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@ -35,7 +36,9 @@ import org.apache.commons.lang.StringUtils;
import org.joda.time.LocalDate;
import org.navalplanner.business.advance.entities.AdvanceType;
import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.web.common.Util;
import org.navalplanner.web.common.components.ExtendedJasperreport;
import org.navalplanner.web.common.components.bandboxsearch.BandboxSearch;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zul.Datebox;
@ -43,9 +46,8 @@ import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;
/**
*
* @author Diego Pino Garcia <dpino@igalia.com>
*
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
*/
public class SchedulingProgressPerOrderController extends NavalplannerReportController {
@ -63,23 +65,62 @@ public class SchedulingProgressPerOrderController extends NavalplannerReportCont
private Datebox endingDate;
private BandboxSearch bdOrders;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
comp.setVariable("controller", this, true);
lbAdvanceType.setSelectedIndex(0);
schedulingProgressPerOrderModel.init();
}
public List<Order> getOrders() {
public List<Order> getAllOrders() {
return schedulingProgressPerOrderModel.getOrders();
}
public List<Order> getSelectedOrdersToFilter() {
return (getSelectedOrders().isEmpty()) ? Collections
.unmodifiableList(getAllOrders())
: getSelectedOrders();
}
/**
* Return selected orders, if none are selected return all orders in listbox
* @return
*/
public List<Order> getSelectedOrders() {
return Collections.unmodifiableList(schedulingProgressPerOrderModel
.getSelectedOrders());
}
public void onSelectOrder() {
Order order = (Order) bdOrders.getSelectedElement();
if (order == null) {
throw new WrongValueException(bdOrders, _("please, select a order"));
}
boolean result = schedulingProgressPerOrderModel
.addSelectedOrder(order);
if (!result) {
throw new WrongValueException(bdOrders,
_("This order has already been added."));
} else {
Util.reloadBindings(lbOrders);
}
bdOrders.clear();
}
public void onRemoveOrder(Order order) {
schedulingProgressPerOrderModel.removeSelectedOrder(order);
Util.reloadBindings(lbOrders);
}
protected String getReportName() {
return REPORT_NAME;
}
protected JRDataSource getDataSource() {
List<Order> orders = getSelectedOrders();
List<Order> orders = getSelectedOrdersToFilter();
return schedulingProgressPerOrderModel
.getSchedulingProgressPerOrderReport(orders, getAdvanceType(),
@ -87,21 +128,6 @@ public class SchedulingProgressPerOrderController extends NavalplannerReportCont
new LocalDate(getReferenceDate()));
}
/**
* Return selected orders, if none are selected return all orders in listbox
*
* @return
*/
private List<Order> getSelectedOrders() {
List<Order> result = new ArrayList<Order>();
final Set<Listitem> listItems = lbOrders.getSelectedItems();
for (Listitem each: listItems) {
result.add((Order) each.getValue());
}
return (!result.isEmpty()) ? result : getOrders();
}
private Date getReferenceDate() {
Date result = referenceDate.getValue();
if (result == null) {

View file

@ -53,8 +53,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* Diego Pino Garcia <dpino@igalia.com>
*
* @author Diego Pino Garcia <dpino@igalia.com>
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
*/
@Service
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
@ -72,13 +72,23 @@ public class SchedulingProgressPerOrderModel implements ISchedulingProgressPerOr
@Autowired
private IScenarioManager scenarioManager;
private List<Order> selectedOrders = new ArrayList<Order>();
private List<Order> allOrders = new ArrayList<Order>();
@Override
@Transactional(readOnly = true)
public List<Order> getOrders() {
List<Order> orders = orderDAO.getOrdersByScenario(scenarioManager
public void init() {
selectedOrders.clear();
allOrders.clear();
loadAllOrders();
}
private void loadAllOrders() {
allOrders = orderDAO.getOrdersByScenario(scenarioManager
.getCurrent());
for (Order each: orders) {
for (Order each : allOrders) {
each.useSchedulingDataFor(scenarioManager.getCurrent());
initializeTasks(each.getTaskElements());
initializeOrderElements(each.getAllOrderElements());
@ -87,7 +97,6 @@ public class SchedulingProgressPerOrderModel implements ISchedulingProgressPerOr
initializeDirectAdvanceAssignments(each.getDirectAdvanceAssignments());
initializeIndirectAdvanceAssignments(each.getIndirectAdvanceAssignments());
}
return orders;
}
private void initializeOrderElements(List<OrderElement> orderElements) {
@ -212,4 +221,29 @@ public class SchedulingProgressPerOrderModel implements ISchedulingProgressPerOr
}
return result;
}
@Override
public List<Order> getOrders() {
return allOrders;
}
@Override
public void removeSelectedOrder(Order order) {
this.selectedOrders.remove(order);
}
@Override
public boolean addSelectedOrder(Order order) {
if (this.selectedOrders.contains(order)) {
return false;
}
this.selectedOrders.add(order);
return true;
}
@Override
public List<Order> getSelectedOrders() {
return selectedOrders;
}
}

View file

@ -101,17 +101,37 @@
border="normal"
style="overflow:auto">
<panelchildren>
<listbox id="lbOrders"
width="600px"
<vbox>
<separator spacing="5px"/>
<hbox>
<bandboxSearch id="bdOrders" finder="OrderBandboxFinder" model="@{controller.allOrders}"
widthListbox="480px" widthBandbox="450px"/>
<button label="${i18n:_('Add')}"
onClick="controller.onSelectOrder()" style="margin-top: -4px" />
</hbox>
</vbox>
<separator spacing="10px"/>
<listbox id="lbOrders"
width="700px"
multiple="true"
model="@{controller.orders}">
model="@{controller.selectedOrders}">
<listhead>
<listheader label="${i18n:_('Name')}" sort="auto(name)" />
<listheader label="${i18n:_('Code')}" sort="auto(code)" />
<listheader label="${i18n:_('Name')}" align="center" sort="auto(name)" />
<listheader label="${i18n:_('Code')}" sort="auto(code)" align="center" />
<listheader label="${i18n:_('Start date')}" sort="auto(initDate)" align="center" />
<listheader label="${i18n:_('Operations')}" sort="auto(initDate)" align="center" width="100px"/>
</listhead>
<listitem self="@{each='order'}" value="@{order}">
<listcell label="@{order.name}" />
<listcell label="@{order.code}" />
<listcell label="@{order.initDate, converter='org.navalplanner.web.common.typeconverters.DateConverter'}" />
<listcell>
<button sclass="icono" image="/common/img/ico_borrar1.png"
hoverImage="/common/img/ico_borrar.png"
tooltiptext="${i18n:_('Delete')}"
onClick="controller.onRemoveOrder(self.parent.parent.value);">
</button>
</listcell>
</listitem>
</listbox>
</panelchildren>