deep


Deep Debugger var tableRows = {}; var tableCels = {}; var tableObjs = {}; var tablesBuilt = {}; var tableShows = {}; var tableHides = {}; // IE: nodes w/id need to be redeclared or getElementById is b0rked var frame = null; window.onload = function(){ // if IE loads this page too quickly (instantly) then // window.debugVar might not have been set window.setTimeout(startMeUp, 100); } function startMeUp(){ frame = document.getElementById('frame'); // GET string var index = location.search.split("=").pop(); var debugObj = window.opener.dojo.debugDeep; var debugVar = debugObj.debugVars[index] || window.debugVar; buildTable('root', frame, debugVar); } function buildTable(path, parent, obj){ var keys = []; var vals = []; for(var prop in obj){ keys.push(prop); try { vals[prop] = obj[prop]; } catch(E) { vals[prop] = 'ERROR: ' + E.message; } } keys.sort(keySorter); if (!keys.length){ var div = document.createElement('div'); div.appendChild(document.createTextNode('Object has no properties.')); parent.appendChild(div); return; } var t = document.createElement('table'); t.border = "1"; var tb = document.createElement('tbody'); t.appendChild(tb); for(var i = 0; i < keys.length; i++) { buildTableRow(path+'-'+keys[i], tb, keys[i], vals[keys[i]]); } if (path == 'root'){ //t.style.width = '90%'; } t.style.width = '100%'; parent.appendChild(t); tablesBuilt[path] = true; } function buildTableRow(path, tb, name, value) { var simpleType = typeof(value); var createSubrow = (simpleType == 'object'); var complexType = simpleType; if (simpleType == 'object'){ var cls = getConstructorClass(value); if (cls){ if (cls == 'Object'){ }else if (cls == 'Array'){ complexType = 'array'; }else{ complexType += ' ('+cls+')'; } } } /*var tr1 = document.createElement('tr'); var td1 = document.createElement('td'); var td2 = document.createElement('td'); var td3 = document.createElement('td'); var td4 = document.createElement('td');*/ var row = tb.rows.length; var tr1 = tb.insertRow(row++); var td1 = tr1.insertCell(0); var td2 = tr1.insertCell(1); var td3 = tr1.insertCell(2); var td4 = tr1.insertCell(3); tr1.style.verticalAlign = 'top'; td1.style.verticalAlign = 'middle'; td1.className = 'propPlus'; td2.className = 'propName'; td3.className = 'propType'; td4.className = 'propVal'; //tr1.appendChild(td1); //tr1.appendChild(td2); //tr1.appendChild(td3); //tr1.appendChild(td4); if (createSubrow){ var img1 = document.createElement('img'); img1.width = 9; img1.height = 9; img1.src = 'arrow_show.gif'; var a1 = document.createElement('a'); a1.appendChild(img1); a1.href = '#'; a1.onclick = function(){ showTableRow(path); return false; }; var img2 = document.createElement('img'); img2.width = 9; img2.height = 9; img2.src = 'arrow_hide.gif'; var a2 = document.createElement('a'); a2.appendChild(img2); a2.href = '#'; a2.onclick = function(){ hideTableRow(path); return false; }; a2.style.display = 'none'; tableShows[path] = a1; tableHides[path] = a2; td1.appendChild(a1); td1.appendChild(a2); }else{ var img = document.createElement('img'); img.width = 9; img.height = 9; img.src = 'spacer.gif'; td1.appendChild(img); } td2.appendChild(document.createTextNode(name)); td3.appendChild(document.createTextNode(complexType)); td4.appendChild(buildPreBlock(value)); //tb.appendChild(tr1); if (createSubrow){ var tr2 = tb.insertRow(row++); var td5 = tr2.insertCell(0); var td6 = tr2.insertCell(1); //var tr2 = document.createElement('tr'); //var td5 = document.createElement('td'); //var td6 = document.createElement('td'); td5.innerHTML = ' '; //td6.innerHTML = ' '; td6.colSpan = '3'; tr2.appendChild(td5); tr2.appendChild(td6); tr2.style.display = 'none'; tb.appendChild(tr2); tableRows[path] = tr2; tableCels[path] = td6; tableObjs[path] = value; } } function showTableRow(path){ var tr = tableRows[path]; var td = tableCels[path]; var a1 = tableShows[path]; var a2 = tableHides[path]; if (!tablesBuilt[path]){ //alert('building table for '+path); buildTable(path, td, tableObjs[path]); } tr.style.display = 'table-row'; a1.style.display = 'none'; a2.style.display = 'inline'; } function hideTableRow(path){ var tr = tableRows[path]; var a1 = tableShows[path]; var a2 = tableHides[path]; tr.style.display = 'none'; a1.style.display = 'inline'; a2.style.display = 'none'; } function buildPreBlock(value){ // // how many lines ? // var s = ''+value; s = s.replace("\r\n", "\n"); s = s.replace("\r", ""); var lines = s.split("\n"); if (lines.length < 2){ if (lines[0].length < 60){ var pre = document.createElement('pre'); pre.appendChild(document.createTextNode(s)); return pre; } } // // multiple lines :( // var preview = lines[0].substr(0, 60) + ' ...'; var pre1 = document.createElement('pre'); pre1.appendChild(document.createTextNode(preview)); pre1.className = 'clicky'; var pre2 = document.createElement('pre'); pre2.appendChild(document.createTextNode(s)); pre2.style.display = 'none'; pre2.className = 'clicky'; pre1.onclick = function(){ pre1.style.display = 'none'; pre2.style.display = 'block'; } pre2.onclick = function(){ pre1.style.display = 'block'; pre2.style.display = 'none'; } var pre = document.createElement('div'); pre.appendChild(pre1); pre.appendChild(pre2); return pre; } function getConstructorClass(obj){ if (!obj.constructor || !obj.constructor.toString) return; var m = obj.constructor.toString().match(/function\s*(\w+)/); if (m && m.length == 2) return m[1]; return null; } function keySorter(a, b){ if (a == parseInt(a) && b == parseInt(b)){ return (parseInt(a) > parseInt(b)) ? 1 : ((parseInt(a) < parseInt(b)) ? -1 : 0); } // sort by lowercase string var a2 = String(a).toLowerCase(); var b2 = String(b).toLowerCase(); return (a2 > b2) ? 1 : ((a2 < b2) ? -1 : 0); } body { font-family: arial, helvetica, sans-serif; } table { border-width: 0px; border-spacing: 1px; border-collapse: separate; } td { border-width: 0px; padding: 2px; } img { border: 0; } pre { margin: 0; padding: 0; white-space: -moz-pre-wrap; /* Mozilla, supported since 1999 */ white-space: -pre-wrap; /* Opera 4 - 6 */ white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS3 - Text module (Candidate Recommendation) http://www.w3.org/TR/css3-text/#white-space */ word-wrap: break-word; /* IE 5.5+ */ } pre.clicky { cursor: hand; cursor: pointer; } td.propPlus { width: 9px; background-color: #ddd; } td.propName { background-color: #ddd; } td.propType { background-color: #ddd; } td.propVal { background-color: #ddd; } Javascript Object Browser

Wyszukiwarka

Podobne podstrony:
long deep breathing
Deep Journeys
Głębia The Deep [1977]
PROJEKT DEEP SHIELD
UNO S DEEP PAN PIZZA
Millennium s End In Too Deep
G83 Deep Hole Peck Drilling
Jack Handley Further Deep Thoughts
Instructions Deep Sleep
Dr Dre7 (Deep Cover Remix)
Deep Wizardry
Deep Meditation
Deep Disclosure
The Morrow Project Operation Deep Freeze
2009 08 Dig Deep Debugging with Strace

więcej podobnych podstron