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()