ItEr11S07HistoriaLaboralTraballadorItEr10S07: Refactorization of edition and creation of worker history entries
Added delete and edit buttons to worker history list entries Pending of a new approach to inisialization of empty criterionSatisfactions Javier Moran Rua <jmoran@igalia.com>: Deleted comment lines
This commit is contained in:
parent
dc9b8faa86
commit
ef85e83794
12 changed files with 211 additions and 95 deletions
|
|
@ -3,6 +3,9 @@ package org.navalplanner.business.resources.entities;
|
|||
import java.util.Date;
|
||||
|
||||
import org.apache.commons.lang.Validate;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.resources.daos.ICriterionSatisfactionDAO;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
/**
|
||||
* Declares a interval of time in which the criterion is satisfied <br />
|
||||
|
|
@ -15,6 +18,10 @@ public class CriterionSatisfaction {
|
|||
@SuppressWarnings("unused")
|
||||
private long version;
|
||||
|
||||
@Autowired
|
||||
private ICriterionSatisfactionDAO criterionSatisfactionDAO;
|
||||
|
||||
|
||||
/**
|
||||
* Required by hibernate. Do not use directly
|
||||
*/
|
||||
|
|
@ -99,5 +106,4 @@ public class CriterionSatisfaction {
|
|||
startDate = date;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ import org.navalplanner.business.resources.daos.ResourcesDaoRegistry;
|
|||
// child another simple resource, general methods like getChilds() do not make
|
||||
// sense for simple entities, etc.). In consequence, I prefer the modeling
|
||||
// option shown below.
|
||||
|
||||
/**
|
||||
* This class acts as the base class for all resources.
|
||||
* @author Fernando Bellas Permuy <fbellas@udc.es>
|
||||
|
|
@ -28,9 +27,7 @@ import org.navalplanner.business.resources.daos.ResourcesDaoRegistry;
|
|||
public abstract class Resource {
|
||||
|
||||
private Long id;
|
||||
|
||||
private long version;
|
||||
|
||||
private Set<CriterionSatisfaction> criterionSatisfactions = new HashSet<CriterionSatisfaction>();
|
||||
|
||||
public Long getId() {
|
||||
|
|
@ -119,9 +116,7 @@ public abstract class Resource {
|
|||
Collection<CriterionSatisfaction> satisfactionsFor = getSatisfactionsFor(criterionType);
|
||||
ArrayList<CriterionSatisfaction> result = new ArrayList<CriterionSatisfaction>();
|
||||
for (CriterionSatisfaction criterionSatisfaction : satisfactionsFor) {
|
||||
if (end == null && criterionSatisfaction.isActiveAt(start)
|
||||
|| end != null
|
||||
&& criterionSatisfaction.isActiveIn(start, end)) {
|
||||
if (end == null && criterionSatisfaction.isActiveAt(start) || end != null && criterionSatisfaction.isActiveIn(start, end)) {
|
||||
result.add(criterionSatisfaction);
|
||||
}
|
||||
}
|
||||
|
|
@ -184,8 +179,9 @@ public abstract class Resource {
|
|||
CriterionSatisfaction newSatisfaction = new CriterionSatisfaction(
|
||||
start, criterion, this);
|
||||
criterionSatisfactions.add(newSatisfaction);
|
||||
if (finish != null)
|
||||
if (finish != null) {
|
||||
newSatisfaction.finish(finish);
|
||||
}
|
||||
if (!type.allowMultipleActiveCriterionsPerResource()) {
|
||||
for (CriterionSatisfaction criterionSatisfaction : getActiveSatisfactionsAt(
|
||||
type, start)) {
|
||||
|
|
@ -211,8 +207,9 @@ public abstract class Resource {
|
|||
Set<CriterionSatisfaction> posterior) {
|
||||
Date earliest = null;
|
||||
for (CriterionSatisfaction criterionSatisfaction : posterior) {
|
||||
if (earliest == null)
|
||||
if (earliest == null) {
|
||||
earliest = criterionSatisfaction.getStartDate();
|
||||
}
|
||||
earliest = Collections.min(Arrays.asList(earliest,
|
||||
criterionSatisfaction.getStartDate()));
|
||||
}
|
||||
|
|
@ -222,16 +219,14 @@ public abstract class Resource {
|
|||
private Set<CriterionSatisfaction> getSatisfactionsPosteriorTo(
|
||||
ICriterionType<?> type, CriterionSatisfaction newSatisfaction) {
|
||||
Date start = newSatisfaction.getStartDate();
|
||||
Date finish = newSatisfaction.isFinished() ? newSatisfaction
|
||||
.getEndDate() : null;
|
||||
Date finish = newSatisfaction.isFinished() ? newSatisfaction.getEndDate() : null;
|
||||
Set<CriterionSatisfaction> posterior = new HashSet<CriterionSatisfaction>();
|
||||
if (finish != null) {
|
||||
posterior.addAll(getActiveSatisfactionsAt(type, finish));
|
||||
} else {
|
||||
ArrayList<CriterionSatisfaction> result = new ArrayList<CriterionSatisfaction>();
|
||||
for (CriterionSatisfaction satisfaction : getSatisfactionsFor(type)) {
|
||||
if (!satisfaction.isFinished()
|
||||
&& satisfaction.getStartDate().after(start)) {
|
||||
if (!satisfaction.isFinished() && satisfaction.getStartDate().after(start)) {
|
||||
result.add(satisfaction);
|
||||
}
|
||||
}
|
||||
|
|
@ -242,8 +237,7 @@ public abstract class Resource {
|
|||
}
|
||||
|
||||
public void deactivate(CriterionWithItsType criterionWithItsType) {
|
||||
for (CriterionSatisfaction criterionSatisfaction : getActiveSatisfactionsFor(criterionWithItsType
|
||||
.getCriterion())) {
|
||||
for (CriterionSatisfaction criterionSatisfaction : getActiveSatisfactionsFor(criterionWithItsType.getCriterion())) {
|
||||
criterionSatisfaction.finish(new Date());
|
||||
}
|
||||
}
|
||||
|
|
@ -268,9 +262,13 @@ public abstract class Resource {
|
|||
public boolean canBeActivated(CriterionWithItsType criterionWithItsType,
|
||||
Date start, Date finish) {
|
||||
ICriterionType<?> type = criterionWithItsType.getType();
|
||||
return type.criterionCanBeRelatedTo(getClass())
|
||||
&& (type.allowMultipleActiveCriterionsPerResource() || noneOf(
|
||||
criterionWithItsType, start, finish));
|
||||
return type.criterionCanBeRelatedTo(getClass()) && (type.allowMultipleActiveCriterionsPerResource() || noneOf(
|
||||
criterionWithItsType, start, finish));
|
||||
}
|
||||
|
||||
public void removeCriterionSatisfaction(CriterionSatisfaction satisfaction)
|
||||
throws InstanceNotFoundException {
|
||||
criterionSatisfactions.remove(satisfaction);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ public class CriterionServiceImpl implements CriterionService {
|
|||
@Override
|
||||
public Criterion load(Criterion criterion) {
|
||||
try {
|
||||
return criterionDAO.find(criterion.getId());
|
||||
return criterionDAO.find(criterion);
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,18 @@
|
|||
package org.navalplanner.web.resources.worker;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionSatisfaction;
|
||||
import org.navalplanner.business.resources.entities.CriterionWithItsType;
|
||||
|
|
@ -25,25 +30,32 @@ import org.zkoss.zul.Listbox;
|
|||
public class WorkRelationshipsController extends GenericForwardComposer {
|
||||
|
||||
private IWorkerModel workerModel;
|
||||
|
||||
private WorkerCRUDController workerCRUDController;
|
||||
private CriterionSatisfaction newRelationship = new CriterionSatisfaction();
|
||||
|
||||
/* private CriterionSatisfaction newRelationship = new CriterionSatisfaction(); */
|
||||
|
||||
private CriterionSatisfaction editRelationship = new CriterionSatisfaction();
|
||||
|
||||
private Collection<Criterion> workCriterions;
|
||||
|
||||
private Listbox selectedWorkCriterion;
|
||||
private Datebox newWorkRelationshipStartDate;
|
||||
private Datebox newWorkRelationshipEndDate;
|
||||
|
||||
/* private Datebox newWorkRelationshipStartDate;
|
||||
|
||||
private Datebox newWorkRelationshipEndDate; */
|
||||
|
||||
private HashMap<Criterion, CriterionWithItsType> fromCriterionToType;
|
||||
|
||||
public WorkRelationshipsController(IWorkerModel workerModel,
|
||||
WorkerCRUDController workerCRUDController) {
|
||||
this.workerModel = workerModel;
|
||||
this.workerCRUDController = workerCRUDController;
|
||||
this.newRelationship = new CriterionSatisfaction();
|
||||
this.workCriterions = new ArrayList<Criterion>();
|
||||
Map<ICriterionType<?>, Collection<Criterion>> map = workerModel
|
||||
.getLaboralRelatedCriterions();
|
||||
Map<ICriterionType<?>, Collection<Criterion>> map =
|
||||
workerModel.getLaboralRelatedCriterions();
|
||||
this.fromCriterionToType = new HashMap<Criterion, CriterionWithItsType>();
|
||||
for (Entry<ICriterionType<?>, Collection<Criterion>> entry : map
|
||||
.entrySet()) {
|
||||
for (Entry<ICriterionType<?>, Collection<Criterion>> entry : map.entrySet()) {
|
||||
this.workCriterions.addAll(entry.getValue());
|
||||
for (Criterion criterion : entry.getValue()) {
|
||||
this.fromCriterionToType.put(criterion,
|
||||
|
|
@ -56,34 +68,64 @@ public class WorkRelationshipsController extends GenericForwardComposer {
|
|||
if (this.workerCRUDController.getWorker() == null) {
|
||||
return new HashSet<CriterionSatisfaction>();
|
||||
} else {
|
||||
// Obtain just workRelationshipSatisfactions
|
||||
return workerModel
|
||||
.getLaboralRelatedCriterionSatisfactions(this.workerCRUDController
|
||||
.getWorker());
|
||||
return workerModel.getLaboralRelatedCriterionSatisfactions(
|
||||
this.workerCRUDController.getWorker());
|
||||
}
|
||||
}
|
||||
|
||||
public void addCriterionSatisfaction() {
|
||||
public void deleteCriterionSatisfaction(CriterionSatisfaction satisfaction)
|
||||
throws InstanceNotFoundException {
|
||||
workerCRUDController.getWorker().removeCriterionSatisfaction(satisfaction);
|
||||
this.workerCRUDController.goToEditForm();
|
||||
}
|
||||
|
||||
Criterion selectedCriterion = (Criterion) selectedWorkCriterion
|
||||
.getSelectedItem().getValue();
|
||||
CriterionWithItsType criterionWithItsType = fromCriterionToType
|
||||
.get(selectedCriterion);
|
||||
if (newWorkRelationshipEndDate == null) {
|
||||
public void setEditCriterionSatisfaction(CriterionSatisfaction crit) {
|
||||
// the component should be preselected.
|
||||
this.editRelationship = crit;
|
||||
}
|
||||
|
||||
public void saveCriterionSatisfaction() throws InstanceNotFoundException {
|
||||
|
||||
// Add new criterion
|
||||
Criterion selectedCriterion = (Criterion) selectedWorkCriterion.getSelectedItem().getValue();
|
||||
CriterionWithItsType criterionWithItsType = fromCriterionToType.get(selectedCriterion);
|
||||
System.out.println( "SAVE!!: " + selectedCriterion.getName() );
|
||||
|
||||
if (editRelationship.getStartDate() == null) {
|
||||
this.workerCRUDController.getWorker().activate(
|
||||
criterionWithItsType,
|
||||
newWorkRelationshipStartDate.getValue());
|
||||
editRelationship.getStartDate());
|
||||
} else {
|
||||
this.workerCRUDController.getWorker().activate(
|
||||
criterionWithItsType,
|
||||
newWorkRelationshipStartDate.getValue(),
|
||||
newWorkRelationshipEndDate.getValue());
|
||||
editRelationship.getStartDate(),
|
||||
editRelationship.getEndDate());
|
||||
}
|
||||
|
||||
this.workerCRUDController
|
||||
.goToWorkRelationshipsForm(this.workerCRUDController
|
||||
.getWorker());
|
||||
// Delete the former one
|
||||
workerCRUDController.getWorker().
|
||||
removeCriterionSatisfaction(this.editRelationship);
|
||||
|
||||
this.workerCRUDController.goToEditForm();
|
||||
}
|
||||
|
||||
public void addCriterionSatisfaction() {
|
||||
Criterion selectedCriterion = (Criterion) selectedWorkCriterion.getSelectedItem().getValue();
|
||||
CriterionWithItsType criterionWithItsType = fromCriterionToType.get(selectedCriterion);
|
||||
// never accessed: Unnecesary as edition does this.
|
||||
System.out.println( "SELECTED: " + criterionWithItsType.toString() );
|
||||
|
||||
if (editRelationship.getStartDate() == null) {
|
||||
this.workerCRUDController.getWorker().activate(
|
||||
criterionWithItsType,
|
||||
editRelationship.getStartDate());
|
||||
} else {
|
||||
this.workerCRUDController.getWorker().activate(
|
||||
criterionWithItsType,
|
||||
editRelationship.getStartDate(),
|
||||
editRelationship.getEndDate());
|
||||
}
|
||||
this.workerCRUDController.goToEditForm();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -92,8 +134,8 @@ public class WorkRelationshipsController extends GenericForwardComposer {
|
|||
this.selectedWorkCriterion.setSelectedIndex(0);
|
||||
}
|
||||
|
||||
public CriterionSatisfaction getNewRelationship() {
|
||||
return this.newRelationship;
|
||||
public CriterionSatisfaction getEditRelationship() {
|
||||
return this.editRelationship;
|
||||
}
|
||||
|
||||
public Collection<Criterion> getWorkCriterions() {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,18 @@
|
|||
package org.navalplanner.web.resources.worker;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.resources.entities.Criterion;
|
||||
import org.navalplanner.business.resources.entities.CriterionSatisfaction;
|
||||
import org.navalplanner.business.resources.entities.CriterionTypeBase;
|
||||
import org.navalplanner.business.resources.entities.CriterionWithItsType;
|
||||
import org.navalplanner.business.resources.entities.PredefinedCriterionTypes;
|
||||
import org.navalplanner.business.resources.entities.Worker;
|
||||
import org.navalplanner.business.resources.entities.WorkingRelationship;
|
||||
import org.navalplanner.business.resources.services.CriterionService;
|
||||
import org.navalplanner.web.common.IMessagesForUser;
|
||||
import org.navalplanner.web.common.IRedirectorRegistry;
|
||||
import org.navalplanner.web.common.Level;
|
||||
|
|
@ -33,6 +41,8 @@ public class WorkerCRUDController extends GenericForwardComposer implements
|
|||
|
||||
private Window addWorkRelationshipWindow;
|
||||
|
||||
private Window editWorkRelationshipWindow;
|
||||
|
||||
private IWorkerModel workerModel;
|
||||
|
||||
private IRedirectorRegistry redirectorRegistry;
|
||||
|
|
@ -43,24 +53,27 @@ public class WorkerCRUDController extends GenericForwardComposer implements
|
|||
|
||||
private Component messagesContainer;
|
||||
|
||||
private GenericForwardComposer workRelationship;
|
||||
private WorkRelationshipsController workRelationship;
|
||||
|
||||
private LocalizationsController localizationsForEditionController;
|
||||
|
||||
private LocalizationsController localizationsForCreationController;
|
||||
|
||||
private CriterionService criterionService;
|
||||
|
||||
public WorkerCRUDController() {
|
||||
}
|
||||
|
||||
public WorkerCRUDController(Window createWindow, Window listWindow,
|
||||
Window editWindow, Window workRelationshipsWindow,
|
||||
Window addWorkRelationshipWindow,
|
||||
Window addWorkRelationshipWindow, Window editWorkRelationshipWindow,
|
||||
IWorkerModel workerModel, IMessagesForUser messages) {
|
||||
this.createWindow = createWindow;
|
||||
this.listWindow = listWindow;
|
||||
this.editWindow = editWindow;
|
||||
this.workRelationshipsWindow = workRelationshipsWindow;
|
||||
this.addWorkRelationshipWindow = addWorkRelationshipWindow;
|
||||
this.editWorkRelationshipWindow = editWorkRelationshipWindow;
|
||||
this.workerModel = workerModel;
|
||||
this.messages = messages;
|
||||
}
|
||||
|
|
@ -118,8 +131,24 @@ public class WorkerCRUDController extends GenericForwardComposer implements
|
|||
}
|
||||
|
||||
public void goToAddWorkRelationshipForm() {
|
||||
Criterion selectedCriterion = criterionService.load(
|
||||
WorkingRelationship.HIRED.criterion());
|
||||
CriterionWithItsType criteriontype = new CriterionWithItsType(
|
||||
PredefinedCriterionTypes.WORK_RELATIONSHIP, selectedCriterion);
|
||||
this.workerModel.getWorker().activate(criteriontype,new Date());
|
||||
/* CriterionSatisfaction newSatisfaction =
|
||||
new CriterionSatisfaction(
|
||||
new Date(),
|
||||
selectedCriterion,
|
||||
this.workerModel.getWorker()); */
|
||||
CriterionSatisfaction newSatisfaction =
|
||||
this.workerModel.getWorker().
|
||||
getActiveSatisfactionsFor(selectedCriterion).iterator().next();
|
||||
this.workRelationship.setEditCriterionSatisfaction(newSatisfaction);
|
||||
getVisibility().showOnly(addWorkRelationshipWindow);
|
||||
Util.reloadBindings(addWorkRelationshipWindow);
|
||||
// getVisibility().showOnly(editWorkRelationshipWindow);
|
||||
// Util.reloadBindings(editWorkRelationshipWindow);
|
||||
}
|
||||
|
||||
public void goToCreateForm() {
|
||||
|
|
@ -128,6 +157,12 @@ public class WorkerCRUDController extends GenericForwardComposer implements
|
|||
Util.reloadBindings(createWindow);
|
||||
}
|
||||
|
||||
public void goToEditWorkRelationshipForm(CriterionSatisfaction satisfaction) {
|
||||
this.workRelationship.setEditCriterionSatisfaction(satisfaction);
|
||||
getVisibility().showOnly(editWorkRelationshipWindow);
|
||||
Util.reloadBindings(editWorkRelationshipWindow);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAfterCompose(Component comp) throws Exception {
|
||||
super.doAfterCompose(comp);
|
||||
|
|
@ -163,7 +198,7 @@ public class WorkerCRUDController extends GenericForwardComposer implements
|
|||
if (visibility == null) {
|
||||
visibility = new OnlyOneVisible(listWindow, editWindow,
|
||||
createWindow, workRelationshipsWindow,
|
||||
addWorkRelationshipWindow );
|
||||
addWorkRelationshipWindow, editWorkRelationshipWindow );
|
||||
}
|
||||
return visibility;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
package org.navalplanner.web.workorders;
|
||||
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.util.GenericForwardComposer;
|
||||
|
||||
import org.zkoss.zul.Treecell;
|
||||
import org.zkoss.zul.Treeitem;
|
||||
import org.zkoss.zul.Treerow;
|
||||
|
||||
/**
|
||||
* Controller for {@link WorkOrganization} view of WorkOrder entitites <br />
|
||||
|
|
@ -12,4 +15,16 @@ public class WorkOrganizationController extends GenericForwardComposer {
|
|||
public WorkOrganizationController() {
|
||||
}
|
||||
|
||||
}
|
||||
public void move(Component self, Component dragged) {
|
||||
|
||||
Treeitem elem = new Treeitem("Elemento");
|
||||
//elem.appendChild(dragged);
|
||||
self.appendChild(elem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAfterCompose(Component comp) throws Exception {
|
||||
comp.setVariable("controller", this, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<window id="${arg.top_id}" title="${arg.title}"
|
||||
apply="${controller.workRelationshipsController}">
|
||||
<grid id="history">
|
||||
<grid id="edit">
|
||||
<columns>
|
||||
<column label="Date start"/>
|
||||
<column label="Date end"/>
|
||||
|
|
@ -8,10 +8,10 @@
|
|||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<datebox id="newWorkRelationshipStartDate" width="150px" />
|
||||
<!-- value="@{controller.workRelationship.newRelationship.startDate}" -->
|
||||
<datebox id="newWorkRelationshipEndDate" width="150px" />
|
||||
<!-- value="@{controller.workRelationship.newRelationship.endDate}" -->
|
||||
<datebox id="editWorkRelationshipStartDate" width="180px"
|
||||
value="@{controller.workRelationship.editRelationship.startDate}" />
|
||||
<datebox id="editWorkRelationshipEndDate" width="180px"
|
||||
value="@{controller.workRelationship.editRelationship.endDate}" />
|
||||
<listbox onSelect="" mold="select" rows="1" id="selectedWorkCriterion"
|
||||
model="@{controller.workRelationship.workCriterions}">
|
||||
<listitem self="@{each='workCriterion'}"
|
||||
|
|
@ -21,8 +21,8 @@
|
|||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<button onClick="controller.workRelationship.addCriterionSatisfaction();"
|
||||
label="Add Work Relationship" />
|
||||
<button onClick="controller.goToWorkRelationshipsForm()"
|
||||
<button onClick="controller.workRelationship.saveCriterionSatisfaction();"
|
||||
label="Save Work Relationship" />
|
||||
<button onClick="controller.goToEditForm()"
|
||||
label="Cancel and back to Work Relationships"/>
|
||||
</window>
|
||||
|
|
@ -1,9 +1,11 @@
|
|||
<?component name="localizations" inline="true" macroURI="_localizations.zul"?>
|
||||
<?component name="workRelationships" inline="true" macroURI="_workRelationships.zul"?>
|
||||
<window id="${arg.top_id}" title="${arg.title}">
|
||||
<tabbox>
|
||||
<tabs>
|
||||
<tab label="Edición"></tab>
|
||||
<tab label="Localizacións"></tab>
|
||||
<tab label="Historial Laboral"></tab>
|
||||
</tabs>
|
||||
<tabpanels>
|
||||
<tabpanel>
|
||||
|
|
@ -38,13 +40,15 @@
|
|||
<tabpanel>
|
||||
<localizations />
|
||||
</tabpanel>
|
||||
<tabpanel>
|
||||
<workRelationships top_id="workRelationshipsWindow"
|
||||
title="Work Relationships" save_button_label="Save"
|
||||
cancel_button_label="Cancel" />
|
||||
</tabpanel>
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
<button onClick="controller.save();"
|
||||
label="${arg.save_button_label}" />
|
||||
<button onClick="controller.cancel();"
|
||||
label="${arg.cancel_button_label}" />
|
||||
<button label="Work Relationships"
|
||||
onClick="controller.goToWorkRelationshipsForm(controller.worker)">
|
||||
</button>
|
||||
</window>
|
||||
|
|
|
|||
|
|
@ -1,30 +1,34 @@
|
|||
<window id="${arg.top_id}" title="${arg.title}"
|
||||
<window id="${arg.top_id}"
|
||||
apply="${controller.workRelationshipsController}">
|
||||
<grid id="history"
|
||||
model="@{controller.workRelationship.criterionSatisfactions}"
|
||||
mold="paging" pageSize="5">
|
||||
<columns>
|
||||
<column label="Date start"/>
|
||||
<column label="Date end"/>
|
||||
<column label="Date start" width="150px"/>
|
||||
<column label="Date end" width="150px"/>
|
||||
<column label="Relationship"/>
|
||||
<column label="Operations"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row self="@{each='criterionSatisfaction'}"
|
||||
value="@{criterionSatisfaction}">
|
||||
<datebox id="date_start"
|
||||
<label id="date_start"
|
||||
value="@{criterionSatisfaction.startDate}" width="150px" />
|
||||
<!--onChange="controller.goToValidation" -->
|
||||
<datebox id="date_end"
|
||||
<label id="date_end"
|
||||
value="@{criterionSatisfaction.endDate}" width="150px" />
|
||||
<label value="@{criterionSatisfaction.criterion.name}" />
|
||||
<hbox>
|
||||
<button label="Editar"
|
||||
onClick="controller.goToEditWorkRelationshipForm(
|
||||
self.getParent().getParent().value);">
|
||||
</button>
|
||||
<button label="Borrar"
|
||||
onClick="controller.workRelationship.deleteCriterionSatisfaction(self.getParent().getParent().value);">
|
||||
</button>
|
||||
</hbox>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<button onClick="controller.save();" label="${arg.save_button_label}" />
|
||||
<button onClick="controller.cancel();" label="${arg.cancel_button_label}" />
|
||||
<button label="Edit personal data"
|
||||
onClick="controller.goToEditForm()">
|
||||
</button>
|
||||
<button label="New entry"
|
||||
onClick="controller.goToAddWorkRelationshipForm()">
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,8 @@
|
|||
<?component name="list" inline="true" macroURI="_list.zul"?>
|
||||
<?component name="edition" inline="true" macroURI="_edition.zul"?>
|
||||
<?component name="workRelationships" inline="true" macroURI="_workRelationships.zul"?>
|
||||
<?component name="addWorkRelationship" inline="true" macroURI="_addWorkRelationship.zul"?>
|
||||
<!--?component name="addWorkRelationship" inline="true" macroURI="_addWorkRelationship.zul"?-->
|
||||
<?component name="editWorkRelationship" inline="true" macroURI="_editWorkRelationship.zul"?>
|
||||
<zk>
|
||||
<window self="@{define(content)}"
|
||||
apply="org.navalplanner.web.resources.worker.WorkerCRUDController"
|
||||
|
|
@ -22,7 +23,14 @@
|
|||
save_button_label="Save" cancel_button_label="Cancel" />
|
||||
<workRelationships top_id="workRelationshipsWindow" title="Work Relationships"
|
||||
save_button_label="Save" cancel_button_label="Cancel" />
|
||||
<addWorkRelationship top_id="addWorkRelationshipWindow" title="Add Work Relationship"
|
||||
save_button_label="Save" cancel_button_label="Cancel" />
|
||||
<!--addWorkRelationship top_id="addWorkRelationshipWindow" title="Add Work Relationship"
|
||||
save_button_label="Save" cancel_button_label="Cancel" /-->
|
||||
<editWorkRelationship top_id="editWorkRelationshipWindow" title="Edit Work Relationship"
|
||||
save_button_label="Save" cancel_button_label="Cancel"
|
||||
add_button_label="Edit"/>
|
||||
<editWorkRelationship top_id="addWorkRelationshipWindow" title="Add Work Relationship"
|
||||
save_button_label="Save" cancel_button_label="Cancel"
|
||||
add_button_label="Add"/>
|
||||
|
||||
</window>
|
||||
</zk>
|
||||
|
|
|
|||
|
|
@ -8,15 +8,15 @@
|
|||
<zk>
|
||||
<window self="@{define(content)}"
|
||||
apply="org.navalplanner.web.workorders.WorkOrganizationController">
|
||||
|
||||
<tree id="tree" width="600px" rows="8" multiple="true" >
|
||||
<tree id="tree" width="600px" rows="8" multiple="true"
|
||||
droppable="true" onDrop="controller.move(self, event.dragged)">
|
||||
<treecols sizable="true">
|
||||
<treecol label="Name" />
|
||||
<treecol label="Description" />
|
||||
</treecols>
|
||||
<treechildren>
|
||||
<treeitem>
|
||||
<treerow draggable="true" droppable="true">
|
||||
<treerow draggable="true">
|
||||
<treecell label=" Task 1 ">
|
||||
<textbox value="Task 1 Name" width="230px"/>
|
||||
</treecell>
|
||||
|
|
@ -26,15 +26,15 @@
|
|||
</treerow>
|
||||
</treeitem>
|
||||
<treeitem>
|
||||
<treerow draggable="true" droppable="true">
|
||||
<treerow draggable="true">
|
||||
<treecell label=" Task 2 " >
|
||||
<textbox value="Task 2 Name" width="230px"/>
|
||||
</treecell>
|
||||
<treecell>(calculated) hours </treecell>
|
||||
<treecell>--- hours </treecell>
|
||||
</treerow>
|
||||
<treechildren>
|
||||
<treeitem>
|
||||
<treerow draggable="true" droppable="true">
|
||||
<treerow draggable="true">
|
||||
<treecell label="Task 2.1 " >
|
||||
<textbox value="Task 1 Name" width="200px"/>
|
||||
</treecell>
|
||||
|
|
@ -48,29 +48,30 @@
|
|||
</treerow>
|
||||
</treeitem>
|
||||
<treeitem>
|
||||
<treerow draggable="true" droppable="true">
|
||||
<treerow draggable="true">
|
||||
<treecell label="Item 2.1.2" />
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</treeitem>
|
||||
<treeitem>
|
||||
<treerow draggable="true" droppable="true">
|
||||
<treerow draggable="true">
|
||||
<treecell label="Item 2.2" />
|
||||
</treerow>
|
||||
<treechildren>
|
||||
<treeitem>
|
||||
<treerow draggable="true" droppable="true">
|
||||
<treecell label="Item 2.2.1" />
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</treeitem>
|
||||
<treeitem label="Item 3" />
|
||||
</treechildren>
|
||||
</tree>
|
||||
|
||||
</window>
|
||||
<!--zscript>
|
||||
void move(Component dragged) {
|
||||
if (self instanceof Treerow) {
|
||||
self.parent.insertBefore(dragged, self.getNextSibling() );
|
||||
} else {
|
||||
self.appendChild(dragged);
|
||||
}
|
||||
}
|
||||
</zscript-->
|
||||
</zk>
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ public class WorkerCRUDControllerTest {
|
|||
private Window editWindow;
|
||||
private Window workRelationshipsWindow;
|
||||
private Window addWorkRelationshipWindow;
|
||||
private Window editWorkRelationshipWindow;
|
||||
private WorkerCRUDController createControllerForModel(
|
||||
IWorkerModel workerModel) {
|
||||
return createControllerForModel(workerModel, null);
|
||||
|
|
@ -44,10 +45,11 @@ public class WorkerCRUDControllerTest {
|
|||
editWindow = createNiceMock(Window.class);
|
||||
workRelationshipsWindow = createNiceMock(Window.class);
|
||||
addWorkRelationshipWindow = createNiceMock(Window.class);
|
||||
editWorkRelationshipWindow = createNiceMock(Window.class);
|
||||
|
||||
WorkerCRUDController workerCRUDController = new WorkerCRUDController(
|
||||
createWindow, listWindow, editWindow, workRelationshipsWindow,
|
||||
addWorkRelationshipWindow, workerModel, messages);
|
||||
addWorkRelationshipWindow, editWorkRelationshipWindow ,workerModel, messages);
|
||||
return workerCRUDController;
|
||||
|
||||
}
|
||||
|
|
@ -62,7 +64,7 @@ public class WorkerCRUDControllerTest {
|
|||
WorkerCRUDController workerCRUDController = createControllerForModel(
|
||||
workerModel, messagesForUser);
|
||||
replay(createWindow, listWindow, editWindow, workRelationshipsWindow,
|
||||
addWorkRelationshipWindow);
|
||||
addWorkRelationshipWindow, editWorkRelationshipWindow);
|
||||
// expectations
|
||||
workerModel.prepareForCreate();
|
||||
expect(workerModel.getWorker()).andReturn(workerToReturn).anyTimes();
|
||||
|
|
@ -93,7 +95,7 @@ public class WorkerCRUDControllerTest {
|
|||
expect(workRelationshipsWindow.setVisible(true)).andReturn(false);
|
||||
expect(addWorkRelationshipWindow.setVisible(true)).andReturn(false);
|
||||
replay(createWindow, listWindow, editWindow, workRelationshipsWindow,
|
||||
addWorkRelationshipWindow, workerModel);
|
||||
addWorkRelationshipWindow, editWorkRelationshipWindow, workerModel);
|
||||
// actions
|
||||
workerCRUDController.goToCreateForm();
|
||||
workerCRUDController.cancel();
|
||||
|
|
@ -119,7 +121,8 @@ public class WorkerCRUDControllerTest {
|
|||
workerModel.save();
|
||||
messagesForUser.showMessage(same(Level.INFO), isA(String.class));
|
||||
replay(createWindow, listWindow, editWindow, workRelationshipsWindow,
|
||||
addWorkRelationshipWindow, workerModel, messagesForUser);
|
||||
addWorkRelationshipWindow, editWorkRelationshipWindow,
|
||||
workerModel, messagesForUser);
|
||||
// perform actions
|
||||
List<Worker> workers = workerCRUDController.getWorkers();
|
||||
assertEquals(workersToReturn, workers);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue