]> code.delx.au - comingnext/blobdiff - comingNext/index.html
fixed 'overdue' text setting not beeing used
[comingnext] / comingNext / index.html
index cadf3296f7e06d0e63bdd4fd886b00be476a42af..6ac4e420a9893798f25185e8bcae17c764120cec 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
@@ -465,11 +472,28 @@ function updateData()
                var counter = 0;\r
                var entryDate = '';\r
                var dateArr = [];\r
-               var entriesHtml = '<table>';\r
+               var fontsize = 'normal';\r
+               if (mode == 0) {\r
+                       if (config['eventsPerWidget'].Value == 3) {\r
+                               fontsize = '17pt';\r
+                               changeCssClass('.icon', 'width:20px; height:20px');\r
+                       }\r
+                       else if (config['eventsPerWidget'].Value == 5) {\r
+                               fontsize = '10pt';\r
+                               changeCssClass('.icon', 'width:10px; height:10px');\r
+                       }\r
+                       else if (config['eventsPerWidget'].Value == 6) {\r
+                               fontsize = '8pt';\r
+                               changeCssClass('.icon', 'width:8px; height:8px');\r
+                       }\r
+               }\r
+               else\r
+                       changeCssClass('.icon', config['cssStyle_icon'].Value);\r
+               var entriesHtml = '<table style="font-size:' + fontsize + ';">';\r
                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 +595,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 +619,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">' + config['overdueText'].Value + '</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