зеркало из https://github.com/mozilla/pjs.git
Bug 331145 Tooltip for task without due date is not displayed and causes javascript error, r=mvl
This commit is contained in:
Родитель
0f94860aad
Коммит
02cf6aab18
|
@ -250,34 +250,29 @@ function calGetString(aBundleName, aStringName)
|
|||
Otherwise return the previous ocurrence. **/
|
||||
function getCurrentNextOrPreviousRecurrence(calendarEvent)
|
||||
{
|
||||
var isValid = false;
|
||||
var eventStartDate;
|
||||
|
||||
if (calendarEvent.recur) {
|
||||
var now = new Date();
|
||||
var result = new Object();
|
||||
var dur = calendarEvent.endDate.jsDate - calendarEvent.startDate.jsDate;
|
||||
|
||||
// To find current event when now is during event, look for occurrence
|
||||
// starting duration ago.
|
||||
var probeTime = now.getTime() - dur;
|
||||
isValid = calendarEvent.getNextRecurrence(probeTime, result);
|
||||
|
||||
if (isValid) {
|
||||
eventStartDate = new Date(result.value);
|
||||
} else {
|
||||
isValid = calendarEvent.getPreviousOccurrence(probeTime, result);
|
||||
if (isValid) {
|
||||
eventStartDate = new Date(result.value);
|
||||
}
|
||||
}
|
||||
if (!calendarEvent.recurrenceInfo) {
|
||||
return calendarEvent;
|
||||
}
|
||||
|
||||
if (!isValid) {
|
||||
eventStartDate = new Date( calendarEvent.startDate.jsDate );
|
||||
|
||||
var dur = calendarEvent.duration.clone();
|
||||
dur.isNegative = true;
|
||||
|
||||
// To find current event when now is during event, look for occurrence
|
||||
// starting duration ago.
|
||||
var probeTime = now();
|
||||
probeTime.addDuration(dur);
|
||||
//XXX getNextOccurrence doesn't work, bug 337346
|
||||
//var occ = calendarEvent.recurrenceInfo.getNextOccurrence(probeTime);
|
||||
var occtime = calendarEvent.recurrenceInfo.getNextOccurrenceDate(probeTime);
|
||||
|
||||
var occ;
|
||||
if (!occtime) {
|
||||
var occs = calendarEvent.recurrenceInfo.getOccurrences(calendarEvent.startDate, probeTime, {});
|
||||
occ = occs[occs.length -1];
|
||||
} else {
|
||||
occ = calendarEvent.recurrenceInfo.getOccurrenceFor(occtime);
|
||||
}
|
||||
|
||||
return eventStartDate;
|
||||
return occ;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -61,24 +61,14 @@ function onMouseOverItem( occurrenceBoxMouseEvent )
|
|||
if ("occurrence" in occurrenceBoxMouseEvent.currentTarget) {
|
||||
// occurrence of repeating event or todo
|
||||
var occurrence = occurrenceBoxMouseEvent.currentTarget.occurrence;
|
||||
var item = occurrence;
|
||||
var start;
|
||||
var endEx;
|
||||
if (occurrence.startDate) {
|
||||
start = occurrence.startDate.jsDate;
|
||||
endEx = occurrence.endDate.jsDate;
|
||||
}
|
||||
if (occurrence.entryDate) {
|
||||
start = occurrence.entryDate.jsDate;
|
||||
endEx = occurrence.dueDate.jsDate;
|
||||
}
|
||||
|
||||
const toolTip = document.getElementById("itemTooltip");
|
||||
var holderBox = null;
|
||||
if (isEvent(item)) {
|
||||
holderBox = getPreviewForEvent(item, start, endEx);
|
||||
} else if (isToDo(item)) {
|
||||
holderBox = getPreviewForTask(item, start, endEx);
|
||||
|
||||
var holderBox;
|
||||
if (isEvent(occurrence)) {
|
||||
holderBox = getPreviewForEvent(occurrence, occurrence.startDate, occurrence.endDate);
|
||||
} else if (isToDo(occurrence)) {
|
||||
holderBox = getPreviewForTask(occurrence);
|
||||
}
|
||||
if (holderBox) {
|
||||
setToolTipContent(toolTip, holderBox);
|
||||
|
@ -247,12 +237,6 @@ function getPreviewForEvent( event, instStartDate, instEndDate )
|
|||
|
||||
if (event.startDate || instStartDate)
|
||||
{
|
||||
var eventStart = new Date(event.startDate.jsDate);
|
||||
var eventEnd = event.endDate && new Date(event.endDate.jsDate);
|
||||
if (event.startDate.isDate && eventEnd) {
|
||||
eventEnd.setDate(eventEnd.getDate() - 1);
|
||||
}
|
||||
|
||||
var startDate, endDate;
|
||||
if (instStartDate && instEndDate) {
|
||||
startDate = instStartDate;
|
||||
|
@ -260,11 +244,9 @@ function getPreviewForEvent( event, instStartDate, instEndDate )
|
|||
} else {
|
||||
// Event may be recurrent event. If no displayed instance specified,
|
||||
// use next instance, or previous instance if no next instance.
|
||||
startDate = instStartDate || getCurrentNextOrPreviousRecurrence(event);
|
||||
var eventDuration = (event.endDate
|
||||
? event.endDate.jsDate - event.startDate.jsDate
|
||||
: 0);
|
||||
endDate = new Date(startDate.getTime() + eventDuration);
|
||||
var occ = getCurrentNextOrPreviousRecurrence(event);
|
||||
startDate = instStartDate || occ.startDate;
|
||||
endDate = occ.endDate;
|
||||
}
|
||||
boxAppendLabeledDateTimeInterval(vbox, "tooltipDate", startDate, endDate);
|
||||
}
|
||||
|
@ -379,10 +361,14 @@ function boxAppendLabeledDateTimeInterval(box, labelProperty, start, end)
|
|||
.getService(Components.interfaces.calIDateTimeFormatter);
|
||||
var startString = new Object();
|
||||
var endString = new Object();
|
||||
start = jsDateToDateTime(start).getInTimezone(calendarDefaultTimezone());
|
||||
end = jsDateToDateTime(end).getInTimezone(calendarDefaultTimezone());
|
||||
start = start.getInTimezone(calendarDefaultTimezone());
|
||||
end = end.getInTimezone(calendarDefaultTimezone());
|
||||
dateFormatter.formatInterval(start, end, startString, endString);
|
||||
boxAppendLabeledText(box, labelProperty, startString.value + ' - ' + endString.value);
|
||||
if (endString.value != "") {
|
||||
boxAppendLabeledText(box, labelProperty, startString.value + ' - ' + endString.value);
|
||||
} else {
|
||||
boxAppendLabeledText(box, labelProperty, startString.value);
|
||||
}
|
||||
}
|
||||
|
||||
function boxInitializeHeaderGrid(box)
|
||||
|
|
Загрузка…
Ссылка в новой задаче