123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- // Licensed Materials - Property of IBM
- //
- // IBM Cognos Products: pps
- //
- // (C) Copyright IBM Corp. 2005, 2017
- //
- // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- // Debug Library (optional)
- function Debugger () {
- window.onerror = function (msg,url,line){ alert("Line " + line + ": " + msg); return true; };
- //Member assignment...
- this.debugWin = open("", "debugWindow", "directories=no,hotkeys=no,innerHeight=500,innerWidth=300,location=no,menubar=yes,screenX=0,screenY=0,scrollbars=yes,resizeable=yes,status=no,titlebar=no,toolbar=no");
- this.maxDebugLength = 100;
- this.startTime = new Date();
- this.level = 1;
- if (typeof pdbSettingLevel == "number")
- this.level = pdbSettingLevel;
- this.dumpObjects = false;
- if (typeof pdbSettingObjectDump == "boolean")
- this.dumpObjects = pdbSettingObjectDump;
- this.appendOutput = false;
- if (typeof pdbSettingAppendOutput == "boolean")
- this.appendOutput = pdbSettingAppendOutput;
- this.fontSize = 1;
- if (typeof pdbSettingFontSize == "number")
- this.fontSize = pdbSettingFontSize;
- //Function assignment...
- this.out = pdbPrintMsg;
- this.dump = pdbDumpObject;
- this.dumpArgs = pdbDumpArguments;
- this.getObjectName = pdbGetObjectName;
- this.getFunctionName = pdbGetFunctionName;
- this.checkHide = pdbCheckHide;
- if (!this.appendOutput)
- {
- this.debugWin.document.close();
- this.debugWin.document.open();
- }
- if (!this.debugWin.document.title || this.debugWin.document.closed)
- {
- this.debugWin.document.write("<HTML><HEAD><TITLE>PPWeb Debug</TITLE></HEAD><BODY>");
- this.debugWin.document.write("<FONT SIZE=" + this.fontSize + "><B>*** Start ***</B><BR><UL><LI>");
- }
- else
- {
- this.debugWin.document.write("</UL><BR><B>*** Start ***</B><BR><UL><LI>");
- }
- }
- //DON'T call ANY of these directly...
- //call pdb.[func name] (see above)
- function pdbPrintMsg() {
- // this is a variable argument function called through pdb.out()
- // it is used to write to the debug window
- // suitable calls:
- //
- // pdb.out("This is a message") >> simply prints the message...
- // pdb.out(arguments); >> "call stack" type of message...identifies the calling func and its arguments
- // pdb.out(arguments, "Another message") or pdb.out("Another message", arguments);
- // pdb.out(object); >> calls the toString method of the object
- // pdb.out(property); >> prints the property name and value;
- // Also, if the last argument is a number, it is interpreted as the "message level".
- // if logging level >= message level
- // print message
- // else
- // skip it
- // If the message level is omitted, it is assumed to be 1 (ie. "terse" message...always present)
- var msg = "";
- var indent = false;
- var numArgs = arguments.length;
- if (numArgs <= 0) {
- return;
- }
- if (typeof arguments[numArgs-1] == "number") {
- if (this.level < arguments[numArgs-1])
- return;
- }
- for (var i = 0; i < numArgs; i++)
- {
- var arg = arguments[i];
- var argType = typeof arg;
-
- if (argType == "string")
- {
- msg += arg + "<br>";
- }
-
- else if (argType == "object")
- {
- if (typeof arg.callee != "undefined" && typeof arg.length != "undefined")
- {
- msg += this.getFunctionName(arg.callee) + " ( ";
- if (arg.length > 0)
- msg += this.dumpArgs(arg);
- msg += " ) ";
- }
- else
- {
- msg = arg.toString();
- }
- }
- else if (argType == "number" && (i+1 != numArgs))
- {
- msg += "\n" + arg.toString();
- }
- if ( i+2 < numArgs || ( i+1 == numArgs && argType != "number") )
- {
- if (!indent)
- {
- msg += "<UL>";
- indent = true;
- }
- msg += "<LI>";
- }
- }
-
- if (indent)
- msg += "</LI></UL>";
- var newTime = new Date();
- var timeOut = newTime.getHours() + ":" + newTime.getMinutes() + "." + newTime.getSeconds() + ":" + newTime.getMilliseconds();
- if (msg) {
- this.debugWin.document.write(timeOut + ": " + msg + "\n<LI>");
- // this.debugWin.scrollBy(0,100);
- }
- line = msg;
- if (line.length > this.maxDebugLength)
- line = "..." + line.substring(line.length - this.maxDebugLength);
- }
- function pdbDumpArguments (args) {
- var result = "";
- for (var i = 0; i < args.length; i++)
- {
- var arg = args[i];
- var argType = typeof arg;
-
- if (argType == "string" || argType == "number")
- {
- result += arg;
- }
- else if (argType == "object")
- {
- if (this.dumpObjects)
- {
- result += this.dump(arg);
- }
- else
- result += arg;
- }
- else
- {
- result += "<unknown function parameter>";
- }
- if (i+1 < args.length)
- result += ", ";
- }
- return result;
- }
- function pdbDumpObject (obj) {
- var result = this.getObjectName( obj ) + " { <br>";
- for (var prop in obj)
- {
- result += "variable: " + prop + ", value: " + obj[prop] + "<br>";
- }
- return result;
- }
- function pdbGetObjectName (obj) {
- if (typeof obj.constructor == "undefined")
- return "Object";
- return this.getFunctionName( obj.constructor );
- }
- function pdbGetFunctionName (func) {
- var funcBody = func.toString();
- var funcName = funcBody.substring(funcBody.indexOf(" "), funcBody.indexOf("{") );
- funcName = funcName.substring(0,funcName.indexOf("("));
- return funcName;
- }
- function pdbCheckHide() {
- for (n in _menus) {
- menu = _menus[n];
- if (menu._active) {
- var str = menu._id + ": Still Active !!";
- debug(str);
- menu._active = false;
- }
- }
- }
|