From 9c9a2d731fea9679f65904a3a6b72dd78b4253a4 Mon Sep 17 00:00:00 2001 From: wei <> Date: Mon, 9 Jan 2006 03:40:59 +0000 Subject: Update library --- framework/Web/Javascripts/extra/behaviour.js | 17 +-- framework/Web/Javascripts/extra/logger.js | 168 +++++++++++++++++++-------- 2 files changed, 120 insertions(+), 65 deletions(-) (limited to 'framework/Web/Javascripts/extra') diff --git a/framework/Web/Javascripts/extra/behaviour.js b/framework/Web/Javascripts/extra/behaviour.js index 0004c5db..ac9adeda 100644 --- a/framework/Web/Javascripts/extra/behaviour.js +++ b/framework/Web/Javascripts/extra/behaviour.js @@ -45,9 +45,7 @@ var Behaviour = { }, start : function(){ - Behaviour.addLoadEvent(function(){ - Behaviour.apply(); - }); + Event.OnLoad(Behaviour.apply); }, apply : function(){ @@ -64,19 +62,6 @@ var Behaviour = { } } } - }, - - addLoadEvent : function(func){ - var oldonload = window.onload; - - if (typeof window.onload != 'function') { - window.onload = func; - } else { - window.onload = function() { - oldonload(); - func(); - } - } } } diff --git a/framework/Web/Javascripts/extra/logger.js b/framework/Web/Javascripts/extra/logger.js index 438772e9..f6383480 100644 --- a/framework/Web/Javascripts/extra/logger.js +++ b/framework/Web/Javascripts/extra/logger.js @@ -427,51 +427,109 @@ LogConsole.prototype = { else { this.commandIndex = 0 } - } + } } // Load the Console when the window loads -Event.observe(window, "load", function() {logConsole = new LogConsole()}) +var logConsole; +Event.OnLoad(function() { logConsole = new LogConsole()}); + + + // ------------------------- // Helper Functions And Junk // ------------------------- -function inspect(element, hideProperties, showMethods) { - var properties = [] - var methods = [] - +function inspect(o) +{ + var objtype = typeof(o); + if (objtype == "undefined") { + return "undefined"; + } else if (objtype == "number" || objtype == "boolean") { + return o + ""; + } else if (o === null) { + return "null"; + } - for(var internal in element) { - if(internal == '______array') continue; - try { - if (element[internal] instanceof Function) { - if (showMethods) - methods.push(internal + ":\t" + element[internal] ) - } - else if(element[internal] instanceof Object) - { - methods.push(internal + ":\t" + inspect(element[internal], hideProperties, showMethods)); - } - else { - if (!hideProperties) - properties.push(internal + ":\t" + element[internal] ) - } + try { + var ostring = (o + ""); + } catch (e) { + return "[" + typeof(o) + "]"; + } + + if (typeof(o) == "function") + { + o = ostring.replace(/^\s+/, ""); + var idx = o.indexOf("{"); + if (idx != -1) { + o = o.substr(0, idx) + "{...}"; + } + return o; + } + + var reprString = function (o) + { + return ('"' + o.replace(/(["\\])/g, '\\$1') + '"' + ).replace(/[\f]/g, "\\f" + ).replace(/[\b]/g, "\\b" + ).replace(/[\n]/g, "\\n" + ).replace(/[\t]/g, "\\t" + ).replace(/[\r]/g, "\\r"); + }; + + if (objtype == "string") { + return reprString(o); + } + // recurse + var me = arguments.callee; + // short-circuit for objects that support "json" serialization + // if they return "self" then just pass-through... + var newObj; + if (typeof(o.__json__) == "function") { + newObj = o.__json__(); + if (o !== newObj) { + return me(newObj); } - catch (e) { - Logger.error("Excetion thrown while inspecting object.", e) + } + if (typeof(o.json) == "function") { + newObj = o.json(); + if (o !== newObj) { + return me(newObj); } } - - properties.sort() - methods.sort() - - var internals = properties.concat(methods) - var output = "" - for (var i = 0; i < internals.length; i++) { - output += (internals[i] + "\n") + // array + if (objtype != "function" && typeof(o.length) == "number") { + var res = []; + for (var i = 0; i < o.length; i++) { + var val = me(o[i]); + if (typeof(val) != "string") { + val = "undefined"; + } + res.push(val); + } + return "[" + res.join(", ") + "]"; } - - return output + + // generic object code path + res = []; + for (var k in o) { + var useKey; + if (typeof(k) == "number") { + useKey = '"' + k + '"'; + } else if (typeof(k) == "string") { + useKey = reprString(k); + } else { + // skip non-string or number keys + continue; + } + val = me(o[k]); + if (typeof(val) != "string") { + // skip non-serializable values + continue; + } + res.push(useKey + ":" + val); + } + return "{" + res.join(", ") + "}"; } Array.prototype.contains = function(object) { @@ -511,8 +569,10 @@ Prado.Inspector = hidden : new Array(), opera : window.opera, displaying : '', + nameList : new Array(), format : function(str) { + if(typeof(str) != "string") return str; str=str.replace(//g,">"); return str; @@ -525,20 +585,22 @@ Prado.Inspector = this.displaying = name ? name : win.toString(); for(js in win) { try { - if(win[js] && js.toString().indexOf("Inspector")==-1 && win[js].toString().indexOf("[native code]")==-1) { + if(win[js] && js.toString().indexOf("Inspector")==-1 && (win[js]+"").indexOf("[native code]")==-1) { + t=typeof(win[js]); if(!this.objs[t.toString()]) { - this.types[this.types.length]=t;; - this.objs[t]=new Array(); + this.types[this.types.length]=t; + this.objs[t]={}; + this.nameList[t] = new Array(); } - index=this.objs[t].length - this.objs[t][index]=new Array(); - this.objs[t][index][0]=js; - this.objs[t][index][1]=this.format(win[js].toString()); + this.nameList[t].push(js); + this.objs[t][js] = this.format(win[js]+""); } } catch(err) { } } - + + for(i=0;i"; this.types.sort(); var so_objIndex=0; - for(i=0;i[+]" + this.types[i] + " (" + this.objs[this.types[i]].length + ")