json-summary
Advanced tools
Comparing version 0.2.2 to 0.2.3
@@ -1,2 +0,2 @@ | ||
// https://andrewtburks.dev/json-summary v0.2.2 Copyright 2019 Andrew Burks | ||
// https://andrewtburks.dev/json-summary v0.2.3 Copyright 2019 Andrew Burks | ||
const summarizer = (function() { | ||
@@ -388,9 +388,9 @@ let defaultOptions = { | ||
let tags = { | ||
type: `<span class="json-summary json-summary-type json-summary-type-${value}"><${value}></span>`, | ||
value: `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`, | ||
range: `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`, | ||
name: `<span class="json-summary json-summary-name">${value}</span>`, | ||
length: `<span class="json-summary json-summary-length">(${value})</span>`, | ||
circular: `<span class="json-summary json-summary-circular">${value}</span>`, | ||
layer: `<span class="json-summary json-summary-checkbox ${ | ||
type: () => `<span class="json-summary json-summary-type json-summary-type-${value}"><${value}></span>`, | ||
value: () => `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`, | ||
range: () => `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`, | ||
name: () => `<span class="json-summary json-summary-name">${value}</span>`, | ||
length: () => `<span class="json-summary json-summary-length">(${value})</span>`, | ||
circular: () => `<span class="json-summary json-summary-circular">${value}</span>`, | ||
layer: () => `<span class="json-summary json-summary-checkbox ${ | ||
options.startExpanded ? "checked" : "" | ||
@@ -405,11 +405,11 @@ }"> | ||
</span><div class="json-summary json-summary-layer">${value}</div>`, | ||
child: `<div class="json-summary json-summary-child">${value}</div>`, | ||
keys: `<span class="json-summary json-summary-keys">${value}</span>` | ||
child: () => `<div class="json-summary json-summary-child">${value}</div>`, | ||
keys: () => `<span class="json-summary json-summary-keys">${value}</span>` | ||
}; | ||
return tags[role]; | ||
return tags[role](); | ||
} | ||
function htmlPercentageBar(percentage) { | ||
return `<div class="json-summary json-summary-bar"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>` | ||
return `<div class="json-summary json-summary-bar" title="${percentage.toFixed(2)}%"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>` | ||
} | ||
@@ -416,0 +416,0 @@ |
@@ -1,2 +0,2 @@ | ||
// https://andrewtburks.dev/json-summary v0.2.2 Copyright 2019 Andrew Burks | ||
// https://andrewtburks.dev/json-summary v0.2.3 Copyright 2019 Andrew Burks | ||
(function (global, factory) { | ||
@@ -394,9 +394,9 @@ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | ||
let tags = { | ||
type: `<span class="json-summary json-summary-type json-summary-type-${value}"><${value}></span>`, | ||
value: `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`, | ||
range: `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`, | ||
name: `<span class="json-summary json-summary-name">${value}</span>`, | ||
length: `<span class="json-summary json-summary-length">(${value})</span>`, | ||
circular: `<span class="json-summary json-summary-circular">${value}</span>`, | ||
layer: `<span class="json-summary json-summary-checkbox ${ | ||
type: () => `<span class="json-summary json-summary-type json-summary-type-${value}"><${value}></span>`, | ||
value: () => `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`, | ||
range: () => `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`, | ||
name: () => `<span class="json-summary json-summary-name">${value}</span>`, | ||
length: () => `<span class="json-summary json-summary-length">(${value})</span>`, | ||
circular: () => `<span class="json-summary json-summary-circular">${value}</span>`, | ||
layer: () => `<span class="json-summary json-summary-checkbox ${ | ||
options.startExpanded ? "checked" : "" | ||
@@ -411,11 +411,11 @@ }"> | ||
</span><div class="json-summary json-summary-layer">${value}</div>`, | ||
child: `<div class="json-summary json-summary-child">${value}</div>`, | ||
keys: `<span class="json-summary json-summary-keys">${value}</span>` | ||
child: () => `<div class="json-summary json-summary-child">${value}</div>`, | ||
keys: () => `<span class="json-summary json-summary-keys">${value}</span>` | ||
}; | ||
return tags[role]; | ||
return tags[role](); | ||
} | ||
function htmlPercentageBar(percentage) { | ||
return `<div class="json-summary json-summary-bar"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>` | ||
return `<div class="json-summary json-summary-bar" title="${percentage.toFixed(2)}%"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>` | ||
} | ||
@@ -422,0 +422,0 @@ |
@@ -1,2 +0,2 @@ | ||
// https://andrewtburks.dev/json-summary v0.2.2 Copyright 2019 Andrew Burks | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).jsonSummary=n()}(this,function(){"use strict";return function(){let e={arraySampleCount:10,indentation:" ",indentCount:2,showExampleValue:!0,startExpanded:!1};return function({arraySampleCount:n=10,indentation:t=" ",indentCount:r=2,showExampleValue:a=!0,startExpanded:s=!1}=e){let o={arraySampleCount:n,indentation:t,indentCount:r,showExampleValue:a,startExpanded:s};function u(e){let n={Array:!0,Object:!0,boolean:!0,string:!0,number:!0},t=e.filter(e=>n[e.type]);if(t.length){let e=t[0].type;return function(e,n){return e=e.filter(e=>e.type===n),{string:function(e){let n=e.reduce((e,n)=>Math.min(e,n.range[0]),1/0),t=e.reduce((e,n)=>Math.max(e,n.range[1]),-1/0);return{type:"string",example:e[0].example,range:[n,t],count:e.reduce((e,n)=>e+n.count,0)}},number:function(e){let n=e.reduce((e,n)=>Math.min(e,n.range[0]),1/0),t=e.reduce((e,n)=>Math.max(e,n.range[1]),-1/0);return{type:"number",example:e[0].example,range:[n,t],count:e.reduce((e,n)=>e+n.count,0)}},boolean:function(e){return{type:"boolean",example:e[0].example,count:e.reduce((e,n)=>e+n.count,0)}},Object:function(e){let n={};for(let t of e)if(!t.circular)for(let e of t.keys)!n[e]&&(n[e]=[]),n[e].push(t.items[e]);let t={type:"Object",keys:[],items:{},count:e.length};for(let e of Object.keys(n))t.keys.push(e),t.items[e]=u(n[e]);return t},Array:function(e){let n=u(e.map(e=>e.items[0]).filter(e=>e));return{count:e.length,items:{0:n},length:n.count/e.length,type:"Array"}}}[n](e)}(t.filter(n=>n.type===e),e)}return{count:0}}function l(e,n,t){return{type:`<span class="json-summary json-summary-type json-summary-type-${e}"><${e}></span>`,value:`<span class="json-summary json-summary-value json-summary-value-${t}">${e}</span>`,range:`<span class="json-summary json-summary-range json-summary-range-${t}">[${e[0]}, ${e[1]}]</span>`,name:`<span class="json-summary json-summary-name">${e}</span>`,length:`<span class="json-summary json-summary-length">(${e})</span>`,circular:`<span class="json-summary json-summary-circular">${e}</span>`,layer:`<span class="json-summary json-summary-checkbox ${o.startExpanded?"checked":""}">\n <input type="checkbox" ${o.startExpanded?"checked":""}>\n <span class="json-summary-checkboxmarker" onclick="(function(me){\n me.parentNode.classList.toggle('checked');\n })(this)"></span>\n </span><div class="json-summary json-summary-layer">${e}</div>`,child:`<div class="json-summary json-summary-child">${e}</div>`,keys:`<span class="json-summary json-summary-keys">${e}</span>`}[n]}return{summarize:function(e){let t=function e(t){let r={Array:t=>{let r={count:1,type:"Array",length:t.length};if(t.length)if(n>0){let a=Math.min(n,t.length),s={};for(;a>0;){let e=Math.floor(Math.random()*t.length);s.hasOwnProperty(e)||(s[e]=t[e],a--)}let o=[];for(let[n,t]of Object.entries(s))o.push(e(t));let l=u(o);r.items={0:l}}else r.items={0:e(t[0])};else r.items={0:void 0};return r},Object:n=>{let t={count:1,type:"Object",keys:Object.keys(n),items:{}};for(let r of t.keys)t.items[r]=e(n[r]);return t},Other:e=>{let n;return"string"==typeof e?n=[e.length,e.length]:"number"==typeof e&&(n=[e,e]),{type:typeof e,example:e,count:1,range:n}}},a="Other";return t instanceof Array?a="Array":t instanceof Object&&(a="Object"),t&&t["*snippets_mark*"]?{type:a,circular:!0}:("Other"!==a&&(Object.defineProperty(t,"*snippets_mark*",{enumerable:!1,writable:!0,configurable:!0}),t["*snippets_mark*"]=!0),r[a](t))}(e);return function e(n){if(n&&n["*snippets_mark*"])if(delete n["*snippets_mark*"],n instanceof Array&&n.length)e(n[0]);else if(n instanceof Object)for(let t of Object.keys(n))e(n[t])}(e),t},printSummary:function(e){return function e(n,t,r){let a="";if(n.circular)a+=l("(circular reference)","circular");else if("Object"===n.type){a+="{";let r=n.keys.map(e=>`'${e}'`).join(", ");a+=l(r,"keys");let s=n.keys.map(r=>e(n.items[r],t+1,n.count));if(s.length){let e="\n";for(let r=0;r<n.keys.length;r++)e+=o.indentation.repeat((t+1)*o.indentCount),e+=l(n.keys[r],"name")+": ",n.count>1&&(e+=`<div class="json-summary json-summary-bar"><div class="json-summary json-summary-percentage" style="width:${n.items[n.keys[r]].count/n.count*100}%;"></div></div>`),e+=s[r],r<n.keys.length-1&&(e+=","),e+="\n";e+=o.indentation.repeat(t*o.indentCount),a+=l(e,"child")}a=l(a+="}","layer")}else if("Array"===n.type){if(a+=l(n.count>1?"μ = "+n.length.toFixed(1):n.length,"length")+" [",n.length){let r="Object"===n.items[0].type||"Array"===n.items[0].type;r&&(a+="\n"+o.indentation.repeat((t+1)*o.indentCount)),a+=e(n.items[0],t+1,n.count),r&&(a+="\n"+o.indentation.repeat(t*o.indentCount))}a+="]"}else null==n.example||null==n.example?a+=l("?","type"):a+=l(n.type,"type"),o.showExampleValue&&(a+=l(n.example,"value",n.type),n.count>1&&n.range&&(a+=l(n.range,"range",n.type)));return a}(e,0)}}}}()}); | ||
// https://andrewtburks.dev/json-summary v0.2.3 Copyright 2019 Andrew Burks | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).jsonSummary=t()}(this,function(){"use strict";return function(){let e={arraySampleCount:10,indentation:" ",indentCount:2,showExampleValue:!0,startExpanded:!1};return function({arraySampleCount:t=10,indentation:n=" ",indentCount:r=2,showExampleValue:a=!0,startExpanded:s=!1}=e){let o={arraySampleCount:t,indentation:n,indentCount:r,showExampleValue:a,startExpanded:s};function u(e){let t={Array:!0,Object:!0,boolean:!0,string:!0,number:!0},n=e.filter(e=>t[e.type]);if(n.length){let e=n[0].type;return function(e,t){return e=e.filter(e=>e.type===t),{string:function(e){let t=e.reduce((e,t)=>Math.min(e,t.range[0]),1/0),n=e.reduce((e,t)=>Math.max(e,t.range[1]),-1/0);return{type:"string",example:e[0].example,range:[t,n],count:e.reduce((e,t)=>e+t.count,0)}},number:function(e){let t=e.reduce((e,t)=>Math.min(e,t.range[0]),1/0),n=e.reduce((e,t)=>Math.max(e,t.range[1]),-1/0);return{type:"number",example:e[0].example,range:[t,n],count:e.reduce((e,t)=>e+t.count,0)}},boolean:function(e){return{type:"boolean",example:e[0].example,count:e.reduce((e,t)=>e+t.count,0)}},Object:function(e){let t={};for(let n of e)if(!n.circular)for(let e of n.keys)!t[e]&&(t[e]=[]),t[e].push(n.items[e]);let n={type:"Object",keys:[],items:{},count:e.length};for(let e of Object.keys(t))n.keys.push(e),n.items[e]=u(t[e]);return n},Array:function(e){let t=u(e.map(e=>e.items[0]).filter(e=>e));return{count:e.length,items:{0:t},length:t.count/e.length,type:"Array"}}}[t](e)}(n.filter(t=>t.type===e),e)}return{count:0}}function l(e,t,n){return{type:()=>`<span class="json-summary json-summary-type json-summary-type-${e}"><${e}></span>`,value:()=>`<span class="json-summary json-summary-value json-summary-value-${n}">${e}</span>`,range:()=>`<span class="json-summary json-summary-range json-summary-range-${n}">[${e[0]}, ${e[1]}]</span>`,name:()=>`<span class="json-summary json-summary-name">${e}</span>`,length:()=>`<span class="json-summary json-summary-length">(${e})</span>`,circular:()=>`<span class="json-summary json-summary-circular">${e}</span>`,layer:()=>`<span class="json-summary json-summary-checkbox ${o.startExpanded?"checked":""}">\n <input type="checkbox" ${o.startExpanded?"checked":""}>\n <span class="json-summary-checkboxmarker" onclick="(function(me){\n me.parentNode.classList.toggle('checked');\n })(this)"></span>\n </span><div class="json-summary json-summary-layer">${e}</div>`,child:()=>`<div class="json-summary json-summary-child">${e}</div>`,keys:()=>`<span class="json-summary json-summary-keys">${e}</span>`}[t]()}return{summarize:function(e){let n=function e(n){let r={Array:n=>{let r={count:1,type:"Array",length:n.length};if(n.length)if(t>0){let a=Math.min(t,n.length),s={};for(;a>0;){let e=Math.floor(Math.random()*n.length);s.hasOwnProperty(e)||(s[e]=n[e],a--)}let o=[];for(let[t,n]of Object.entries(s))o.push(e(n));let l=u(o);r.items={0:l}}else r.items={0:e(n[0])};else r.items={0:void 0};return r},Object:t=>{let n={count:1,type:"Object",keys:Object.keys(t),items:{}};for(let r of n.keys)n.items[r]=e(t[r]);return n},Other:e=>{let t;return"string"==typeof e?t=[e.length,e.length]:"number"==typeof e&&(t=[e,e]),{type:typeof e,example:e,count:1,range:t}}},a="Other";return n instanceof Array?a="Array":n instanceof Object&&(a="Object"),n&&n["*snippets_mark*"]?{type:a,circular:!0}:("Other"!==a&&(Object.defineProperty(n,"*snippets_mark*",{enumerable:!1,writable:!0,configurable:!0}),n["*snippets_mark*"]=!0),r[a](n))}(e);return function e(t){if(t&&t["*snippets_mark*"])if(delete t["*snippets_mark*"],t instanceof Array&&t.length)e(t[0]);else if(t instanceof Object)for(let n of Object.keys(t))e(t[n])}(e),n},printSummary:function(e){return function e(t,n,r){let a="";if(t.circular)a+=l("(circular reference)","circular");else if("Object"===t.type){a+="{";let r=t.keys.map(e=>`'${e}'`).join(", ");a+=l(r,"keys");let u=t.keys.map(r=>e(t.items[r],n+1,t.count));if(u.length){let e="\n";for(let r=0;r<t.keys.length;r++)e+=o.indentation.repeat((n+1)*o.indentCount),e+=l(t.keys[r],"name")+": ",t.count>1&&(e+=`<div class="json-summary json-summary-bar" title="${(s=t.items[t.keys[r]].count/t.count*100).toFixed(2)}%"><div class="json-summary json-summary-percentage" style="width:${s}%;"></div></div>`),e+=u[r],r<t.keys.length-1&&(e+=","),e+="\n";e+=o.indentation.repeat(n*o.indentCount),a+=l(e,"child")}a=l(a+="}","layer")}else if("Array"===t.type){if(a+=l(t.count>1?"μ = "+t.length.toFixed(1):t.length,"length")+" [",t.length){let r="Object"===t.items[0].type||"Array"===t.items[0].type;r&&(a+="\n"+o.indentation.repeat((n+1)*o.indentCount)),a+=e(t.items[0],n+1,t.count),r&&(a+="\n"+o.indentation.repeat(n*o.indentCount))}a+="]"}else null==t.example||null==t.example?a+=l("?","type"):a+=l(t.type,"type"),o.showExampleValue&&(a+=l(t.example,"value",t.type),t.count>1&&t.range&&(a+=l(t.range,"range",t.type)));var s;return a}(e,0)}}}}()}); |
@@ -1,2 +0,2 @@ | ||
// https://andrewtburks.dev/json-summary v0.2.2 Copyright 2019 Andrew Burks | ||
// https://andrewtburks.dev/json-summary v0.2.3 Copyright 2019 Andrew Burks | ||
(function (global, factory) { | ||
@@ -394,9 +394,9 @@ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | ||
let tags = { | ||
type: `<span class="json-summary json-summary-type json-summary-type-${value}"><${value}></span>`, | ||
value: `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`, | ||
range: `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`, | ||
name: `<span class="json-summary json-summary-name">${value}</span>`, | ||
length: `<span class="json-summary json-summary-length">(${value})</span>`, | ||
circular: `<span class="json-summary json-summary-circular">${value}</span>`, | ||
layer: `<span class="json-summary json-summary-checkbox ${ | ||
type: () => `<span class="json-summary json-summary-type json-summary-type-${value}"><${value}></span>`, | ||
value: () => `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`, | ||
range: () => `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`, | ||
name: () => `<span class="json-summary json-summary-name">${value}</span>`, | ||
length: () => `<span class="json-summary json-summary-length">(${value})</span>`, | ||
circular: () => `<span class="json-summary json-summary-circular">${value}</span>`, | ||
layer: () => `<span class="json-summary json-summary-checkbox ${ | ||
options.startExpanded ? "checked" : "" | ||
@@ -411,11 +411,11 @@ }"> | ||
</span><div class="json-summary json-summary-layer">${value}</div>`, | ||
child: `<div class="json-summary json-summary-child">${value}</div>`, | ||
keys: `<span class="json-summary json-summary-keys">${value}</span>` | ||
child: () => `<div class="json-summary json-summary-child">${value}</div>`, | ||
keys: () => `<span class="json-summary json-summary-keys">${value}</span>` | ||
}; | ||
return tags[role]; | ||
return tags[role](); | ||
} | ||
function htmlPercentageBar(percentage) { | ||
return `<div class="json-summary json-summary-bar"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>` | ||
return `<div class="json-summary json-summary-bar" title="${percentage.toFixed(2)}%"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>` | ||
} | ||
@@ -422,0 +422,0 @@ |
@@ -93,3 +93,3 @@ let ex1 = { | ||
try { | ||
let sum = new jsonSummary({arraySampleCount: 50, startExpanded: true}); | ||
let sum = new jsonSummary({arraySampleCount: 50, startExpanded: false}); | ||
let data = JSON.parse(evt.target.result); | ||
@@ -112,2 +112,11 @@ console.log(data); | ||
} | ||
}; | ||
}; | ||
// bind interaction with data blocks | ||
let dataBlocks = document.getElementsByClassName("data"); | ||
for (let i = 0; i < dataBlocks.length; i++) { | ||
dataBlocks[i].onclick = function() { | ||
this.classList.toggle("open") | ||
}; | ||
} |
24
index.js
@@ -387,9 +387,9 @@ const summarizer = (function() { | ||
let tags = { | ||
type: `<span class="json-summary json-summary-type json-summary-type-${value}"><${value}></span>`, | ||
value: `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`, | ||
range: `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`, | ||
name: `<span class="json-summary json-summary-name">${value}</span>`, | ||
length: `<span class="json-summary json-summary-length">(${value})</span>`, | ||
circular: `<span class="json-summary json-summary-circular">${value}</span>`, | ||
layer: `<span class="json-summary json-summary-checkbox ${ | ||
type: () => `<span class="json-summary json-summary-type json-summary-type-${value}"><${value}></span>`, | ||
value: () => `<span class="json-summary json-summary-value json-summary-value-${type}">${value}</span>`, | ||
range: () => `<span class="json-summary json-summary-range json-summary-range-${type}">[${value[0]}, ${value[1]}]</span>`, | ||
name: () => `<span class="json-summary json-summary-name">${value}</span>`, | ||
length: () => `<span class="json-summary json-summary-length">(${value})</span>`, | ||
circular: () => `<span class="json-summary json-summary-circular">${value}</span>`, | ||
layer: () => `<span class="json-summary json-summary-checkbox ${ | ||
options.startExpanded ? "checked" : "" | ||
@@ -404,11 +404,11 @@ }"> | ||
</span><div class="json-summary json-summary-layer">${value}</div>`, | ||
child: `<div class="json-summary json-summary-child">${value}</div>`, | ||
keys: `<span class="json-summary json-summary-keys">${value}</span>` | ||
child: () => `<div class="json-summary json-summary-child">${value}</div>`, | ||
keys: () => `<span class="json-summary json-summary-keys">${value}</span>` | ||
}; | ||
return tags[role]; | ||
return tags[role](); | ||
} | ||
function htmlPercentageBar(percentage) { | ||
return `<div class="json-summary json-summary-bar"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>` | ||
return `<div class="json-summary json-summary-bar" title="${percentage.toFixed(2)}%"><div class="json-summary json-summary-percentage" style="width:${percentage}%;"></div></div>` | ||
} | ||
@@ -415,0 +415,0 @@ |
{ | ||
"name": "json-summary", | ||
"version": "0.2.2", | ||
"version": "0.2.3", | ||
"description": "A simple JSON summarizer to extract the structure from a JSON object", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
85082
2252