ItEr20S08CUProcuraPartesTraballoDadosAltaNoSistemaItEr19S13: WorkReport edition
This commit is contained in:
parent
329a417894
commit
e2d074f453
7 changed files with 144 additions and 53 deletions
|
|
@ -9,6 +9,9 @@ import org.navalplanner.web.common.entrypoints.EntryPoints;
|
|||
public interface IWorkReportCRUDControllerEntryPoints {
|
||||
|
||||
@EntryPoint("edit")
|
||||
public abstract void goToEditForm(WorkReport workReport);
|
||||
|
||||
@EntryPoint("create")
|
||||
public abstract void goToCreateForm(WorkReportType workReportType);
|
||||
|
||||
@EntryPoint("list")
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import org.navalplanner.business.orders.entities.OrderElement;
|
|||
import org.navalplanner.business.resources.entities.Resource;
|
||||
import org.navalplanner.business.resources.entities.Worker;
|
||||
import org.navalplanner.business.workreports.entities.WorkReport;
|
||||
import org.navalplanner.business.workreports.entities.WorkReportLine;
|
||||
import org.navalplanner.business.workreports.entities.WorkReportType;
|
||||
|
||||
/**
|
||||
|
|
@ -94,4 +95,10 @@ public interface IWorkReportModel {
|
|||
String getDistinguishedCode(OrderElement orderElement)
|
||||
throws InstanceNotFoundException;
|
||||
|
||||
/**
|
||||
* Add new {@link WorkReportLine} to {@link WorkReport}
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
WorkReportLine addWorkReportLine();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import org.hibernate.validator.InvalidValue;
|
|||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.orders.entities.Order;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
|
@ -31,12 +30,14 @@ import org.zkoss.zk.ui.event.EventListener;
|
|||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
import org.zkoss.zul.Datebox;
|
||||
import org.zkoss.zul.Intbox;
|
||||
import org.zkoss.zul.ListModel;
|
||||
import org.zkoss.zul.Listbox;
|
||||
import org.zkoss.zul.Listcell;
|
||||
import org.zkoss.zul.Listhead;
|
||||
import org.zkoss.zul.Listheader;
|
||||
import org.zkoss.zul.Listitem;
|
||||
import org.zkoss.zul.ListitemRenderer;
|
||||
import org.zkoss.zul.SimpleListModel;
|
||||
import org.zkoss.zul.Textbox;
|
||||
import org.zkoss.zul.api.Window;
|
||||
|
||||
|
|
@ -68,6 +69,17 @@ public class WorkReportCRUDController extends GenericForwardComposer implements
|
|||
|
||||
public final static String ID_WORK_REPORT_LINES = "workReportLines";
|
||||
|
||||
private final static String RESOURCE = "Recurso";
|
||||
|
||||
private final static String CODE = "Código";
|
||||
|
||||
private final static String NUM_HOURS = "Horas";
|
||||
|
||||
private final static String MOLD = "paging";
|
||||
|
||||
private final static int PAGING = 10;
|
||||
|
||||
|
||||
public List<WorkReport> getWorkReports() {
|
||||
return workReportModel.getWorkReports();
|
||||
}
|
||||
|
|
@ -221,7 +233,7 @@ public class WorkReportCRUDController extends GenericForwardComposer implements
|
|||
|
||||
public void cancel() {
|
||||
if (workReportModel.isEditing()) {
|
||||
|
||||
goToList();
|
||||
} else {
|
||||
workReportTypeCRUD.goToList();
|
||||
}
|
||||
|
|
@ -229,11 +241,104 @@ public class WorkReportCRUDController extends GenericForwardComposer implements
|
|||
|
||||
public void goToCreateForm(WorkReportType workReportType) {
|
||||
workReportModel.prepareForCreate(workReportType);
|
||||
appendCriterionTypesToHeader(getCriterionTypes());
|
||||
prepareWorkReportList();
|
||||
getVisibility().showOnly(createWindow);
|
||||
Util.reloadBindings(createWindow);
|
||||
}
|
||||
|
||||
public void goToEditForm(WorkReport workReport) {
|
||||
workReportModel.prepareEditFor(workReport);
|
||||
prepareWorkReportList();
|
||||
getVisibility().showOnly(createWindow);
|
||||
Util.reloadBindings(createWindow);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link WorkReportLine} list is finally constructed dynamically
|
||||
*
|
||||
* It seems there are some problems when a list of data is rendered,
|
||||
* modified (the data model changes), and it's rendered again. Deleting
|
||||
* previous settings and re-establishing the settings again each time the
|
||||
* list is rendered, solve those problems.
|
||||
*
|
||||
*/
|
||||
private void prepareWorkReportList() {
|
||||
Listbox listbox = (Listbox) createWindow
|
||||
.getFellow(ID_WORK_REPORT_LINES);
|
||||
|
||||
// The only way to clean the listhead, is to clean all its attributes
|
||||
// and children
|
||||
// The paging component cannot be removed manually. It is removed automatically when changing the mold
|
||||
listbox.setMold(null);
|
||||
listbox.getChildren().clear();
|
||||
|
||||
// Set ListModel
|
||||
Set<WorkReportLine> setWorkReportLines = getWorkReportLines();
|
||||
WorkReportLine workReportLines[] = setWorkReportLines
|
||||
.toArray(new WorkReportLine[setWorkReportLines.size()]);
|
||||
ListModel listModel = new SimpleListModel(workReportLines);
|
||||
listbox.setModel(listModel);
|
||||
|
||||
// Set Renderer
|
||||
// listbox.setItemRenderer((ListitemRenderer) null);
|
||||
listbox.setItemRenderer(getRenderer());
|
||||
|
||||
// Set mold and pagesize
|
||||
listbox.setMold(MOLD);
|
||||
listbox.setPageSize(PAGING);
|
||||
|
||||
appendListHead(listbox);
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends list headers to {@link WorkReportLine} list
|
||||
*
|
||||
* @param listBox
|
||||
*/
|
||||
private void appendListHead(Listbox listBox) {
|
||||
|
||||
Listhead listHead = listBox.getListhead();
|
||||
// Create listhead first time is rendered
|
||||
if (listHead == null) {
|
||||
listHead = new Listhead();
|
||||
}
|
||||
// Delete all headers
|
||||
listHead.getChildren().clear();
|
||||
listHead.setSizable(true);
|
||||
|
||||
// Add static headers
|
||||
Listheader listHeadResource = new Listheader(RESOURCE);
|
||||
listHead.appendChild(listHeadResource);
|
||||
Listheader listHeadCode = new Listheader(CODE);
|
||||
listHead.appendChild(listHeadCode);
|
||||
Listheader listHeadNumHours = new Listheader(NUM_HOURS);
|
||||
listHead.appendChild(listHeadNumHours);
|
||||
|
||||
// Add dynamic headers
|
||||
appendCriterionTypesToListHead(getCriterionTypes(), listHead);
|
||||
|
||||
listHead.setParent(listBox);
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends a set of {@link CriterionType} to {@link Listhead}
|
||||
*/
|
||||
private void appendCriterionTypesToListHead(
|
||||
Set<CriterionType> criterionTypes, Listhead listHead) {
|
||||
for (CriterionType criterionType : criterionTypes) {
|
||||
appendCriterionTypeToListHead(criterionType, listHead);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends a {@link CriterionType} to {@link Listhead}
|
||||
*/
|
||||
private void appendCriterionTypeToListHead(CriterionType criterionType,
|
||||
Listhead listHead) {
|
||||
Listheader listHeader = new Listheader(criterionType.getName());
|
||||
listHeader.setParent(listHead);
|
||||
}
|
||||
|
||||
private Set<CriterionType> getCriterionTypes() {
|
||||
return getWorkReportType().getCriterionTypes();
|
||||
}
|
||||
|
|
@ -246,33 +351,13 @@ public class WorkReportCRUDController extends GenericForwardComposer implements
|
|||
return workReportModel.getWorkReport();
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends a set of {@link CriterionType} to columns header
|
||||
*/
|
||||
private void appendCriterionTypesToHeader(Set<CriterionType> criterionTypes) {
|
||||
Listbox grid = (Listbox) createWindow.getFellow(ID_WORK_REPORT_LINES);
|
||||
for (CriterionType criterionType : criterionTypes) {
|
||||
appendCriterionTypeToColumns(criterionType, grid.getListhead());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Appends a new {@link CriterionType} to columns header
|
||||
*/
|
||||
private void appendCriterionTypeToColumns(CriterionType criterionType,
|
||||
Listhead columns) {
|
||||
Listheader listHeader = new Listheader(criterionType.getName());
|
||||
listHeader.setParent(columns);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a new {@link WorkReportLine} to the list of rows
|
||||
*
|
||||
* @param rows
|
||||
*/
|
||||
public void addWorkReportLine(Listbox listBox) {
|
||||
WorkReportLine workReportLine = new WorkReportLine();
|
||||
getWorkReportLines().add(workReportLine);
|
||||
WorkReportLine workReportLine = workReportModel.addWorkReportLine();
|
||||
listBox.appendChild(createListItem(workReportLine));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ import org.hibernate.validator.ClassValidator;
|
|||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.orders.daos.OrderElementDAO;
|
||||
import org.navalplanner.business.orders.daos.IOrderElementDAO;
|
||||
import org.navalplanner.business.orders.entities.OrderElement;
|
||||
import org.navalplanner.business.resources.daos.WorkerDAO;
|
||||
import org.navalplanner.business.resources.daos.IWorkerDAO;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionType;
|
||||
import org.navalplanner.business.resources.entities.Resource;
|
||||
|
|
@ -34,6 +34,15 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
|
||||
public class WorkReportModel implements IWorkReportModel {
|
||||
|
||||
@Autowired
|
||||
private IWorkReportDAO workReportDAO;
|
||||
|
||||
@Autowired
|
||||
private IOrderElementDAO orderElementDAO;
|
||||
|
||||
@Autowired
|
||||
private IWorkerDAO workerDAO;
|
||||
|
||||
private WorkReport workReport;
|
||||
|
||||
private ClassValidator<WorkReport> workReportValidator = new ClassValidator<WorkReport>(
|
||||
|
|
@ -42,15 +51,6 @@ public class WorkReportModel implements IWorkReportModel {
|
|||
private ClassValidator<WorkReportLine> workReportLineValidator = new ClassValidator<WorkReportLine>(
|
||||
WorkReportLine.class);
|
||||
|
||||
@Autowired
|
||||
private IWorkReportDAO workReportDAO;
|
||||
|
||||
@Autowired
|
||||
private OrderElementDAO orderElementDAO;
|
||||
|
||||
@Autowired
|
||||
private WorkerDAO workerDAO;
|
||||
|
||||
private boolean editing = false;
|
||||
|
||||
@Override
|
||||
|
|
@ -71,7 +71,7 @@ public class WorkReportModel implements IWorkReportModel {
|
|||
public void prepareEditFor(WorkReport workReport) {
|
||||
editing = true;
|
||||
Validate.notNull(workReport);
|
||||
workReport = getFromDB(workReport);
|
||||
this.workReport = getFromDB(workReport);
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
|
|
@ -178,7 +178,7 @@ public class WorkReportModel implements IWorkReportModel {
|
|||
public List<WorkReport> getWorkReports() {
|
||||
List<WorkReport> result = new ArrayList<WorkReport>();
|
||||
for (WorkReport workReport : workReportDAO.list(WorkReport.class)) {
|
||||
workReport.getWorkReportType().getId();
|
||||
workReport.getWorkReportType().getName();
|
||||
result.add(workReport);
|
||||
}
|
||||
return result;
|
||||
|
|
@ -195,4 +195,11 @@ public class WorkReportModel implements IWorkReportModel {
|
|||
orderElementDAO.save(orderElement);
|
||||
return orderElementDAO.getDistinguishedCode(orderElement);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WorkReportLine addWorkReportLine() {
|
||||
WorkReportLine workReportLine = new WorkReportLine();
|
||||
workReport.getWorkReportLines().add(workReportLine);
|
||||
return workReportLine;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,14 +31,14 @@ public class WorkReportTypeModel implements IWorkReportTypeModel {
|
|||
@Autowired
|
||||
private ICriterionTypeService criterionTypeService;
|
||||
|
||||
@Autowired
|
||||
private IWorkReportTypeDAO workReportTypeDAO;
|
||||
|
||||
private WorkReportType workReportType;
|
||||
|
||||
private ClassValidator<WorkReportType> workReportTypeValidator = new ClassValidator<WorkReportType>(
|
||||
WorkReportType.class);
|
||||
|
||||
@Autowired
|
||||
private IWorkReportTypeDAO workReportTypeDAO;
|
||||
|
||||
private boolean editing = false;
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -32,18 +32,7 @@
|
|||
style="margin-top: -30px; margin-left: 2px" />
|
||||
</hbox>
|
||||
|
||||
<listbox id="workReportLines"
|
||||
model="@{controller.workReportLines}"
|
||||
itemRenderer="@{controller.renderer}" mold="paging"
|
||||
pageSize="10">
|
||||
<listhead sizable="true">
|
||||
<listheader label="Recurso" />
|
||||
<listheader label="Código" />
|
||||
<listheader label="Horas" />
|
||||
<!-- Extra CriterionType columns are loaded loaded dynamically -->
|
||||
</listhead>
|
||||
<!-- List of rows is created or loaded dynamically -->
|
||||
</listbox>
|
||||
<listbox id="workReportLines"/>
|
||||
|
||||
<hbox>
|
||||
<button onClick="controller.save();"
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<label value="@{workReport.place}" />
|
||||
<label value="@{workReport.workReportType.name}" />
|
||||
<hbox>
|
||||
<button label="Editar" />
|
||||
<button label="Editar" onClick="controller.goToEditForm(self.parent.parent.value);" />
|
||||
<button label="Eliminar" />
|
||||
</hbox>
|
||||
</row>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue