Author: DavidK Date: 2010-02-11 17:09:49 +0100 (Thu, 11 Feb 2010) New Revision: 1709 Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/UserBean.java trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/debug/DebugBean.java trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/planningrel/PlanningModalBean.java trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties trunk/server/webServer2/JavaSource/cz/elvys/webServer/utils/PropertyManager.java trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/PlanDocumentBLImpl.java trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/api/PlanningModalBL.java trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/impl/PlanningModalBLImpl.java trunk/server/webServer2/WebContent/js/components/timeSpinnerComponent.js trunk/server/webServer2/WebContent/secured/components/timeSpinnerComponent.xhtml trunk/server/webServer2/WebContent/secured/elvysrel/planDocuments.xhtml trunk/server/webServer2/WebContent/secured/filerel/fileList.xhtml trunk/server/webServer2/WebContent/styles/components/timeSpinnerComponent.css trunk/server/webServer2/WebContent/styles/filerel/fileList.css Log: better planning, part 3. Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/UserBean.java =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/UserBean.java 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/UserBean.java 2010-02-11 16:09:49 UTC (rev 1709) @@ -2,6 +2,7 @@ import java.io.Serializable; import java.util.List; +import java.util.TimeZone; import javax.faces.context.FacesContext; import javax.servlet.ServletRequest; @@ -42,6 +43,7 @@ private String companyName; private boolean loggedIn; private Company company; + private TimeZone defaultTimezone; // data for formular @@ -114,7 +116,14 @@ public boolean isLoggedIn() { return loggedIn; } - + public TimeZone getDefaultTimezone() { + return defaultTimezone; + } + + public void setDefaultTimezone(TimeZone defaultTimezone) { + this.defaultTimezone = defaultTimezone; + } + /** * says, whether competency of this user is USER * @return competency is USER? @@ -150,6 +159,10 @@ //((HttpSession)FacesContext.getCurrentInstance().getExternalContext().getSession(true)).invalidate(); + // set default timezone + defaultTimezone = TimeZone.getDefault(); + + // verify password if (formPassword == null || formUsername.length() == 0 || formPassword == null || formUsername.length() == 0) { Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/debug/DebugBean.java =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/debug/DebugBean.java 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/debug/DebugBean.java 2010-02-11 16:09:49 UTC (rev 1709) @@ -168,7 +168,8 @@ docc.setDocument((Document)file1); docc.setNumPreviewPage("1"); docc.setPageList("1-1"); - List<ValidationMessageHolder> validationres = pmbl.store("tajne", cp.getId(), 1, layout.getId(), 1, null, begin, end, docc); + List<ValidationMessageHolder> validationres = + pmbl.store("tajne", cp.getId(), 1, layout.getId(), 1, null, begin, end, new Date(), docc); checkValidationResp(validationres); } @@ -179,7 +180,8 @@ vidc.setVideo((Video)video1); vidc.setAutostart(true); vidc.setStartPosMs(1500); - List<ValidationMessageHolder> validationres = pmbl.store("tajne", cp.getId(), 1, layout.getId(), 2, null, begin, end, vidc); + List<ValidationMessageHolder> validationres = + pmbl.store("tajne", cp.getId(), 1, layout.getId(), 2, null, begin, end, new Date(), vidc); checkValidationResp(validationres); } @@ -192,7 +194,8 @@ docc.setDocument((Document)file2); docc.setNumPreviewPage("1"); docc.setPageList("1-1"); - List<ValidationMessageHolder> validationres = pmbl.store("tajne", cp.getId(), 2, layout.getId(), 3, null, begin, end, docc); + List<ValidationMessageHolder> validationres = + pmbl.store("tajne", cp.getId(), 2, layout.getId(), 3, null, begin, end, new Date(), docc); checkValidationResp(validationres); } @@ -203,7 +206,8 @@ vidc.setVideo((Video)video2); vidc.setAutostart(false); vidc.setStartPosMs(1500); - List<ValidationMessageHolder> validationres = pmbl.store("tajne", cp.getId(), 2, layout.getId(), 4, null, begin, end, vidc); + List<ValidationMessageHolder> validationres = + pmbl.store("tajne", cp.getId(), 2, layout.getId(), 4, null, begin, end, new Date(), vidc); checkValidationResp(validationres); } Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/planningrel/PlanningModalBean.java =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/planningrel/PlanningModalBean.java 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/beans/planningrel/PlanningModalBean.java 2010-02-11 16:09:49 UTC (rev 1709) @@ -1,7 +1,9 @@ package cz.elvys.webServer.beans.planningrel; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; +import java.util.GregorianCalendar; import java.util.List; import javax.faces.event.AbortProcessingException; @@ -23,6 +25,7 @@ import cz.elvys.webServer.db.InitSessionFactory; import cz.elvys.webServer.toSpring.elvysrel.Rectangle; import cz.elvys.webServer.toSpring.planning.api.PlanningModalBL; +import cz.elvys.webServer.utils.PropertyManager; import cz.elvys.webServer.utils.faces.BeanManager; import cz.elvys.webServer.utils.faces.MessageUtils; import cz.elvys.webServer.utils.plug.PlugablePlanningTypeBeanUtils; @@ -30,6 +33,10 @@ public class PlanningModalBean { + private final static Long msInDay = 24L*60*60*1000; + + + // incomming params private Rectangle incommingParamRect; private boolean incommingParamModifying; @@ -83,7 +90,10 @@ private String viewRefInnerModal = ""; // says whether validation went ok.. after store attempt. Used for prevent closing modal when validation failed. private boolean validationSuccessful; + // NOW date used for late storing + private Date nowDate; + // form fields // type of planning - linked with combo-box on page private ContentType formContentType; @@ -222,19 +232,9 @@ validationSuccessful = false; - // set Date form fields - formShowStart = rect.getRealFrom(); - formShowEnd = rect.getRealTo(); - // set Time form fields - formShowStartTime = rect.getRealFrom(); - if (formShowStartTime == null) { - formShowStartTime = new Date(); - } - formShowEndTime = rect.getRealTo(); - if (formShowEndTime == null) { - formShowEndTime = new Date(); - } + // prepare dates for the form + prepareFormDates(modifying); @@ -286,7 +286,45 @@ } + /** + * prepares date values for the form + */ + private void prepareFormDates(boolean modifying) { + + Date now = new Date(); + Date leftBorder = rect.getRealFrom(); + Date rightBorder = rect.getRealTo(); + Integer defaultLength = PropertyManager.getDefaultPlanningPeriod(); + + if (!modifying) { + // calculate borders + if (leftBorder == null || now.after(leftBorder)) { + // set left border to now + leftBorder = now; + } + if (rightBorder == null) { + // set right border to now + CONST + rightBorder = new Date(leftBorder.getTime()+defaultLength*msInDay); + } + } + + + // set times and dates + formShowStart = leftBorder; + formShowStartTime = formShowStart; + formShowEnd = rightBorder; + formShowEndTime = formShowEnd; + + + // store actual NOW date (for purpose of unability to plan to the past) + Calendar cal = Calendar.getInstance(); + cal.setTime(now); + cal.add(Calendar.MINUTE, -1); + nowDate = cal.getTime(); + } + + /** * Prepares modal planning component after changing type of planning. * @param aev action event - not used @@ -331,9 +369,18 @@ * @param aev action event */ public void store(ActionEvent aev) { + if (formShowStart == null || formShowStartTime == null + || formShowEnd == null || formShowEndTime == null) { + throw new RuntimeException("date null"); + } + // get data from specific part of planning FrameContent formValues = innerBean.getFormData(); + formShowStart = concatDateAndTime(formShowStart, formShowStartTime); + formShowEnd = concatDateAndTime(formShowEnd, formShowEndTime); + + PlanningModalBL bl = Factory.getPlanningModalBL(); // list of validation messages List<ValidationMessageHolder> messages; @@ -346,6 +393,7 @@ modifying == true ? formerTimeline : null, formShowStart, formShowEnd, + nowDate, formValues); } catch (Exception e) { String message = ERR_NOT_STORED; @@ -365,9 +413,28 @@ invalidate(aev); } } + + /** + * concatenates date and time into one Date object + * @param date Date object containing date part + * @param time Date object containing time part + * @return Date object containing date+time part + */ + private Date concatDateAndTime(Date date, Date time) { + // calendar made by time + Calendar tcal = new GregorianCalendar(); + tcal.setTime(time); + + // calendar made by date + Calendar dcal = new GregorianCalendar(); + dcal.setTime(date); + dcal.set(Calendar.HOUR_OF_DAY, tcal.get(Calendar.HOUR_OF_DAY)); + dcal.set(Calendar.MINUTE, tcal.get(Calendar.MINUTE)); + + Date result = dcal.getTime(); + return result; + } - - /** * Deletes selected planning * @param aev action event Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/messages/messages_cs.properties 2010-02-11 16:09:49 UTC (rev 1709) @@ -4,14 +4,15 @@ login.bad=Neplatn\u00E9 p\u0159ihl\u00E1\u0161en\u00ED. Zkuste to pros\u00EDm znovu. -elvys.list.modal.nightmode.badtime=\u010Cas mus\u00ED b\u00FDt ve form\u00E1tu\: "HH\:mm" +elvys.list.modal.nightmode.badtime=\u010Cas mus\u00ED b\u00FDt ve form\u00E1tu\: "HH\:mm". -elvys.plan.modal.badpageslist=Form\u00E1t mus\u00ED b\u00FDt nap\u0159\: 1, 2-5, 8 +elvys.plan.modal.badpageslist=Form\u00E1t mus\u00ED b\u00FDt nap\u0159\: 1, 2-5, 8. elvys.plan.modal.document.badpreviewnum=Neplatn\u00FD form\u00E1t nebo \u010D\u00EDslo nen\u00ED v rozsahu. -elvys.plan.modal.crossdates=Datum "od" mus\u00ED b\u00FDt p\u0159ed datumem "do" -elvys.plan.modal.conflict.begin.inside=Kolize se za\u010D\u00E1tkem jin\u00E9ho pl\u00E1nov\u00E1n\u00ED\: {0} -elvys.plan.modal.conflict.end.inside=Kolize s koncem jin\u00E9ho pl\u00E1nov\u00E1n\u00ED\: {0} -elvys.plan.modal.conflict.embrace=Pl\u00E1nov\u00E1n\u00ED je uvnit\u0159 jin\u00E9ho pl\u00E1nov\u00E1n\u00ED. Start\: {0}; Konec\: {1} +elvys.plan.modal.crossdates=Datum "od" mus\u00ED b\u00FDt p\u0159ed datumem "do". +elvys.plan.modal.inpast=Datum "od" nesm\u00ED b\u00FDt v minulosti. +elvys.plan.modal.conflict.begin.inside=Kolize se za\u010D\u00E1tkem jin\u00E9ho pl\u00E1nov\u00E1n\u00ED\: {0}. +elvys.plan.modal.conflict.end.inside=Kolize s koncem jin\u00E9ho pl\u00E1nov\u00E1n\u00ED\: {0}. +elvys.plan.modal.conflict.embrace=Pl\u00E1nov\u00E1n\u00ED je uvnit\u0159 jin\u00E9ho pl\u00E1nov\u00E1n\u00ED. Start\: {0}; Konec\: {1}. elvys.plan.modal.nochosendocument=Mus\u00EDte vybrat dokument. elvys.plan.modal.nochosenvideo=Mus\u00EDte vybrat video. javax.faces.validator.LongRangeValidator.NOT_IN_RANGE={2}\: Valida\u010Dn\u00ED chyba\: Specified attribute is not between the expected values of {0} and {1}. @@ -50,8 +51,8 @@ javax.faces.converter.DateTimeConverter.DATE_detail={2}\: ''{0}'' nem\u016F\u017Ee b\u00FDt ch\u00E1p\u00E1n jako datum. P\u0159\u00EDklad\: {1} javax.faces.converter.DateTimeConverter.TIME={2}\: ''{0}'' nem\u016F\u017Ee b\u00FDt ch\u00E1p\u00E1n jako \u010Das. javax.faces.converter.DateTimeConverter.TIME_detail={2}\: ''{0}'' nem\u016F\u017Ee b\u00FDt ch\u00E1p\u00E1n jako \u010Das. P\u0159\u00EDklad\: {1} -javax.faces.converter.DateTimeConverter.DATETIME={2}\: ''{0}'' nem\u016F\u017Ee b\u00FDt ch\u00E1p\u00E1n jako date and time. -javax.faces.converter.DateTimeConverter.DATETIME_detail={2}\: ''{0}'' nem\u016F\u017Ee b\u00FDt ch\u00E1p\u00E1n jako date and time. P\u0159\u00EDklad\: {1} +javax.faces.converter.DateTimeConverter.DATETIME={2}\: ''{0}'' nem\u016F\u017Ee b\u00FDt ch\u00E1p\u00E1n jako datum a \u010Das. +javax.faces.converter.DateTimeConverter.DATETIME_detail={2}\: ''{0}'' nem\u016F\u017Ee b\u00FDt ch\u00E1p\u00E1n jako datum a \u010Das. P\u0159\u00EDklad\: {1} javax.faces.converter.DateTimeConverter.PATTERN_TYPE={1}: A 'pattern' or 'type' attribute must be specified to convert the value ''{0}''. javax.faces.converter.DoubleConverter.DOUBLE={2}: ''{0}'' must be a number consisting of one or more digits. javax.faces.converter.DoubleConverter.DOUBLE_detail={2}: ''{0}'' must be a number between 4.9E-324 and 1.7976931348623157E308 Example: {1} Modified: trunk/server/webServer2/JavaSource/cz/elvys/webServer/utils/PropertyManager.java =================================================================== --- trunk/server/webServer2/JavaSource/cz/elvys/webServer/utils/PropertyManager.java 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/JavaSource/cz/elvys/webServer/utils/PropertyManager.java 2010-02-11 16:09:49 UTC (rev 1709) @@ -31,4 +31,10 @@ String value = prop.getProperty("statistics.path"); return value; } + + + public static Integer getDefaultPlanningPeriod() { + Integer value = 14; + return value; + } } Modified: trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/PlanDocumentBLImpl.java =================================================================== --- trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/PlanDocumentBLImpl.java 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/elvysrel/PlanDocumentBLImpl.java 2010-02-11 16:09:49 UTC (rev 1709) @@ -29,9 +29,7 @@ private static final String CANT_LOAD_START_GAP = "Couldn't find start of the gap before visible planning."; private static final String CANT_LOAD_END_GAP = "Couldn't find start of the gap before visible planning."; - /* (non-Javadoc) - * @see cz.elvys.webServer.bl.api.elvysrel.PlanDocumentBL#prepareRectanglesForOneLayoutPosition(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.util.List, java.util.Date, java.util.Date, int) - */ + @Override public List<Rectangle> prepareRectanglesForOneLayoutPosition(Integer panelPl, Integer panelOrd, Integer layoutPos, Integer layoutId, List<Timeline> timelines, Date scheduleFrom, Date scheduleTo, int componentWidth) throws ExecutionException { List<Rectangle> result = new ArrayList<Rectangle>(); Modified: trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/api/PlanningModalBL.java =================================================================== --- trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/api/PlanningModalBL.java 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/api/PlanningModalBL.java 2010-02-11 16:09:49 UTC (rev 1709) @@ -21,6 +21,7 @@ * @param oldTimeline old frame content- null if you're not modifiyng planning (i.e. new planning) * @param valueDateFrom form value - dateFrom * @param valueDateTo form value - dateTo + * @param now point in time when planning started (e.g. showing planning component or sth. like this) * @param formValues form values - DocumentContent, TextContent, ... depends on selected type * @return List of validation message handler. Empty - no validation error occured. * @throws Exception when something went wrong @@ -34,6 +35,7 @@ Timeline oldTimeline, Date valueDateFrom, Date valueDateTo, + Date now, FrameContent formValues) throws Exception; @@ -78,6 +80,7 @@ * @param oldTimeline old frame content- null if you're not modifiyng planning (i.e. new planning) * @param valueDateFrom value of the form - planning from * @param valueDateTo value of the form - planning to + * @param now point in time when planning started (e.g. showing planning component or sth. like this) * @param formValues form values (DocumentContent, TextContent,... depends on the selected type) * @return list of validation messages. Empty means 'everything went ok, stored' */ @@ -90,6 +93,7 @@ Timeline oldTimeline, Date valueDateFrom, Date valueDateTo, + Date now, FrameContent formValues) throws Exception; } Modified: trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/impl/PlanningModalBLImpl.java =================================================================== --- trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/impl/PlanningModalBLImpl.java 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/SpringSource/cz/elvys/webServer/toSpring/planning/impl/PlanningModalBLImpl.java 2010-02-11 16:09:49 UTC (rev 1709) @@ -10,7 +10,6 @@ import org.hibernate.Transaction; import cz.elvys.commons.utils.HibUtils; -import cz.elvys.webServer.HIBgen.Elvys; import cz.elvys.webServer.HIBgen.FrameContent; import cz.elvys.webServer.HIBgen.Layout; import cz.elvys.webServer.HIBgen.Panel; @@ -18,7 +17,6 @@ import cz.elvys.webServer.db.InitSessionFactory; import cz.elvys.webServer.toSpring.planning.api.PlanningModalBL; import cz.elvys.webServer.toSpring.planning.api.PlanningModalSpecBL; -import cz.elvys.webServer.utils.faces.BeanManager; import cz.elvys.webServer.utils.plug.PlugablePlanningTypeBeanUtils; import cz.elvys.webServer.utils.type.ValidationMessageHolder; import elvys.server.bl.Fact; @@ -26,6 +24,10 @@ public class PlanningModalBLImpl implements PlanningModalBL { + // consts + private static final String startFormId = "ChooseStartSpinner_date_input"; + private static final String endFormId = "ChooseEndSpinner_date_input"; + // messages private static final String ERR_STORING_FAILED = "Storing of new planning failed."; private static final String ERR_UPDATING_FAILED = "Updating of new planning failed."; @@ -41,19 +43,25 @@ public List<ValidationMessageHolder> validate(String formName, Integer panelPl, Integer panelOrd, Integer layoutID, Integer positionID, - Timeline oldTimeline, Date valueDateFrom, Date valueDateTo, + Timeline oldTimeline, Date valueDateFrom, Date valueDateTo, Date now, FrameContent formValues) throws Exception { + if (now == null) throw new RuntimeException("now is null"); + String formDateStartId = formName+":"+startFormId; + String formDateEndId = formName+":"+endFormId; + + // dateFrom must be specified List<ValidationMessageHolder> messages = new ArrayList<ValidationMessageHolder>(); if (valueDateFrom == null) { ValidationMessageHolder holder = new ValidationMessageHolder(); - holder.setComponentId(formName+":StartOfPlanningID"); + holder.setComponentId(formDateStartId); holder.setMessageRef("javax.faces.component.UIInput.REQUIRED"); messages.add(holder); } + // dateTo must be specified if (valueDateTo == null) { ValidationMessageHolder message = new ValidationMessageHolder(); - message.setComponentId(formName+":EndOfPlanningID"); + message.setComponentId(formDateEndId); message.setMessageRef("javax.faces.component.UIInput.REQUIRED"); messages.add(message); } @@ -61,16 +69,26 @@ if (valueDateFrom == null || valueDateTo == null) { return messages; } + + // validate dateFrom is not in the past (comparing to the now parameter) + if (valueDateFrom.before(now)) { + ValidationMessageHolder message = new ValidationMessageHolder(); + message.setMessageRef("elvys.plan.modal.inpast"); + message.setComponentId(formDateStartId); + messages.add(message); + } + // validate crossing of dates if (!valueDateFrom.before(valueDateTo)) { ValidationMessageHolder message = new ValidationMessageHolder(); message.setMessageRef("elvys.plan.modal.crossdates"); - message.setComponentId(formName+":EndOfPlanningID"); + message.setComponentId(formDateEndId); messages.add(message); } // validate that this planning don't cross other plannings + // TODO - concurrent access - this must be checked also in DB Session sess = InitSessionFactory.getInstance().getCurrentSession(); Transaction tx= HibUtils.startTx(sess); try { @@ -91,7 +109,7 @@ if (tlines1.size() != 0) { ValidationMessageHolder message = new ValidationMessageHolder(); message.setMessageRef("elvys.plan.modal.conflict.begin.inside"); - message.setComponentId(formName+":EndOfPlanningID"); + message.setComponentId(formDateEndId); message.setParams(new Object[]{tlines1.get(0).getShowStart()}); messages.add(message); } @@ -104,7 +122,7 @@ if (tlines2.size() != 0) { ValidationMessageHolder message = new ValidationMessageHolder(); message.setMessageRef("elvys.plan.modal.conflict.end.inside"); - message.setComponentId(formName+":StartOfPlanningID"); + message.setComponentId(formDateStartId); message.setParams(new Object[]{tlines2.get(0).getShowEnd()}); messages.add(message); } @@ -116,7 +134,7 @@ if (tlines3.size() != 0) { ValidationMessageHolder message = new ValidationMessageHolder(); message.setMessageRef("elvys.plan.modal.conflict.embrace"); - message.setComponentId(formName+":StartOfPlanningID"); + message.setComponentId(formDateStartId); message.setParams(new Object[]{tlines3.get(0).getShowStart(), tlines3.get(0).getShowEnd()}); messages.add(message); } @@ -215,13 +233,13 @@ public List<ValidationMessageHolder> store(String formName, Integer panelPl, Integer panelOrd, Integer layoutID, Integer positionID, - Timeline oldTimeline, Date valueDateFrom, Date valueDateTo, + Timeline oldTimeline, Date valueDateFrom, Date valueDateTo, Date now, FrameContent formValues) throws Exception { // validation List<ValidationMessageHolder> messages = validate(formName, - panelPl, panelOrd, layoutID,positionID, oldTimeline, valueDateFrom, - valueDateTo, formValues); + panelPl, panelOrd, layoutID, positionID, oldTimeline, valueDateFrom, + valueDateTo, now, formValues); if (messages != null && messages.size()>0) { return messages; } Modified: trunk/server/webServer2/WebContent/js/components/timeSpinnerComponent.js =================================================================== --- trunk/server/webServer2/WebContent/js/components/timeSpinnerComponent.js 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/WebContent/js/components/timeSpinnerComponent.js 2010-02-11 16:09:49 UTC (rev 1709) @@ -25,21 +25,69 @@ OPERA=true; } +function HandlerError(e){} -// date='2/10/2010', time='19:10' -function registerMyInstanceOfDateSpinner(fieldId,date,time) { - loadSearch('2/10/2010', 'Date'); - var sDefTime='19:10'; - mapOfCurrentDates[fieldId] -} -function loadSearch(DateSelect,id){ - OurDate=new Date(DateSelect); - var today; - today=new Date(); +function onDtKeydown(event) { + try { + var ikeyCode; + ikeyCode=0; + if(event.which) { + ikeyCode=event.which; + } else if (event.keyCode) { + ikeyCode=event.keyCode; + } + if (ikeyCode===38) { + JourneyDateFore(); + refJourneyDate.select(); + event.returnValue=false; + event.cancel=true; + return false; + } else if(ikeyCode===40) { + JourneyDateBack(); + refJourneyDate.select(); + event.returnValue=false; + event.cancel=true; + return false; + } else { + return true; + } + } catch(e) { + HandlerError(e); + } } +function onTimeKeydown(event) { + try{ + var ikeyCode; + ikeyCode=0; + if(event.which) { + ikeyCode=event.which; + } else if(event.keyCode) { + ikeyCode=event.keyCode; + } + oEl=document.getElementById("Time"); + if(ikeyCode===38) { + GetTime(null,"+"); + oEl.select(); + event.returnValue=false; + event.cancel=true; + return false; + } else if (ikeyCode===40) { + GetTime(null,"-"); + oEl.select(); + event.returnValue=false; + event.cancel=true; + return false; + } else { + return true; + } + } catch(e) { + HandlerError(e); + } +} + // DATE SECTION function GetCalDate(event,sOperation,fieldId){ if(IsNSOperaDblClick(event)){ Modified: trunk/server/webServer2/WebContent/secured/components/timeSpinnerComponent.xhtml =================================================================== --- trunk/server/webServer2/WebContent/secured/components/timeSpinnerComponent.xhtml 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/WebContent/secured/components/timeSpinnerComponent.xhtml 2010-02-11 16:09:49 UTC (rev 1709) @@ -130,7 +130,7 @@ styleClass="calendar-time-spinner-input" value="#{valueTime}" required="true" > - <f:convertDateTime type="time" timeStyle="short"/> + <f:convertDateTime pattern="HH:mm" timeZone="#{user.defaultTimezone}" type="time" timeStyle="short"/> </h:inputText> </td> <td> @@ -175,8 +175,8 @@ <!-- ERROR PART --> <a4j:outputPanel ajaxRendered="true"> - <h:message id="#{id}_date_input_error" for="#{id}_date_input" styleClass="error"/> - <h:message id="#{id}_time_input_error" for="#{id}_time_input" styleClass="error"/> + <h:message id="#{id}_date_input_error" for="#{id}_date_input" styleClass="error error-spinner"/> + <h:message id="#{id}_time_input_error" for="#{id}_time_input" styleClass="error error-spinner"/> </a4j:outputPanel> </h:panelGroup> Modified: trunk/server/webServer2/WebContent/secured/elvysrel/planDocuments.xhtml =================================================================== --- trunk/server/webServer2/WebContent/secured/elvysrel/planDocuments.xhtml 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/WebContent/secured/elvysrel/planDocuments.xhtml 2010-02-11 16:09:49 UTC (rev 1709) @@ -111,13 +111,13 @@ <h:outputLabel value="#{lbl['elvys.plan.component.start']} "/> <b> <h:outputLabel value="#{filePlanningBean.segmentFrom}"> - <f:convertDateTime dateStyle="short" pattern="dd.MM.yyyy" type="date"/> + <f:convertDateTime dateStyle="short" timeZone="#{user.defaultTimezone}" pattern="dd.MM.yyyy" type="date"/> </h:outputLabel> </b> <h:outputText value="#{lbl['elvys.plan.component.end']} "/> <b> <h:outputLabel value="#{filePlanningBean.segmentTo}"> - <f:convertDateTime dateStyle="short" pattern="dd.MM.yyyy" type="date"/> + <f:convertDateTime dateStyle="short" timeZone="#{user.defaultTimezone}" pattern="dd.MM.yyyy" type="date"/> </h:outputLabel> </b> <h:panelGroup styleClass="scheduler-period-area"> Modified: trunk/server/webServer2/WebContent/secured/filerel/fileList.xhtml =================================================================== --- trunk/server/webServer2/WebContent/secured/filerel/fileList.xhtml 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/WebContent/secured/filerel/fileList.xhtml 2010-02-11 16:09:49 UTC (rev 1709) @@ -91,9 +91,14 @@ </h:column> <h:column> <f:facet name="header">#{lbl['file.manager.list.time']}</f:facet> - <h:outputText value="#{file.uploaded}" > - <f:convertDateTime dateStyle="short" pattern="dd.MM.yyyy HH:mm" type="both"/> - </h:outputText> + <div class="file-upload-datetime-div"> + <h:outputText value="#{file.uploaded}" styleClass="file-upload-date"> + <f:convertDateTime dateStyle="short" pattern="dd.MM.yyyy" timeZone="#{user.defaultTimezone}" type="date"/> + </h:outputText> + <h:outputText value="#{file.uploaded}" styleClass="file-upload-time"> + <f:convertDateTime dateStyle="short" pattern="HH:mm" timeZone="#{user.defaultTimezone}" type="time"/> + </h:outputText> + </div> </h:column> <rich:column> <f:facet name="header"> Modified: trunk/server/webServer2/WebContent/styles/components/timeSpinnerComponent.css =================================================================== --- trunk/server/webServer2/WebContent/styles/components/timeSpinnerComponent.css 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/WebContent/styles/components/timeSpinnerComponent.css 2010-02-11 16:09:49 UTC (rev 1709) @@ -57,4 +57,8 @@ .calendar-time-spinner-over { background-color: #A4D800; -} \ No newline at end of file +} + +.error-spinner { + float: left; +} Modified: trunk/server/webServer2/WebContent/styles/filerel/fileList.css =================================================================== --- trunk/server/webServer2/WebContent/styles/filerel/fileList.css 2010-02-11 10:18:47 UTC (rev 1708) +++ trunk/server/webServer2/WebContent/styles/filerel/fileList.css 2010-02-11 16:09:49 UTC (rev 1709) @@ -5,4 +5,18 @@ .FileList { +} + + +.file-upload-datetime-div { + +} + +.file-upload-date { + float: right; +} + + +.file-upload-time { + float: right; } \ No newline at end of file