diff --git a/src/main/java/org/sigmah/client/ui/presenter/calendar/CalendarPresenter.java b/src/main/java/org/sigmah/client/ui/presenter/calendar/CalendarPresenter.java index 7ce9bb08c..fbe16e17e 100644 --- a/src/main/java/org/sigmah/client/ui/presenter/calendar/CalendarPresenter.java +++ b/src/main/java/org/sigmah/client/ui/presenter/calendar/CalendarPresenter.java @@ -324,10 +324,10 @@ public void onUpdate(final UpdateEvent event) { * @param calendars * The calendar types with their corresponding identifier. */ - public void reload(final Map calendars) { + public void reload(final Map calendars) { calendar.refresh(); - this.projectId = calendars.get(CalendarType.Activity); + this.projectId = calendars.get(1); view.setAddEventButtonEnabled(ProfileUtils.isGranted(auth(), GlobalPermissionEnum.EDIT_PROJECT_AGENDA, GlobalPermissionEnum.EDIT_PROJECT)); reloadEvents(calendars); @@ -365,7 +365,7 @@ private List getCalendars() { * @param calendars * The calendar types with their corresponding identifier. */ - private void reloadEvents(final Map calendars) { + private void reloadEvents(final Map calendars) { view.getCalendarsStore().removeAll(); @@ -382,13 +382,28 @@ protected void onComplete() { } }; - for (final Entry calendarEntry : calendars.entrySet()) { + for (final Entry calendarEntry : calendars.entrySet()) { if (calendarEntry == null) { continue; } - final CalendarType calendarType = calendarEntry.getKey(); + final Integer assign=calendarEntry.getKey(); + final CalendarType calendarType; + switch (assign%4) { + case 1: + calendarType =CalendarType.Activity; + break; + case 2: + calendarType = CalendarType.Personal; + break; + case 3: + calendarType = CalendarType.MonitoredPoint; + break; + default: + calendarType = CalendarType.Reminder; + break; + } final Integer calendarId = calendarEntry.getValue(); queue.add(new GetCalendar(calendarType, CalendarType.getIdentifier(calendarType, calendarId)), new CommandResultHandler() { @@ -397,7 +412,12 @@ protected void onComplete() { public void onCommandSuccess(final Calendar result) { if(result != null) { // Defines the color index of the calendar. + if(assign<5){ result.setStyle(calendarType.getColorCode()); + } + else{ + result.setStyle(calendarType.getColorCode() + 6); + } result.setType(calendarType); view.getCalendarsStore().add(new CalendarWrapper(result)); diff --git a/src/main/java/org/sigmah/client/ui/presenter/orgunit/OrgUnitCalendarPresenter.java b/src/main/java/org/sigmah/client/ui/presenter/orgunit/OrgUnitCalendarPresenter.java index 5616b3096..40dea275c 100644 --- a/src/main/java/org/sigmah/client/ui/presenter/orgunit/OrgUnitCalendarPresenter.java +++ b/src/main/java/org/sigmah/client/ui/presenter/orgunit/OrgUnitCalendarPresenter.java @@ -22,7 +22,6 @@ * #L% */ -import java.util.EnumMap; import org.sigmah.client.inject.Injector; import org.sigmah.client.page.Page; @@ -30,12 +29,14 @@ import org.sigmah.client.ui.presenter.calendar.CalendarPresenter; import org.sigmah.client.ui.view.base.ViewInterface; import org.sigmah.client.ui.view.orgunit.OrgUnitCalendarView; -import org.sigmah.shared.dto.calendar.CalendarType; import com.google.inject.ImplementedBy; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; +import java.util.HashMap; +import java.util.Map; +import org.sigmah.shared.dto.orgunit.OrgUnitDTO; /** *

@@ -111,10 +112,18 @@ public void onBind() { * {@inheritDoc} */ @Override - public void onPageRequest(final PageRequest request) { - final EnumMap calendars = new EnumMap(CalendarType.class); - calendars.put(CalendarType.Activity, getOrgUnit().getId()); - calendars.put(CalendarType.Personal, getOrgUnit().getCalendarId()); + public void onPageRequest(final PageRequest request) { + final Map calendars = new HashMap(); + Integer calendarId = 1; + calendars.put(calendarId++, getOrgUnit().getId()); + calendars.put(calendarId, getOrgUnit().getCalendarId()); + calendarId = calendarId + 3; + + for(final OrgUnitDTO child : getOrgUnit().getChildrenOrgUnits()) { + calendars.put(calendarId++, child.getId()); + calendars.put(calendarId, child.getCalendarId()); + calendarId = calendarId + 3; + } calendarPresenter.reload(calendars); } diff --git a/src/main/java/org/sigmah/client/ui/presenter/project/ProjectCalendarPresenter.java b/src/main/java/org/sigmah/client/ui/presenter/project/ProjectCalendarPresenter.java index cd6db7acf..5772d1d12 100644 --- a/src/main/java/org/sigmah/client/ui/presenter/project/ProjectCalendarPresenter.java +++ b/src/main/java/org/sigmah/client/ui/presenter/project/ProjectCalendarPresenter.java @@ -36,6 +36,8 @@ import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; +import java.util.HashMap; +import java.util.Map; /** *

@@ -109,14 +111,32 @@ public void onBind() { * {@inheritDoc} */ @Override - public void onPageRequest(final PageRequest request) { - final EnumMap calendars = new EnumMap(CalendarType.class); - calendars.put(CalendarType.Activity, getProject().getId()); - calendars.put(CalendarType.Personal, getProject().getCalendarId()); - calendars.put(CalendarType.MonitoredPoint, getProject().getPointsList().getId()); - calendars.put(CalendarType.Reminder, getProject().getRemindersList().getId()); - calendarPresenter.reload(calendars); - } + public void onPageRequest(final PageRequest request) { + final Map calendars = new HashMap(); + Integer calendarId = 1; + calendars.put(calendarId++, getProject().getId()); + calendars.put(calendarId++, getProject().getCalendarId()); + calendars.put(calendarId++, getProject().getPointsList().getId()); + calendars.put(calendarId++, getProject().getRemindersList().getId()); + + if (!getProject().getFunded().isEmpty()) { + for (int i = 0; i < getProject().getFunded().size(); i++) { + calendars.put(calendarId++, getProject().getFunded().get(i).getFunded().getId()); + calendars.put(calendarId++, getProject().getFunded().get(i).getFunded().getCalendarId()); + calendars.put(calendarId++, getProject().getFunded().get(i).getFunded().getPointsList().getId()); + calendars.put(calendarId++, getProject().getFunded().get(i).getFunded().getRemindersList().getId()); + } + } + if (!getProject().getFunding().isEmpty()) { + for (int i = 0; i < getProject().getFunding().size(); i++) { + calendars.put(calendarId++, getProject().getFunding().get(i).getFunding().getId()); + calendars.put(calendarId++, getProject().getFunding().get(i).getFunding().getCalendarId()); + calendars.put(calendarId++, getProject().getFunding().get(i).getFunding().getPointsList().getId()); + calendars.put(calendarId++, getProject().getFunding().get(i).getFunding().getRemindersList().getId()); + } + } + calendarPresenter.reload(calendars); + } /** * {@inheritDoc} diff --git a/src/main/java/org/sigmah/client/ui/view/calendar/CalendarView.java b/src/main/java/org/sigmah/client/ui/view/calendar/CalendarView.java index f6418d16a..62ff6acef 100644 --- a/src/main/java/org/sigmah/client/ui/view/calendar/CalendarView.java +++ b/src/main/java/org/sigmah/client/ui/view/calendar/CalendarView.java @@ -132,7 +132,7 @@ public Object render(CalendarWrapper model, String property, ColumnData config, selectionModel = new CheckBoxSelectionModel(); - final ColumnModel calendarColumnModel = new ColumnModel(Arrays.asList(selectionModel.getColumn(), calendarName, calendarColor)); + final ColumnModel calendarColumnModel = new ColumnModel(Arrays.asList(calendarColor, calendarName, selectionModel.getColumn())); calendarsStore = new ListStore(); diff --git a/src/main/java/org/sigmah/server/handler/calendar/MonitoredPointCalendarHandler.java b/src/main/java/org/sigmah/server/handler/calendar/MonitoredPointCalendarHandler.java index 276308e25..149fe17f8 100644 --- a/src/main/java/org/sigmah/server/handler/calendar/MonitoredPointCalendarHandler.java +++ b/src/main/java/org/sigmah/server/handler/calendar/MonitoredPointCalendarHandler.java @@ -120,8 +120,8 @@ public Calendar getCalendar(CalendarIdentifier identifier,EntityManager em) { sb.append(format.format(point.getExpectedDate())); sb.append(')'); } - - event.setDescription(sb.toString()); + + event.setDescription(sb.toString() + calendarIdentifier.getProjectId()); // Adding the event to the event map final Date key = event.getKey(); diff --git a/src/main/java/org/sigmah/server/handler/calendar/ReminderCalendarHandler.java b/src/main/java/org/sigmah/server/handler/calendar/ReminderCalendarHandler.java index 7f9470c33..d0d2768d6 100644 --- a/src/main/java/org/sigmah/server/handler/calendar/ReminderCalendarHandler.java +++ b/src/main/java/org/sigmah/server/handler/calendar/ReminderCalendarHandler.java @@ -120,8 +120,8 @@ public Calendar getCalendar(CalendarIdentifier identifier,EntityManager em) { sb.append(format.format(reminder.getExpectedDate())); sb.append(')'); } - - event.setDescription(sb.toString()); + + event.setDescription(sb.toString() + calendarIdentifier.getProjectId()); // Adding the event to the event map final Date key = event.getKey(); diff --git a/src/main/java/org/sigmah/shared/dto/calendar/CalendarType.java b/src/main/java/org/sigmah/shared/dto/calendar/CalendarType.java index e7babf109..75a48e5c4 100644 --- a/src/main/java/org/sigmah/shared/dto/calendar/CalendarType.java +++ b/src/main/java/org/sigmah/shared/dto/calendar/CalendarType.java @@ -67,6 +67,10 @@ private static enum Color { BLUE(2), GREEN(3), RED(4), + ORANGERelated(7), + BLUERelated(8), + GREENRelated(9), + REDRelated(10), VIOLET(5), GRAY(6); @@ -76,7 +80,7 @@ private Color(final int colorCode) { this.colorCode = colorCode; } } - + /** * Returns the given {@code type} corresponding {@link CalendarIdentifier} instance for the given {@code id}. * @@ -86,8 +90,8 @@ private Color(final int colorCode) { * The calendar id. * @return The {@link CalendarIdentifier} instance. */ + static int projectId; public static CalendarIdentifier getIdentifier(final CalendarType type, final Integer id) { - if (type == null) { throw new IllegalArgumentException("Invalid calendar type."); } @@ -95,6 +99,7 @@ public static CalendarIdentifier getIdentifier(final CalendarType type, final In switch (type) { case Activity: + projectId = id; return new ActivityCalendarIdentifier(id, I18N.CONSTANTS.logFrameActivities(), I18N.CONSTANTS.logFrameActivitiesCode()); case Personal: @@ -102,11 +107,11 @@ public static CalendarIdentifier getIdentifier(final CalendarType type, final In case MonitoredPoint: return new MonitoredPointCalendarIdentifier(id, I18N.CONSTANTS.monitoredPoints(), I18N.CONSTANTS.monitoredPointClosed(), - I18N.CONSTANTS.monitoredPointExpectedDate(), DateUtils.DATE_SHORT.getPattern()); + I18N.CONSTANTS.monitoredPointExpectedDate(), DateUtils.DATE_SHORT.getPattern() , projectId); case Reminder: return new ReminderCalendarIdentifier(id, I18N.CONSTANTS.reminderPoints(), I18N.CONSTANTS.monitoredPointClosed(), - I18N.CONSTANTS.monitoredPointExpectedDate(), DateUtils.DATE_SHORT.getPattern()); + I18N.CONSTANTS.monitoredPointExpectedDate(), DateUtils.DATE_SHORT.getPattern(),projectId); default: throw new IllegalArgumentException("Invalid calendar type."); diff --git a/src/main/java/org/sigmah/shared/dto/calendar/MonitoredPointCalendarIdentifier.java b/src/main/java/org/sigmah/shared/dto/calendar/MonitoredPointCalendarIdentifier.java index 16b710ffd..8ba266ab2 100644 --- a/src/main/java/org/sigmah/shared/dto/calendar/MonitoredPointCalendarIdentifier.java +++ b/src/main/java/org/sigmah/shared/dto/calendar/MonitoredPointCalendarIdentifier.java @@ -37,17 +37,19 @@ public class MonitoredPointCalendarIdentifier implements CalendarIdentifier { private String completedEventString; private String expectedDateString; private String dateFormat; + private int projectId; public MonitoredPointCalendarIdentifier() { // Serialization. } - public MonitoredPointCalendarIdentifier(int monitoredListId, String calendarName, String completedEventString, String expectedDateString, String dateFormat) { + public MonitoredPointCalendarIdentifier(int monitoredListId, String calendarName, String completedEventString, String expectedDateString, String dateFormat, int projectId) { this.monitoredListId = monitoredListId; this.calendarName = calendarName; this.completedEventString = completedEventString; this.expectedDateString = expectedDateString; this.dateFormat = dateFormat; + this.projectId = projectId; } public int getMonitoredListId() { @@ -90,6 +92,16 @@ public void setDateFormat(String dateFormat) { this.dateFormat = dateFormat; } + public int getProjectId() { + return projectId; + } + + public void setProjectId(int projectId) { + this.projectId = projectId; + } + + + /** * {@inheritDoc} */ diff --git a/src/main/java/org/sigmah/shared/dto/calendar/ReminderCalendarIdentifier.java b/src/main/java/org/sigmah/shared/dto/calendar/ReminderCalendarIdentifier.java index 221fa6b95..40e6792d2 100644 --- a/src/main/java/org/sigmah/shared/dto/calendar/ReminderCalendarIdentifier.java +++ b/src/main/java/org/sigmah/shared/dto/calendar/ReminderCalendarIdentifier.java @@ -37,17 +37,19 @@ public class ReminderCalendarIdentifier implements CalendarIdentifier { private String completedEventString; private String expectedDateString; private String dateFormat; + private int projectId; public ReminderCalendarIdentifier() { // Serialization. } - public ReminderCalendarIdentifier(int reminderListId, String calendarName, String completedEventString, String expectedDateString, String dateFormat) { + public ReminderCalendarIdentifier(int reminderListId, String calendarName, String completedEventString, String expectedDateString, String dateFormat, int projectId) { this.reminderListId = reminderListId; this.calendarName = calendarName; this.completedEventString = completedEventString; this.expectedDateString = expectedDateString; this.dateFormat = dateFormat; + this.projectId = projectId; } public int getReminderListId() { @@ -90,6 +92,16 @@ public void setDateFormat(String dateFormat) { this.dateFormat = dateFormat; } + public int getProjectId() { + return projectId; + } + + public void setProjectId(int projectId) { + this.projectId = projectId; + } + + + /** * {@inheritDoc} */ diff --git a/src/main/resources/org/sigmah/public/css/sigmah.css b/src/main/resources/org/sigmah/public/css/sigmah.css index 0a6f0d441..2101f5c6a 100644 --- a/src/main/resources/org/sigmah/public/css/sigmah.css +++ b/src/main/resources/org/sigmah/public/css/sigmah.css @@ -317,6 +317,14 @@ body {font-family:Arial;font-size:8pt} .calendar-fullday-event-5{background-color:#9643a5} .calendar-event-6{color:#737373} .calendar-fullday-event-6{background-color:#737373} +.calendar-event-7{color:#ffcd39} +.calendar-fullday-event-7{background-color:#ffcd39} +.calendar-event-8{color:#2787ff} +.calendar-fullday-event-8{background-color:#2787ff} +.calendar-event-9{color:#c4ff59} +.calendar-fullday-event-9{background-color:#c4ff59} +.calendar-event-10{color:#f23f3f} +.calendar-fullday-event-10{background-color:#f23f3f} .calendar-event-limit{color:#482A1E;text-align:center;font-weight:700;width:100%;height:16px;display:block;text-decoration:none} .calendar-event-limit:hover{color:#EE9329}