Created Criterion configuration bandbox on user settings to filter Resources Load results

FEA: ItEr77S15FilteringEnhancements
This commit is contained in:
Lorenzo Tilve Álvaro 2013-01-31 09:51:25 +01:00
parent dcd7cd8c09
commit 13a4473d3f
5 changed files with 82 additions and 2 deletions

View file

@ -34,6 +34,7 @@ import org.libreplan.business.common.IHumanIdentifiable;
import org.libreplan.business.common.Registry;
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
import org.libreplan.business.labels.entities.Label;
import org.libreplan.business.resources.entities.Criterion;
import org.libreplan.business.resources.entities.Worker;
import org.libreplan.business.scenarios.entities.Scenario;
import org.libreplan.business.settings.entities.Language;
@ -89,6 +90,8 @@ public class User extends BaseEntity implements IHumanIdentifiable{
private Integer projectsFilterPeriodTo;
private Criterion resourcesLoadFilterCriterion = null;
private Integer resourcesLoadFilterPeriodSince;
private Integer resourcesLoadFilterPeriodTo;
@ -393,6 +396,14 @@ public class User extends BaseEntity implements IHumanIdentifiable{
projectsFilterLabel = label;
}
public Criterion getResourcesLoadFilterCriterion() {
return resourcesLoadFilterCriterion;
}
public void setResourcesLoadFilterCriterion(Criterion criterion) {
resourcesLoadFilterCriterion = criterion;
}
public Integer getProjectsFilterPeriodSince() {
return projectsFilterPeriodSince;
}

View file

@ -23,6 +23,7 @@ import java.util.List;
import org.libreplan.business.common.exceptions.ValidationException;
import org.libreplan.business.labels.entities.Label;
import org.libreplan.business.resources.entities.Criterion;
import org.libreplan.business.settings.entities.Language;
@ -94,4 +95,10 @@ public interface ISettingsModel {
void setProjectsFilterLabel(Label label);
List<Criterion> getAllCriteria();
Criterion getResourcesLoadFilterCriterion();
void setResourcesLoadFilterCriterion(Criterion criterion);
}

View file

@ -29,6 +29,7 @@ import java.util.List;
import org.libreplan.business.common.exceptions.ValidationException;
import org.libreplan.business.labels.entities.Label;
import org.libreplan.business.resources.entities.Criterion;
import org.libreplan.business.settings.entities.Language;
import org.libreplan.web.common.IMessagesForUser;
import org.libreplan.web.common.Level;
@ -63,6 +64,8 @@ public class SettingsController extends GenericForwardComposer {
private BandboxSearch projectsFilterLabelBandboxSearch;
private BandboxSearch resourcesLoadFilterCriterionBandboxSearch;
public static ListitemRenderer languagesRenderer = new ListitemRenderer() {
@Override
public void render(org.zkoss.zul.Listitem item, Object data)
@ -91,6 +94,16 @@ public class SettingsController extends GenericForwardComposer {
setProjectsFilterLabel((Label) selectedItem.getValue());
}
});
resourcesLoadFilterCriterionBandboxSearch.setListboxEventListener(
Events.ON_SELECT, new EventListener() {
@Override
public void onEvent(Event event) {
Listitem selectedItem = (Listitem) ((SelectEvent) event)
.getSelectedItems().iterator().next();
setResourcesLoadFilterCriterion((Criterion) selectedItem
.getValue());
}
});
}
public List<Language> getLanguages() {
@ -240,4 +253,16 @@ public class SettingsController extends GenericForwardComposer {
settingsModel.setProjectsFilterLabel(label);
}
public List<Criterion> getAllCriteria() {
return settingsModel.getAllCriteria();
}
public Criterion getResourcesLoadFilterCriterion() {
return settingsModel.getResourcesLoadFilterCriterion();
}
public void setResourcesLoadFilterCriterion(Criterion criterion) {
settingsModel.setResourcesLoadFilterCriterion(criterion);
}
}

View file

@ -28,6 +28,8 @@ import org.libreplan.business.common.exceptions.InstanceNotFoundException;
import org.libreplan.business.common.exceptions.ValidationException;
import org.libreplan.business.labels.daos.ILabelDAO;
import org.libreplan.business.labels.entities.Label;
import org.libreplan.business.resources.daos.ICriterionDAO;
import org.libreplan.business.resources.entities.Criterion;
import org.libreplan.business.settings.entities.Language;
import org.libreplan.business.users.daos.IUserDAO;
import org.libreplan.business.users.entities.Profile;
@ -58,10 +60,15 @@ public class SettingsModel implements ISettingsModel {
@Autowired
private ILabelDAO labelsDAO;
@Autowired
private ICriterionDAO criterionDAO;
private User user;
private List<Label> allLabels;
private List<Criterion> allCriteria;
@Override
public Language getApplicationLanguage() {
return user.getApplicationLanguage();
@ -86,6 +93,7 @@ public class SettingsModel implements ISettingsModel {
User user = findByLoginUser(SecurityUtils.getSessionUserLoginName());
this.user = getFromDB(user);
loadAllLabels();
loadAllCriteria();
}
@Transactional(readOnly = true)
@ -97,6 +105,15 @@ public class SettingsModel implements ISettingsModel {
}
}
@Transactional(readOnly = true)
private void loadAllCriteria() {
allCriteria = criterionDAO.getAll();
// initialize the criteria
for (Criterion criterion : allCriteria) {
criterion.getType().getName();
}
}
@Transactional(readOnly = true)
private User getFromDB(User user) {
return getFromDB(user.getId());
@ -279,4 +296,20 @@ public class SettingsModel implements ISettingsModel {
user.setProjectsFilterLabel(label);
}
@Override
@Transactional(readOnly = true)
public List<Criterion> getAllCriteria() {
return allCriteria;
}
@Override
public Criterion getResourcesLoadFilterCriterion() {
return user.getResourcesLoadFilterCriterion();
}
@Override
public void setResourcesLoadFilterCriterion(Criterion criterion) {
user.setResourcesLoadFilterCriterion(criterion);
}
}

View file

@ -138,8 +138,12 @@
<label
value="${i18n:_('Resources load filtering')}" />
<hbox>
<label value="${i18n:_('Label filter')}" />
<listbox id="resourcesFilterLabel" width="200px" height="15px"/>
<label value="${i18n:_('Criterion filter')}" />
<bandboxSearch
id="resourcesLoadFilterCriterionBandboxSearch"
finder="CriterionBandboxFinder"
model="@{settingsController.allCriteria}"
selectedElement="@{settingsController.resourcesLoadFilterCriterion}" />
<label value="${i18n:_('Resources load since')}" />
<intbox id="resourcesLoadFilterPeriodSince" value="@{settingsController.resourcesLoadFilterPeriodSince}" />
<label value="${i18n:_('months to')}" />