]> code.delx.au - comingnext/commitdiff
added debug.js for running the widget on a desktop browser without development enviro...
authorMichael Prager <mail@michaelprager.de>
Mon, 9 Apr 2012 23:10:33 +0000 (01:10 +0200)
committerMichael Prager <mail@michaelprager.de>
Mon, 9 Apr 2012 23:10:33 +0000 (01:10 +0200)
This makes the use of Nokia's Web Development Kit obsolete (didn't support WRT widgets anymore anyways). Note that debug.js is not distributed in the release package and is supposed to be used for development purposes only. Also keep in mind that debug.js only contains the bare essentials to make the ComingNext widget work. It is neither feature complete, nor bug free. It does get the job done though. :-)

comingNext/index.html
debug.js [new file with mode: 0644]

index f30cb7d77a95fb9ebbc17fd69b41b0d55a7ed599..1002ec5472cfa5251dac85bf204095c24e43266c 100644 (file)
@@ -26,9 +26,9 @@
 .calendar6 { background-color:#9fdf57 }\r
 </style>\r
 \r
-<script type="text/javascript" src="localizedTextStrings.js" charset="utf-8" />\r
-\r
-<script>\r
+<script type="text/javascript" src="localizedTextStrings.js" charset="utf-8"></script>\r
+<script type="text/javascript" src="../debug.js" charset="utf-8"></script>\r
+<script type="text/javascript">\r
 // valid types for the config object are 'Int', 'Bool', 'String', 'Enum', 'UID', 'Array'\r
 var config = {\r
        monthRange: { Type: 'Int', Default: 2, Value: 2,},\r
diff --git a/debug.js b/debug.js
new file mode 100644 (file)
index 0000000..173d3c8
--- /dev/null
+++ b/debug.js
@@ -0,0 +1,320 @@
+var device = {\r
+       getServiceObject: function(cal, datasource)\r
+       {\r
+               return {\r
+                       IDataSource:\r
+                       {\r
+                               GetList: function(criteria)\r
+                               {\r
+                                       if (criteria.Type == "CalendarEntry") {\r
+                                               var entries = [];\r
+                                               for(var i = 0; i < device.data.default.length; i++) {\r
+                                                       var entry = device.data.default[i];\r
+                                                       var searchText = criteria.Filter.SearchText;\r
+                                                       var localId = criteria.Filter.LocalId;\r
+                                                       var type = criteria.Filter.Type;\r
+                                                       var include = true;\r
+                                                       var startRange = criteria.Filter.StartRange;\r
+                                                       var endRange = criteria.Filter.EndRange;\r
+                                                       if (searchText != undefined && entry.Summary != undefined && entry.Summary.indexOf(searchText) == -1) {\r
+                                                               include = false;\r
+                                                       }\r
+                                                       if (localId != undefined && entry.LocalId != undefined && entry.LocalId != localId) {\r
+                                                               include = false;\r
+                                                       }\r
+                                                       if (type != undefined && entry.Type != undefined && type != entry.Type) {\r
+                                                               include = false;\r
+                                                       }\r
+                                                       if (startRange != undefined && entry.StartTime != undefined && this.StringToDate(entry.StartTime) < startRange) {\r
+                                                               include = false;\r
+                                                       }\r
+                                                       if (endRange != undefined && entry.EndTime != undefined && this.StringToDate(entry.EndTime) > endRange) {\r
+                                                               include = false;\r
+                                                       }\r
+                                                       if (include)\r
+                                                               entries.push(entry);\r
+                                               }\r
+                                               return {\r
+                                                       ErrorCode: 0,\r
+                                                       ErrorMessage: "",\r
+                                                       ReturnValue:\r
+                                                       {\r
+                                                               data: entries,\r
+                                                               dataPtr: 0,\r
+                                                               getNext: function _getNext()\r
+                                                               {\r
+                                                                       if (this.dataPtr < this.data.length)\r
+                                                                               return this.data[this.dataPtr++];\r
+                                                                       else\r
+                                                                               return undefined;\r
+                                                               }\r
+                                                       }\r
+                                               };\r
+                                       }\r
+                                       else if (criteria.Type == "Calendar") {\r
+                                               return {\r
+                                                       ErrorCode: 0,\r
+                                                       ErrorMessage: "",\r
+                                                       ReturnValue:\r
+                                                       {\r
+                                                               data: [ "default" ],\r
+                                                               dataPtr: 0,\r
+                                                               getNext: function _getNext()\r
+                                                               {\r
+                                                                       if (this.dataPtr < this.data.length)\r
+                                                                               return this.data[this.dataPtr++];\r
+                                                                       else\r
+                                                                               return undefined;\r
+                                                               }\r
+                                                       }\r
+                                               };\r
+                                       }\r
+                                       return null;\r
+                               },\r
+                               Add: function (criteria)\r
+                               {\r
+                                       if (criteria.Type == "CalendarEntry") {\r
+                                               var cal = device.data.default;\r
+                                               var itemId = 0;\r
+                                               if (criteria.Item.id == undefined && criteria.Item.LocalId != undefined)\r
+                                                       criteria.Item.id = criteria.Item.LocalId;\r
+                                               var overwriteExisting = false;\r
+                                               var existingIndex = -1;\r
+                                               if (criteria.Item.id != undefined || criteria.Item.LocalId != undefined) {\r
+                                                       itemId = criteria.Item.id;\r
+                                                       for(var i = 0; i < cal.length; i++) {\r
+                                                               if (cal[i].id != undefined && cal[i].id == itemId) {\r
+                                                                       overwriteExisting = true;\r
+                                                                       existingIndex = i;\r
+                                                                       break;\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                               else {\r
+                                                       for(var i = 0; i < cal.length; i++) {\r
+                                                               if (cal[i].id != undefined && cal[i].id == itemId) {\r
+                                                                       itemId++;\r
+                                                                       i = 0;\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                               criteria.Item.id = itemId;\r
+                                               criteria.Item.LocalId = itemId;\r
+                                               if (criteria.Item.StartTime != undefined && criteria.Item.StartTime instanceof Date)\r
+                                                       criteria.Item.StartTime = this.DateToString(criteria.Item.StartTime);\r
+                                               if (criteria.Item.EndTime != undefined && criteria.Item.EndTime instanceof Date)\r
+                                                       criteria.Item.EndTime = this.DateToString(criteria.Item.EndTime);\r
+                                               if (overwriteExisting)\r
+                                                       cal[existingIndex] = criteria.Item;\r
+                                               else \r
+                                                       cal.push(criteria.Item);\r
+                                               return {\r
+                                                       ErrorCode: 0,\r
+                                                       ErrorMessage: ""\r
+                                               }\r
+                                       }\r
+                                       else {\r
+                                               return {\r
+                                                       ErrorCode: 1,\r
+                                                       ErrorMessage: "invalid citeria.Type"\r
+                                               }\r
+                                       }\r
+                               },\r
+                               Delete: function (criteria)\r
+                               {\r
+                                       var cal = device.data.default;\r
+                                       for(var i = cal.length - 1; i >= 0; i--) {\r
+                                               if (criteria.Data != undefined && criteria.Data.IdList != undefined) {\r
+                                                       for(var j = 0; j < criteria.Data.IdList.length; j++) {\r
+                                                               if (criteria.Data.IdList[j] == cal[i].id) {\r
+                                                                       cal.splice(i, 1);\r
+                                                                       break;\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                                       return {\r
+                                               ErrorCode: 0,\r
+                                               ErrorMessage: ""\r
+                                       }\r
+                               },\r
+                               RequestNotification: function(criteria, callback)\r
+                               {\r
+                                       return {\r
+                                               ErrorCode: 0,\r
+                                               ErrorMessage: ""\r
+                                       }\r
+                               },\r
+                               Cancel: function(request)\r
+                               {\r
+                                       return {\r
+                                               ErrorCode: 0,\r
+                                               ErrorMessage: ""\r
+                                       }\r
+                               },\r
+                               DateToString: function(date) {\r
+                                       // Wednesday, 26 April, 2012 23:…\r
+                                       var weekdays = [ "Sunday", "Monday", "Thuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];\r
+                                       var months = [ "January", "Februrary", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];\r
+                                       var hours = date.getHours(); if (hours < 10) hours = "0" + hours;\r
+                                       var minutes = date.getMinutes(); if (minutes < 10) minutes = "0" + minutes;\r
+                                       var seconds = date.getSeconds(); if (seconds < 10) seconds = "0" + seconds;\r
+                                       return weekdays[date.getDay()] + ", " + date.getDate() + " " + months[date.getMonth()] + " " + date.getFullYear() + ", " + hours + ":" + minutes + ":" + seconds;\r
+                               },\r
+                               StringToDate: function(string) {\r
+                                       var parts = string.replace(/,/g,'').replace(/  /g,' ').split(' ');\r
+                                       var months = [];\r
+                                       months["January"] = 0;\r
+                                       months["February"] = 1;\r
+                                       months["March"] = 2;\r
+                                       months["April"] = 3;\r
+                                       months["May"] = 4;\r
+                                       months["June"] = 5;\r
+                                       months["July"] = 6;\r
+                                       months["August"] = 7;\r
+                                       months["September"] = 8;\r
+                                       months["October"] = 9;\r
+                                       months["November"] = 10;\r
+                                       months["December"] = 11;\r
+                                       var weekdays = [];\r
+                                       weekdays["Sunday"] = 0;\r
+                                       weekdays["Monday"] = 1;\r
+                                       weekdays["Thuesday"] = 2;\r
+                                       weekdays["Wednesday"] = 3;\r
+                                       weekdays["Thursday"] = 4;\r
+                                       weekdays["Friday"] = 5;\r
+                                       weekdays["Saturday"] = 6;\r
+                                       var weekday = weekdays[parts[0]];\r
+                                       var day = Number(parts[1]);\r
+                                       var month = months[parts[2]];\r
+                                       var year = Number(parts[3]);\r
+                                       var timeParts = parts[4].split(':');\r
+                                       var hours = Number(timeParts[0]);\r
+                                       var minutes = Number(timeParts[1]);\r
+                                       var seconds = Number(timeParts[2]);\r
+                                       return new Date(year, month, day, hours, minutes, seconds);\r
+                               },\r
+                       }\r
+               }\r
+       },\r
+       data:\r
+       {\r
+               default: [ ]\r
+       },\r
+}\r
+\r
+device.data.default = [\r
+       {\r
+               id: 0,\r
+               LocalId: 0,\r
+               Type: "Meeting",\r
+               CalendarName: "default",\r
+               Summary: "summary",\r
+               Location: "location",\r
+               Status: undefined,\r
+               StartTime: device.getServiceObject().IDataSource.DateToString(new Date((new Date()).getTime() + 1000 * 60 * 1 * 1)),\r
+               EndTime: device.getServiceObject().IDataSource.DateToString(new Date((new Date()).getTime() + 1000 * 60 * 60 * 2)),\r
+               InstanceStartTime: undefined,\r
+               InstanceEndTime: undefined\r
+       },\r
+       {\r
+               id: 1,\r
+               LocalId: 1,\r
+               Type: "DayEvent",\r
+               CalendarName: "default",\r
+               Summary: "summary2",\r
+               Location: "location2",\r
+               Status: undefined,\r
+               StartTime: device.getServiceObject().IDataSource.DateToString(new Date((new Date()).getTime() + 1000 * 60 * 60 * 24)),\r
+               EndTime: device.getServiceObject().IDataSource.DateToString(new Date((new Date()).getTime() + 1000 * 60 * 60 * 24)),\r
+               InstanceStartTime: undefined,\r
+               InstanceEndTime: undefined\r
+       },\r
+       {\r
+               id: 2,\r
+               LocalId: 2,\r
+               Type: "DayEvent",\r
+               CalendarName: "default",\r
+               Summary: "summary3",\r
+               Location: "location3",\r
+               Status: undefined,\r
+               StartTime: device.getServiceObject().IDataSource.DateToString(new Date((new Date()).getTime() + 1000 * 60 * 60 * 24 * 2)),\r
+               EndTime: device.getServiceObject().IDataSource.DateToString(new Date((new Date()).getTime() + 1000 * 60 * 60 * 24 * 2)),\r
+               InstanceStartTime: undefined,\r
+               InstanceEndTime: undefined\r
+       },\r
+];\r
+\r
+window.menu = {\r
+       leftText: "undef",\r
+       leftCallback: undefined,\r
+       rightText: "undef",\r
+       rightCallback: undefined,\r
+       menuContent: [],\r
+       setLeftSoftkeyLabel: function(text, callback) {\r
+               if (text == "" && callback == null) {\r
+                       text = "Menu";\r
+                       callback = this.defaultLeftCallback;\r
+               }\r
+               this.leftText = text;\r
+               this.leftCallback = callback;\r
+               this.update();\r
+       },\r
+       setRightSoftkeyLabel: function(text, callback) {\r
+               if (text == "" && callback == null) {\r
+                       text = "Back";\r
+                       callback = this.defaultRightCallback;\r
+               }\r
+               this.rightText = text;\r
+               this.rightCallback = callback;\r
+               this.update();\r
+       },\r
+       defaultLeftCallback: function() {\r
+       },\r
+       defaultRightCallback: function() {\r
+               back();\r
+       },\r
+       clear: function() {\r
+               this.menuContent = [];\r
+               this.update();\r
+       },\r
+       append: function(arg1) {\r
+               this.menuContent[this.menuContent.length] = arg1;\r
+               this.update();\r
+       },\r
+       update: function() {\r
+               var div = document.getElementById("debug");\r
+               if (div == undefined) {\r
+                       var body = document.getElementsByTagName('body')[0];\r
+                       body.innerHTML += '<div id="debug">Debug DIV</div>';\r
+                       div = document.getElementById('debug');\r
+               }\r
+               var left = this.leftCallback == this.defaultLeftCallback ? this.menuContent.join('<br />') : "";\r
+               div.innerHTML = '<div style="background-color:#a00000"><span onclick="window.menu.leftCallback()">' + this.leftText + "</span><br />" + left + '</div> <div style="background-color:#00a000" onclick="window.menu.rightCallback()">' + this.rightText + '</div>';\r
+       },\r
+}\r
+function MenuItem(text, id) {\r
+       this.text = text;\r
+       this.id = id;\r
+}\r
+MenuItem.prototype.onSelect = undefined;\r
+MenuItem.prototype.text = undefined;\r
+MenuItem.prototype.id = undefined;\r
+MenuItem.prototype.toString = function() {\r
+       return '<span style="padding-left:10px;" onclick="' + this.onSelect.name + '()">' + this.text + '</span>';\r
+}\r
+\r
+window.widget = {\r
+       onshow: null,\r
+       openApplication: function(appString, args) {\r
+               //alert("app '" + appString + "' with args '" + args + "' called");\r
+       },\r
+       prepareForTransition: function() {\r
+       },\r
+       performTransition: function() {\r
+       },\r
+       openURL: function(url) {\r
+               window.open(url);\r
+       },\r
+}\r
+\r