Monotone-Parent: 2338a6c35427b6ff10e22c3431c2efc72aea29d2

Monotone-Revision: b16d3e768a1190817b3b58f91b78ac06b1d30248

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-02-12T23:24:24
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2010-02-12 23:24:24 +00:00
parent d0d1e36499
commit d70f949961
8 changed files with 153 additions and 134 deletions
+54 -63
View File
@@ -8,6 +8,8 @@ var selectedCalendarCell;
var showCompletedTasks;
var currentDay = '';
var selectedDayNumber = -1;
var selectedDayDate = '';
var cachedDateSelectors = [];
@@ -659,6 +661,7 @@ function onSelectAll() {
return false;
}
/* in dateselector */
function onDaySelect(node) {
var day = node.getAttribute('day');
var needRefresh = (listFilter == 'view_selectedday'
@@ -677,6 +680,7 @@ function onDaySelect(node) {
changeCalendarDisplay( { "day": day } );
currentDay = day;
selectedDayDate = day;
if (needRefresh)
refreshEvents();
@@ -889,6 +893,7 @@ function tasksListCallback(http) {
log ("tasksListCallback Ajax error");
}
/* in dateselector */
function restoreCurrentDaySelection(div) {
var elements = $(div).select("TD.activeDay SPAN");
if (elements.size()) {
@@ -954,7 +959,6 @@ function changeCalendarDisplay(data, newView) {
var url = ApplicationBaseURL + newView;
var day = null;
var scrollEvent = null;
if (data) {
day = data['day'];
scrollEvent = data['scrollEvent'];
@@ -965,22 +969,10 @@ function changeCalendarDisplay(data, newView) {
if (day) {
if (data) {
var divs = $$('div.day[day='+day+']');
if (divs.length) {
var dayDiv = $("day"+day);
if (dayDiv) {
// Don't reload the view if the event is present in current view
// Deselect previous day
var selectedDivs = $$('div.day.selectedDay');
selectedDivs.each(function(div) {
div.removeClassName('selectedDay');
});
// Select new day
if (currentView != 'dayview')
divs.each(function(div) {
div.addClassName('selectedDay');
});
// Deselect day in date selector
if (document.selectedDate)
document.selectedDate.deselect();
@@ -991,7 +983,8 @@ function changeCalendarDisplay(data, newView) {
selectedCell = selectedLink[0].getParentWithTagName("td");
$(selectedCell).selectElement();
document.selectedDate = selectedCell;
}
} else
document.selectedDate = null;
// Scroll to event
if (scrollEvent) {
@@ -999,6 +992,8 @@ function changeCalendarDisplay(data, newView) {
scrollDayView(scrollEvent);
}
setSelectedDayDate(day);
return false;
}
else if (day.length == 6) {
@@ -1488,6 +1483,8 @@ function calendarDisplayCallback(http) {
}
attachDragControllers(contentView);
restoreSelectedDay();
refreshCalendarEvents(http.callbackData.scrollEvent);
var days = contentView.select("DIV.day");
@@ -1790,13 +1787,9 @@ function onCalendarSelectEvent(event) {
function onCalendarSelectDay(event) {
var day = this.getAttribute("day");
var needRefresh = (listFilter == 'view_selectedday'
&& day != currentDay);
setSelectedDayDate(day);
var needRefresh = (listFilter == 'view_selectedday' && day != currentDay);
if (currentView == 'weekview')
changeWeekCalendarDisplayOfSelectedDay(this);
else if (currentView == 'monthview')
changeMonthCalendarDisplayOfSelectedDay(this);
changeDateSelectorDisplay(day);
if (listOfSelection) {
@@ -1810,55 +1803,53 @@ function onCalendarSelectDay(event) {
changeCalendarDisplay( { "day": currentDay } );
}
function changeWeekCalendarDisplayOfSelectedDay(node) {
var daysView = $("daysView");
var daysDiv = daysView.childNodesWithTag("div");
for (var i = 0; i < daysDiv.length; i++) {
if (daysDiv[i].hasClassName("days")) {
var days = daysDiv[i].childNodesWithTag("div");
var headerDiv = $($("calendarHeader").childNodesWithTag("div")[1]);
var headerDays = headerDiv.childNodesWithTag("div");
function setSelectedDayDate(dayDate) {
if (selectedDayDate != dayDate) {
var day = $("day" + selectedDayDate);
if (day)
day.removeClassName("selectedDay");
var allDay = $("allDay" + selectedDayDate);
if (allDay)
allDay.removeClassName("selectedDay");
for (var j = 0; j < days.length; j++) {
if (days[j] == node
|| headerDays[j] == node) {
headerDays[j].addClassName("selectedDay");
days[j].addClassName("selectedDay");
}
else {
headerDays[j].removeClassName("selectedDay");
days[j].removeClassName("selectedDay");
}
}
}
selectedDayDate = dayDate;
day = $("day" + selectedDayDate);
day.addClassName("selectedDay");
selectedDayNumber = day.readAttribute("day-number");
allDay = $("allDay" + selectedDayDate);
if (allDay)
allDay.addClassName("selectedDay");
}
}
function findMonthCalendarSelectedCell(daysContainer) {
var found = false;
var i = 0;
while (!found && i < daysContainer.childNodes.length) {
var currentNode = daysContainer.childNodes[i];
if (currentNode.tagName == 'DIV'
&& currentNode.hasClassName("selectedDay")) {
daysContainer.selectedCell = currentNode;
found = true;
}
/* after loading a new view, to reselect the currently selected day */
function restoreSelectedDay() {
var day = null;
if (selectedDayDate.length > 0)
day = $("day" + selectedDayDate);
if (!day) {
if (selectedDayNumber > -1)
selectedDayDate = findDateFromDayNumber(selectedDayNumber);
else
i++;
selectedDayDate = currentDay;
if (selectedDayDate.length > 0)
day = $("day" + selectedDayDate);
}
if (day) {
selectedDayDate = null;
setSelectedDayDate(day.id.substr(3));
}
}
function changeMonthCalendarDisplayOfSelectedDay(node) {
var daysContainer = node.parentNode;
if (!daysContainer.selectedCell)
findMonthCalendarSelectedCell(daysContainer);
if (daysContainer.selectedCell)
daysContainer.selectedCell.removeClassName("selectedDay");
daysContainer.selectedCell = node;
node.addClassName("selectedDay");
function findDateFromDayNumber(dayNumber) {
var view;
if (currentView == "monthview")
view = $("monthDaysView");
else
view = $("daysView");
var days = view.select(".day");
return days[dayNumber].readAttribute("day");
}
function onShowCompletedTasks(event) {