From 935344eadec33fcc40f1e05fe14d0169be476460 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Thu, 4 Aug 2011 09:58:28 +0200 Subject: [PATCH] Fix highlighted days on calendar widget * CalendarHighlightedDays macro component is removed * Solution is based on discussion at ZK forum: http://www.zkoss.org/forum/listComment/17068-Highlight-calendar-days-with-jQuery FEA: ItEr75S08MigrationZK5 --- .../calendars/BaseCalendarCRUDController.java | 4 +- .../BaseCalendarEditionController.java | 42 +++---- .../components/CalendarHighlightedDays.java | 108 ------------------ .../main/resources/metainfo/zk/lang-addon.xml | 6 - .../src/main/webapp/calendars/_edition.zul | 21 +++- .../components/calendarhighlighteddays.zul | 86 -------------- 6 files changed, 34 insertions(+), 233 deletions(-) delete mode 100644 navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CalendarHighlightedDays.java delete mode 100644 navalplanner-webapp/src/main/webapp/common/components/calendarhighlighteddays.zul diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarCRUDController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarCRUDController.java index a45e4c4d8..8f62605b8 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarCRUDController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarCRUDController.java @@ -37,7 +37,6 @@ import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; import org.navalplanner.web.common.OnlyOneVisible; import org.navalplanner.web.common.Util; -import org.navalplanner.web.common.components.CalendarHighlightedDays; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; @@ -120,8 +119,7 @@ public class BaseCalendarCRUDController extends GenericForwardComposer { } private void highlightDaysOnCalendar() { - ((CalendarHighlightedDays) editWindow.getFellow("calendarWidget")) - .highlightDays(); + editionController.highlightDaysOnCalendar(); } public void save() { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java index 7f3f75a2c..148541681 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/calendars/BaseCalendarEditionController.java @@ -56,9 +56,9 @@ import org.navalplanner.web.common.Util; import org.navalplanner.web.common.Util.Getter; import org.navalplanner.web.common.Util.ICreation; import org.navalplanner.web.common.Util.Setter; -import org.navalplanner.web.common.components.CalendarHighlightedDays; import org.navalplanner.web.common.components.CapacityPicker; import org.navalplanner.web.common.components.EffortDurationPicker; +import org.zkoss.zk.au.out.AuInvoke; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.event.CheckEvent; @@ -82,6 +82,7 @@ import org.zkoss.zul.Listcell; import org.zkoss.zul.Listitem; import org.zkoss.zul.ListitemRenderer; import org.zkoss.zul.Textbox; +import org.zkoss.zul.api.Calendar; import org.zkoss.zul.api.Window; /** @@ -484,9 +485,16 @@ public abstract class BaseCalendarEditionController extends capacityPicker.setValue(baseCalendarModel.getWorkableCapacity()); } - private void highlightDaysOnCalendar() { - ((CalendarHighlightedDays) window.getFellow("calendarWidget")) - .highlightDays(); + public void highlightDaysOnCalendar() { + Calendar calendar = (Calendar) window.getFellow("calendarWidget"); + + Map> daysByType = getDaysCurrentMonthByType(); + Clients.response(new AuInvoke(calendar, "highlightDates", daysByType + .get(DayType.ANCESTOR_EXCEPTION).toArray(), "white", "orange")); + Clients.response(new AuInvoke(calendar, "highlightDates", daysByType + .get(DayType.OWN_EXCEPTION).toArray(), "white", "red")); + Clients.response(new AuInvoke(calendar, "highlightDates", daysByType + .get(DayType.ZERO_HOURS).toArray(), "red", "white")); } public Date getSelectedDay() { @@ -516,7 +524,7 @@ public abstract class BaseCalendarEditionController extends reloadSelectDayInformation(); } - private Map getDaysCurrentMonthByType() { + private Map> getDaysCurrentMonthByType() { LocalDate currentDate = new LocalDate(baseCalendarModel .getSelectedDay()); @@ -550,30 +558,16 @@ public abstract class BaseCalendarEditionController extends } } - Map result = new HashMap(); + Map> result = new HashMap>(); - result.put(DayType.ANCESTOR_EXCEPTION, StringUtils.join( - ancestorExceptionsDays, ",")); - result.put(DayType.OWN_EXCEPTION, StringUtils.join(ownExceptionDays, - ",")); - result.put(DayType.ZERO_HOURS, StringUtils.join(zeroHoursDays, ",")); - result.put(DayType.NORMAL, StringUtils.join(normalDays, ",")); + result.put(DayType.ANCESTOR_EXCEPTION, ancestorExceptionsDays); + result.put(DayType.OWN_EXCEPTION, ownExceptionDays); + result.put(DayType.ZERO_HOURS, zeroHoursDays); + result.put(DayType.NORMAL, normalDays); return result; } - public String getAncestorExceptionDays() { - return getDaysCurrentMonthByType().get(DayType.ANCESTOR_EXCEPTION); - } - - public String getOwnExceptionDays() { - return getDaysCurrentMonthByType().get(DayType.OWN_EXCEPTION); - } - - public String getZeroHoursDays() { - return getDaysCurrentMonthByType().get(DayType.ZERO_HOURS); - } - public String getTypeOfDay() { DayType typeOfDay = baseCalendarModel.getTypeOfDay(); if (typeOfDay == null) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CalendarHighlightedDays.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CalendarHighlightedDays.java deleted file mode 100644 index a664f62cd..000000000 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/CalendarHighlightedDays.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This file is part of NavalPlan - * - * Copyright (C) 2009-2010 Fundación para o Fomento da Calidade Industrial e - * Desenvolvemento Tecnolóxico de Galicia - * Copyright (C) 2010-2011 Igalia, S.L. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package org.navalplanner.web.common.components; - -import java.util.Date; - -import org.navalplanner.web.common.Util; -import org.zkoss.zk.ui.HtmlMacroComponent; -import org.zkoss.zk.ui.util.Clients; -import org.zkoss.zul.Calendar; - -/** - * ZK macro component that uses the {@link Calendar} component adding the - * possibility to highlight some days in the calendar. - * - * @author Manuel Rego Casasnovas - */ -public class CalendarHighlightedDays extends HtmlMacroComponent { - - private Date value; - - private String ancestorExceptionDays; - private String ownExceptionDays; - private String zeroHoursDays; - - private String calendarUuid; - - public void setInternalValue(Date value) { - this.value = value; - - Util.saveBindings(this); - highlightDays(); - } - - public Date getInternalValue() { - return value != null ? new Date(value.getTime()) : null; - } - - public void setValue(Date value) { - this.value = value != null ? new Date(value.getTime()) : null; - } - - public Date getValue() { - return value != null ? new Date(value.getTime()) : null; - } - - public void setAncestorExceptionDays(String ancestorExceptionDays) { - this.ancestorExceptionDays = ancestorExceptionDays; - } - - public String getAncestorExceptionDays() { - return ancestorExceptionDays; - } - - public void setOwnExceptionDays(String ownExceptionDays) { - this.ownExceptionDays = ownExceptionDays; - } - - public String getOwnExceptionDays() { - return ownExceptionDays; - } - - public void setZeroHoursDays(String zeroHoursDays) { - this.zeroHoursDays = zeroHoursDays; - } - - public String getZeroHoursDays() { - return zeroHoursDays; - } - - public void highlightDays() { - String javascript = "highlightDays('" + ancestorExceptionDays - + "', 'white', 'orange', '" + ownExceptionDays - + "', 'white', 'red', '" + zeroHoursDays - + "', 'red', 'white', 'lightgrey', 'white', '" - + getCalendarUuid() + "');"; - - Clients.evalJavaScript(javascript); - } - - public String getCalendarUuid() { - if (calendarUuid == null) { - Calendar calendar = (Calendar) getLastChild(); - calendarUuid = calendar.getUuid(); - } - return calendarUuid; - } - -} \ No newline at end of file diff --git a/navalplanner-webapp/src/main/resources/metainfo/zk/lang-addon.xml b/navalplanner-webapp/src/main/resources/metainfo/zk/lang-addon.xml index 1e4416dcb..a45d62a4d 100755 --- a/navalplanner-webapp/src/main/resources/metainfo/zk/lang-addon.xml +++ b/navalplanner-webapp/src/main/resources/metainfo/zk/lang-addon.xml @@ -29,12 +29,6 @@ hbox - - calendarhighlighteddays - org.navalplanner.web.common.components.CalendarHighlightedDays - /common/components/calendarhighlighteddays.zul - - autocomplete org.navalplanner.web.common.components.Autocomplete diff --git a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul index 1d4b851d2..d23f3a06d 100644 --- a/navalplanner-webapp/src/main/webapp/calendars/_edition.zul +++ b/navalplanner-webapp/src/main/webapp/calendars/_edition.zul @@ -19,7 +19,7 @@ along with this program. If not, see . --> - + @@ -68,11 +68,20 @@ - + + + function (days, textColor, bgColor) { + var nodes = $('td', this).not('.z-outside'); + nodes.each(function () { + var day = parseInt($(this).attr('_dt')); + if (jQuery.inArray(day, days) > -1) { + $(this).css({color: textColor, backgroundColor: bgColor}); + } + }); + } + + diff --git a/navalplanner-webapp/src/main/webapp/common/components/calendarhighlighteddays.zul b/navalplanner-webapp/src/main/webapp/common/components/calendarhighlighteddays.zul deleted file mode 100644 index 89f428091..000000000 --- a/navalplanner-webapp/src/main/webapp/common/components/calendarhighlighteddays.zul +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file