X-Git-Url: https://code.delx.au/comingnext/blobdiff_plain/1903b6f7a245cfea4113e55882b10a62be73e2d2..221517ab0531bd5f0e3557da95c7e8e7f10b0211:/comingNext/index.html diff --git a/comingNext/index.html b/comingNext/index.html index af4a438..7e774b9 100644 --- a/comingNext/index.html +++ b/comingNext/index.html @@ -56,7 +56,7 @@ var config = { daylightSavingOffset: { Type: 'Int', Default: 1, Value: 1,}, hideWidgetOnCalendarOpen: { Type: 'Bool', Default: false, Value: false,}, showCalendarIndicator: { Type: 'Bool', Default: true, Value: true,}, - excludedCalendars: { Type: 'Array', Default: '', Value: '',}, + excludedCalendars: { Type: 'Array', Default: [], Value: [],}, cssStyle_background: { Type: 'String', Default: 'color:#ffffff; background-color:#000000', Value: 'color:#ffffff; background-color:#000000',}, cssStyle_backgroundFullscreen: { Type: 'String', Default: 'color:#ffffff; background-color:#000000', Value: 'color:#ffffff; background-color:#000000',}, cssStyle_weekDay: { Type: 'String', Default: '', Value: '',}, @@ -82,7 +82,7 @@ var config = { // Nothing of interest from here on... //------------------------------------------------------- var panelNum = 0; // use 1 for second panel -var version = "1.30"; +var version = "1.31"; var versionURL = "http://comingnext.sourceforge.net/version.xml"; var calendarService = null; var cacheEntriesHtml = []; @@ -98,6 +98,8 @@ var calendarList = []; var calendarColors = []; var updateTimer = null; var screenRotationTimer = null; +var lastUpdateTime = now; +var errorOccured = false; // vars for daylight saving time var summertime = false; // true, if current date is in summer, false if in winter @@ -192,6 +194,9 @@ function error(message) { console.info('Error: ' + message); document.getElementById("calendarList").innerHTML = 'Error: ' + message; + document.getElementById("fullscreenCalendarList").innerHTML = 'Error: ' + message; + errorOccured = true; + document.onclick = null; } function areDatesEqual(date1, date2) @@ -514,6 +519,9 @@ function formatTime(date) function updateData() { console.info('updateData()'); + if (errorOccured) { + return; + } // check if we got additional or less calendars since our last update var newCalendarList = listCalendars(); @@ -786,6 +794,8 @@ function updateData() document.getElementById('fullscreenCalendarList').innerHTML = entriesHtml; cacheEntriesHtml = entriesHtml; } + + lastUpdateTime = new Date(); } catch(e) { error('displaying list:' + e + ', line ' + e.line); return; @@ -811,6 +821,14 @@ function updateScreen() updateHomescreen(); else if (mode == 1) updateFullscreen(); + + var time = new Date(); + if (time.getTime() - lastUpdateTime.getTime() > config['updateDataInterval'].Value * 60 * 1000) { + console.info('updateScreen(): force updateData() because last update was too long ago (' + (time.getTime() - lastUpdateTime.getTime()) / 1000 + 's)'); + clearUpdateTimer(); + updateData(); + setUpdateTimer(); // reinitialize update timer + } } function launchCalendar() @@ -836,8 +854,8 @@ function init() else throw('device object does not exist'); } catch(e) { - error('loading Calendar service: ' + e + ', line ' + e.line); - return; + error('loading Calendar service: ' + e + ', line ' + e.line + '
' + getLocalizedText('menu.help') + ''); + //return; } calendarList = listCalendars(); @@ -885,15 +903,18 @@ function createMenu() var id = 0; var menuSettings = new MenuItem(getLocalizedText('menu.settings'), id++); var menuCallApp = new MenuItem(getLocalizedText('menu.openCalendarApp'), id++); + var menuHelp = new MenuItem(getLocalizedText('menu.help'), id++); var menuUpdate = new MenuItem(getLocalizedText('menu.update'), id++); var menuAbout = new MenuItem(getLocalizedText('menu.about'), id++); menuSettings.onSelect = showSettings; menuAbout.onSelect = showAbout; menuCallApp.onSelect = launchCalendar; menuUpdate.onSelect = showUpdate; + menuHelp.onSelect = showHelp; window.menu.clear(); window.menu.append(menuCallApp); window.menu.append(menuSettings); + window.menu.append(menuHelp); window.menu.append(menuUpdate); window.menu.append(menuAbout); } @@ -1097,8 +1118,12 @@ function loadSettings() config[key].Value = value; else if (config[key].Type == 'UID') config[key].Value = Number(value); - else if (config[key].Type == 'Array') + else if (config[key].Type == 'Array') { config[key].Value = value.split("^"); + if (config[key].Value.length == 1 && config[key].Value[0] == "") { + config[key].Value = []; + } + } } settingsCache = entry.Summary; updateCssClasses(); @@ -1188,6 +1213,10 @@ function showAbout() document.getElementById("name").innerHTML = "Coming Next " + version; } +function showHelp() { + widget.openURL('http://comingnext.sf.net/help'); +} + function updateFullscreen() { } @@ -1198,13 +1227,16 @@ function showFullscreen() hideViews(); document.getElementById("fullscreenView").style.display = "block"; document.getElementById('body').className = "backgroundFullscreen"; - document.onclick = launchCalendar; + if (!errorOccured) + document.onclick = launchCalendar; createMenu(); updateData(); } function getBackgroundImage() { + if (errorOccured) + return ''; var bgImage; if (config['backgroundImageLocation'].Value == config['backgroundImageLocation'].ValidValues[0]) // internal bgImage = 'background_' + orientation + '.png'; @@ -1434,6 +1466,33 @@ function sortCalendarEntries(a, b) } } } + // NOTE: events my have no date information at all. In that case, we list events without date first + else if (atime && !btime) { + return 1; + } + else if (!atime && btime) { + return -1; + } + else if (!atime && !btime) { + // sort by type + if (a.Type != b.Type) { + if (a.Type < b.Type) { + return -1; + } + else if (a.Type > b.Type) { + return 1; + } + } + // sort by description + else if (a.Summary && b.Summary && a.Summary != b.Summary) { + if (a.Summary < b.Summary) { + return -1; + } + else if (a.Summary > b.Summary) { + return 1; + } + } + } return 0; } @@ -1453,6 +1512,7 @@ function updateCalendarColors()