Changes the SchedulingProgressPerOrder report.
It changes the interface for the selection of orders. FEA : ItEr60S15AnA04S11RFAdaptacionFiltradosInformes
This commit is contained in:
parent
828c065c23
commit
2cd19b4cea
4 changed files with 118 additions and 30 deletions
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue