From 8b45f2c731d1a015c1d9c9639b3e76488c696770 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Wed, 30 Oct 2019 13:46:07 -0400 Subject: [PATCH] fix(calendar(js)): swap start-end dates when delta is negative When creating an event by drag'n'dropping from bottom to top, the original coordinate become the start date. --- .../js/Scheduler/CalendarListController.js | 5 ++++- UI/WebServerResources/js/Scheduler/Component.service.js | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/UI/WebServerResources/js/Scheduler/CalendarListController.js b/UI/WebServerResources/js/Scheduler/CalendarListController.js index 43bf69b76..c2d621cb0 100644 --- a/UI/WebServerResources/js/Scheduler/CalendarListController.js +++ b/UI/WebServerResources/js/Scheduler/CalendarListController.js @@ -222,16 +222,19 @@ // Adjust component or create new component through drag'n'drop function updateComponentFromGhost($event) { - var component, pointerHandler, coordinates, delta, params, calendarNumber, activeCalendars; + var component, pointerHandler, originalCoordinates, coordinates, delta, params, calendarNumber, activeCalendars; component = Component.$ghost.component; pointerHandler = Component.$ghost.pointerHandler; if (component.isNew) { + originalCoordinates = pointerHandler.originalEventCoordinates; coordinates = pointerHandler.currentEventCoordinates; component.summary = ''; if (component.isAllDay) coordinates.duration -= 96; + if (coordinates.start < originalCoordinates.start) + coordinates.duration *= -1; component.setDelta(coordinates.duration * 15); newComponent(null, 'appointment', component) .catch() diff --git a/UI/WebServerResources/js/Scheduler/Component.service.js b/UI/WebServerResources/js/Scheduler/Component.service.js index c7008049d..1858f8074 100644 --- a/UI/WebServerResources/js/Scheduler/Component.service.js +++ b/UI/WebServerResources/js/Scheduler/Component.service.js @@ -759,6 +759,13 @@ * @param {number} delta - the number of minutes */ Component.prototype.setDelta = function(delta) { + if (delta < 0) { + var start = new Date(this.start.getTime()); + start.setMinutes(Math.round(start.getMinutes()/15)*15); + start.addMinutes(delta); + this.start = start; + delta *= -1; + } this.delta = delta; this.end = new Date(this.start.getTime()); this.end.setMinutes(Math.round(this.end.getMinutes()/15)*15);