Fill the combo to create a new work week with the first calendar
in alphabetic order and changes the name columns and labels to the edition calendar view. FEA: ItEr75S05CalendarAdminInterfaceItEr74S06
This commit is contained in:
parent
81b8a09b03
commit
8fb8ccb5f7
7 changed files with 168 additions and 50 deletions
|
|
@ -25,6 +25,7 @@ import static org.navalplanner.business.workingday.EffortDuration.hours;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
|
@ -77,6 +78,23 @@ public class BaseCalendar extends IntegrationEntity implements ICalendar {
|
|||
return calendar;
|
||||
}
|
||||
|
||||
public static List<BaseCalendar> sortByName(List<BaseCalendar> baseCalendars) {
|
||||
Collections.sort(baseCalendars, new Comparator<BaseCalendar>() {
|
||||
|
||||
@Override
|
||||
public int compare(BaseCalendar o1, BaseCalendar o2) {
|
||||
if (o2.getName() == null) {
|
||||
return -1;
|
||||
}
|
||||
if (o1.getName() == null) {
|
||||
return 1;
|
||||
}
|
||||
return o1.getName().compareTo(o2.getName());
|
||||
}
|
||||
});
|
||||
return baseCalendars;
|
||||
}
|
||||
|
||||
private static void resetDefaultCapacities(BaseCalendar calendar) {
|
||||
Capacity eightHours = Capacity.create(hours(8))
|
||||
.overAssignableWithoutLimit();
|
||||
|
|
|
|||
|
|
@ -38,14 +38,14 @@ import java.util.Map;
|
|||
import org.apache.commons.lang.StringUtils;
|
||||
import org.joda.time.LocalDate;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar.DayType;
|
||||
import org.navalplanner.business.calendars.entities.CalendarAvailability;
|
||||
import org.navalplanner.business.calendars.entities.CalendarData;
|
||||
import org.navalplanner.business.calendars.entities.CalendarData.Days;
|
||||
import org.navalplanner.business.calendars.entities.CalendarException;
|
||||
import org.navalplanner.business.calendars.entities.CalendarExceptionType;
|
||||
import org.navalplanner.business.calendars.entities.Capacity;
|
||||
import org.navalplanner.business.calendars.entities.ResourceCalendar;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar.DayType;
|
||||
import org.navalplanner.business.calendars.entities.CalendarData.Days;
|
||||
import org.navalplanner.business.workingday.EffortDuration;
|
||||
import org.navalplanner.business.workingday.EffortDuration.Granularity;
|
||||
import org.navalplanner.web.common.IMessagesForUser;
|
||||
|
|
@ -70,6 +70,7 @@ import org.zkoss.zul.Button;
|
|||
import org.zkoss.zul.Checkbox;
|
||||
import org.zkoss.zul.Combobox;
|
||||
import org.zkoss.zul.Comboitem;
|
||||
import org.zkoss.zul.ComboitemRenderer;
|
||||
import org.zkoss.zul.Constraint;
|
||||
import org.zkoss.zul.Datebox;
|
||||
import org.zkoss.zul.Hbox;
|
||||
|
|
@ -125,6 +126,8 @@ public abstract class BaseCalendarEditionController extends
|
|||
|
||||
private HistoryVersionsRenderer historyVersionsRenderer = new HistoryVersionsRenderer();
|
||||
|
||||
private ParentCalendarsComboitemRenderer parentCalendarsComboitemRenderer = new ParentCalendarsComboitemRenderer();
|
||||
|
||||
private CalendarExceptionRenderer calendarExceptionRenderer = new CalendarExceptionRenderer();
|
||||
|
||||
private CalendarAvailabilityRenderer calendarAvailabilityRenderer = new CalendarAvailabilityRenderer();
|
||||
|
|
@ -286,15 +289,44 @@ public abstract class BaseCalendarEditionController extends
|
|||
|
||||
public String getCalendarType() {
|
||||
if (baseCalendarModel.isDerived()) {
|
||||
return _("Derived");
|
||||
String currentStartDate = this.getCurrentStartDateLabel();
|
||||
String currentExpiringDate = this.getCurrentExpiringDateLabel();
|
||||
return _("Derived of Calendar " + getNameParentCalendar()
|
||||
+ currentStartDate + currentExpiringDate);
|
||||
}
|
||||
return _("Normal");
|
||||
return _("Root calendar");
|
||||
}
|
||||
|
||||
private String getCurrentExpiringDateLabel() {
|
||||
System.out.println("expiringDate "
|
||||
+ baseCalendarModel.getCurrentStartDate());
|
||||
Date date = baseCalendarModel.getCurrentExpiringDate();
|
||||
String label = "";
|
||||
if (date != null) {
|
||||
label = " to " + new SimpleDateFormat("dd/MM/yyyy").format(date);
|
||||
}
|
||||
return label;
|
||||
}
|
||||
|
||||
private String getCurrentStartDateLabel() {
|
||||
System.out.println("expiringDate "
|
||||
+ baseCalendarModel.getCurrentStartDate());
|
||||
Date date = baseCalendarModel.getCurrentStartDate();
|
||||
String label = "";
|
||||
if (date != null) {
|
||||
label = " from " + new SimpleDateFormat("dd/MM/yyyy").format(date);
|
||||
}
|
||||
return label;
|
||||
}
|
||||
|
||||
public boolean isDerived() {
|
||||
return baseCalendarModel.isDerived();
|
||||
}
|
||||
|
||||
public boolean isNotDerived() {
|
||||
return (!isDerived());
|
||||
}
|
||||
|
||||
public List<Days> getHoursPerDay() {
|
||||
return Arrays.asList(Days.values());
|
||||
}
|
||||
|
|
@ -421,6 +453,7 @@ public abstract class BaseCalendarEditionController extends
|
|||
|
||||
private void reloadWorkWeeksList() {
|
||||
Util.reloadBindings(window.getFellow("historyInformation"));
|
||||
Util.reloadBindings(window.getFellow("calendarTypeLabel"));
|
||||
}
|
||||
|
||||
private void reloadTypeDatesAndDuration() {
|
||||
|
|
@ -1011,7 +1044,8 @@ public abstract class BaseCalendarEditionController extends
|
|||
}
|
||||
|
||||
public List<BaseCalendar> getParentCalendars() {
|
||||
return baseCalendarModel.getPossibleParentCalendars();
|
||||
return baseCalendarModel.getSortedBaseCalendars(baseCalendarModel
|
||||
.getPossibleParentCalendars());
|
||||
}
|
||||
|
||||
public List<CalendarException> getCalendarExceptions() {
|
||||
|
|
@ -1027,6 +1061,25 @@ public abstract class BaseCalendarEditionController extends
|
|||
return calendarExceptions;
|
||||
}
|
||||
|
||||
public ParentCalendarsComboitemRenderer getParentCalendarsComboitemRenderer() {
|
||||
return parentCalendarsComboitemRenderer;
|
||||
}
|
||||
|
||||
public class ParentCalendarsComboitemRenderer implements ComboitemRenderer {
|
||||
|
||||
@Override
|
||||
public void render(Comboitem item, Object data) {
|
||||
BaseCalendar calendar = (BaseCalendar) data;
|
||||
item.setLabel(calendar.getName());
|
||||
item.setValue(calendar);
|
||||
|
||||
Combobox combobox = (Combobox) item.getParent();
|
||||
if (combobox.getSelectedItem() == null) {
|
||||
combobox.setSelectedItem(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public CalendarExceptionRenderer getCalendarExceptionRenderer() {
|
||||
return calendarExceptionRenderer;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,14 +34,14 @@ import org.joda.time.LocalDate;
|
|||
import org.navalplanner.business.calendars.daos.IBaseCalendarDAO;
|
||||
import org.navalplanner.business.calendars.daos.ICalendarExceptionTypeDAO;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar.DayType;
|
||||
import org.navalplanner.business.calendars.entities.CalendarAvailability;
|
||||
import org.navalplanner.business.calendars.entities.CalendarData;
|
||||
import org.navalplanner.business.calendars.entities.CalendarData.Days;
|
||||
import org.navalplanner.business.calendars.entities.CalendarException;
|
||||
import org.navalplanner.business.calendars.entities.CalendarExceptionType;
|
||||
import org.navalplanner.business.calendars.entities.Capacity;
|
||||
import org.navalplanner.business.calendars.entities.ResourceCalendar;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar.DayType;
|
||||
import org.navalplanner.business.calendars.entities.CalendarData.Days;
|
||||
import org.navalplanner.business.common.IntegrationEntity;
|
||||
import org.navalplanner.business.common.daos.IConfigurationDAO;
|
||||
import org.navalplanner.business.common.entities.Configuration;
|
||||
|
|
@ -103,6 +103,13 @@ public class BaseCalendarModel extends IntegrationEntityModel implements
|
|||
return baseCalendars;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<BaseCalendar> getSortedBaseCalendars(
|
||||
List<BaseCalendar> baseCalendars) {
|
||||
return BaseCalendar.sortByName(baseCalendars);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initial conversation steps
|
||||
*/
|
||||
|
|
@ -384,11 +391,38 @@ public class BaseCalendarModel extends IntegrationEntityModel implements
|
|||
if (getBaseCalendar() == null) {
|
||||
return null;
|
||||
}
|
||||
CalendarData version = getBaseCalendar().getCalendarData(
|
||||
LocalDate.fromDateFields(new Date()));
|
||||
CalendarData version = getCurrentVersion();
|
||||
return version != null ? version.getParent() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getCurrentExpiringDate() {
|
||||
CalendarData calendarData = getCurrentVersion();
|
||||
if (calendarData != null) {
|
||||
LocalDate startDate = calendarData.getExpiringDate();
|
||||
return startDate != null ? startDate.minusDays(1)
|
||||
.toDateTimeAtStartOfDay()
|
||||
.toDate() : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getCurrentStartDate() {
|
||||
CalendarData calendarData = getCurrentVersion();
|
||||
if (calendarData != null) {
|
||||
LocalDate startDate = getValidFrom(calendarData);
|
||||
return startDate != null ? startDate.toDateTimeAtStartOfDay()
|
||||
.toDate() : null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public CalendarData getCurrentVersion() {
|
||||
return getBaseCalendar().getCalendarData(
|
||||
LocalDate.fromDateFields(new Date()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public void setParent(BaseCalendar parent) {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
package org.navalplanner.web.calendars;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
|
@ -217,4 +218,10 @@ public interface IBaseCalendarModel extends IIntegrationEntityModel {
|
|||
|
||||
BaseCalendar getCurrentParent();
|
||||
|
||||
List<BaseCalendar> getSortedBaseCalendars(List<BaseCalendar> baseCalendars);
|
||||
|
||||
Date getCurrentStartDate();
|
||||
|
||||
Date getCurrentExpiringDate();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ package org.navalplanner.web.common;
|
|||
import static org.navalplanner.web.I18nHelper._;
|
||||
|
||||
import java.util.ConcurrentModificationException;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
|
@ -124,4 +125,9 @@ public abstract class IntegrationEntityModel implements IIntegrationEntityModel
|
|||
return entitySequenceDAO;
|
||||
}
|
||||
|
||||
public Date getCurrentExpiringDate() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -20,40 +20,46 @@
|
|||
-->
|
||||
|
||||
<window visible="@{calendarController.editionController.creatingNewVersion}"
|
||||
id="createNewVersion" title="${i18n:_('Create new version')}" width="350px">
|
||||
<vbox>
|
||||
<label value="${i18n:_('Select the base calendar from which the new version will derive')}"
|
||||
visible="@{calendarController.editionController.isDerived}"/>
|
||||
<hbox align="right" visible="@{calendarController.editionController.isDerived}">
|
||||
id="createNewVersion" title="${i18n:_('Create new work week')}" width="450px"
|
||||
closable="true" border="normal"
|
||||
onClose = "calendarController.editionController.cancelNewVersion();">
|
||||
|
||||
<grid id="gridProjectDetails">
|
||||
<columns>
|
||||
<column width="150px" />
|
||||
<column width="300px" />
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<label value="${i18n:_('Base calendar')}" />
|
||||
<hbox align="right">
|
||||
<label value="${i18n:_('Type')}:"/>
|
||||
<label value="@{calendarController.editionController.calendarType}"/>
|
||||
<combobox id="parentCalendars"
|
||||
constraint="no empty:${i18n:_('cannot be null or empty')}"
|
||||
model="@{calendarController.editionController.parentCalendars}">
|
||||
<comboitem self="@{each='baseCalnedar'}"
|
||||
value="@{baseCalnedar}" label="@{baseCalnedar.name}" />
|
||||
</combobox>
|
||||
</hbox>
|
||||
<separator spacing="5px"/>
|
||||
<label value="${i18n:_('Select the date from which the new version will be valid')}" />
|
||||
<separator spacing="2px"/>
|
||||
<hbox visible="@{calendarController.editionController.isEditing}"
|
||||
align="right">
|
||||
<label value="${i18n:_('Valid from')}" />
|
||||
<datebox id="startDateValidFromNewVersion"
|
||||
value="@{calendarController.editionController.dateValidFromNewVersion}"
|
||||
disabled="@{calendarController.editionController.isFirstVersion(self.value)}" />
|
||||
<label value="${i18n:_('to')}" />
|
||||
<datebox id="expiringDateValidFromNewVersion"
|
||||
value="@{calendarController.editionController.dateValidToNewVersion}"
|
||||
disabled="@{calendarController.editionController.isLastVersion(self.value)}" />
|
||||
</hbox>
|
||||
<separator spacing="5px"/>
|
||||
<hbox>
|
||||
<button label="${i18n:_('Create')}"
|
||||
onClick="calendarController.editionController.acceptCreateNewVersion();" />
|
||||
<button label="${i18n:_('Cancel')}"
|
||||
onClick="calendarController.editionController.cancelNewVersion();" />
|
||||
</hbox>
|
||||
</vbox>
|
||||
model="@{calendarController.editionController.parentCalendars}"
|
||||
disabled="@{calendarController.editionController.isNotDerived}"
|
||||
itemRenderer = "@{calendarController.editionController.parentCalendarsComboitemRenderer}" />
|
||||
</hbox>
|
||||
</row>
|
||||
<row>
|
||||
<label value="${i18n:_('From date')}" />
|
||||
<datebox id="startDateValidFromNewVersion"
|
||||
value="@{calendarController.editionController.dateValidFromNewVersion}"/>
|
||||
</row>
|
||||
<row>
|
||||
<label value="${i18n:_('Up to date')}" />
|
||||
<datebox id="expiringDateValidFromNewVersion"
|
||||
value="@{calendarController.editionController.dateValidToNewVersion}"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
<hbox>
|
||||
<button label="${i18n:_('Create')}"
|
||||
onClick="calendarController.editionController.acceptCreateNewVersion();"
|
||||
sclass="create-button global-action"/>
|
||||
<button label="${i18n:_('Cancel')}"
|
||||
onClick="calendarController.editionController.cancelNewVersion();"
|
||||
sclass="cancel-button global-action"/>
|
||||
</hbox>
|
||||
|
||||
</window>
|
||||
|
|
@ -45,13 +45,7 @@
|
|||
<row>
|
||||
<label value="${i18n:_('Type')}" />
|
||||
<hbox>
|
||||
<label
|
||||
value="@{calendarController.editionController.nameParentCalendar}"
|
||||
visible="@{calendarController.editionController.isDerived}" />
|
||||
[
|
||||
<label
|
||||
value="@{calendarController.editionController.calendarType}" />
|
||||
]
|
||||
<label id="calendarTypeLabel" value="@{calendarController.editionController.calendarType}" />
|
||||
</hbox>
|
||||
</row>
|
||||
<row
|
||||
|
|
@ -237,7 +231,7 @@
|
|||
visible="@{calendarController.editionController.isDerived}"/>
|
||||
<listheader label="${i18n:_('Valid from')}"
|
||||
width="80px" />
|
||||
<listheader label="${i18n:_('Expiry date')}"
|
||||
<listheader label="${i18n:_('Valid until')}"
|
||||
width="80px" />
|
||||
<listheader label="${i18n:_('Summary')}" />
|
||||
<listheader label="${i18n:_('Op.')}"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue