// Nothing of interest from here on...\r
//-------------------------------------------------------\r
var panelNum = 0; // use 1 for second panel\r
-var version = "1.32";\r
+var version = "1.33";\r
var versionURL = "http://comingnext.sourceforge.net/version.xml";\r
var calendarService = null;\r
var cacheEntriesHtml = [];\r
var months_translated = [];\r
+var weekdays_translated = [];\r
var orientation = '';\r
var now = new Date();\r
var mode = 0; // 0 = homescreen, 1 = fullscreen, 2 = settings, 3 = about, 4 = check for update\r
var reloadInterval = 6 * 60 * 60 * 1000; // = 6 hours; time interval for reloading calendar data\r
var errorOccured = false;\r
var entryLists = null; // stores all fetched calendar entries until data is refreshed\r
+var statupSuccessful = false; // indicates if everything started up wihtout errors. If we detect an error after that, it might just be a temporary problem e.g. by a backup process.\r
\r
// vars for daylight saving time\r
var summertime = false; // true, if current date is in summer, false if in winter\r
try {\r
var result = calendarService.IDataSource.Add(criteria);\r
if (result.ErrorCode)\r
- error(result.ErrorMessage);\r
+ throw(result.ErrorMessage);\r
+ } catch (e) {\r
+ error("collectLocales: " + e + ', line ' + e.line);\r
+ }\r
+ }\r
+ for (weekday = 0; weekday < 7; weekday++) {\r
+ var startDate = new Date(2000, 0, 2 + weekday); // date that we know for sure is a sunday\r
+\r
+ var item = new Object();\r
+ item.Type = "DayEvent";\r
+ item.StartTime = startDate;\r
+ item.Summary = "__weekday_temp" + weekday;\r
+\r
+ var criteria = new Object();\r
+ criteria.Type = "CalendarEntry";\r
+ criteria.Item = item;\r
+\r
+ try {\r
+ var result = calendarService.IDataSource.Add(criteria);\r
+ if (result.ErrorCode)\r
+ throw(result.ErrorMessage);\r
} catch (e) {\r
error("collectLocales: " + e + ', line ' + e.line);\r
}\r
throw(result.ErrorMessage);\r
var list = result.ReturnValue;\r
} catch(e) {\r
- error(e + ', line ' + e.line);\r
+ error("collectLocales: " + e + ', line ' + e.line);\r
return;\r
}\r
var ids = new Array();\r
var dateArr = [];\r
\r
while (list && (entry = list.getNext()) != undefined) {\r
- dateArr = entry.StartTime.replace(/,/g,'').replace(/\./g,':').replace(/ /g,' ').split(' ');\r
+ dateArr = (entry.StartTime + '').replace(/,/g,'').replace(/\./g,':').replace(/ /g,' ').split(' ');\r
var day = dateArr[1];\r
var month = dateArr[2];\r
var year = dateArr[3];\r
counter++;\r
}\r
} catch(e) {\r
- error(e + ', line ' + e.line);\r
+ error("collectLocales: " + e + ', line ' + e.line);\r
+ return;\r
+ }\r
+ try {\r
+ var startTime = new Date(2000,0,2);\r
+ var endTime = new Date(2000,0,9);\r
+ var listFiltering = {\r
+ Type:'CalendarEntry', \r
+ Filter:{\r
+ StartRange: startTime,\r
+ EndRange: endTime,\r
+ SearchText: '__weekday_temp',\r
+ Type: 'DayEvent'\r
+ }\r
+ }\r
+ var result = calendarService.IDataSource.GetList(listFiltering);\r
+ if (result.ErrorCode)\r
+ throw(result.ErrorMessage);\r
+ var weekdaylist = result.ReturnValue;\r
+ } catch(e) {\r
+ error("collectLocales: " + e + ', line ' + e.line);\r
+ return;\r
+ }\r
+ try {\r
+ var entry;\r
+ var counter2 = 0;\r
+ var curWeekday = "";\r
+\r
+ while (weekdaylist && (entry = weekdaylist.getNext()) != undefined) {\r
+ curWeekday = (entry.StartTime + '').split(',')[0];\r
+ log(entry.StartTime + ' -> ' + curWeekday + ' ' + counter2);\r
+ ids[counter + counter2] = entry.id;\r
+ weekdays_translated[counter2] = curWeekday;\r
+ counter2++;\r
+ }\r
+ } catch(e) {\r
+ error("collectLocales: " + e + ', line ' + e.line);\r
return;\r
}\r
log(ids);\r
Wednesday, 2009 August, 28 8.00.00 pm\r
Wednesday, 2009 August, 28 08:00:00 PM\r
*/\r
+ var result = null;\r
\r
- if (dateString == "" || dateString == null)\r
- return null;\r
- var dateArr = dateString.replace(/,/g,'').replace(/\./g,':').replace(/ /g,' ').split(' ');\r
- if (dateArr.length != 5 && dateArr.length != 6)\r
- return null;\r
-\r
- // parse date\r
- var weekDay = dateArr[0];\r
- var day = dateArr[1];\r
- var month = dateArr[2];\r
- var year = dateArr[3];\r
- // make sure month is set properly\r
- if (isNaN(parseInt(day))) {\r
- var tmp = day;\r
- day = month;\r
- month = tmp;\r
- } else if (isNaN(parseInt(year))) {\r
- var tmp = year;\r
- year = month;\r
- month = tmp;\r
+ if (dateString == "" || dateString == null || dateString == undefined)\r
+ return result;\r
+ if (dateString instanceof Date) {\r
+ // we already have a date object, no need to parse string here\r
+ result = dateString;\r
}\r
- // make sure day and year are set properly\r
- if (Number(day) > Number(year)) {\r
- var tmp = year;\r
- year = day;\r
- day = tmp;\r
+ else {\r
+ var dateArr = (dateString + '').replace(/,/g, '').replace(/\./g, ':').replace(/ /g, ' ').split(' ');\r
+ if (dateArr.length != 5 && dateArr.length != 6) \r
+ return null;\r
+ \r
+ // parse date\r
+ var weekDay = dateArr[0];\r
+ var day = dateArr[1];\r
+ var month = dateArr[2];\r
+ var year = dateArr[3];\r
+ // make sure month is set properly\r
+ if (isNaN(parseInt(day))) {\r
+ var tmp = day;\r
+ day = month;\r
+ month = tmp;\r
+ }\r
+ else \r
+ if (isNaN(parseInt(year))) {\r
+ var tmp = year;\r
+ year = month;\r
+ month = tmp;\r
+ }\r
+ // make sure day and year are set properly\r
+ if (Number(day) > Number(year)) {\r
+ var tmp = year;\r
+ year = day;\r
+ day = tmp;\r
+ }\r
+ month = months_translated[month];\r
+ \r
+ // parse time\r
+ var timeArr = dateArr[4].split(':');\r
+ if (timeArr.length != 3) \r
+ return null;\r
+ var hours = Number(timeArr[0]);\r
+ var minutes = Number(timeArr[1]);\r
+ var seconds = Number(timeArr[2]);\r
+ if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'pm' && hours < 12) \r
+ hours += 12;\r
+ if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'am' && hours == 12) \r
+ hours = 0;\r
+ \r
+ result = new Date(year, month - 1, day, hours, minutes, seconds);\r
}\r
- month = months_translated[month];\r
-\r
- // parse time\r
- var timeArr = dateArr[4].split(':');\r
- if (timeArr.length != 3)\r
- return null;\r
- var hours = Number(timeArr[0]);\r
- var minutes = Number(timeArr[1]);\r
- var seconds = Number(timeArr[2]);\r
- if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'pm' && hours < 12)\r
- hours += 12;\r
- if (dateArr.length == 6 && dateArr[5].toLowerCase() == 'am' && hours == 12)\r
- hours = 0;\r
-\r
- var result = new Date(year, month - 1, day, hours, minutes, seconds);\r
\r
// take care of daylight saving time\r
if (config['enableDaylightSaving'].Value) {\r
return result;\r
}\r
\r
+function getWeekdayLocalized(date) {\r
+ var localizedString = date.toLocaleDateString();\r
+ if (localizedString.match(/\d\d\/\d\d\/\d\d/)) {\r
+ return weekdays_translated[date.getDay()];\r
+ } else\r
+ return localizedString.split(',')[0];\r
+}\r
+\r
// returns a short date as string ("31.12" or "12.31") based on the format string which should look like "Wednesday, 26 August, 2009 12:00:00 am"\r
function formatDate(date, format)\r
{\r
if (config['showTodayAsText'].Value && isTomorrow(date))\r
return '<span class="tomorrow">' + config['tomorrowText'].Value + '</span>';\r
\r
+ if (format instanceof Date) {\r
+ // we don't know how to format this\r
+ if (config['dateFormat'].Value == 'auto' || config['dateFormat'].Value == 'DDMM')\r
+ return day + config['dateSeparator'].Value + month;\r
+ else\r
+ return month + config['dateSeparator'].Value + day;\r
+ }\r
var dateArr = format.replace(/,/g,'').replace(/\./g,':').replace(/ /g,' ').split(' ');\r
if (dateArr.length != 5 && dateArr.length != 6) {\r
// we don't know how to format this\r
\r
// check if we got additional or less calendars since our last update\r
var newCalendarList = listCalendars();\r
+ if (newCalendarList == null) {\r
+ // Something went wrong fetching the calendars list.\r
+ // This usually happens when a backup is being made.\r
+ // Retry the next time updateData() is called by \r
+ // resetting errorOccured\r
+ log('updateData(): listCalendars() failed, trying again laster...');\r
+ cacheEntriesHtml = ''; // make sure we replace the currently shown error message on the next update\r
+ errorOccured = false;\r
+ return;\r
+ }\r
if (newCalendarList.length != calendarList.length) {\r
calendarList = newCalendarList;\r
updateCalendarColors();\r
// some languages have very strange locale date formats, can't parse all those. Also some todos don't have dates at all.\r
entriesHtml += '<td colspan="4"><span class="date">' + entryDate + '</span> ';\r
} else {\r
- var weekDay = date.toLocaleDateString().substr(0,config['weekDayLength'].Value);\r
+ var weekDay = getWeekdayLocalized(date).substr(0,config['weekDayLength'].Value);\r
+ log('date.toLocaleDateString(): ' + date.toLocaleDateString());\r
+ log('weekDay: ' + weekDay);\r
var time = formatTime(date);\r
var dateStr = formatDate(date, entryDate);\r
if (entry.Type == 'ToDo' && overdue && config['markOverdueTodos'].Value) {\r
window.widget.onshow = handleOnShow;\r
\r
log("init(): finished...");\r
+ if (!errorOccured)\r
+ statupSuccessful = true;\r
}\r
\r
function checkOrientation()\r
Type: 'DayEvent'\r
}\r
}\r
- var result = calendarService.IDataSource.GetList(listFiltering);\r
- if (result.ErrorCode) {\r
- error(result.ErrorMessage);\r
+ var result = null;\r
+ try {\r
+ result = calendarService.IDataSource.GetList(listFiltering);\r
+ if (result.ErrorCode)\r
+ throw(result.ErrorMessage);\r
+ }\r
+ catch (e) {\r
+ error("getSettingsCalEntryId: GetList() failed: " + e + ', line ' + e.line);\r
return;\r
}\r
var list = result.ReturnValue;\r
try {\r
var result = calendarService.IDataSource.Add(criteria);\r
if (result.ErrorCode)\r
- error(result.ErrorMessage);\r
+ throw(result.ErrorMessage);\r
} catch (e) {\r
error("getSettingsCalEntryId: " + e + ', line ' + e.line);\r
}\r
LocalId: settingsCalEntryId\r
}\r
}\r
- var result = calendarService.IDataSource.GetList(listFiltering);\r
- if (result.ErrorCode) {\r
- error(result.ErrorMessage);\r
+ var result = null;\r
+ try {\r
+ result = calendarService.IDataSource.GetList(listFiltering);\r
+ if (result.ErrorCode)\r
+ throw(result.ErrorMessage);\r
+ }\r
+ catch (e) {\r
+ error("loadSettings: GetList() failed: " + e + ', line ' + e.line);\r
return;\r
}\r
var entry = result.ReturnValue.getNext();\r
try {\r
var result = calendarService.IDataSource.Add(criteria);\r
if (result.ErrorCode)\r
- error(result.ErrorMessage);\r
+ throw(result.ErrorMessage);\r
} catch (e) {\r
error("saveSettings: " + e + ', line ' + e.line);\r
}\r