From baf79397d17636ccb42d3fb14284abc867b4a613 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Thu, 2 Nov 2006 23:17:55 +0000 Subject: [PATCH] Monotone-Parent: fd91d6bbc4644da15f4f7b414a66a33e4d0d13dc Monotone-Revision: df76026e64c09583ec9c0b607c385a91356ae9b5 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2006-11-02T23:17:55 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/SchedulerUI.css | 7 ++- UI/WebServerResources/SchedulerUI.js | 81 +++++++++++++++++++-------- 2 files changed, 62 insertions(+), 26 deletions(-) diff --git a/UI/WebServerResources/SchedulerUI.css b/UI/WebServerResources/SchedulerUI.css index 85a2d6b0a..9c7284e56 100644 --- a/UI/WebServerResources/SchedulerUI.css +++ b/UI/WebServerResources/SchedulerUI.css @@ -316,7 +316,9 @@ TABLE.monthOverview DIV.appointmentView padding: 0px; } TABLE.monthOverview TD.contentOfDay -{ vertical-align: top; } +{ vertical-align: top; + overflow: hidden; + height: 15%; } SPAN.dayCellLabel { color: #77a; @@ -345,8 +347,7 @@ TABLE.weekOverview TD { border: 1px solid #99f; } TABLE.monthOverview TD -{ border: 2px solid #99f; - height: 15%; } +{ border: 2px solid #99f; } TABLE.dayOverview TD.header { text-align: center; diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 656586557..f1e3f4cb0 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -274,7 +274,7 @@ function restoreCurrentDaySelection(div) { var elements = div.getElementsByTagName("a"); var day = null; - var i = 7; + var i = 9; while (!day && i < elements.length) { day = elements[i].getAttribute("day"); @@ -423,7 +423,8 @@ function calendarDisplayCallback(http) var hour = null; if (http.callbackData["hour"]) hour = http.callbackData["hour"]; - scrollDayView(hour); + if (hour) + scrollDayView(hour); } else log ("ajax fuckage"); @@ -662,8 +663,11 @@ function onCalendarSelectAppointment(event, node) var aptCName = node.getAttribute("aptCName"); var row = $(aptCName); - if (row) + if (row) { + var div = row.parentNode.parentNode.parentNode; + div.scrollTop = row.offsetTop - (div.offsetHeight / 2); selectNode(row); + } event.cancelBubble = false; event.returnValue = false; @@ -673,44 +677,75 @@ function onCalendarSelectDay(event, node) { var day = node.getAttribute("day"); - if (currentView != 'dayview') - changeCalendarDisplayOfSelectedDay(node); + if (currentView == 'weekview') + changeWeekCalendarDisplayOfSelectedDay(node); + else if (currentView == 'monthview') + changeMonthCalendarDisplayOfSelectedDay(node); changeDateSelectorDisplay(day); event.cancelBubble = true; event.returnValue = false; } -function changeCalendarDisplayOfSelectedDay(node) +function changeWeekCalendarDisplayOfSelectedDay(node) { var tr = node.parentNode; var tbody = tr.parentNode; var oldSelected = -1; - var newSelected = -1; + if (tbody.parentNode.selectedCell) + oldSelected = tbody.parentNode.selectedCell.cellIndex; + else { + var cells = tr.cells; + var i = 0; + while (i < cells.length && oldSelected == -1) + if (cells[i].hasClassName("selectedDay")) + oldSelected = i; + else + i++; + } + tbody.parentNode.selectedCell = node; + var newSelected = node.cellIndex; + var rows = tbody.rows; - - var cells = tr.cells; - var i = 0; - while (i < cells.length && newSelected == -1) - if (cells[i] == node) - newSelected = i; - else - i++; - - var i = 0; - while (i < cells.length && oldSelected == -1) - if (cells[i].hasClassName("selectedDay")) - oldSelected = i; - else - i++; - for (i = 1; i < rows.length; i++) { rows[i].cells[oldSelected].removeClassName("selectedDay"); rows[i].cells[newSelected].addClassName("selectedDay"); } } +function findMonthCalendarSelectedCell(table) { + var tbody = table.tBodies[0]; + var rows = tbody.rows; + + var i = 1; + while (i < rows.length && !table.selectedCell) { + var cells = rows[i].cells; + var j = 0; + while (j < cells.length && !table.selectedCell) { + if (cells[j].hasClassName("selectedDay")) + table.selectedCell = cells[j]; + else + j++; + } + i++; + } +} + +function changeMonthCalendarDisplayOfSelectedDay(node) +{ + var tr = node.parentNode; + var table = tr.parentNode.parentNode; + + if (!table.selectedCell) + findMonthCalendarSelectedCell(table); + + if (table.selectedCell) + table.selectedCell.removeClassName("selectedDay"); + table.selectedCell = node; + node.addClassName("selectedDay"); +} + function onHideCompletedTasks(node) { hideCompletedTasks = (node.checked ? 1 : 0);