-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinspect.jquery.min.js
5 lines (5 loc) · 2.09 KB
/
inspect.jquery.min.js
1
2
3
4
5
$.fn.inspect=function(h,i){var l=function(h,j,i){function f(a,b,c){a=document.createElement(a);$(a).attr(b).html(c);return a}var g=this;this.id=function(a){var b=a.id;if(b)return b;for(var c=0;c<6;c++)b=b+"_"+Math.ceil(Math.random()*1E5);return a.id=b};this.root=f("div",{className:"inspector"});this.data={};this.attachTo=function(a){$(a).append(this.root)};this.createPanel=function(a,b,c){var d=f("ul",{"class":"panel",style:"display: none;"});typeof c!="undefined"&&(c=$(f("h1",{"class":"paneltitle"})).html(c),
$(d).append(c));$(b).append(d);for(var e in a)this.createItem(e,a[e],d);return $(d).slideDown(500)};this.createItem=function(a,b,c){var d=g.isExpandable(b),e=f("li",{"class":"item"});$(c).append(e);if(d){c=g.id(e);var k=f("span",{"class":"expandIcon"},"+");$(e).addClass("expandable").append(k);this.data[c]=b}a=f("span",{"class":"obj_label"},a);b=f("span",{"class":"obj_value"},this.valueSummary(b));$(e).append(a);$(e).append(b);d&&$(a).add(k).add(".summary",b).add(".type",b).click(function(a){g.expandToggle($(this).parents(".item")[0],
a)}).css({cursor:"pointer"})};this.isExpandable=function(a){if(typeof a!="object")return!1;return!$.isEmptyObject(a)};this.valueSummary=function(a){var b="";typeof a=="object"?(b="object",$.isArray(a)&&(b="array"),$.isFunction(a)&&(b="function"),b=="object"&&(b=a+""),b=="[object Object]"&&(b="object"),a=this.objectSummary(a),b='<span class="type">['+b+"]</span>",a&&(b+='<span class="summary">'+a+"</span>")):b=a;return b};this.objectSummary=function(a){var b=[],c;for(c in a)b.push(c+':<span class="strong">'+
a[c]+"</span>");return b.join(" ")};this.expandToggle=function(a,b){b.stopPropagation();var c=$(a).find(".obj_value")[0],d=$(a).find(".expandIcon")[0],e=$(d).hasClass("open"),f=g.id(a);e?($(a).find(".item").each(function(){this.id&&delete g.data[this.id]}),$(c).children(".panel").slideUp(100,"swing",function(){$(this).remove()}),$(d).removeClass("open").html("+")):($(this.createPanel(g.data[f],c)).slideDown(300,"swing"),$(d).addClass("open").html("-"))};j&&this.attachTo(j);this.createPanel(h,$(this.root),
i)};$(this).each(function(){new l(h,this,i)});return this};