]> code.delx.au - comingnext/blobdiff - comingNext/index.html
support for third panel
[comingnext] / comingNext / index.html
index 5d7245ed313ff7335da6fe59c79c1cde616a27e7..ad665667916acdcf621703e0baccaad8dd544c52 100644 (file)
@@ -17,6 +17,7 @@
 .now { }\r
 .description { }\r
 .icon { }\r
+.overdue {}\r
 </style>\r
 \r
 <script type="text/javascript" src="localizedTextStrings.js" charset="utf-8" />\r
@@ -35,6 +36,8 @@ var config = {
        tomorrowText: { Type: 'String', Default: getLocalizedText('settings.default.tomorrowText'), Value: getLocalizedText('settings.default.tomorrowText'),},\r
        showNowAsText: { Type: 'Bool', Default: true, Value: true,},\r
        nowText: { Type: 'String', Default: getLocalizedText('settings.default.nowText'), Value: getLocalizedText('settings.default.nowText'),},\r
+       markOverdueTodos: { Type: 'Bool', Default: true, Value: true,},\r
+       overdueText: {Type: 'String', Default: getLocalizedText('settings.default.overdueText'), Value: getLocalizedText('settings.default.overdueText'),},\r
        dateSeparator: { Type: 'String', Default: getLocalizedText('settings.default.dateSeparator'), Value: getLocalizedText('settings.default.dateSeparator'),},\r
        dateFormat: { Type: 'Enum', Default: 'auto', Value: 'auto', ValidValues: ['auto', 'DDMM', 'MMDD'],},\r
        weekDayLength: { Type: 'Int', Default: 2, Value: 2,},\r
@@ -55,6 +58,7 @@ var config = {
        cssStyle_now: { Type: 'String', Default: 'color:#ff00ff', Value: 'color:#ff00ff',},\r
        cssStyle_description: { Type: 'String', Default: '', Value: '',},\r
        cssStyle_icon: { Type: 'String', Default: 'width:15px; height:15px', Value: 'width:15px; height:15px',},\r
+       cssStyle_overdue: { Type: 'String', Default: 'color:#ffff00', Value: 'color:#ffff00',},\r
 }\r
 \r
 \r
@@ -63,7 +67,7 @@ var config = {
 // Nothing of interest from here on...\r
 //-------------------------------------------------------\r
 var panelNum = 0; // use 1 for second panel\r
-var version = "1.25";\r
+var version = "1.26";\r
 var versionURL = "http://comingnext.sourceforge.net/version.xml";\r
 var calendarService = null;\r
 var cacheEntriesHtml = [];\r
@@ -150,25 +154,28 @@ function error(message)
        document.getElementById("calendarList").innerHTML = 'Error: ' + message;\r
 }\r
 \r
-function isToday(date)\r
+function areDatesEqual(date1, date2)\r
 {\r
-       if (date.getDate() == now.getDate() && date.getMonth() == now.getMonth())\r
-               return true;\r
-       return false;\r
+       return (date1.getFullYear() == date2.getFullYear() && \r
+                       date1.getMonth() == date2.getMonth() && \r
+                       date1.getDate() == date2.getDate());\r
 }\r
 \r
 function isTomorrow(date)\r
 {\r
-       if ((date.getDate() == now.getDate() + 1 && date.getMonth() == now.getMonth()) ||\r
-           (date.getDate() == 0 && date.getMonth() == now.getMonth() + 1) ||\r
-           (date.getDate() == 0 && date.getMonth() == now.getMonth() + 1 && date.getYear() == now.getYear() + 1))\r
-               return true;\r
-       return false;\r
+       // tommorow = now + 1 day\r
+       // ToDo: some days can be shorter as 24 hours(daylight saving change day)\r
+       return areDatesEqual(date, new Date (now.getTime() + 24*60*60*1000));\r
+}\r
+\r
+function isToday(date)\r
+{\r
+       return areDatesEqual(date, now);\r
 }\r
 \r
 function collectLocales()\r
 {\r
-       var tmpyear = ((panelNum == 0) ? 2000 : 2001);\r
+       var tmpyear = 2000 + panelNum;\r
        var month = 0;\r
 \r
        if (months_translated.length > 0)\r
@@ -469,7 +476,7 @@ function updateData()
                var eventIds = [];\r
                var max;\r
                if (mode == 0)\r
-                       max = ((panelNum == 0) ? config['eventsPerWidget'].Value : 2 * config['eventsPerWidget'].Value);\r
+                       max = (panelNum + 1) * config['eventsPerWidget'].Value;\r
                else\r
                        max = 30; // we can display a lot more events in fullscreen mode\r
 \r
@@ -571,10 +578,20 @@ function updateData()
                                }\r
 \r
                                // skip events for the first panel in case this is the second one and we're not in fullscreen mode\r
-                               if (mode == 0 && panelNum == 1 && counter < config['eventsPerWidget'].Value + 1) {\r
+                               if (mode == 0 && panelNum > 0 && counter < panelNum * config['eventsPerWidget'].Value + 1) {\r
                                        console.info('skipping (already in first widget) ' + entry.id);\r
                                        continue;\r
                                }\r
+                               \r
+                               // mark overdue todos\r
+                               var overdue = false;\r
+                               if (entry.Type == 'ToDo') {\r
+                                       var tmp1 = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0,0,0);\r
+                                       var tmp2 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0,0,0);\r
+                                       if (tmp1.getTime() < tmp2.getTime()) {\r
+                                               overdue = true;\r
+                                       }\r
+                               }\r
 \r
                                // generate html output\r
                                entriesHtml += '<tr><td><img class="icon" src="' + entry.Type + '.png" /></td>';\r
@@ -585,7 +602,10 @@ function updateData()
                                        var weekDay = date.toLocaleDateString().substr(0,config['weekDayLength'].Value);\r
                                        var time = formatTime(date);\r
                                        var dateStr = formatDate(date, entryDate);\r
-                                       if (entry.Type == 'ToDo' || entry.Type == 'Anniversary' || entry.Type == 'DayEvent' || entry.Type == 'Reminder') {\r
+                                       if (entry.Type == 'ToDo' && overdue && config['markOverdueTodos'].Value) {\r
+                                               dateStr = '<span class="overdue">Overdue</span>';\r
+                                               entriesHtml += '<td colspan="4" width="1px"><span class="date">' + dateStr + '</span> ';\r
+                                       } else if (entry.Type == 'ToDo' || entry.Type == 'Anniversary' || entry.Type == 'DayEvent' || entry.Type == 'Reminder') {\r
                                                if ((isToday(date) || isTomorrow(date)) && config['showTodayAsText'].Value) // show weekday if the date string is not text. looks odd otherwise\r
                                                        entriesHtml += '<td colspan="4" width="1px"><span class="date">' + dateStr + '</span> ';\r
                                                else\r
@@ -1042,6 +1062,7 @@ hr { color:#ffffff; background-color:#ffffff; height:1px; text-align:left; borde
                <p class="credits">Paul Moore (bug fixes, new features and code cleanup)</p>\r
                <p class="credits">Manfred Hanselmann (DST support)</p>\r
                <p class="credits">Christophe Milsent (translation support & french translation</p>\r
+               <p class="credits">Flavio Nathan (portuguese-brazilian translation</p>\r
        <p>This software is open source and licensed under the GPLv3.</p>\r
        <p>Visit sourceforge.net/projects/comingnext for free updates.</p>\r
        <hr />\r