Fix 24:00 again
authorsstamer <s.stamer@metaways.de>
Fri, 9 Jan 2015 12:33:10 +0000 (13:33 +0100)
committerPhilipp Schüle <p.schuele@metaways.de>
Wed, 14 Jan 2015 16:52:35 +0000 (17:52 +0100)
Change-Id: I0d6b65f91be9ec1b465f45ff4f02b01fe50fabb0
Reviewed-on: http://gerrit.tine20.com/customers/1519
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
Tested-by: Philipp Schüle <p.schuele@metaways.de>
tine20/Calendar/js/DaysView.js
tine20/Calendar/js/EventUI.js
tine20/Calendar/js/Printer/DaysView.js

index a5e1cc7..600c43d 100644 (file)
@@ -227,9 +227,14 @@ Ext.extend(Tine.Calendar.DaysView, Ext.Container, {
         
         this.dayStart = Ext.isDate(startTime) ? startTime : Date.parseDate(this.dayStart, 'H:i');
         this.dayEnd = Ext.isDate(endTime) ? endTime : Date.parseDate(this.dayEnd, 'H:i');
-        this.dayEndPx = this.getTimeOffset(this.dayEnd, true);
+        // 00:00 in users timezone is a spechial case where the user expects
+        // something like 24:00 and not 00:00
+        if (this.dayEnd.format('H:i') == '00:00') {
+            this.dayEnd = this.dayEnd.add(Date.MINUTE, -1);
+        }
+        this.dayEndPx = this.getTimeOffset(this.dayEnd);
         
-        this.cropDayTime = !! Tine.Tinebase.configManager.get('daysviewcroptime', 'Calendar') && !(!this.getTimeOffset(this.dayStart, false) && !this.getTimeOffset(this.dayEnd, true));
+        this.cropDayTime = !! Tine.Tinebase.configManager.get('daysviewcroptime', 'Calendar') && !(!this.getTimeOffset(this.dayStart) && !this.getTimeOffset(this.dayEnd));
         
         Tine.Calendar.DaysView.superclass.initComponent.apply(this, arguments);
     },
@@ -470,8 +475,8 @@ Ext.extend(Tine.Calendar.DaysView, Ext.Container, {
         
         // crop daytime
         if (this.cropDayTime) {
-            var cropStartPx = this.getTimeOffset(this.dayStart, false),
-                cropHeightPx = this.getTimeOffset(this.dayEnd, true) +2;
+            var cropStartPx = this.getTimeOffset(this.dayStart),
+                cropHeightPx = this.getTimeOffset(this.dayEnd) +2;
                 
             this.mainBody.setStyle('margin-top', '-' + cropStartPx + 'px');
             this.mainBody.setStyle('height', cropHeightPx + 'px');
@@ -493,7 +498,7 @@ Ext.extend(Tine.Calendar.DaysView, Ext.Container, {
     
     scrollTo: function(time) {
         time = Ext.isDate(time) ? time : new Date();
-        this.scroller.dom.scrollTop = this.getTimeOffset(time, false);
+        this.scroller.dom.scrollTop = this.getTimeOffset(time);
     },
     
     onBeforeScroll: function() {
@@ -551,7 +556,7 @@ Ext.extend(Tine.Calendar.DaysView, Ext.Container, {
     
     onShow: function() {
         this.onLayout();
-        this.scroller.dom.scrollTop = this.lastScrollPos || this.getTimeOffset(new Date(), false);
+        this.scroller.dom.scrollTop = this.lastScrollPos || this.getTimeOffset(new Date());
     },
     
     onBeforeHide: function() {
@@ -1203,11 +1208,10 @@ Ext.extend(Tine.Calendar.DaysView, Ext.Container, {
         }
     },
     
-    getTimeOffset: function(date, isEnd) {
-        var d = this.granularityUnitHeights / this.timeGranularity
-            hours = isEnd && (date.getHours() == 0) ? 24 : date.getHours();
+    getTimeOffset: function(date) {
+        var d = this.granularityUnitHeights / this.timeGranularity;
         
-        return Math.round(d * ( 60 * hours + date.getMinutes()));
+        return Math.round(d * ( 60 * date.getHours() + date.getMinutes()));
     },
     
     getTimeHeight: function(dtStart, dtEnd) {
index 3423650..1d237ca 100644 (file)
@@ -374,8 +374,8 @@ Tine.Calendar.DaysViewEventUI = Ext.extend(Tine.Calendar.EventUI, {
                 continue;
             }
             
-            var top = view.getTimeOffset(this.dtStart, false);
-            var height = this.startColNum == this.endColNum ? view.getTimeHeight(this.dtStart, this.dtEnd) : view.getTimeOffset(this.dtEnd, true);
+            var top = view.getTimeOffset(this.dtStart);
+            var height = this.startColNum == this.endColNum ? view.getTimeHeight(this.dtStart, this.dtEnd) : view.getTimeOffset(this.dtEnd);
             
             if (currColNum != this.startColNum) {
                 top = 0;
index f94682f..867e0e4 100644 (file)
@@ -39,7 +39,7 @@ Tine.Calendar.Printer.DaysViewRenderer = Ext.extend(Tine.Calendar.Printer.BaseRe
         
         // resize header/scroller to fullsize
         header.style.height = [header.firstChild.style.height, header.style.height].sort().pop();
-        scroller.style.height = view.dayEndPx - view.getTimeOffset(view.dayStart, false) + 20 + 'px';
+        scroller.style.height = view.dayEndPx - view.getTimeOffset(view.dayStart) + 20 + 'px';
         scroller.style.width = null;
         
         return this.generateTitle(view) + node.innerHTML;