jsonstat-suite 3.4.1 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/iife.js +2 -2
- package/import.mjs +2 -2
- package/main.cjs +2 -2
- package/module.mjs +2 -2
- package/package.json +1 -1
package/iife.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// jsonstat-suite v3.
|
|
2
|
-
var JSONstatUtils=function(e,t){"use strict";function n(e,n){return null==e?null:("string"!=typeof e&&void 0!==e.length||(e=t(e)),0===e.length||"dataset"!==e.class&&"collection"!==e.class&&"bundle"!==e.class?null:"dataset"===e.class?e:e.Dataset(n))}function r(e){if(null===e||0===e.length||"dataset"!==e.class)return!1;for(var t=e.length,n=1;t--;)n*=e.Dimension(t).length;return n===e.n}function a(e,t,n){var r,a,l,i,o;return(t.label||n).capitalize()+(a=t,o="",(r=e)&&"metric"===r.role&&a.unit&&(l=a.unit.hasOwnProperty("label")?a.unit.label:"")+(i=a.unit.hasOwnProperty("symbol")?a.unit.symbol:"")!==""&&(o=" ("+(o=""===i?l:""===l?i:"start"===a.unit.position?i+l:l+" "+i)+")"),o)}function l(e,t,n){var r,l='<select name="'+t+'">',i=[];if(null!==n[1]){if(r=e.id,i=e.Dimension(),2===r.length)return(e.Dimension(n[0]).label||n[0]).capitalize()}else{var o=e.Dimension(t);if(r=o.id,i=o.Category(),1===r.length)return}return r.forEach((function(e,t){var r=e!==n[0]?"":'selected="selected" ';null!==n[1]&&e===n[1]||(l+="<option "+r+'value="'+e+'">'+a(o,i[t],e)+"</option>")})),l+="</select>"}function i(e,t){var n={};return Array.isArray(e[t])?(e[t].forEach((function(e,t){null!==e&&(n[String(t)]=e)})),n):e[t]}function o(e,n){if(void 0===e)return null;void 0===n&&(n={}),"boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1);var r=n.vlabel||"Value",a=n.slabel||"Status",l=n.type||"array",o=n.label||"",s=n.header||null,u=[],c=[],f=[],d=[],h={},v={},p=function(e,t){for(var n=1,r=0,a=0;a<E;a++)r+=(n*=a>0?t[E-a]:1)*e[E-a-1];return r},b=function(){var t=e[S][r];f[p(A,c)]=isNaN(t)?null:t};switch(l){case"array":e=function(e){for(var t=e[0],n=e.slice(1),r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a][i];r.push(s)}return r}(e);break;case"object":e=function(e){for(var t=e.cols.map((function(e){return e.id})),n=e.rows,r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a].c[i].v;r.push(s)}return r}(e)}var y,g=e.length;for(var m in n.hasOwnProperty("drop")&&Array.isArray(n.drop)&&n.drop.length&&e.forEach((function(e){n.drop.forEach((function(t){delete e[t]}))})),e[0])if(m!==r)if(m!==a){if(u.push(m),s)y=s.dimension[m],h[m]=y.category.index;else{h[m]=[];for(var w=0;w<g;w++){var O=e[w][m];-1===h[m].indexOf(O)&&h[m].push(O)}}c.push(h[m].length),v[m]={label:s?y.label:m,category:{index:h[m]}},s&&(v[m].category.label=y.category.label,y.category.unit&&(v[m].category.unit=y.category.unit))}else b=function(){var t=e[S][r],n=e[S][a];f[p(A,c)]=isNaN(t)?null:t,d[p(A,c)]=""===n?null:n};for(var E=u.length,S=0;S<g;S++){for(var A=[],x=0;x<E;x++){var P=u[x];A.push(h[P].indexOf(e[S][P]))}b()}var j={version:"2.0",class:"dataset",value:f,dimension:v,id:u,size:c};return o&&(j.label=o),d.length&&(j.status=d),s&&(s.label&&(j.label=s.label),s.source&&(j.source=s.source),s.updated&&(j.updated=s.updated),s.href&&(j.href=s.href),s.role&&(j.role=s.role)),n.ovalue&&(j.value=i(j,"value")),n.ostatus&&j.hasOwnProperty("status")&&(j.status=i(j,"status")),n.instance?t(j):j}function s(e,t){return null==e?"":-1!==e.indexOf(t)?'"'+e+'"':e}String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)};return e.datalist=function(e,t){if(void 0===e)return null;void 0===t&&(t={});var a="",l="",i="",o=0,s=t.na||"n/a",u=t.dsid||0,c=t.vlabel||null,f=t.slabel||null,d=t.counter||!1,h=t.tblclass||"",v=t.numclass||"",p=t.valclass||"",b=t.status||!1,y=t.locale||"en-US",g=t.source||"Source",m=n(e,u),w=m.role&&m.role.metric?m.id.indexOf(m.role.metric[0]):null,O=m.Dimension({role:"metric"}),E={},S=Number.toLocaleString&&"none"!==y?function(e,t){return null===t?e.toLocaleString(y):e.toLocaleString(y,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)},A=function(e,t){var n=null;e.forEach((function(e,r){var i=j===r?' class="'+v+" "+p+'"':"",o=s;t?(w===r&&(n=E[e]),null!==e&&(o=j===r?S(e,n):e),l+="<td"+i+">"+o+"</td>"):a+="<th"+i+">"+e+"</th>"}))},x=d?function(e,t){t?l+='<tr><td class="'+v+'">'+t+"</td>":a+='<th class="'+v+'">#</th>',A(e,t),l+="</tr>"}:function(e,t){l+="<tr>",A(e,t),l+="</tr>"};if(!r(m))return null;O&&O[0].Category().forEach((function(e){var t=e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null;E[e.label]=t}));var P=m.toTable({status:b,vlabel:c,slabel:f}),j=P[0].length-1;return P.forEach((function(e,t){x(e,t)})),m.source&&(o=m.length+1,d&&o++,b&&o++,"."!==(g+=": "+m.source).slice(-1)&&(g+="."),i='<tfoot><td colspan="'+o+'">'+g+"</td></tfoot>"),'<table class="'+h+'"><caption>'+(t.caption||m.label||"")+"</caption><thead><tr>"+a+"</tr></thead><tbody>"+l+"</tbody>"+i+"</table>"},e.fromCSV=function(e,t){if(void 0===e)return null;void 0===t&&(t={});var n,r,a,l=[],i=null,s=null,u=!1,c={time:[],geo:[],metric:[]},f="jsonstat"===e.substring(0,8),d=f?"value":t.vlabel,h=f?"status":t.slabel,v=f?e.substring(8,9):t.delimiter||",",p=";"===v?t.decimal||",":t.decimal||".",b=function(e,t){t=t||",";for(var n,r,a=new RegExp("(\\"+t+'|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\'+t+"\\r\\n]*))","gi"),l=[[]],i=null;i=a.exec(e);)(r=i[1]).length&&r!=t&&l.push([]),n=i[2]?i[2].replace(new RegExp('""',"g"),'"'):i[3],l[l.length-1].push(n);return l}(e.trim(),v);if(f){for(p=b[0][1],a=b[0][2],b.shift();"data"!==b[0][0];)l.push(b.shift());b.shift(),s={dimension:{}},l.forEach((function(e){var t,n,r,l,i,o,f,d;switch(e[0]){case"dimension":if(s.dimension[e[1]]={},(l=s.dimension[e[1]]).label=e[2],l.category={},(i=l.category).index=[],n={},r=2*e[3]+3,e.length>=r){for(t=4;t<r;t++)f=e[t],d=e[++t],Object.defineProperty(n,f,{value:d,writable:!0,configurable:!0,enumerable:!0}),i.label=n,i.index.push(f);"string"==typeof e[t]&&-1!==["time","geo","metric"].indexOf(e[t])&&(c[e[t]].push(e[1]),u=!0,"metric"===e[t]&&"string"==typeof e[++t]&&(i.unit={},i.index.forEach((function(n,r){var l=e[t+r].split(a);i.unit[n]={},o=i.unit[n],void 0!==l[0]&&""!==l[0]&&(o.decimals=1*l[0]),void 0!==l[1]&&""!==l[1]&&(o.label=l[1]),void 0!==l[2]&&""!==l[2]&&(o.symbol=l[2]),void 0!==l[1]&&-1!==["start","end"].indexOf(l[3])&&(o.position=l[3])}))))}break;case"label":case"source":case"updated":case"href":s[e[0]]=e[1]||null}})),u&&(c.time.length||delete c.time,c.geo.length||delete c.geo,c.metric.length||delete c.metric,s.role=c)}if(n=b.length,r=b[0].length,void 0!==d){for(;r--;)if(b[0][r]===d){i=r;break}if(null===i)return null}else i=r-1,d=b[0][i];if(","===p)for(r=1;r<n;r++)b[r][i]=Number(b[r][i].replace(",","."));else for(r=1;r<n;r++)b[r][i]=Number(b[r][i]);return o(b,{header:s,vlabel:d,slabel:h,type:"array",label:t.label||"",ovalue:t.ovalue||!1,ostatus:t.ostatus||!1,instance:t.instance||!1})},e.fromSDMX=function(e,n){if("object"!=typeof e)return null;if(e.hasOwnProperty("data")&&e.hasOwnProperty("meta")&&e.data.hasOwnProperty("dataSets")&&e.data.hasOwnProperty("structures")&&Array.isArray(e.data.structures)&&(e.dataSets=e.data.dataSets,e.structure=e.data.structures[0],e.header=e.meta),!e.hasOwnProperty("dataSets")||!Array.isArray(e.dataSets))return null;if(1!==e.dataSets.length)return null;e.dataSets[0].hasOwnProperty("observations")||function(e){var t=e.dataSets[0],n=t.series,r=e.structure,a=r.dimensions,l={};Object.keys(n).forEach((function(e){var t=n[e].observations;Object.keys(t).forEach((function(r){l[e+":"+r]=t[r].concat(n[e].attributes)}))})),t.observations=l,delete t.series,a.observation=a.series.concat(a.observation),delete a.series,r.attributes.observation=r.attributes.observation.concat(r.attributes.series),delete r.attributes.series}(e),void 0===n?n={ovalue:!1,ostatus:!1,instance:!1}:("boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1));var r=e.structure,a=e.dataSets[0].observations,l=r.attributes.observation,i=r.dimensions;if(!i.hasOwnProperty("observation"))return null;if(i.hasOwnProperty("series")&&Object.keys(i.series).length)return null;Array.prototype.reduce||Object.defineProperty(Array.prototype,"reduce",{value:function(e){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof e)throw new TypeError(e+" is not a function");var t,n=Object(this),r=n.length>>>0,a=0;if(arguments.length>=2)t=arguments[1];else{for(;a<r&&!(a in n);)a++;if(a>=r)throw new TypeError("Reduce of empty array with no initial value");t=n[a++]}for(;a<r;)a in n&&(t=e(t,n[a],a,n)),a++;return t}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw TypeError("predicate must be a function");for(var r=arguments[1],a=0;a<n;){var l=t[a];if(e.call(r,l,a,t))return l;a++}},configurable:!0,writable:!0}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r=arguments[1],a=0;a<n;){var l=t[a];if(e.call(r,l,a,t))return a;a++}return-1},configurable:!0,writable:!0});var o=1,s=[],u=[],c={},f=[],d={time:[],geo:[]},h=function(){},v=function(e,t){for(var n=e.size,r=n.length-t.length;r--;)t.push(0);for(var a=0,l=n.length,i=0,o=1;a<l;a++)i+=(o*=a>0?n[l-a]:1)*t[l-a-1];return i},p=function(e){if(c[e.id]={label:e.name},e.hasOwnProperty("role"))switch(e.role){case"REF_AREA":d.geo.push(e.id);break;case"TIME_PERIOD":d.time.push(e.id)}Object.defineProperty(c[e.id],"category",{value:{index:[],label:{}},writable:!0,enumerable:!0}),s.push(e.id),u.push(e.values.length),o*=e.values.length;var t=c[e.id].category;e.values.forEach((function(e){t.index.push(e.id),Object.defineProperty(t.label,e.id,{value:e.name,writable:!0,enumerable:!0})}))},b=e.header.links?e.header.links.find((function(e){return"request"===e.rel})):null,y=l.findIndex((function(e){return"OBS_STATUS"===e.id}));-1!==y&&(l[y].values.length?f=l[y].values:y=-1),i.observation.forEach(p),i.hasOwnProperty("dataSet")&&i.dataSet.forEach(p);var g={version:"2.0",class:"dataset",updated:e.header.prepared||null,source:e.header.sender.name||null,label:r.name||null,id:s,size:u,dimension:c,value:n.ovalue?{}:new Array(o).fill(null)};for(var m in b&&(g.link={alternate:[{type:"application/vnd.sdmx.data+json",href:b.href}]}),d.geo.length+d.time.length>0&&(d.time.length||delete d.time,d.geo.length||delete d.geo,g.role=d),-1!==y&&(g.status=n.ostatus?{}:new Array(o).fill(null),g.extension={status:{label:{}}},f.forEach((function(e){g.extension.status.label[e.id]=e.name})),h=n.ostatus?function(){var e=a[m][y];null!==e&&(g.status[v(g,w)]=f[e].id)}:function(){var e=a[m][y];g.status[v(g,w)]=null===e?null:f[e].id}),y++,a){var w=m.split(":");n.ovalue&&null===a[m][0]||(g.value[v(g,w)]=a[m][0]),h()}return n.instance?t(g):g},e.fromTable=o,e.join=function(e,n){if(void 0===e||!Array.isArray(e))return null;var r=JSON.parse(JSON.stringify(e)),a=r[0];if(!a.hasOwnProperty("version")||!a.hasOwnProperty("class")||"dataset"!==a.class)return null;void 0===n&&(n={});var l=void 0===n.label?null:n.label,i=void 0===n.by?null:n.by,s=[];if(null===i){for(var u=1,c=r.length;u<c;u++)s=s.concat(r[u].value);return a.value=s,null!==l&&(a.label=l),a}var f,d,h,v=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=0===t[r]?n:t[r];return e};r.forEach((function(e,n){var r=t(e).toTable({status:!0}),a=e.dimension[i].category;0===n?(s=[r[0]],f=a.index,d=a.label,h=a.unit):(f=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=t[r]+n;return e}(f,a.index,Object.keys(f).length),d=v(d,a.label,n),h=v(h,a.unit,n)),s=s.concat(r.slice(1))}));var p=o(s);return a.value=p.value,a.size=p.size,a.status=p.status||null,a.label=l||"",a.href=null,a.dimension[i].category.index=f||null,a.dimension[i].category.label=d||null,a.dimension[i].category.unit=h||null,a},e.tbrowser=function(e,t,i){function o(e){void 0!==t?t.innerHTML=s[e]:window.alert(s[e])}if(void 0!==e)if(void 0!==t){void 0===i&&(i={});var s=void 0===i.i18n||void 0===i.i18n.msgs?{urierror:"tbrowser: A valid JSON-stat input must be specified.",selerror:"tbrowser: A valid selector must be specified.",jsonerror:"The request did not return a valid JSON-stat dataset.",dimerror:"Only one dimension was found in the dataset. At least two are required.",dataerror:"Selection returned no data!",source:"Source",filters:"Filters",constants:"Constants",rc:"Rows & Columns",na:"n/a"}:i.i18n.msgs,u=void 0===i.i18n||void 0===i.i18n.locale?"en-US":i.i18n.locale,c=i.dsid||0,f=i.status||!1,d=i.tblclass||"",h=i.nonconst||!1,v=n(e,c);if(r(v)){if(h)var p=function(e){var t=0,n=e.size.slice(0),r=[];return n.forEach((function(n,a){var l=a-t,i=e.Dimension(l);1===n&&(delete e.__tree__.dimension[e.id[l]],e.size.splice(l,1),e.id.splice(l,1),e.length--,t++,r.push(i.label.capitalize()+": "+i.Category(0).label.capitalize()))})),r}(v);1!==v.length?function e(t,n,r,o){"function"==typeof i.callback&&i.callback(r);var c="",d="",v="",b="",y=r.rows,g=n.Dimension(y),m=g.id,w=r.cols,O=n.Dimension(w),E=O.id,S=n.role&&n.role.metric?n.role.metric[0]:null,A=null!==S?n.Dimension(S):null,x=function(e){return e.hasOwnProperty("unit")&&e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null},P=r.filters,j=JSON.parse(JSON.stringify(P)),D=[],T="",N="",z=n.source?s.source+": "+n.source:"",C=null!==n.label?'<span class="label">'+n.label.capitalize()+"</span>":"";for(var k in h&&p.length&&(C='<span class="label">'+p.join(". ")+"</span>"),""!==z&&"."!==z.slice(-1)&&(z+="."),v+="<caption>"+C+"<form>",P){var R=n.Dimension(k),_=R.label?R.label.capitalize():k.capitalize();R.length>1?T+="<p>"+l(n,k,[P[k],null])+" <strong>"+_+"</strong></p>":D.push({label:_,value:a(R,R.Category(0)),name:k,id:R.id[0]})}""!==T&&(T='<fieldset id="filters"><legend>'+s.filters+"</legend>"+T+"</fieldset>"),D.forEach((function(e){N+="<p>"+e.value+" <strong>"+e.label+'</strong></p><input type="hidden" name="'+e.name+'" value="'+e.id+'" />'})),""!==N&&(N='<fieldset id="constants"><legend>'+s.constants+"</legend>"+N+"</fieldset>"),v+=N+T+'<fieldset id="rowscols"><legend>'+s.rc+"</legend>"+l(n,"rows",[y,w])+" <a>↔</a> "+l(n,"cols",[w,y])+"</fieldset></form></caption>",b+="<tbody>";var L=Number.toLocaleString&&"none"!==u?function(e,t){return null===t?e.toLocaleString(u):e.toLocaleString(u,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)};if(m.forEach((function(e){j[y]=e;var t=n.Data(j),r=function(e,t){var n,r=w!==S?null===A?null:x(A.Category(j[S])):x(O.Category(t));null!==e.value?(n=L(e.value,r),f&&null!==e.status&&(n+=" ("+e.status+")")):n=e.status||s.na,b+="<td>"+n+"</td>"};null!==t?(b+='<tr><th scope="row">'+a(g,g.Category(e))+"</th>",Array.isArray(t)?t.forEach((function(e,t){r(e,t)})):r(t,0),b+="</tr>"):b="ERROR"})),"ERROR"===b)return s.dataerror;b+="</tbody>",c+="<thead><tr><th></th>",E.forEach((function(e){c+='<th scope="col">'+a(O,O.Category(e))+"</th>"})),c+="</tr></thead>",""!==z&&(d='<tfoot><tr><td colspan="'+(E.length+1)+'">'+z+"</td></tr></tfoot>"),t.innerHTML='<table class="'+o+'">'+v+c+b+d+"</table>",[].slice.call(t.querySelectorAll("select")).forEach((function(r){r.addEventListener("change",(function(r){var a,l;e(t,n,function(e,t,n){var r={filters:{}};return n.forEach((function(e){"rows"===e.name||"cols"===e.name?r[e.name]=e.value:r.filters[e.name]=e.value})),"rowscols"===t&&e.id.forEach((function(t,n){t!==r.rows&&t!==r.cols?void 0===r.filters[t]&&(r.filters[t]=e.Dimension(n).id[0]):delete r.filters[t]})),r}(n,r.target.parentElement.getAttribute("id"),(a=t,l=[],[].slice.call(a.querySelectorAll("select, input")).forEach((function(e){l.push({name:e.name,value:e.value})})),l)),o)}),!1)})),t.querySelector("a").addEventListener("click",(function(){r.cols=y,r.rows=w,e(t,n,r,o)}),!1)}(t,v,function(e,t){if("object"==typeof t)return{rows:t.rows,cols:t.cols,filters:t.filters};var n,r,a={},l=[],i=e.id;if(t){var o="bigger"===t?function(e,t){return e.len<t.len?1:-1}:function(e,t){return e.len>t.len?1:-1};e.Dimension().forEach((function(e,t){l.push({id:i[t],len:e.length})})),l.sort(o),n=l[0].id,r=l[1].id}else n=i[0],r=i[1];return e.Dimension(n).length<e.Dimension(r).length&&(n=r+(r=n,"")),i.forEach((function(t){t!==n&&t!==r&&(a[t]=e.Dimension(t).id[0])})),{rows:n,cols:r,filters:a}}(v,i.preset),d):o("dimerror")}else o("jsonerror")}else o("selerror");else o("urierror")},e.toCSV=function(e,t){if(void 0===e)return null;void 0===t&&(t={});var a={content:!1,field:!1},l=!0===t.rich,i=t.content||"label",o=t.field||"label",u=l?"value":t.vlabel||"Value",c=l?"status":t.slabel||"Status",f=!0===t.status,d=t.na||"n/a",h=t.delimiter||",",v=t.separator||"|",p=";"===h?t.decimal||",":t.decimal||".",b=!0===t.array,y=n(e,t.dsid||0),g=b?[]:"",m=b?[]:"",w=b?function(e){g.push(e)}:function(e){g+=e+"\n"},O=b?function(e){m.push(e)}:function(e){m+=e+"\n"};if(!r(y))return null;l?f=null!==y.status:("[id] label"===i&&(a.content=!0,i="id"),"[id] label"===o&&(a.field=!0,o="id"));var E=y.toTable({vlabel:u,slabel:c,status:f,field:l||a.field?"id":o,content:l||a.content?"id":i,type:"array"}),S=E[0].indexOf("id"===o?"value":u),A=f?E[0].indexOf("id"===o?"status":c):-1;return E.forEach((function(e,t){e.forEach((function(n,r){var l=y.Dimension(r);t&&r===S?null===n?e[r]=s(d,h):"."!==p&&(e[r]=String(e[r]).replace(".",p)):t&&r===A&&null===n?e[r]="":(a.content&&t&&l&&(e[r]="["+e[r]+"] "+l.Category(e[r]).label),a.field&&0===t&&(e[r]=l?"["+e[r]+"] "+l.label:"value"===e[r]?u:c),e[r]=s(e[r],h))})),w(e.join(h))})),l&&(O("jsonstat"+h+p+h+v),["label","source","updated","href"].forEach((function(e){y[e]&&O(e+h+s(y[e],h))})),y.id.forEach((function(e,t){var n=[],r=y.Dimension(t),a=r.role,l=!1,i="";i+="dimension"+h+s(e,h)+h+s(r.label,h)+h+r.length,"metric"===a&&r.__tree__.category.unit&&(l=!0),r.id.forEach((function(e,t){var a=[],o=r.Category(t);i+=h+s(e,h)+h+s(o.label,h),l&&(a.push(o.unit.hasOwnProperty("decimals")?o.unit.decimals:""),a.push(o.unit.label||""),o.unit.symbol&&(a.push(o.unit.symbol),a.push(o.unit.position)),n.push(s(a.join(v),h)))})),null!==a&&"classification"!==a&&(i+=h+r.role,l&&(i+=h+n.join(h))),O(i)})),g=b?m.concat(["data"],g):m+"data\n"+g),g},e.version="3.4.1",e}({},JSONstat);
|
|
1
|
+
// jsonstat-suite v3.5.0 Copyright 2023 Xavier Badosa https://jsonstat.com
|
|
2
|
+
var JSONstatUtils=function(e,t){"use strict";function n(e,n){return null==e?null:("string"!=typeof e&&void 0!==e.length||(e=t(e)),0===e.length||"dataset"!==e.class&&"collection"!==e.class&&"bundle"!==e.class?null:"dataset"===e.class?e:e.Dataset(n))}function r(e){if(null===e||0===e.length||"dataset"!==e.class)return!1;for(var t=e.length,n=1;t--;)n*=e.Dimension(t).length;return n===e.n}function a(e,t,n){var r,a,l,i,o;return(t.label||n).capitalize()+(a=t,o="",(r=e)&&"metric"===r.role&&a.unit&&(l=a.unit.hasOwnProperty("label")?a.unit.label:"")+(i=a.unit.hasOwnProperty("symbol")?a.unit.symbol:"")!==""&&(o=" ("+(o=""===i?l:""===l?i:"start"===a.unit.position?i+l:l+" "+i)+")"),o)}function l(e,t,n){var r,l='<select name="'+t+'">',i=[];if(null!==n[1]){if(r=e.id,i=e.Dimension(),2===r.length)return(e.Dimension(n[0]).label||n[0]).capitalize()}else{var o=e.Dimension(t);if(r=o.id,i=o.Category(),1===r.length)return}return r.forEach((function(e,t){var r=e!==n[0]?"":'selected="selected" ';null!==n[1]&&e===n[1]||(l+="<option "+r+'value="'+e+'">'+a(o,i[t],e)+"</option>")})),l+="</select>"}function i(e,t){var n={};return Array.isArray(e[t])?(e[t].forEach((function(e,t){null!==e&&(n[String(t)]=e)})),n):e[t]}function o(e,n){if(void 0===e)return null;void 0===n&&(n={}),"boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1);var r=n.vlabel||"Value",a=n.slabel||"Status",l=n.type||"array",o=n.label||"",s=n.header||null,u=[],c=[],d=[],f=[],h={},v={},p=function(e,t){for(var n=1,r=0,a=0;a<E;a++)r+=(n*=a>0?t[E-a]:1)*e[E-a-1];return r},b=function(){var t=e[S][r];d[p(A,c)]=isNaN(t)?null:t};switch(l){case"array":e=function(e){for(var t=e[0],n=e.slice(1),r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a][i];r.push(s)}return r}(e);break;case"object":e=function(e){for(var t=e.cols.map((function(e){return e.id})),n=e.rows,r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a].c[i].v;r.push(s)}return r}(e)}var y,m=e.length;for(var g in n.hasOwnProperty("drop")&&Array.isArray(n.drop)&&n.drop.length&&e.forEach((function(e){n.drop.forEach((function(t){delete e[t]}))})),e[0])if(g!==r)if(g!==a){if(u.push(g),s)y=s.dimension[g],h[g]=y.category.index;else{h[g]=[];for(var w=0;w<m;w++){var O=e[w][g];-1===h[g].indexOf(O)&&h[g].push(O)}}c.push(h[g].length),v[g]={label:s?y.label:g,category:{index:h[g]}},s&&(v[g].category.label=y.category.label,y.category.unit&&(v[g].category.unit=y.category.unit))}else b=function(){var t=e[S][r],n=e[S][a];d[p(A,c)]=isNaN(t)?null:t,f[p(A,c)]=""===n?null:n};for(var E=u.length,S=0;S<m;S++){for(var A=[],x=0;x<E;x++){var j=u[x];A.push(h[j].indexOf(e[S][j]))}b()}var D={version:"2.0",class:"dataset",value:d,dimension:v,id:u,size:c};return o&&(D.label=o),f.length&&(D.status=f),s&&(s.label&&(D.label=s.label),s.source&&(D.source=s.source),s.updated&&(D.updated=s.updated),s.href&&(D.href=s.href),s.role&&(D.role=s.role)),n.ovalue&&(D.value=i(D,"value")),n.ostatus&&D.hasOwnProperty("status")&&(D.status=i(D,"status")),n.instance?t(D):D}function s(e,t){return null==e?"":-1!==e.indexOf(t)?'"'+e+'"':e}String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)};return e.datalist=function(e,t){if(void 0===e)return null;void 0===t&&(t={});var a="",l="",i="",o=0,s=t.na||"n/a",u=t.dsid||0,c=t.vlabel||null,d=t.slabel||null,f=t.counter||!1,h=t.tblclass||"",v=t.numclass||"",p=t.valclass||"",b=t.status||!1,y=t.locale||"en-US",m=t.source||"Source",g=n(e,u),w=g.role&&g.role.metric?g.id.indexOf(g.role.metric[0]):null,O=g.Dimension({role:"metric"}),E={},S=Number.toLocaleString&&"none"!==y?function(e,t){return null===t?e.toLocaleString(y):e.toLocaleString(y,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)},A=function(e,t){var n=null;e.forEach((function(e,r){var i=D===r?' class="'+v+" "+p+'"':"",o=s;t?(w===r&&(n=E[e]),null!==e&&(o=D===r?S(e,n):e),l+="<td"+i+">"+o+"</td>"):a+="<th"+i+">"+e+"</th>"}))},x=f?function(e,t){t?l+='<tr><td class="'+v+'">'+t+"</td>":a+='<th class="'+v+'">#</th>',A(e,t),l+="</tr>"}:function(e,t){l+="<tr>",A(e,t),l+="</tr>"};if(!r(g))return null;O&&O[0].Category().forEach((function(e){var t=e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null;E[e.label]=t}));var j=g.toTable({status:b,vlabel:c,slabel:d}),D=j[0].length-1;return j.forEach((function(e,t){x(e,t)})),g.source&&(o=g.length+1,f&&o++,b&&o++,"."!==(m+=": "+g.source).slice(-1)&&(m+="."),i='<tfoot><td colspan="'+o+'">'+m+"</td></tfoot>"),'<table class="'+h+'"><caption>'+(t.caption||g.label||"")+"</caption><thead><tr>"+a+"</tr></thead><tbody>"+l+"</tbody>"+i+"</table>"},e.fromCSV=function(e,t){if(void 0===e)return null;void 0===t&&(t={});var n,r,a,l=[],i=null,s=null,u=!1,c={time:[],geo:[],metric:[]},d="jsonstat"===e.substring(0,8),f=d?"value":t.vlabel,h=d?"status":t.slabel,v=d?e.substring(8,9):t.delimiter||",",p=";"===v?t.decimal||",":t.decimal||".",b=function(e,t){t=t||",";for(var n,r,a=new RegExp("(\\"+t+'|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\'+t+"\\r\\n]*))","gi"),l=[[]],i=null;i=a.exec(e);)(r=i[1]).length&&r!=t&&l.push([]),n=i[2]?i[2].replace(new RegExp('""',"g"),'"'):i[3],l[l.length-1].push(n);return l}(e.trim(),v);if(d){for(p=b[0][1],a=b[0][2],b.shift();"data"!==b[0][0];)l.push(b.shift());b.shift(),s={dimension:{}},l.forEach((function(e){var t,n,r,l,i,o,d,f;switch(e[0]){case"dimension":if(s.dimension[e[1]]={},(l=s.dimension[e[1]]).label=e[2],l.category={},(i=l.category).index=[],n={},r=2*e[3]+3,e.length>=r){for(t=4;t<r;t++)d=e[t],f=e[++t],Object.defineProperty(n,d,{value:f,writable:!0,configurable:!0,enumerable:!0}),i.label=n,i.index.push(d);"string"==typeof e[t]&&-1!==["time","geo","metric"].indexOf(e[t])&&(c[e[t]].push(e[1]),u=!0,"metric"===e[t]&&"string"==typeof e[++t]&&(i.unit={},i.index.forEach((function(n,r){var l=e[t+r].split(a);i.unit[n]={},o=i.unit[n],void 0!==l[0]&&""!==l[0]&&(o.decimals=1*l[0]),void 0!==l[1]&&""!==l[1]&&(o.label=l[1]),void 0!==l[2]&&""!==l[2]&&(o.symbol=l[2]),void 0!==l[1]&&-1!==["start","end"].indexOf(l[3])&&(o.position=l[3])}))))}break;case"label":case"source":case"updated":case"href":s[e[0]]=e[1]||null}})),u&&(c.time.length||delete c.time,c.geo.length||delete c.geo,c.metric.length||delete c.metric,s.role=c)}if(n=b.length,r=b[0].length,void 0!==f){for(;r--;)if(b[0][r]===f){i=r;break}if(null===i)return null}else i=r-1,f=b[0][i];if(","===p)for(r=1;r<n;r++)b[r][i]=Number(b[r][i].replace(",","."));else for(r=1;r<n;r++)b[r][i]=Number(b[r][i]);return o(b,{header:s,vlabel:f,slabel:h,type:"array",label:t.label||"",ovalue:t.ovalue||!1,ostatus:t.ostatus||!1,instance:t.instance||!1})},e.fromSDMX=function(e,n){if("object"!=typeof e)return null;if(e.hasOwnProperty("data")&&e.hasOwnProperty("meta")&&e.data.hasOwnProperty("dataSets")&&e.data.hasOwnProperty("structures")&&Array.isArray(e.data.structures)&&(e.dataSets=e.data.dataSets,e.structure=e.data.structures[0],e.header=e.meta),!e.hasOwnProperty("dataSets")||!Array.isArray(e.dataSets))return null;if(1!==e.dataSets.length)return null;e.dataSets[0].hasOwnProperty("observations")||function(e){var t=e.dataSets[0],n=t.series,r=e.structure,a=r.dimensions,l={};Object.keys(n).forEach((function(e){var t=n[e].observations;Object.keys(t).forEach((function(r){l[e+":"+r]=t[r].concat(n[e].attributes)}))})),t.observations=l,delete t.series,a.observation=a.series.concat(a.observation),delete a.series,r.attributes.observation=r.attributes.observation.concat(r.attributes.series),delete r.attributes.series}(e),void 0===n?n={ovalue:!1,ostatus:!1,instance:!1}:("boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1));var r=e.structure,a=e.dataSets[0].observations,l=r.attributes.observation,i=r.dimensions;if(!i.hasOwnProperty("observation"))return null;if(i.hasOwnProperty("series")&&Object.keys(i.series).length)return null;Array.prototype.reduce||Object.defineProperty(Array.prototype,"reduce",{value:function(e){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof e)throw new TypeError(e+" is not a function");var t,n=Object(this),r=n.length>>>0,a=0;if(arguments.length>=2)t=arguments[1];else{for(;a<r&&!(a in n);)a++;if(a>=r)throw new TypeError("Reduce of empty array with no initial value");t=n[a++]}for(;a<r;)a in n&&(t=e(t,n[a],a,n)),a++;return t}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(e){if(null==this)throw TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw TypeError("predicate must be a function");for(var r=arguments[1],a=0;a<n;){var l=t[a];if(e.call(r,l,a,t))return l;a++}},configurable:!0,writable:!0}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(e){if(null==this)throw new TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw new TypeError("predicate must be a function");for(var r=arguments[1],a=0;a<n;){var l=t[a];if(e.call(r,l,a,t))return a;a++}return-1},configurable:!0,writable:!0});var o=1,s=[],u=[],c={},d=[],f={time:[],geo:[]},h=function(){},v=function(e,t){for(var n=e.size,r=n.length-t.length;r--;)t.push(0);for(var a=0,l=n.length,i=0,o=1;a<l;a++)i+=(o*=a>0?n[l-a]:1)*t[l-a-1];return i},p=function(e){if(c[e.id]={label:e.name},e.hasOwnProperty("role"))switch(e.role){case"REF_AREA":f.geo.push(e.id);break;case"TIME_PERIOD":f.time.push(e.id)}Object.defineProperty(c[e.id],"category",{value:{index:[],label:{}},writable:!0,enumerable:!0}),s.push(e.id),u.push(e.values.length),o*=e.values.length;var t=c[e.id].category;e.values.forEach((function(e){t.index.push(e.id),Object.defineProperty(t.label,e.id,{value:e.name,writable:!0,enumerable:!0})}))},b=e.header.links?e.header.links.find((function(e){return"request"===e.rel})):null,y=l.findIndex((function(e){return"OBS_STATUS"===e.id}));-1!==y&&(l[y].values.length?d=l[y].values:y=-1),i.observation.forEach(p),i.hasOwnProperty("dataSet")&&i.dataSet.forEach(p);var m={version:"2.0",class:"dataset",updated:e.header.prepared||null,source:e.header.sender.name||null,label:r.name||null,id:s,size:u,dimension:c,value:n.ovalue?{}:new Array(o).fill(null)};for(var g in b&&(m.link={alternate:[{type:"application/vnd.sdmx.data+json",href:b.href}]}),f.geo.length+f.time.length>0&&(f.time.length||delete f.time,f.geo.length||delete f.geo,m.role=f),-1!==y&&(m.status=n.ostatus?{}:new Array(o).fill(null),m.extension={status:{label:{}}},d.forEach((function(e){m.extension.status.label[e.id]=e.name})),h=n.ostatus?function(){var e=a[g][y];null!==e&&(m.status[v(m,w)]=d[e].id)}:function(){var e=a[g][y];m.status[v(m,w)]=null===e?null:d[e].id}),y++,a){var w=g.split(":");n.ovalue&&null===a[g][0]||(m.value[v(m,w)]=a[g][0]),h()}return n.instance?t(m):m},e.fromTable=o,e.join=function(e,n){if(void 0===e||!Array.isArray(e))return null;var r=JSON.parse(JSON.stringify(e)),a=r[0];if(!a.hasOwnProperty("version")||!a.hasOwnProperty("class")||"dataset"!==a.class)return null;void 0===n&&(n={});var l=void 0===n.label?null:n.label,i=void 0===n.by?null:n.by,s=[];if(null===i){for(var u=1,c=r.length;u<c;u++)s=s.concat(r[u].value);return a.value=s,null!==l&&(a.label=l),a}var d,f,h,v=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=0===t[r]?n:t[r];return e};r.forEach((function(e,n){var r=t(e).toTable({status:!0}),a=e.dimension[i].category;0===n?(s=[r[0]],d=a.index,f=a.label,h=a.unit):(d=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=t[r]+n;return e}(d,a.index,Object.keys(d).length),f=v(f,a.label,n),h=v(h,a.unit,n)),s=s.concat(r.slice(1))}));var p=o(s);return a.value=p.value,a.size=p.size,a.status=p.status||null,a.label=l||"",a.href=null,a.dimension[i].category.index=d||null,a.dimension[i].category.label=f||null,a.dimension[i].category.unit=h||null,a},e.tbrowser=function(e,t,i){function o(e){void 0!==t?t.innerHTML=s[e]:window.alert(s[e])}if(void 0!==e)if(void 0!==t){void 0===i&&(i={});var s=void 0===i.i18n||void 0===i.i18n.msgs?{urierror:"tbrowser: A valid JSON-stat input must be specified.",selerror:"tbrowser: A valid selector must be specified.",jsonerror:"The request did not return a valid JSON-stat dataset.",dimerror:"Only one dimension was found in the dataset. At least two are required.",dataerror:"Selection returned no data!",source:"Source",filters:"Filters",constants:"Constants",rc:"Rows & Columns",na:"n/a"}:i.i18n.msgs,u=void 0===i.i18n||void 0===i.i18n.locale?"en-US":i.i18n.locale,c=i.dsid||0,d=i.status||!1,f=i.tblclass||"",h=i.nonconst||!1,v=n(e,c);if(r(v)){if(h)var p=function(e){var t=0,n=e.size.slice(0),r=[];return n.forEach((function(n,a){var l=a-t,i=e.Dimension(l);1===n&&(delete e.__tree__.dimension[e.id[l]],e.size.splice(l,1),e.id.splice(l,1),e.length--,t++,r.push(i.label.capitalize()+": "+i.Category(0).label.capitalize()))})),r}(v);1!==v.length?function e(t,n,r,o){"function"==typeof i.callback&&i.callback(r);var c="",f="",v="",b="",y=r.rows,m=n.Dimension(y),g=m.id,w=r.cols,O=n.Dimension(w),E=O.id,S=n.role&&n.role.metric?n.role.metric[0]:null,A=null!==S?n.Dimension(S):null,x=function(e){return e.hasOwnProperty("unit")&&e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null},j=r.filters,D=JSON.parse(JSON.stringify(j)),P=[],T="",C="",N=n.source?s.source+": "+n.source:"",k=null!==n.label?'<span class="label">'+n.label.capitalize()+"</span>":"";for(var z in h&&p.length&&(k='<span class="label">'+p.join(". ")+"</span>"),""!==N&&"."!==N.slice(-1)&&(N+="."),v+="<caption>"+k+"<form>",j){var R=n.Dimension(z),_=R.label?R.label.capitalize():z.capitalize();R.length>1?T+="<p>"+l(n,z,[j[z],null])+" <strong>"+_+"</strong></p>":P.push({label:_,value:a(R,R.Category(0)),name:z,id:R.id[0]})}""!==T&&(T='<fieldset id="filters"><legend>'+s.filters+"</legend>"+T+"</fieldset>"),P.forEach((function(e){C+="<p>"+e.value+" <strong>"+e.label+'</strong></p><input type="hidden" name="'+e.name+'" value="'+e.id+'" />'})),""!==C&&(C='<fieldset id="constants"><legend>'+s.constants+"</legend>"+C+"</fieldset>"),v+=C+T+'<fieldset id="rowscols"><legend>'+s.rc+"</legend>"+l(n,"rows",[y,w])+" <a>↔</a> "+l(n,"cols",[w,y])+"</fieldset></form></caption>",b+="<tbody>";var L=Number.toLocaleString&&"none"!==u?function(e,t){return null===t?e.toLocaleString(u):e.toLocaleString(u,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)};if(g.forEach((function(e){D[y]=e;var t=n.Data(D),r=function(e,t){var n,r=w!==S?null===A?null:x(A.Category(D[S])):x(O.Category(t));null!==e.value?(n=L(e.value,r),d&&null!==e.status&&(n+=" ("+e.status+")")):n=e.status||s.na,b+="<td>"+n+"</td>"};null!==t?(b+='<tr><th scope="row">'+a(m,m.Category(e))+"</th>",Array.isArray(t)?t.forEach((function(e,t){r(e,t)})):r(t,0),b+="</tr>"):b="ERROR"})),"ERROR"===b)return s.dataerror;b+="</tbody>",c+="<thead><tr><th></th>",E.forEach((function(e){c+='<th scope="col">'+a(O,O.Category(e))+"</th>"})),c+="</tr></thead>",""!==N&&(f='<tfoot><tr><td colspan="'+(E.length+1)+'">'+N+"</td></tr></tfoot>"),t.innerHTML='<table class="'+o+'">'+v+c+b+f+"</table>",[].slice.call(t.querySelectorAll("select")).forEach((function(r){r.addEventListener("change",(function(r){var a,l;e(t,n,function(e,t,n){var r={filters:{}};return n.forEach((function(e){"rows"===e.name||"cols"===e.name?r[e.name]=e.value:r.filters[e.name]=e.value})),"rowscols"===t&&e.id.forEach((function(t,n){t!==r.rows&&t!==r.cols?void 0===r.filters[t]&&(r.filters[t]=e.Dimension(n).id[0]):delete r.filters[t]})),r}(n,r.target.parentElement.getAttribute("id"),(a=t,l=[],[].slice.call(a.querySelectorAll("select, input")).forEach((function(e){l.push({name:e.name,value:e.value})})),l)),o)}),!1)})),t.querySelector("a").addEventListener("click",(function(){r.cols=y,r.rows=w,e(t,n,r,o)}),!1)}(t,v,function(e,t){if("object"==typeof t)return{rows:t.rows,cols:t.cols,filters:t.filters};var n,r,a={},l=[],i=e.id;if(t){var o="bigger"===t?function(e,t){return e.len<t.len?1:-1}:function(e,t){return e.len>t.len?1:-1};e.Dimension().forEach((function(e,t){l.push({id:i[t],len:e.length})})),l.sort(o),n=l[0].id,r=l[1].id}else n=i[0],r=i[1];return e.Dimension(n).length<e.Dimension(r).length&&(n=r+(r=n,"")),i.forEach((function(t){t!==n&&t!==r&&(a[t]=e.Dimension(t).id[0])})),{rows:n,cols:r,filters:a}}(v,i.preset),f):o("dimerror")}else o("jsonerror")}else o("selerror");else o("urierror")},e.toCSV=function(e,t){if(void 0===e)return null;void 0===t&&(t={});var a={content:!1,field:!1},l=!0===t.rich,i=t.content||"label",o=t.field||"label",u=l?"value":t.vlabel||"Value",c=l?"status":t.slabel||"Status",d=!0===t.status,f=t.na||"n/a",h=t.delimiter||",",v=t.separator||"|",p=";"===h?t.decimal||",":t.decimal||".",b=!0===t.array,y=n(e,t.dsid||0),m=b?[]:"",g=b?[]:"",w=b?function(e){m.push(e)}:function(e){m+=e+"\n"},O=b?function(e){g.push(e)}:function(e){g+=e+"\n"};if(!r(y))return null;l?d=null!==y.status:("[id] label"===i&&(a.content=!0,i="id"),"[id] label"===o&&(a.field=!0,o="id"));var E=!l&&t.by&&-1!==y.id.indexOf(t.by)?t.by:null,S=E&&void 0!==t.drop&&Array.isArray(t.drop)?t.drop:null;if(E)return function(e,t){const n=[],r=t.by,a=t.idlabel,l=t.drop,i=t.na,o=t.delimiter,u=t.decimal,c=a.content?"id":t.content,d=a.field?"label":t.field,f=e.toTable({drop:l,content:c,by:r,type:"arrobj"}),h=Object.keys(f[0]),v=function(e,t,n,r,l){return e.map((e=>"label"===n?-1!==r.id.indexOf(e)?s((a.field?"["+e+"] ":"")+r.Dimension(e).label,t):s((a.field?"["+e+"] ":"")+r.Dimension(l).Category(e).label,t):s(e,t))).join(t)+"\n"}(h,o,d,e,r),p="."!==u?function(e){return null===e?s(i,o):String(e).replace(".",u)}:function(e){return null===e?s(i,o):e};return f.forEach((t=>{let r=[];h.forEach((n=>{const l=t[n],i="string"==typeof l?s(a.content?"["+l+"] "+e.Dimension(n).Category(l).label:l,o):p(l);r.push(i)})),n.push(r.join(o))})),v+n.join("\n")}(y,{drop:S,na:f,delimiter:h,decimal:p,content:i,field:o,by:E,idlabel:a});var A=y.toTable({vlabel:u,slabel:c,status:d,field:l||a.field?"id":o,content:l||a.content?"id":i,type:"array"}),x=A[0].indexOf("id"===o?"value":u),j=d?A[0].indexOf("id"===o?"status":c):-1;return A.forEach((function(e,t){e.forEach((function(n,r){var l=y.Dimension(r);t&&r===x?null===n?e[r]=s(f,h):"."!==p&&(e[r]=String(e[r]).replace(".",p)):t&&r===j&&null===n?e[r]="":(a.content&&t&&l?e[r]="["+e[r]+"] "+l.Category(e[r]).label:a.field&&0===t&&(e[r]=l?"["+e[r]+"] "+l.label:"value"===e[r]?u:c),e[r]=s(e[r],h))})),w(e.join(h))})),l&&(O("jsonstat"+h+p+h+v),["label","source","updated","href"].forEach((function(e){y[e]&&O(e+h+s(y[e],h))})),y.id.forEach((function(e,t){var n=[],r=y.Dimension(t),a=r.role,l=!1,i="";i+="dimension"+h+s(e,h)+h+s(r.label,h)+h+r.length,"metric"===a&&r.__tree__.category.unit&&(l=!0),r.id.forEach((function(e,t){var a=[],o=r.Category(t);i+=h+s(e,h)+h+s(o.label,h),l&&(a.push(o.unit.hasOwnProperty("decimals")?o.unit.decimals:""),a.push(o.unit.label||""),o.unit.symbol&&(a.push(o.unit.symbol),a.push(o.unit.position)),n.push(s(a.join(v),h)))})),null!==a&&"classification"!==a&&(i+=h+r.role,l&&(i+=h+n.join(h))),O(i)})),m=b?g.concat(["data"],m):g+"data\n"+m),m},e.version="3.5.0",e}({},JSONstat);
|
package/import.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// jsonstat-suite v3.
|
|
2
|
-
function e(r,i){var l,a,s,o,u=function(e,r,i){var l,a=[];if(i&&!n(i.name)&&(i=null),"string"==typeof e&&(e=[e]),Array.isArray(e)||t(e)){if(e.length===r)return i&&-1===e.findIndex((function(e){return null==e}))?i.from(e):e;if(1===e.length){for(l=0;l<r;l++)a.push(e[0]);return a}}for(l=0;l<r;l++){var s=void 0===e[l]?null:e[l];a.push(s)}return a};if(this.length=0,this.id=[],null!=r)switch(this.class=r.class||"bundle",this.class){case"bundle":var c=[],f=0;if(this.error=null,this.length=0,null===r||"object"!=typeof r)return void(this.class=null);if(r.hasOwnProperty("error"))return void(this.error=r.error);if("dataset"===r.class||"collection"===r.class||"dimension"===r.class)return new e(r);for(a in r)f++,c.push(a);this.__tree__=r,this.length=f,this.id=c;break;case"dataset":r.hasOwnProperty("__tree__")?this.__tree__=l=r.__tree__:this.__tree__=l=r,this.label=l.label||null,this.note=l.note||null,this.link=l.link||null,this.href=l.href||null,this.updated=l.updated||null,this.source=l.source||null,this.extension=l.extension||null;var h,d=0,v=l.size||l.dimension&&l.dimension.size;if(this.size=v,this.value=l.hasOwnProperty("value")&&null!==l.value&&0!==l.value.length?l.value:{},Array.isArray(this.value)||t(this.value))d=this.value.length;else{var p=1;for(h=v.length;h--;)p*=v[h];d=p}if(this.value=u(this.value,d,i),this.status=l.hasOwnProperty("status")?u(l.status,d):null,l.hasOwnProperty("dimension")){var y=l.dimension,b=l.role||!l.version&&y.role||null,g=l.id||y.id,m=v.length,_=function(e){b.hasOwnProperty(e)||(b[e]=null)};if(!Array.isArray(g)||!Array.isArray(v)||g.length!=m)return;if(this.length=m,this.id=g,b&&(_("time"),_("geo"),_("metric"),_("classification")),b&&null===b.classification){var w=[],O=["time","geo","metric"],x=function(e,t){for(var n=t.length;n--;)if(e===t[n])return!0;return!1};for(h=0;h<3;h++){var A=b[O[h]];null!==A&&(w=w.concat(A))}for(b.classification=[],h=0;h<m;h++)x(g[h],w)||b.classification.push(g[h]);0===b.classification.length&&(b.classification=null)}this.role=b,this.n=d;for(var E=0,S=this.length;E<S;E++)if(y[g[E]].category.hasOwnProperty("index")){if(Array.isArray(y[g[E]].category.index)){var D={},j=y[g[E]].category.index;for(s=j.length,o=0;o<s;o++)D[j[o]]=o;y[g[E]].category.index=D}}else{var P=0;for(a in y[g[E]].category.index={},y[g[E]].category.label)y[g[E]].category.index[a]=P++}}else this.length=0;break;case"dimension":if(!r.hasOwnProperty("__tree__"))return new e({version:"2.0",class:"dataset",dimension:{d:r},id:["d"],size:[function(e){var t=void 0===e.index?e.label:e.index;return Array.isArray(t)?t.length:Object.keys(t).length}(r.category)],value:[null]}).Dimension(0);var k=[],z=(l=r.__tree__).category;if(!l.hasOwnProperty("category"))return;if(!z.hasOwnProperty("label"))for(a in z.label={},z.index)z.label[a]=a;for(a in z.index)k[z.index[a]]=a;this.__tree__=l,this.label=l.label||null,this.note=l.note||null,this.link=l.link||null,this.href=l.href||null,this.id=k,this.length=k.length,this.role=r.role,this.hierarchy=z.hasOwnProperty("child"),this.extension=l.extension||null;break;case"category":var C=r.child;this.id=C,this.length=null===C?0:C.length,this.index=r.index,this.label=r.label,this.note=r.note||null,this.unit=r.unit,this.coordinates=r.coord;break;case"collection":if(this.length=0,this.label=r.label||null,this.note=r.note||null,this.link=r.link||null,this.href=r.href||null,this.updated=r.updated||null,this.source=r.source||null,this.extension=r.extension||null,null!==this.link&&r.link.item){var N=r.link.item;if(this.length=Array.isArray(N)?N.length:0,this.length)for(o=0;o<this.length;o++)this.id[o]=N[o].href}}}function t(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e.buffer)}function n(e){return-1!==["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"].indexOf(e)}function r(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.json()}function i(t,n,i){var l="object"==typeof n?n:null;return"function"!=typeof i&&(i=null),i||"function"!=typeof n||(i=n),"object"==typeof t?new e(t,i):"version"===t?"1.4.2":fetch?fetch(t,l).then(r).then((function(t){return new e(t,i)})):void 0}function l(e,t){return null==e?null:("string"!=typeof e&&void 0!==e.length||(e=i(e)),0===e.length||"dataset"!==e.class&&"collection"!==e.class&&"bundle"!==e.class?null:"dataset"===e.class?e:e.Dataset(t))}function a(e){if(null===e||0===e.length||"dataset"!==e.class)return!1;for(var t=e.length,n=1;t--;)n*=e.Dimension(t).length;return n===e.n}function s(e,t,n){var r,i,l,a,s;return(t.label||n).capitalize()+(i=t,s="",(r=e)&&"metric"===r.role&&i.unit&&(l=i.unit.hasOwnProperty("label")?i.unit.label:"")+(a=i.unit.hasOwnProperty("symbol")?i.unit.symbol:"")!==""&&(s=" ("+(s=""===a?l:""===l?a:"start"===i.unit.position?a+l:l+" "+a)+")"),s)}function o(e,t,n){var r,i='<select name="'+t+'">',l=[];if(null!==n[1]){if(r=e.id,l=e.Dimension(),2===r.length)return(e.Dimension(n[0]).label||n[0]).capitalize()}else{var a=e.Dimension(t);if(r=a.id,l=a.Category(),1===r.length)return}return r.forEach((function(e,t){var r=e!==n[0]?"":'selected="selected" ';null!==n[1]&&e===n[1]||(i+="<option "+r+'value="'+e+'">'+s(a,l[t],e)+"</option>")})),i+="</select>"}function u(e,t,n){function r(e){void 0!==t?t.innerHTML=i[e]:window.alert(i[e])}if(void 0!==e)if(void 0!==t){void 0===n&&(n={});var i=void 0===n.i18n||void 0===n.i18n.msgs?{urierror:"tbrowser: A valid JSON-stat input must be specified.",selerror:"tbrowser: A valid selector must be specified.",jsonerror:"The request did not return a valid JSON-stat dataset.",dimerror:"Only one dimension was found in the dataset. At least two are required.",dataerror:"Selection returned no data!",source:"Source",filters:"Filters",constants:"Constants",rc:"Rows & Columns",na:"n/a"}:n.i18n.msgs,u=void 0===n.i18n||void 0===n.i18n.locale?"en-US":n.i18n.locale,c=n.dsid||0,f=n.status||!1,h=n.tblclass||"",d=n.nonconst||!1,v=l(e,c);if(a(v)){if(d)var p=function(e){var t=0,n=e.size.slice(0),r=[];return n.forEach((function(n,i){var l=i-t,a=e.Dimension(l);1===n&&(delete e.__tree__.dimension[e.id[l]],e.size.splice(l,1),e.id.splice(l,1),e.length--,t++,r.push(a.label.capitalize()+": "+a.Category(0).label.capitalize()))})),r}(v);1!==v.length?function e(t,r,l,a){"function"==typeof n.callback&&n.callback(l);var c="",h="",v="",y="",b=l.rows,g=r.Dimension(b),m=g.id,_=l.cols,w=r.Dimension(_),O=w.id,x=r.role&&r.role.metric?r.role.metric[0]:null,A=null!==x?r.Dimension(x):null,E=function(e){return e.hasOwnProperty("unit")&&e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null},S=l.filters,D=JSON.parse(JSON.stringify(S)),j=[],P="",k="",z=r.source?i.source+": "+r.source:"",C=null!==r.label?'<span class="label">'+r.label.capitalize()+"</span>":"";for(var N in d&&p.length&&(C='<span class="label">'+p.join(". ")+"</span>"),""!==z&&"."!==z.slice(-1)&&(z+="."),v+="<caption>"+C+"<form>",S){var T=r.Dimension(N),R=T.label?T.label.capitalize():N.capitalize();T.length>1?P+="<p>"+o(r,N,[S[N],null])+" <strong>"+R+"</strong></p>":j.push({label:R,value:s(T,T.Category(0)),name:N,id:T.id[0]})}""!==P&&(P='<fieldset id="filters"><legend>'+i.filters+"</legend>"+P+"</fieldset>"),j.forEach((function(e){k+="<p>"+e.value+" <strong>"+e.label+'</strong></p><input type="hidden" name="'+e.name+'" value="'+e.id+'" />'})),""!==k&&(k='<fieldset id="constants"><legend>'+i.constants+"</legend>"+k+"</fieldset>"),v+=k+P+'<fieldset id="rowscols"><legend>'+i.rc+"</legend>"+o(r,"rows",[b,_])+" <a>↔</a> "+o(r,"cols",[_,b])+"</fieldset></form></caption>",y+="<tbody>";var F=Number.toLocaleString&&"none"!==u?function(e,t){return null===t?e.toLocaleString(u):e.toLocaleString(u,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)};if(m.forEach((function(e){D[b]=e;var t=r.Data(D),n=function(e,t){var n,r=_!==x?null===A?null:E(A.Category(D[x])):E(w.Category(t));null!==e.value?(n=F(e.value,r),f&&null!==e.status&&(n+=" ("+e.status+")")):n=e.status||i.na,y+="<td>"+n+"</td>"};null!==t?(y+='<tr><th scope="row">'+s(g,g.Category(e))+"</th>",Array.isArray(t)?t.forEach((function(e,t){n(e,t)})):n(t,0),y+="</tr>"):y="ERROR"})),"ERROR"===y)return i.dataerror;y+="</tbody>",c+="<thead><tr><th></th>",O.forEach((function(e){c+='<th scope="col">'+s(w,w.Category(e))+"</th>"})),c+="</tr></thead>",""!==z&&(h='<tfoot><tr><td colspan="'+(O.length+1)+'">'+z+"</td></tr></tfoot>"),t.innerHTML='<table class="'+a+'">'+v+c+y+h+"</table>",[].slice.call(t.querySelectorAll("select")).forEach((function(n){n.addEventListener("change",(function(n){var i,l;e(t,r,function(e,t,n){var r={filters:{}};return n.forEach((function(e){"rows"===e.name||"cols"===e.name?r[e.name]=e.value:r.filters[e.name]=e.value})),"rowscols"===t&&e.id.forEach((function(t,n){t!==r.rows&&t!==r.cols?void 0===r.filters[t]&&(r.filters[t]=e.Dimension(n).id[0]):delete r.filters[t]})),r}(r,n.target.parentElement.getAttribute("id"),(i=t,l=[],[].slice.call(i.querySelectorAll("select, input")).forEach((function(e){l.push({name:e.name,value:e.value})})),l)),a)}),!1)})),t.querySelector("a").addEventListener("click",(function(){l.cols=b,l.rows=_,e(t,r,l,a)}),!1)}(t,v,function(e,t){if("object"==typeof t)return{rows:t.rows,cols:t.cols,filters:t.filters};var n,r,i={},l=[],a=e.id;if(t){var s="bigger"===t?function(e,t){return e.len<t.len?1:-1}:function(e,t){return e.len>t.len?1:-1};e.Dimension().forEach((function(e,t){l.push({id:a[t],len:e.length})})),l.sort(s),n=l[0].id,r=l[1].id}else n=a[0],r=a[1];return e.Dimension(n).length<e.Dimension(r).length&&(n=r+(r=n,"")),a.forEach((function(t){t!==n&&t!==r&&(i[t]=e.Dimension(t).id[0])})),{rows:n,cols:r,filters:i}}(v,n.preset),h):r("dimerror")}else r("jsonerror")}else r("selerror");else r("urierror")}function c(e,t){if(void 0===e)return null;void 0===t&&(t={});var n="",r="",i="",s=0,o=t.na||"n/a",u=t.dsid||0,c=t.vlabel||null,f=t.slabel||null,h=t.counter||!1,d=t.tblclass||"",v=t.numclass||"",p=t.valclass||"",y=t.status||!1,b=t.locale||"en-US",g=t.source||"Source",m=l(e,u),_=m.role&&m.role.metric?m.id.indexOf(m.role.metric[0]):null,w=m.Dimension({role:"metric"}),O={},x=Number.toLocaleString&&"none"!==b?function(e,t){return null===t?e.toLocaleString(b):e.toLocaleString(b,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)},A=function(e,t){var i=null;e.forEach((function(e,l){var a=D===l?' class="'+v+" "+p+'"':"",s=o;t?(_===l&&(i=O[e]),null!==e&&(s=D===l?x(e,i):e),r+="<td"+a+">"+s+"</td>"):n+="<th"+a+">"+e+"</th>"}))},E=h?function(e,t){t?r+='<tr><td class="'+v+'">'+t+"</td>":n+='<th class="'+v+'">#</th>',A(e,t),r+="</tr>"}:function(e,t){r+="<tr>",A(e,t),r+="</tr>"};if(!a(m))return null;w&&w[0].Category().forEach((function(e){var t=e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null;O[e.label]=t}));var S=m.toTable({status:y,vlabel:c,slabel:f}),D=S[0].length-1;return S.forEach((function(e,t){E(e,t)})),m.source&&(s=m.length+1,h&&s++,y&&s++,"."!==(g+=": "+m.source).slice(-1)&&(g+="."),i='<tfoot><td colspan="'+s+'">'+g+"</td></tfoot>"),'<table class="'+d+'"><caption>'+(t.caption||m.label||"")+"</caption><thead><tr>"+n+"</tr></thead><tbody>"+r+"</tbody>"+i+"</table>"}function f(e,t){var n={};return Array.isArray(e[t])?(e[t].forEach((function(e,t){null!==e&&(n[String(t)]=e)})),n):e[t]}function h(e,t){if(void 0===e)return null;void 0===t&&(t={}),"boolean"!=typeof t.ovalue&&(t.ovalue=!1),"boolean"!=typeof t.ostatus&&(t.ostatus=!1),"boolean"!=typeof t.instance&&(t.instance=!1);var n=t.vlabel||"Value",r=t.slabel||"Status",l=t.type||"array",a=t.label||"",s=t.header||null,o=[],u=[],c=[],h=[],d={},v={},p=function(e,t){for(var n=1,r=0,i=0;i<O;i++)r+=(n*=i>0?t[O-i]:1)*e[O-i-1];return r},y=function(){var t=e[x][n];c[p(A,u)]=isNaN(t)?null:t};switch(l){case"array":e=function(e){for(var t=e[0],n=e.slice(1),r=[],i=0,l=n.length;i<l;i++){for(var a=0,s=t.length,o={};a<s;a++)o[t[a]]=n[i][a];r.push(o)}return r}(e);break;case"object":e=function(e){for(var t=e.cols.map((function(e){return e.id})),n=e.rows,r=[],i=0,l=n.length;i<l;i++){for(var a=0,s=t.length,o={};a<s;a++)o[t[a]]=n[i].c[a].v;r.push(o)}return r}(e)}var b,g=e.length;for(var m in t.hasOwnProperty("drop")&&Array.isArray(t.drop)&&t.drop.length&&e.forEach((function(e){t.drop.forEach((function(t){delete e[t]}))})),e[0])if(m!==n)if(m!==r){if(o.push(m),s)b=s.dimension[m],d[m]=b.category.index;else{d[m]=[];for(var _=0;_<g;_++){var w=e[_][m];-1===d[m].indexOf(w)&&d[m].push(w)}}u.push(d[m].length),v[m]={label:s?b.label:m,category:{index:d[m]}},s&&(v[m].category.label=b.category.label,b.category.unit&&(v[m].category.unit=b.category.unit))}else y=function(){var t=e[x][n],i=e[x][r];c[p(A,u)]=isNaN(t)?null:t,h[p(A,u)]=""===i?null:i};for(var O=o.length,x=0;x<g;x++){for(var A=[],E=0;E<O;E++){var S=o[E];A.push(d[S].indexOf(e[x][S]))}y()}var D={version:"2.0",class:"dataset",value:c,dimension:v,id:o,size:u};return a&&(D.label=a),h.length&&(D.status=h),s&&(s.label&&(D.label=s.label),s.source&&(D.source=s.source),s.updated&&(D.updated=s.updated),s.href&&(D.href=s.href),s.role&&(D.role=s.role)),t.ovalue&&(D.value=f(D,"value")),t.ostatus&&D.hasOwnProperty("status")&&(D.status=f(D,"status")),t.instance?i(D):D}function d(e,t){if(void 0===e)return null;void 0===t&&(t={});var n,r,i,l=[],a=null,s=null,o=!1,u={time:[],geo:[],metric:[]},c="jsonstat"===e.substring(0,8),f=c?"value":t.vlabel,d=c?"status":t.slabel,v=c?e.substring(8,9):t.delimiter||",",p=";"===v?t.decimal||",":t.decimal||".",y=function(e,t){t=t||",";for(var n,r,i=new RegExp("(\\"+t+'|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\'+t+"\\r\\n]*))","gi"),l=[[]],a=null;a=i.exec(e);)(r=a[1]).length&&r!=t&&l.push([]),n=a[2]?a[2].replace(new RegExp('""',"g"),'"'):a[3],l[l.length-1].push(n);return l}(e.trim(),v);if(c){for(p=y[0][1],i=y[0][2],y.shift();"data"!==y[0][0];)l.push(y.shift());y.shift(),s={dimension:{}},l.forEach((function(e){var t,n,r,l,a,c,f,h;switch(e[0]){case"dimension":if(s.dimension[e[1]]={},(l=s.dimension[e[1]]).label=e[2],l.category={},(a=l.category).index=[],n={},r=2*e[3]+3,e.length>=r){for(t=4;t<r;t++)f=e[t],h=e[++t],Object.defineProperty(n,f,{value:h,writable:!0,configurable:!0,enumerable:!0}),a.label=n,a.index.push(f);"string"==typeof e[t]&&-1!==["time","geo","metric"].indexOf(e[t])&&(u[e[t]].push(e[1]),o=!0,"metric"===e[t]&&"string"==typeof e[++t]&&(a.unit={},a.index.forEach((function(n,r){var l=e[t+r].split(i);a.unit[n]={},c=a.unit[n],void 0!==l[0]&&""!==l[0]&&(c.decimals=1*l[0]),void 0!==l[1]&&""!==l[1]&&(c.label=l[1]),void 0!==l[2]&&""!==l[2]&&(c.symbol=l[2]),void 0!==l[1]&&-1!==["start","end"].indexOf(l[3])&&(c.position=l[3])}))))}break;case"label":case"source":case"updated":case"href":s[e[0]]=e[1]||null}})),o&&(u.time.length||delete u.time,u.geo.length||delete u.geo,u.metric.length||delete u.metric,s.role=u)}if(n=y.length,r=y[0].length,void 0!==f){for(;r--;)if(y[0][r]===f){a=r;break}if(null===a)return null}else a=r-1,f=y[0][a];if(","===p)for(r=1;r<n;r++)y[r][a]=Number(y[r][a].replace(",","."));else for(r=1;r<n;r++)y[r][a]=Number(y[r][a]);return h(y,{header:s,vlabel:f,slabel:d,type:"array",label:t.label||"",ovalue:t.ovalue||!1,ostatus:t.ostatus||!1,instance:t.instance||!1})}function v(e,t){if("object"!=typeof e)return null;if(e.hasOwnProperty("data")&&e.hasOwnProperty("meta")&&e.data.hasOwnProperty("dataSets")&&e.data.hasOwnProperty("structures")&&Array.isArray(e.data.structures)&&(e.dataSets=e.data.dataSets,e.structure=e.data.structures[0],e.header=e.meta),!e.hasOwnProperty("dataSets")||!Array.isArray(e.dataSets))return null;if(1!==e.dataSets.length)return null;e.dataSets[0].hasOwnProperty("observations")||function(e){var t=e.dataSets[0],n=t.series,r=e.structure,i=r.dimensions,l={};Object.keys(n).forEach((function(e){var t=n[e].observations;Object.keys(t).forEach((function(r){l[e+":"+r]=t[r].concat(n[e].attributes)}))})),t.observations=l,delete t.series,i.observation=i.series.concat(i.observation),delete i.series,r.attributes.observation=r.attributes.observation.concat(r.attributes.series),delete r.attributes.series}(e),void 0===t?t={ovalue:!1,ostatus:!1,instance:!1}:("boolean"!=typeof t.ovalue&&(t.ovalue=!1),"boolean"!=typeof t.ostatus&&(t.ostatus=!1),"boolean"!=typeof t.instance&&(t.instance=!1));var n=e.structure,r=e.dataSets[0].observations,l=n.attributes.observation,a=n.dimensions;if(!a.hasOwnProperty("observation"))return null;if(a.hasOwnProperty("series")&&Object.keys(a.series).length)return null;var s=1,o=[],u=[],c={},f=[],h={time:[],geo:[]},d=function(){},v=function(e,t){for(var n=e.size,r=n.length-t.length;r--;)t.push(0);for(var i=0,l=n.length,a=0,s=1;i<l;i++)a+=(s*=i>0?n[l-i]:1)*t[l-i-1];return a},p=function(e){if(c[e.id]={label:e.name},e.hasOwnProperty("role"))switch(e.role){case"REF_AREA":h.geo.push(e.id);break;case"TIME_PERIOD":h.time.push(e.id)}Object.defineProperty(c[e.id],"category",{value:{index:[],label:{}},writable:!0,enumerable:!0}),o.push(e.id),u.push(e.values.length),s*=e.values.length;var t=c[e.id].category;e.values.forEach((function(e){t.index.push(e.id),Object.defineProperty(t.label,e.id,{value:e.name,writable:!0,enumerable:!0})}))},y=e.header.links?e.header.links.find((function(e){return"request"===e.rel})):null,b=l.findIndex((function(e){return"OBS_STATUS"===e.id}));-1!==b&&(l[b].values.length?f=l[b].values:b=-1),a.observation.forEach(p),a.hasOwnProperty("dataSet")&&a.dataSet.forEach(p);var g={version:"2.0",class:"dataset",updated:e.header.prepared||null,source:e.header.sender.name||null,label:n.name||null,id:o,size:u,dimension:c,value:t.ovalue?{}:new Array(s).fill(null)};for(var m in y&&(g.link={alternate:[{type:"application/vnd.sdmx.data+json",href:y.href}]}),h.geo.length+h.time.length>0&&(h.time.length||delete h.time,h.geo.length||delete h.geo,g.role=h),-1!==b&&(g.status=t.ostatus?{}:new Array(s).fill(null),g.extension={status:{label:{}}},f.forEach((function(e){g.extension.status.label[e.id]=e.name})),d=t.ostatus?function(){var e=r[m][b];null!==e&&(g.status[v(g,_)]=f[e].id)}:function(){var e=r[m][b];g.status[v(g,_)]=null===e?null:f[e].id}),b++,r){var _=m.split(":");t.ovalue&&null===r[m][0]||(g.value[v(g,_)]=r[m][0]),d()}return t.instance?i(g):g}function p(e,t){if(void 0===e||!Array.isArray(e))return null;var n=JSON.parse(JSON.stringify(e)),r=n[0];if(!r.hasOwnProperty("version")||!r.hasOwnProperty("class")||"dataset"!==r.class)return null;void 0===t&&(t={});var l=void 0===t.label?null:t.label,a=void 0===t.by?null:t.by,s=[];if(null===a){for(var o=1,u=n.length;o<u;o++)s=s.concat(n[o].value);return r.value=s,null!==l&&(r.label=l),r}var c,f,d,v=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=0===t[r]?n:t[r];return e};n.forEach((function(e,t){var n=i(e).toTable({status:!0}),r=e.dimension[a].category;0===t?(s=[n[0]],c=r.index,f=r.label,d=r.unit):(c=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=t[r]+n;return e}(c,r.index,Object.keys(c).length),f=v(f,r.label,t),d=v(d,r.unit,t)),s=s.concat(n.slice(1))}));var p=h(s);return r.value=p.value,r.size=p.size,r.status=p.status||null,r.label=l||"",r.href=null,r.dimension[a].category.index=c||null,r.dimension[a].category.label=f||null,r.dimension[a].category.unit=d||null,r}function y(e,t){return null==e?"":-1!==e.indexOf(t)?'"'+e+'"':e}function b(e,t){if(void 0===e)return null;void 0===t&&(t={});var n={content:!1,field:!1},r=!0===t.rich,i=t.content||"label",s=t.field||"label",o=r?"value":t.vlabel||"Value",u=r?"status":t.slabel||"Status",c=!0===t.status,f=t.na||"n/a",h=t.delimiter||",",d=t.separator||"|",v=";"===h?t.decimal||",":t.decimal||".",p=!0===t.array,b=l(e,t.dsid||0),g=p?[]:"",m=p?[]:"",_=p?function(e){g.push(e)}:function(e){g+=e+"\n"},w=p?function(e){m.push(e)}:function(e){m+=e+"\n"};if(!a(b))return null;r?c=null!==b.status:("[id] label"===i&&(n.content=!0,i="id"),"[id] label"===s&&(n.field=!0,s="id"));var O=b.toTable({vlabel:o,slabel:u,status:c,field:r||n.field?"id":s,content:r||n.content?"id":i,type:"array"}),x=O[0].indexOf("id"===s?"value":o),A=c?O[0].indexOf("id"===s?"status":u):-1;return O.forEach((function(e,t){e.forEach((function(r,i){var l=b.Dimension(i);t&&i===x?null===r?e[i]=y(f,h):"."!==v&&(e[i]=String(e[i]).replace(".",v)):t&&i===A&&null===r?e[i]="":(n.content&&t&&l&&(e[i]="["+e[i]+"] "+l.Category(e[i]).label),n.field&&0===t&&(e[i]=l?"["+e[i]+"] "+l.label:"value"===e[i]?o:u),e[i]=y(e[i],h))})),_(e.join(h))})),r&&(w("jsonstat"+h+v+h+d),["label","source","updated","href"].forEach((function(e){b[e]&&w(e+h+y(b[e],h))})),b.id.forEach((function(e,t){var n=[],r=b.Dimension(t),i=r.role,l=!1,a="";a+="dimension"+h+y(e,h)+h+y(r.label,h)+h+r.length,"metric"===i&&r.__tree__.category.unit&&(l=!0),r.id.forEach((function(e,t){var i=[],s=r.Category(t);a+=h+y(e,h)+h+y(s.label,h),l&&(i.push(s.unit.hasOwnProperty("decimals")?s.unit.decimals:""),i.push(s.unit.label||""),s.unit.symbol&&(i.push(s.unit.symbol),i.push(s.unit.position)),n.push(y(i.join(d),h)))})),null!==i&&"classification"!==i&&(a+=h+r.role,l&&(a+=h+n.join(h))),w(a)})),g=p?m.concat(["data"],g):m+"data\n"+g),g}e.prototype.Item=function(e){if(null===this||"collection"!==this.class||!this.length)return null;if("number"==typeof e)return e>this.length||e<0?null:this.link.item[e];var t,n=[];if("object"==typeof e){if(!e.class&&!e.follow)return null;e.class&&(t="dataset"===e.class&&"boolean"==typeof e.embedded?!0===e.embedded?function(e,t,r){var i=e.link.item[t];r.class===i.class&&i.id&&i.size&&i.dimension&&n.push(i)}:function(e,t,r){var i=e.link.item[t];r.class!==i.class||i.id&&i.size&&i.dimension||n.push(i)}:function(e,t,r){r.class===e.link.item[t].class&&n.push(e.link.item[t])})}else t=function(e,t){n.push(e.link.item[t])};for(var r=0;r<this.length;r++)t(this,r,e);return n},e.prototype.Dataset=function(t){if(null===this)return null;if("dataset"===this.class)return void 0!==t?this:[this];var n,r=[],i=0;if("collection"===this.class){var l=this.Item({class:"dataset",embedded:!0});if(void 0===t){for(n=l.length;i<n;i++)r.push(new e(l[i]));return r}if("number"==typeof t&&t>=0&&t<l.length)return new e(l[t]);if("string"==typeof t)for(n=l.length;i<n;i++)if(l[i].href===t)return new e(l[i]);return null}if("bundle"!==this.class)return null;if(void 0===t){for(n=this.id.length;i<n;i++)r.push(this.Dataset(this.id[i]));return r}if("number"==typeof t){var a=this.id[t];return void 0!==a?this.Dataset(a):null}var s=this.__tree__[t];return void 0===s?null:new e({class:"dataset",__tree__:s})},e.prototype.Dimension=function(t,n){n="boolean"!=typeof n||n;var r,i=[],l=this.id.length,a=function(e,t){if(null!==e)for(var n in e)for(var r=null!==e[n]?e[n].length:0;r--;)if(e[n][r]===t)return n;return null};if(null===this||"dataset"!==this.class)return null;if(void 0===t){for(r=0;r<l;r++)i.push(this.Dimension(this.id[r]));return i}if("number"==typeof t){var s=this.id[t];return void 0!==s?this.Dimension(s,n):null}var o=this.role;if("object"==typeof t){if(t.hasOwnProperty("role")){for(r=0;r<l;r++){var u=this.id[r];a(o,u)===t.role&&i.push(this.Dimension(u,n))}return void 0===i[0]?null:i}return null}var c=this.__tree__.dimension;if(void 0===c)return null;var f=c[t];return void 0===f?null:n?new e({class:"dimension",__tree__:f,role:a(o,t)}):function(e,t){var n=[];for(var r in e)n[e[r]]=t[r];return n}(f.category.index,f.category.label)},e.prototype.Category=function(t){if(null===this||"dimension"!==this.class)return null;if(void 0===t){for(var n=[],r=0,i=this.id.length;r<i;r++)n.push(this.Category(this.id[r]));return n}if("number"==typeof t){var l=this.id[t];return void 0!==l?this.Category(l):null}var a=this.__tree__.category;if(void 0===a)return null;var s=a.index[t];if(void 0===s)return null;var o=a.unit&&a.unit[t]||null,u=a.coordinates&&a.coordinates[t]||null,c=a.child&&a.child[t]||null,f=a.note&&a.note[t]||null;return new e({class:"category",index:s,label:a.label[t],note:f,child:c,unit:o,coord:u})},e.prototype.Dice=function(n,r,i){var l,a,s,o,u=function(e,t){return e.hasOwnProperty(t)&&!!e[t]};if(null===this||"dataset"!==this.class)return null;if("object"!=typeof n)return this;"object"!=typeof r?("boolean"==typeof r&&!0===r&&(l=!0),"boolean"==typeof i&&!0===i||(i=!1)):(l=u(r,"clone"),i=u(r,"drop"),a=u(r,"stringify"),s=u(r,"ovalue"),o=u(r,"ostatus"));var c,f=this.value,h=l?new e(JSON.parse(JSON.stringify(this))):this,d=h.status,v=[],p=[],y=function(e,t){var n,r,i,l=(n=e,r=t,i={},Array.isArray(n[r])?(n[r].forEach((function(e,t){null!==e&&(i[String(t)]=e)})),i):n[r]);delete e[t],e[t]=l};Array.isArray(n)&&(n=function(e){var t={};return e.forEach((function(e){t[e[0]]=e[1]})),t}(n)),null===n&&(n={});var b=Object.keys(n);return b.length>0&&(b.forEach((function(e){var t=n[e];Array.isArray(t)||(n[e]=[t]),0===n[e].length&&delete n[e]})),i&&(n=function(e){var t={};return Object.keys(e).forEach((function(n){t[n]=h.Dimension(n).id.filter((function(t){return-1===e[n].indexOf(t)}))})),t}(n)),h.toTable({type:"arrobj",content:"id",status:!0}).forEach((function(e,t){var r=[];b.forEach((function(t){var i=n[t],l=[];i.forEach((function(n){l.push(e[t]===n)})),r.push(-1!==l.indexOf(!0))})),-1===r.indexOf(!1)&&(v.push(e.value),p.push(e.status))})),b.forEach((function(e){var t=h.Dimension(e).id,r=0,i={};h.size[h.id.indexOf(e)]=n[e].length,t.forEach((function(t){-1!==n[e].indexOf(t)&&(i[t]=r,r++)})),h.__tree__.dimension[e].category.index=i})),h.n=v.length,h.value=h.__tree__.value=t(f)?function(e,t){return t.from(e)}(v,f.constructor):v,h.status=h.__tree__.status=null!==d?p:null),a?((c=h.__tree__).hasOwnProperty("id")||(c.version="2.0",c.hasOwnProperty("class")||(c.class="dataset"),c.id=c.dimension.id,c.size=c.dimension.size,delete c.dimension.id,delete c.dimension.size,c.dimension.hasOwnProperty("role")&&(c.role=c.dimension.role,delete c.dimension.role)),c.hasOwnProperty("status")&&-1!==["null","{}","[]"].indexOf(JSON.stringify(c.status))&&delete c.status,c.hasOwnProperty("role")&&(delete c.role.classification,["geo","time","metric"].forEach((function(e){null===c.role[e]&&delete c.role[e]}))),s&&y(c,"value"),o&&c.hasOwnProperty("status")&&y(c,"status"),JSON.stringify(c)):h},e.prototype.Slice=function(e){if(null===this||"dataset"!==this.class)return null;if(void 0===e)return this;if(!Array.isArray(e)){var t,n=[];for(t in e)n.push([t,e[t]]);e=n}return this.Dice(e.map((function(e){return[e[0],[e[1]]]})))},e.prototype.Data=function(e,t){var n,r,i=[],l=function(e){for(var t in e)if(e.hasOwnProperty(t))return t};if(null===this||"dataset"!==this.class)return null;if(void 0===e){for(r=this.value.length,n=0;n<r;n++)i.push(this.Data(n));return i}if("boolean"!=typeof t&&(t=!0),"number"==typeof e){var a=this.value[e];return void 0===a?null:t?{value:a,status:this.status?this.status[e]:null}:a}var s="object",o=this.__tree__,u=o.size||o.dimension&&o.dimension.size,c=u.length;if(Array.isArray(e)){if(!Array.isArray(e[0])){if(this.length!==e.length)return null;var f=1,h=0,d=[],v=[];for(n=0;n<c;n++)if(void 0!==e[n]){if("number"!=typeof e[n]||e[n]>=u[n])return null;h+=(f*=n>0?u[c-n]:1)*e[c-n-1]}else d.push(n),v.push(u[n]);if(d.length>1)return null;if(1===d.length){for(var p=0,y=v[0];p<y;p++){var b=[];for(n=0;n<c;n++)n!==d[0]?b.push(e[n]):b.push(p);i.push(this.Data(b,t))}return i}return t?{value:this.value[h],status:this.status?this.status[h]:null}:this.value[h]}s="array"}var g=function(e,t,n){var r,i=[],a={},s=e.dimension,o=e.id||s.id,u=e.size||s&&s.size;if("array"===n){for(r=t.length;r--;)a[t[r][0]]=t[r][1];t=a}for(var c=0,f=o.length;c<f;c++){var h=o[c],d=t[h];i.push("string"==typeof d?d:1===u[c]?l(s[h].category.index):null)}return i}(o,e,s),m=[],_=o.dimension,w=o.id||_.id;for(n=0,r=g.length;n<r;n++)m.push(_[w[n]].category.index[g[n]]);return this.Data(m,t)},e.prototype.toTable=function(e,t){if(null===this||"dataset"!==this.class)return null;1==arguments.length&&"function"==typeof e&&(t=e,e=null),"arrobj"!==(e=e||{field:"label",content:"label",vlabel:"Value",slabel:"Status",type:"array",status:!1,unit:!1,by:null,prefix:"",drop:[],meta:!1,comma:!1,bylabel:!1}).type&&"objarr"!==e.type||void 0!==e.field||(e.field="id");var r,i,l,a,s,o,u,c,f,h="id"===e.field,d=function(e){return(h?"value":e)||"Value"},v=function(e){return(h?"status":e)||"Status"},p=this.__tree__,y=!0===e.status;if("function"==typeof t){r=this.toTable(e);var b=[],g="array"!==e.type?0:1;for(s=(U="object"!==e.type?r.slice(g):r.rows.slice(0)).length,i=0;i<s;i++){var m=t.call(this,U[i],i);void 0!==m&&b.push(m)}return"object"===e.type?{cols:r.cols,rows:b}:("array"===e.type&&b.unshift(r[0]),b)}if("arrobj"===e.type||"objarr"===e.type){var _=[],w=p.role&&p.role.metric,O=function(){},x={},A=this,E=A.id,S=e.by&&-1!==E.indexOf(e.by)?e.by:null,D=!0===e.meta,j=void 0!==e.drop&&Array.isArray(e.drop)?e.drop:[],P=!0===e.comma,k=!0===e.bylabel,z=A.value.constructor,C=function(t){var r,i={},l=d(e.vlabel);return"objarr"===e.type&&(r=null===S&&n(z.name)?function(e){i[e]=e===l?z.from(t,(function(t){return t[e]})):t.map((function(t){return t[e]}))}:function(e){i[e]=t.map((function(t){return t[e]}))},Object.keys(t[0]).forEach(r),t=i),D?(i={},E.forEach((function(e){var t=A.Dimension(e);i[e]={label:t.label,role:t.role,categories:{id:t.id,label:A.Dimension(e,!1)}}})),{meta:{label:A.label,source:A.source,updated:A.updated,id:E,status:y,unit:e.unit,by:S,bylabel:k,drop:null!==S&&j.length>0?j:null,prefix:null!==S?B||"":null,comma:P,dimensions:i},data:t}):t};S&&(e.field="id");var N=(r=this.toTable({field:e.field,vlabel:e.vlabel,slabel:e.slabel,content:e.content,status:y})).shift();if(null===S&&e.unit&&w){if("id"!==e.content)for(var T=w.length;T--;){var R=this.Dimension(w[T]);x[w[T]]={};for(var F=R.length;F--;)x[w[T]][R.Category(F).label]=R.id[F]}O=function(t,n){if(-1!==w.indexOf(t)){var r=p.dimension[t].category;r.unit?I.unit=r.unit["id"!==e.content?x[t][n]:n]:I.unit=null}},e.unit=!0}else e.unit=!1;for(s=r.length,i=0;i<s;i++){var I={};for(l=r[i].length;l--;)I[N[l]]=r[i][l],O(N[l],r[i][l]);_.push(I)}if(P&&_.forEach((function(e){null!==e.value&&(e.value=(""+e.value).replace(".",","))})),null!==S){var J,L={},U=[],q={},B=void 0!==e.prefix?e.prefix:"";j.forEach((function(e,t){(!A.Dimension(e)||A.Dimension(e).length>1)&&(j[t]="")}));var V=E.filter((function(e){return e!==S&&-1===j.indexOf(e)})),M=A.Dimension(S);for(var H in"id"!==e.content?k?J=function(e,t,n){e[t][B+n[S]]=n.value}:(M.Category().forEach((function(e,t){q[e.label]=M.id[t]})),J=function(e,t,n){e[t][B+q[n[S]]]=n.value}):J=function(e,t,n){e[t][B+n[S]]=n.value},_.forEach((function(e){var t=function(e,t){var n=[];return t.forEach((function(t){n.push(e[t])})),n.join("\t")}(e,V);void 0===L[t]&&(L[t]=function(e,t){var n={};return t.forEach((function(t){n[t]=e[t]})),n}(e,V)),J(L,t,e,S)})),L)U.push(L[H]);return y=!1,C(U)}return C(_)}if("object"===e.type){var G="number"==typeof this.value[0]||null===this.value[0]?"number":"string";o=function(e,t){var n=h&&e||t||e;re.push({id:e,label:n,type:"string"})},u=function(e,t,n){var r=d(e),i=v(t);n&&re.push({id:"status",label:i,type:"string"}),re.push({id:"value",label:r,type:G})},c=function(e){pe.push({v:e})},f=function(e){pe.push({v:e}),ie.push({c:pe})}}else o=function(e,t){var n=h&&e||t||e;re.push(n)},u=function(e,t,n){var r=d(e),i=v(t);n&&re.push(i),re.push(r),ne.push(re)},c=function(e){pe.push(e)},f=function(e){pe.push(e),ne.push(pe)};var K=p.dimension,Q=p.id||K.id,W=p.size||K.size,X=Q.length;if(X!=W.length)return!1;var Y=[],Z=1,$=(T=1,[]),ee=[],te=[],ne=[],re=[],ie=[];for(i=0;i<X;i++){var le=Q[i];o(le,K[le].label),Z*=W[i],T*=W[i];var ae=[];for(l=0;l<W[i];l++)for(var se in K[Q[i]].category.index)if(K[Q[i]].category.index[se]===l){var oe="id"!==e.content&&K[Q[i]].category.label?K[Q[i]].category.label[se]:se;ae.push(oe)}Y.push(ae),$.push(T)}for(u(e.vlabel,e.slabel,y),s=Y.length,i=0;i<s;i++){for(var ue=[],ce=0,fe=Y[i].length;ce<fe;ce++)for(var he=0;he<Z/$[i];he++)ue.push(Y[i][ce]);ee.push(ue)}for(s=ee.length,i=0;i<s;i++){var de=[],ve=0;for(a=0;a<Z;a++)de.push(ee[i][ve]),++ve===ee[i].length&&(ve=0);te.push(de)}for(a=0;a<Z;a++){var pe=[];s=ee.length;for(var ye=0;ye<s;ye++)c(te[ye][a]);y&&c(this.status?this.status[a]:null),f(this.value[a])}return"object"===e.type?{cols:re,rows:ie}:ne},e.prototype.node=function(){return this.__tree__},e.prototype.toString=function(){return this.class},String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)};var g="3.4.1";export{c as datalist,d as fromCSV,v as fromSDMX,h as fromTable,p as join,u as tbrowser,b as toCSV,g as version};
|
|
1
|
+
// jsonstat-suite v3.5.0 Copyright 2023 Xavier Badosa https://jsonstat.com
|
|
2
|
+
function e(r,i){var l,a,o,s,u=function(e,r,i){var l,a=[];if(i&&!n(i.name)&&(i=null),"string"==typeof e&&(e=[e]),Array.isArray(e)||t(e)){if(e.length===r)return i&&-1===e.findIndex((function(e){return null==e}))?i.from(e):e;if(1===e.length){for(l=0;l<r;l++)a.push(e[0]);return a}}for(l=0;l<r;l++){var o=void 0===e[l]?null:e[l];a.push(o)}return a};if(this.length=0,this.id=[],null!=r)switch(this.class=r.class||"bundle",this.class){case"bundle":var c=[],f=0;if(this.error=null,this.length=0,null===r||"object"!=typeof r)return void(this.class=null);if(r.hasOwnProperty("error"))return void(this.error=r.error);if("dataset"===r.class||"collection"===r.class||"dimension"===r.class)return new e(r);for(a in r)f++,c.push(a);this.__tree__=r,this.length=f,this.id=c;break;case"dataset":r.hasOwnProperty("__tree__")?this.__tree__=l=r.__tree__:this.__tree__=l=r,this.label=l.label||null,this.note=l.note||null,this.link=l.link||null,this.href=l.href||null,this.updated=l.updated||null,this.source=l.source||null,this.extension=l.extension||null;var d,h=0,v=l.size||l.dimension&&l.dimension.size;if(this.size=v,this.value=l.hasOwnProperty("value")&&null!==l.value&&0!==l.value.length?l.value:{},Array.isArray(this.value)||t(this.value))h=this.value.length;else{var p=1;for(d=v.length;d--;)p*=v[d];h=p}if(this.value=u(this.value,h,i),this.status=l.hasOwnProperty("status")?u(l.status,h):null,l.hasOwnProperty("dimension")){var y=l.dimension,b=l.role||!l.version&&y.role||null,g=l.id||y.id,m=v.length,_=function(e){b.hasOwnProperty(e)||(b[e]=null)};if(!Array.isArray(g)||!Array.isArray(v)||g.length!=m)return;if(this.length=m,this.id=g,b&&(_("time"),_("geo"),_("metric"),_("classification")),b&&null===b.classification){var O=[],w=["time","geo","metric"],x=function(e,t){for(var n=t.length;n--;)if(e===t[n])return!0;return!1};for(d=0;d<3;d++){var A=b[w[d]];null!==A&&(O=O.concat(A))}for(b.classification=[],d=0;d<m;d++)x(g[d],O)||b.classification.push(g[d]);0===b.classification.length&&(b.classification=null)}this.role=b,this.n=h;for(var E=0,j=this.length;E<j;E++)if(y[g[E]].category.hasOwnProperty("index")){if(Array.isArray(y[g[E]].category.index)){var S={},D=y[g[E]].category.index;for(o=D.length,s=0;s<o;s++)S[D[s]]=s;y[g[E]].category.index=S}}else{var P=0;for(a in y[g[E]].category.index={},y[g[E]].category.label)y[g[E]].category.index[a]=P++}}else this.length=0;break;case"dimension":if(!r.hasOwnProperty("__tree__"))return new e({version:"2.0",class:"dataset",dimension:{d:r},id:["d"],size:[function(e){var t=void 0===e.index?e.label:e.index;return Array.isArray(t)?t.length:Object.keys(t).length}(r.category)],value:[null]}).Dimension(0);var k=[],z=(l=r.__tree__).category;if(!l.hasOwnProperty("category"))return;if(!z.hasOwnProperty("label"))for(a in z.label={},z.index)z.label[a]=a;for(a in z.index)k[z.index[a]]=a;this.__tree__=l,this.label=l.label||null,this.note=l.note||null,this.link=l.link||null,this.href=l.href||null,this.id=k,this.length=k.length,this.role=r.role,this.hierarchy=z.hasOwnProperty("child"),this.extension=l.extension||null;break;case"category":var C=r.child;this.id=C,this.length=null===C?0:C.length,this.index=r.index,this.label=r.label,this.note=r.note||null,this.unit=r.unit,this.coordinates=r.coord;break;case"collection":if(this.length=0,this.label=r.label||null,this.note=r.note||null,this.link=r.link||null,this.href=r.href||null,this.updated=r.updated||null,this.source=r.source||null,this.extension=r.extension||null,null!==this.link&&r.link.item){var N=r.link.item;if(this.length=Array.isArray(N)?N.length:0,this.length)for(s=0;s<this.length;s++)this.id[s]=N[s].href}}}function t(e){return"[object ArrayBuffer]"===Object.prototype.toString.call(e.buffer)}function n(e){return-1!==["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"].indexOf(e)}function r(e){if(!e.ok)throw new Error(e.status+" "+e.statusText);return e.json()}function i(t,n,i){var l="object"==typeof n?n:null;return"function"!=typeof i&&(i=null),i||"function"!=typeof n||(i=n),"object"==typeof t?new e(t,i):"version"===t?"1.4.2":fetch?fetch(t,l).then(r).then((function(t){return new e(t,i)})):void 0}function l(e,t){return null==e?null:("string"!=typeof e&&void 0!==e.length||(e=i(e)),0===e.length||"dataset"!==e.class&&"collection"!==e.class&&"bundle"!==e.class?null:"dataset"===e.class?e:e.Dataset(t))}function a(e){if(null===e||0===e.length||"dataset"!==e.class)return!1;for(var t=e.length,n=1;t--;)n*=e.Dimension(t).length;return n===e.n}function o(e,t,n){var r,i,l,a,o;return(t.label||n).capitalize()+(i=t,o="",(r=e)&&"metric"===r.role&&i.unit&&(l=i.unit.hasOwnProperty("label")?i.unit.label:"")+(a=i.unit.hasOwnProperty("symbol")?i.unit.symbol:"")!==""&&(o=" ("+(o=""===a?l:""===l?a:"start"===i.unit.position?a+l:l+" "+a)+")"),o)}function s(e,t,n){var r,i='<select name="'+t+'">',l=[];if(null!==n[1]){if(r=e.id,l=e.Dimension(),2===r.length)return(e.Dimension(n[0]).label||n[0]).capitalize()}else{var a=e.Dimension(t);if(r=a.id,l=a.Category(),1===r.length)return}return r.forEach((function(e,t){var r=e!==n[0]?"":'selected="selected" ';null!==n[1]&&e===n[1]||(i+="<option "+r+'value="'+e+'">'+o(a,l[t],e)+"</option>")})),i+="</select>"}function u(e,t,n){function r(e){void 0!==t?t.innerHTML=i[e]:window.alert(i[e])}if(void 0!==e)if(void 0!==t){void 0===n&&(n={});var i=void 0===n.i18n||void 0===n.i18n.msgs?{urierror:"tbrowser: A valid JSON-stat input must be specified.",selerror:"tbrowser: A valid selector must be specified.",jsonerror:"The request did not return a valid JSON-stat dataset.",dimerror:"Only one dimension was found in the dataset. At least two are required.",dataerror:"Selection returned no data!",source:"Source",filters:"Filters",constants:"Constants",rc:"Rows & Columns",na:"n/a"}:n.i18n.msgs,u=void 0===n.i18n||void 0===n.i18n.locale?"en-US":n.i18n.locale,c=n.dsid||0,f=n.status||!1,d=n.tblclass||"",h=n.nonconst||!1,v=l(e,c);if(a(v)){if(h)var p=function(e){var t=0,n=e.size.slice(0),r=[];return n.forEach((function(n,i){var l=i-t,a=e.Dimension(l);1===n&&(delete e.__tree__.dimension[e.id[l]],e.size.splice(l,1),e.id.splice(l,1),e.length--,t++,r.push(a.label.capitalize()+": "+a.Category(0).label.capitalize()))})),r}(v);1!==v.length?function e(t,r,l,a){"function"==typeof n.callback&&n.callback(l);var c="",d="",v="",y="",b=l.rows,g=r.Dimension(b),m=g.id,_=l.cols,O=r.Dimension(_),w=O.id,x=r.role&&r.role.metric?r.role.metric[0]:null,A=null!==x?r.Dimension(x):null,E=function(e){return e.hasOwnProperty("unit")&&e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null},j=l.filters,S=JSON.parse(JSON.stringify(j)),D=[],P="",k="",z=r.source?i.source+": "+r.source:"",C=null!==r.label?'<span class="label">'+r.label.capitalize()+"</span>":"";for(var N in h&&p.length&&(C='<span class="label">'+p.join(". ")+"</span>"),""!==z&&"."!==z.slice(-1)&&(z+="."),v+="<caption>"+C+"<form>",j){var T=r.Dimension(N),R=T.label?T.label.capitalize():N.capitalize();T.length>1?P+="<p>"+s(r,N,[j[N],null])+" <strong>"+R+"</strong></p>":D.push({label:R,value:o(T,T.Category(0)),name:N,id:T.id[0]})}""!==P&&(P='<fieldset id="filters"><legend>'+i.filters+"</legend>"+P+"</fieldset>"),D.forEach((function(e){k+="<p>"+e.value+" <strong>"+e.label+'</strong></p><input type="hidden" name="'+e.name+'" value="'+e.id+'" />'})),""!==k&&(k='<fieldset id="constants"><legend>'+i.constants+"</legend>"+k+"</fieldset>"),v+=k+P+'<fieldset id="rowscols"><legend>'+i.rc+"</legend>"+s(r,"rows",[b,_])+" <a>↔</a> "+s(r,"cols",[_,b])+"</fieldset></form></caption>",y+="<tbody>";var F=Number.toLocaleString&&"none"!==u?function(e,t){return null===t?e.toLocaleString(u):e.toLocaleString(u,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)};if(m.forEach((function(e){S[b]=e;var t=r.Data(S),n=function(e,t){var n,r=_!==x?null===A?null:E(A.Category(S[x])):E(O.Category(t));null!==e.value?(n=F(e.value,r),f&&null!==e.status&&(n+=" ("+e.status+")")):n=e.status||i.na,y+="<td>"+n+"</td>"};null!==t?(y+='<tr><th scope="row">'+o(g,g.Category(e))+"</th>",Array.isArray(t)?t.forEach((function(e,t){n(e,t)})):n(t,0),y+="</tr>"):y="ERROR"})),"ERROR"===y)return i.dataerror;y+="</tbody>",c+="<thead><tr><th></th>",w.forEach((function(e){c+='<th scope="col">'+o(O,O.Category(e))+"</th>"})),c+="</tr></thead>",""!==z&&(d='<tfoot><tr><td colspan="'+(w.length+1)+'">'+z+"</td></tr></tfoot>"),t.innerHTML='<table class="'+a+'">'+v+c+y+d+"</table>",[].slice.call(t.querySelectorAll("select")).forEach((function(n){n.addEventListener("change",(function(n){var i,l;e(t,r,function(e,t,n){var r={filters:{}};return n.forEach((function(e){"rows"===e.name||"cols"===e.name?r[e.name]=e.value:r.filters[e.name]=e.value})),"rowscols"===t&&e.id.forEach((function(t,n){t!==r.rows&&t!==r.cols?void 0===r.filters[t]&&(r.filters[t]=e.Dimension(n).id[0]):delete r.filters[t]})),r}(r,n.target.parentElement.getAttribute("id"),(i=t,l=[],[].slice.call(i.querySelectorAll("select, input")).forEach((function(e){l.push({name:e.name,value:e.value})})),l)),a)}),!1)})),t.querySelector("a").addEventListener("click",(function(){l.cols=b,l.rows=_,e(t,r,l,a)}),!1)}(t,v,function(e,t){if("object"==typeof t)return{rows:t.rows,cols:t.cols,filters:t.filters};var n,r,i={},l=[],a=e.id;if(t){var o="bigger"===t?function(e,t){return e.len<t.len?1:-1}:function(e,t){return e.len>t.len?1:-1};e.Dimension().forEach((function(e,t){l.push({id:a[t],len:e.length})})),l.sort(o),n=l[0].id,r=l[1].id}else n=a[0],r=a[1];return e.Dimension(n).length<e.Dimension(r).length&&(n=r+(r=n,"")),a.forEach((function(t){t!==n&&t!==r&&(i[t]=e.Dimension(t).id[0])})),{rows:n,cols:r,filters:i}}(v,n.preset),d):r("dimerror")}else r("jsonerror")}else r("selerror");else r("urierror")}function c(e,t){if(void 0===e)return null;void 0===t&&(t={});var n="",r="",i="",o=0,s=t.na||"n/a",u=t.dsid||0,c=t.vlabel||null,f=t.slabel||null,d=t.counter||!1,h=t.tblclass||"",v=t.numclass||"",p=t.valclass||"",y=t.status||!1,b=t.locale||"en-US",g=t.source||"Source",m=l(e,u),_=m.role&&m.role.metric?m.id.indexOf(m.role.metric[0]):null,O=m.Dimension({role:"metric"}),w={},x=Number.toLocaleString&&"none"!==b?function(e,t){return null===t?e.toLocaleString(b):e.toLocaleString(b,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)},A=function(e,t){var i=null;e.forEach((function(e,l){var a=S===l?' class="'+v+" "+p+'"':"",o=s;t?(_===l&&(i=w[e]),null!==e&&(o=S===l?x(e,i):e),r+="<td"+a+">"+o+"</td>"):n+="<th"+a+">"+e+"</th>"}))},E=d?function(e,t){t?r+='<tr><td class="'+v+'">'+t+"</td>":n+='<th class="'+v+'">#</th>',A(e,t),r+="</tr>"}:function(e,t){r+="<tr>",A(e,t),r+="</tr>"};if(!a(m))return null;O&&O[0].Category().forEach((function(e){var t=e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null;w[e.label]=t}));var j=m.toTable({status:y,vlabel:c,slabel:f}),S=j[0].length-1;return j.forEach((function(e,t){E(e,t)})),m.source&&(o=m.length+1,d&&o++,y&&o++,"."!==(g+=": "+m.source).slice(-1)&&(g+="."),i='<tfoot><td colspan="'+o+'">'+g+"</td></tfoot>"),'<table class="'+h+'"><caption>'+(t.caption||m.label||"")+"</caption><thead><tr>"+n+"</tr></thead><tbody>"+r+"</tbody>"+i+"</table>"}function f(e,t){var n={};return Array.isArray(e[t])?(e[t].forEach((function(e,t){null!==e&&(n[String(t)]=e)})),n):e[t]}function d(e,t){if(void 0===e)return null;void 0===t&&(t={}),"boolean"!=typeof t.ovalue&&(t.ovalue=!1),"boolean"!=typeof t.ostatus&&(t.ostatus=!1),"boolean"!=typeof t.instance&&(t.instance=!1);var n=t.vlabel||"Value",r=t.slabel||"Status",l=t.type||"array",a=t.label||"",o=t.header||null,s=[],u=[],c=[],d=[],h={},v={},p=function(e,t){for(var n=1,r=0,i=0;i<w;i++)r+=(n*=i>0?t[w-i]:1)*e[w-i-1];return r},y=function(){var t=e[x][n];c[p(A,u)]=isNaN(t)?null:t};switch(l){case"array":e=function(e){for(var t=e[0],n=e.slice(1),r=[],i=0,l=n.length;i<l;i++){for(var a=0,o=t.length,s={};a<o;a++)s[t[a]]=n[i][a];r.push(s)}return r}(e);break;case"object":e=function(e){for(var t=e.cols.map((function(e){return e.id})),n=e.rows,r=[],i=0,l=n.length;i<l;i++){for(var a=0,o=t.length,s={};a<o;a++)s[t[a]]=n[i].c[a].v;r.push(s)}return r}(e)}var b,g=e.length;for(var m in t.hasOwnProperty("drop")&&Array.isArray(t.drop)&&t.drop.length&&e.forEach((function(e){t.drop.forEach((function(t){delete e[t]}))})),e[0])if(m!==n)if(m!==r){if(s.push(m),o)b=o.dimension[m],h[m]=b.category.index;else{h[m]=[];for(var _=0;_<g;_++){var O=e[_][m];-1===h[m].indexOf(O)&&h[m].push(O)}}u.push(h[m].length),v[m]={label:o?b.label:m,category:{index:h[m]}},o&&(v[m].category.label=b.category.label,b.category.unit&&(v[m].category.unit=b.category.unit))}else y=function(){var t=e[x][n],i=e[x][r];c[p(A,u)]=isNaN(t)?null:t,d[p(A,u)]=""===i?null:i};for(var w=s.length,x=0;x<g;x++){for(var A=[],E=0;E<w;E++){var j=s[E];A.push(h[j].indexOf(e[x][j]))}y()}var S={version:"2.0",class:"dataset",value:c,dimension:v,id:s,size:u};return a&&(S.label=a),d.length&&(S.status=d),o&&(o.label&&(S.label=o.label),o.source&&(S.source=o.source),o.updated&&(S.updated=o.updated),o.href&&(S.href=o.href),o.role&&(S.role=o.role)),t.ovalue&&(S.value=f(S,"value")),t.ostatus&&S.hasOwnProperty("status")&&(S.status=f(S,"status")),t.instance?i(S):S}function h(e,t){if(void 0===e)return null;void 0===t&&(t={});var n,r,i,l=[],a=null,o=null,s=!1,u={time:[],geo:[],metric:[]},c="jsonstat"===e.substring(0,8),f=c?"value":t.vlabel,h=c?"status":t.slabel,v=c?e.substring(8,9):t.delimiter||",",p=";"===v?t.decimal||",":t.decimal||".",y=function(e,t){t=t||",";for(var n,r,i=new RegExp("(\\"+t+'|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\'+t+"\\r\\n]*))","gi"),l=[[]],a=null;a=i.exec(e);)(r=a[1]).length&&r!=t&&l.push([]),n=a[2]?a[2].replace(new RegExp('""',"g"),'"'):a[3],l[l.length-1].push(n);return l}(e.trim(),v);if(c){for(p=y[0][1],i=y[0][2],y.shift();"data"!==y[0][0];)l.push(y.shift());y.shift(),o={dimension:{}},l.forEach((function(e){var t,n,r,l,a,c,f,d;switch(e[0]){case"dimension":if(o.dimension[e[1]]={},(l=o.dimension[e[1]]).label=e[2],l.category={},(a=l.category).index=[],n={},r=2*e[3]+3,e.length>=r){for(t=4;t<r;t++)f=e[t],d=e[++t],Object.defineProperty(n,f,{value:d,writable:!0,configurable:!0,enumerable:!0}),a.label=n,a.index.push(f);"string"==typeof e[t]&&-1!==["time","geo","metric"].indexOf(e[t])&&(u[e[t]].push(e[1]),s=!0,"metric"===e[t]&&"string"==typeof e[++t]&&(a.unit={},a.index.forEach((function(n,r){var l=e[t+r].split(i);a.unit[n]={},c=a.unit[n],void 0!==l[0]&&""!==l[0]&&(c.decimals=1*l[0]),void 0!==l[1]&&""!==l[1]&&(c.label=l[1]),void 0!==l[2]&&""!==l[2]&&(c.symbol=l[2]),void 0!==l[1]&&-1!==["start","end"].indexOf(l[3])&&(c.position=l[3])}))))}break;case"label":case"source":case"updated":case"href":o[e[0]]=e[1]||null}})),s&&(u.time.length||delete u.time,u.geo.length||delete u.geo,u.metric.length||delete u.metric,o.role=u)}if(n=y.length,r=y[0].length,void 0!==f){for(;r--;)if(y[0][r]===f){a=r;break}if(null===a)return null}else a=r-1,f=y[0][a];if(","===p)for(r=1;r<n;r++)y[r][a]=Number(y[r][a].replace(",","."));else for(r=1;r<n;r++)y[r][a]=Number(y[r][a]);return d(y,{header:o,vlabel:f,slabel:h,type:"array",label:t.label||"",ovalue:t.ovalue||!1,ostatus:t.ostatus||!1,instance:t.instance||!1})}function v(e,t){if("object"!=typeof e)return null;if(e.hasOwnProperty("data")&&e.hasOwnProperty("meta")&&e.data.hasOwnProperty("dataSets")&&e.data.hasOwnProperty("structures")&&Array.isArray(e.data.structures)&&(e.dataSets=e.data.dataSets,e.structure=e.data.structures[0],e.header=e.meta),!e.hasOwnProperty("dataSets")||!Array.isArray(e.dataSets))return null;if(1!==e.dataSets.length)return null;e.dataSets[0].hasOwnProperty("observations")||function(e){var t=e.dataSets[0],n=t.series,r=e.structure,i=r.dimensions,l={};Object.keys(n).forEach((function(e){var t=n[e].observations;Object.keys(t).forEach((function(r){l[e+":"+r]=t[r].concat(n[e].attributes)}))})),t.observations=l,delete t.series,i.observation=i.series.concat(i.observation),delete i.series,r.attributes.observation=r.attributes.observation.concat(r.attributes.series),delete r.attributes.series}(e),void 0===t?t={ovalue:!1,ostatus:!1,instance:!1}:("boolean"!=typeof t.ovalue&&(t.ovalue=!1),"boolean"!=typeof t.ostatus&&(t.ostatus=!1),"boolean"!=typeof t.instance&&(t.instance=!1));var n=e.structure,r=e.dataSets[0].observations,l=n.attributes.observation,a=n.dimensions;if(!a.hasOwnProperty("observation"))return null;if(a.hasOwnProperty("series")&&Object.keys(a.series).length)return null;var o=1,s=[],u=[],c={},f=[],d={time:[],geo:[]},h=function(){},v=function(e,t){for(var n=e.size,r=n.length-t.length;r--;)t.push(0);for(var i=0,l=n.length,a=0,o=1;i<l;i++)a+=(o*=i>0?n[l-i]:1)*t[l-i-1];return a},p=function(e){if(c[e.id]={label:e.name},e.hasOwnProperty("role"))switch(e.role){case"REF_AREA":d.geo.push(e.id);break;case"TIME_PERIOD":d.time.push(e.id)}Object.defineProperty(c[e.id],"category",{value:{index:[],label:{}},writable:!0,enumerable:!0}),s.push(e.id),u.push(e.values.length),o*=e.values.length;var t=c[e.id].category;e.values.forEach((function(e){t.index.push(e.id),Object.defineProperty(t.label,e.id,{value:e.name,writable:!0,enumerable:!0})}))},y=e.header.links?e.header.links.find((function(e){return"request"===e.rel})):null,b=l.findIndex((function(e){return"OBS_STATUS"===e.id}));-1!==b&&(l[b].values.length?f=l[b].values:b=-1),a.observation.forEach(p),a.hasOwnProperty("dataSet")&&a.dataSet.forEach(p);var g={version:"2.0",class:"dataset",updated:e.header.prepared||null,source:e.header.sender.name||null,label:n.name||null,id:s,size:u,dimension:c,value:t.ovalue?{}:new Array(o).fill(null)};for(var m in y&&(g.link={alternate:[{type:"application/vnd.sdmx.data+json",href:y.href}]}),d.geo.length+d.time.length>0&&(d.time.length||delete d.time,d.geo.length||delete d.geo,g.role=d),-1!==b&&(g.status=t.ostatus?{}:new Array(o).fill(null),g.extension={status:{label:{}}},f.forEach((function(e){g.extension.status.label[e.id]=e.name})),h=t.ostatus?function(){var e=r[m][b];null!==e&&(g.status[v(g,_)]=f[e].id)}:function(){var e=r[m][b];g.status[v(g,_)]=null===e?null:f[e].id}),b++,r){var _=m.split(":");t.ovalue&&null===r[m][0]||(g.value[v(g,_)]=r[m][0]),h()}return t.instance?i(g):g}function p(e,t){if(void 0===e||!Array.isArray(e))return null;var n=JSON.parse(JSON.stringify(e)),r=n[0];if(!r.hasOwnProperty("version")||!r.hasOwnProperty("class")||"dataset"!==r.class)return null;void 0===t&&(t={});var l=void 0===t.label?null:t.label,a=void 0===t.by?null:t.by,o=[];if(null===a){for(var s=1,u=n.length;s<u;s++)o=o.concat(n[s].value);return r.value=o,null!==l&&(r.label=l),r}var c,f,h,v=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=0===t[r]?n:t[r];return e};n.forEach((function(e,t){var n=i(e).toTable({status:!0}),r=e.dimension[a].category;0===t?(o=[n[0]],c=r.index,f=r.label,h=r.unit):(c=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=t[r]+n;return e}(c,r.index,Object.keys(c).length),f=v(f,r.label,t),h=v(h,r.unit,t)),o=o.concat(n.slice(1))}));var p=d(o);return r.value=p.value,r.size=p.size,r.status=p.status||null,r.label=l||"",r.href=null,r.dimension[a].category.index=c||null,r.dimension[a].category.label=f||null,r.dimension[a].category.unit=h||null,r}function y(e,t){return null==e?"":-1!==e.indexOf(t)?'"'+e+'"':e}function b(e,t){if(void 0===e)return null;void 0===t&&(t={});var n={content:!1,field:!1},r=!0===t.rich,i=t.content||"label",o=t.field||"label",s=r?"value":t.vlabel||"Value",u=r?"status":t.slabel||"Status",c=!0===t.status,f=t.na||"n/a",d=t.delimiter||",",h=t.separator||"|",v=";"===d?t.decimal||",":t.decimal||".",p=!0===t.array,b=l(e,t.dsid||0),g=p?[]:"",m=p?[]:"",_=p?function(e){g.push(e)}:function(e){g+=e+"\n"},O=p?function(e){m.push(e)}:function(e){m+=e+"\n"};if(!a(b))return null;r?c=null!==b.status:("[id] label"===i&&(n.content=!0,i="id"),"[id] label"===o&&(n.field=!0,o="id"));var w=!r&&t.by&&-1!==b.id.indexOf(t.by)?t.by:null,x=w&&void 0!==t.drop&&Array.isArray(t.drop)?t.drop:null;if(w)return function(e,t){const n=[],r=t.by,i=t.idlabel,l=t.drop,a=t.na,o=t.delimiter,s=t.decimal,u=i.content?"id":t.content,c=i.field?"label":t.field,f=e.toTable({drop:l,content:u,by:r,type:"arrobj"}),d=Object.keys(f[0]),h=function(e,t,n,r,l){return e.map((e=>"label"===n?-1!==r.id.indexOf(e)?y((i.field?"["+e+"] ":"")+r.Dimension(e).label,t):y((i.field?"["+e+"] ":"")+r.Dimension(l).Category(e).label,t):y(e,t))).join(t)+"\n"}(d,o,c,e,r),v="."!==s?function(e){return null===e?y(a,o):String(e).replace(".",s)}:function(e){return null===e?y(a,o):e};return f.forEach((t=>{let r=[];d.forEach((n=>{const l=t[n],a="string"==typeof l?y(i.content?"["+l+"] "+e.Dimension(n).Category(l).label:l,o):v(l);r.push(a)})),n.push(r.join(o))})),h+n.join("\n")}(b,{drop:x,na:f,delimiter:d,decimal:v,content:i,field:o,by:w,idlabel:n});var A=b.toTable({vlabel:s,slabel:u,status:c,field:r||n.field?"id":o,content:r||n.content?"id":i,type:"array"}),E=A[0].indexOf("id"===o?"value":s),j=c?A[0].indexOf("id"===o?"status":u):-1;return A.forEach((function(e,t){e.forEach((function(r,i){var l=b.Dimension(i);t&&i===E?null===r?e[i]=y(f,d):"."!==v&&(e[i]=String(e[i]).replace(".",v)):t&&i===j&&null===r?e[i]="":(n.content&&t&&l?e[i]="["+e[i]+"] "+l.Category(e[i]).label:n.field&&0===t&&(e[i]=l?"["+e[i]+"] "+l.label:"value"===e[i]?s:u),e[i]=y(e[i],d))})),_(e.join(d))})),r&&(O("jsonstat"+d+v+d+h),["label","source","updated","href"].forEach((function(e){b[e]&&O(e+d+y(b[e],d))})),b.id.forEach((function(e,t){var n=[],r=b.Dimension(t),i=r.role,l=!1,a="";a+="dimension"+d+y(e,d)+d+y(r.label,d)+d+r.length,"metric"===i&&r.__tree__.category.unit&&(l=!0),r.id.forEach((function(e,t){var i=[],o=r.Category(t);a+=d+y(e,d)+d+y(o.label,d),l&&(i.push(o.unit.hasOwnProperty("decimals")?o.unit.decimals:""),i.push(o.unit.label||""),o.unit.symbol&&(i.push(o.unit.symbol),i.push(o.unit.position)),n.push(y(i.join(h),d)))})),null!==i&&"classification"!==i&&(a+=d+r.role,l&&(a+=d+n.join(d))),O(a)})),g=p?m.concat(["data"],g):m+"data\n"+g),g}e.prototype.Item=function(e){if(null===this||"collection"!==this.class||!this.length)return null;if("number"==typeof e)return e>this.length||e<0?null:this.link.item[e];var t,n=[];if("object"==typeof e){if(!e.class&&!e.follow)return null;e.class&&(t="dataset"===e.class&&"boolean"==typeof e.embedded?!0===e.embedded?function(e,t,r){var i=e.link.item[t];r.class===i.class&&i.id&&i.size&&i.dimension&&n.push(i)}:function(e,t,r){var i=e.link.item[t];r.class!==i.class||i.id&&i.size&&i.dimension||n.push(i)}:function(e,t,r){r.class===e.link.item[t].class&&n.push(e.link.item[t])})}else t=function(e,t){n.push(e.link.item[t])};for(var r=0;r<this.length;r++)t(this,r,e);return n},e.prototype.Dataset=function(t){if(null===this)return null;if("dataset"===this.class)return void 0!==t?this:[this];var n,r=[],i=0;if("collection"===this.class){var l=this.Item({class:"dataset",embedded:!0});if(void 0===t){for(n=l.length;i<n;i++)r.push(new e(l[i]));return r}if("number"==typeof t&&t>=0&&t<l.length)return new e(l[t]);if("string"==typeof t)for(n=l.length;i<n;i++)if(l[i].href===t)return new e(l[i]);return null}if("bundle"!==this.class)return null;if(void 0===t){for(n=this.id.length;i<n;i++)r.push(this.Dataset(this.id[i]));return r}if("number"==typeof t){var a=this.id[t];return void 0!==a?this.Dataset(a):null}var o=this.__tree__[t];return void 0===o?null:new e({class:"dataset",__tree__:o})},e.prototype.Dimension=function(t,n){n="boolean"!=typeof n||n;var r,i=[],l=this.id.length,a=function(e,t){if(null!==e)for(var n in e)for(var r=null!==e[n]?e[n].length:0;r--;)if(e[n][r]===t)return n;return null};if(null===this||"dataset"!==this.class)return null;if(void 0===t){for(r=0;r<l;r++)i.push(this.Dimension(this.id[r]));return i}if("number"==typeof t){var o=this.id[t];return void 0!==o?this.Dimension(o,n):null}var s=this.role;if("object"==typeof t){if(t.hasOwnProperty("role")){for(r=0;r<l;r++){var u=this.id[r];a(s,u)===t.role&&i.push(this.Dimension(u,n))}return void 0===i[0]?null:i}return null}var c=this.__tree__.dimension;if(void 0===c)return null;var f=c[t];return void 0===f?null:n?new e({class:"dimension",__tree__:f,role:a(s,t)}):function(e,t){var n=[];for(var r in e)n[e[r]]=t[r];return n}(f.category.index,f.category.label)},e.prototype.Category=function(t){if(null===this||"dimension"!==this.class)return null;if(void 0===t){for(var n=[],r=0,i=this.id.length;r<i;r++)n.push(this.Category(this.id[r]));return n}if("number"==typeof t){var l=this.id[t];return void 0!==l?this.Category(l):null}var a=this.__tree__.category;if(void 0===a)return null;var o=a.index[t];if(void 0===o)return null;var s=a.unit&&a.unit[t]||null,u=a.coordinates&&a.coordinates[t]||null,c=a.child&&a.child[t]||null,f=a.note&&a.note[t]||null;return new e({class:"category",index:o,label:a.label[t],note:f,child:c,unit:s,coord:u})},e.prototype.Dice=function(n,r,i){var l,a,o,s,u=function(e,t){return e.hasOwnProperty(t)&&!!e[t]};if(null===this||"dataset"!==this.class)return null;if("object"!=typeof n)return this;"object"!=typeof r?("boolean"==typeof r&&!0===r&&(l=!0),"boolean"==typeof i&&!0===i||(i=!1)):(l=u(r,"clone"),i=u(r,"drop"),a=u(r,"stringify"),o=u(r,"ovalue"),s=u(r,"ostatus"));var c,f=this.value,d=l?new e(JSON.parse(JSON.stringify(this))):this,h=d.status,v=[],p=[],y=function(e,t){var n,r,i,l=(n=e,r=t,i={},Array.isArray(n[r])?(n[r].forEach((function(e,t){null!==e&&(i[String(t)]=e)})),i):n[r]);delete e[t],e[t]=l};Array.isArray(n)&&(n=function(e){var t={};return e.forEach((function(e){t[e[0]]=e[1]})),t}(n)),null===n&&(n={});var b=Object.keys(n);return b.length>0&&(b.forEach((function(e){var t=n[e];Array.isArray(t)||(n[e]=[t]),0===n[e].length&&delete n[e]})),i&&(n=function(e){var t={};return Object.keys(e).forEach((function(n){t[n]=d.Dimension(n).id.filter((function(t){return-1===e[n].indexOf(t)}))})),t}(n)),d.toTable({type:"arrobj",content:"id",status:!0}).forEach((function(e,t){var r=[];b.forEach((function(t){var i=n[t],l=[];i.forEach((function(n){l.push(e[t]===n)})),r.push(-1!==l.indexOf(!0))})),-1===r.indexOf(!1)&&(v.push(e.value),p.push(e.status))})),b.forEach((function(e){var t=d.Dimension(e).id,r=0,i={};d.size[d.id.indexOf(e)]=n[e].length,t.forEach((function(t){-1!==n[e].indexOf(t)&&(i[t]=r,r++)})),d.__tree__.dimension[e].category.index=i})),d.n=v.length,d.value=d.__tree__.value=t(f)?function(e,t){return t.from(e)}(v,f.constructor):v,d.status=d.__tree__.status=null!==h?p:null),a?((c=d.__tree__).hasOwnProperty("id")||(c.version="2.0",c.hasOwnProperty("class")||(c.class="dataset"),c.id=c.dimension.id,c.size=c.dimension.size,delete c.dimension.id,delete c.dimension.size,c.dimension.hasOwnProperty("role")&&(c.role=c.dimension.role,delete c.dimension.role)),c.hasOwnProperty("status")&&-1!==["null","{}","[]"].indexOf(JSON.stringify(c.status))&&delete c.status,c.hasOwnProperty("role")&&(delete c.role.classification,["geo","time","metric"].forEach((function(e){null===c.role[e]&&delete c.role[e]}))),o&&y(c,"value"),s&&c.hasOwnProperty("status")&&y(c,"status"),JSON.stringify(c)):d},e.prototype.Slice=function(e){if(null===this||"dataset"!==this.class)return null;if(void 0===e)return this;if(!Array.isArray(e)){var t,n=[];for(t in e)n.push([t,e[t]]);e=n}return this.Dice(e.map((function(e){return[e[0],[e[1]]]})))},e.prototype.Data=function(e,t){var n,r,i=[],l=function(e){for(var t in e)if(e.hasOwnProperty(t))return t};if(null===this||"dataset"!==this.class)return null;if(void 0===e){for(r=this.value.length,n=0;n<r;n++)i.push(this.Data(n));return i}if("boolean"!=typeof t&&(t=!0),"number"==typeof e){var a=this.value[e];return void 0===a?null:t?{value:a,status:this.status?this.status[e]:null}:a}var o="object",s=this.__tree__,u=s.size||s.dimension&&s.dimension.size,c=u.length;if(Array.isArray(e)){if(!Array.isArray(e[0])){if(this.length!==e.length)return null;var f=1,d=0,h=[],v=[];for(n=0;n<c;n++)if(void 0!==e[n]){if("number"!=typeof e[n]||e[n]>=u[n])return null;d+=(f*=n>0?u[c-n]:1)*e[c-n-1]}else h.push(n),v.push(u[n]);if(h.length>1)return null;if(1===h.length){for(var p=0,y=v[0];p<y;p++){var b=[];for(n=0;n<c;n++)n!==h[0]?b.push(e[n]):b.push(p);i.push(this.Data(b,t))}return i}return t?{value:this.value[d],status:this.status?this.status[d]:null}:this.value[d]}o="array"}var g=function(e,t,n){var r,i=[],a={},o=e.dimension,s=e.id||o.id,u=e.size||o&&o.size;if("array"===n){for(r=t.length;r--;)a[t[r][0]]=t[r][1];t=a}for(var c=0,f=s.length;c<f;c++){var d=s[c],h=t[d];i.push("string"==typeof h?h:1===u[c]?l(o[d].category.index):null)}return i}(s,e,o),m=[],_=s.dimension,O=s.id||_.id;for(n=0,r=g.length;n<r;n++)m.push(_[O[n]].category.index[g[n]]);return this.Data(m,t)},e.prototype.toTable=function(e,t){if(null===this||"dataset"!==this.class)return null;1==arguments.length&&"function"==typeof e&&(t=e,e=null),"arrobj"!==(e=e||{field:"label",content:"label",vlabel:"Value",slabel:"Status",type:"array",status:!1,unit:!1,by:null,prefix:"",drop:[],meta:!1,comma:!1,bylabel:!1}).type&&"objarr"!==e.type||void 0!==e.field||(e.field="id");var r,i,l,a,o,s,u,c,f,d="id"===e.field,h=function(e){return(d?"value":e)||"Value"},v=function(e){return(d?"status":e)||"Status"},p=this.__tree__,y=!0===e.status;if("function"==typeof t){r=this.toTable(e);var b=[],g="array"!==e.type?0:1;for(o=(U="object"!==e.type?r.slice(g):r.rows.slice(0)).length,i=0;i<o;i++){var m=t.call(this,U[i],i);void 0!==m&&b.push(m)}return"object"===e.type?{cols:r.cols,rows:b}:("array"===e.type&&b.unshift(r[0]),b)}if("arrobj"===e.type||"objarr"===e.type){var _=[],O=p.role&&p.role.metric,w=function(){},x={},A=this,E=A.id,j=e.by&&-1!==E.indexOf(e.by)?e.by:null,S=!0===e.meta,D=void 0!==e.drop&&Array.isArray(e.drop)?e.drop:[],P=!0===e.comma,k=!0===e.bylabel,z=A.value.constructor,C=function(t){var r,i={},l=h(e.vlabel);return"objarr"===e.type&&(r=null===j&&n(z.name)?function(e){i[e]=e===l?z.from(t,(function(t){return t[e]})):t.map((function(t){return t[e]}))}:function(e){i[e]=t.map((function(t){return t[e]}))},Object.keys(t[0]).forEach(r),t=i),S?(i={},E.forEach((function(e){var t=A.Dimension(e);i[e]={label:t.label,role:t.role,categories:{id:t.id,label:A.Dimension(e,!1)}}})),{meta:{label:A.label,source:A.source,updated:A.updated,id:E,status:y,unit:e.unit,by:j,bylabel:k,drop:null!==j&&D.length>0?D:null,prefix:null!==j?B||"":null,comma:P,dimensions:i},data:t}):t};j&&(e.field="id");var N=(r=this.toTable({field:e.field,vlabel:e.vlabel,slabel:e.slabel,content:e.content,status:y})).shift();if(null===j&&e.unit&&O){if("id"!==e.content)for(var T=O.length;T--;){var R=this.Dimension(O[T]);x[O[T]]={};for(var F=R.length;F--;)x[O[T]][R.Category(F).label]=R.id[F]}w=function(t,n){if(-1!==O.indexOf(t)){var r=p.dimension[t].category;r.unit?I.unit=r.unit["id"!==e.content?x[t][n]:n]:I.unit=null}},e.unit=!0}else e.unit=!1;for(o=r.length,i=0;i<o;i++){var I={};for(l=r[i].length;l--;)I[N[l]]=r[i][l],w(N[l],r[i][l]);_.push(I)}if(P&&_.forEach((function(e){null!==e.value&&(e.value=(""+e.value).replace(".",","))})),null!==j){var J,L={},U=[],q={},B=void 0!==e.prefix?e.prefix:"";D.forEach((function(e,t){(!A.Dimension(e)||A.Dimension(e).length>1)&&(D[t]="")}));var V=E.filter((function(e){return e!==j&&-1===D.indexOf(e)})),M=A.Dimension(j);for(var H in"id"!==e.content?k?J=function(e,t,n){e[t][B+n[j]]=n.value}:(M.Category().forEach((function(e,t){q[e.label]=M.id[t]})),J=function(e,t,n){e[t][B+q[n[j]]]=n.value}):J=function(e,t,n){e[t][B+n[j]]=n.value},_.forEach((function(e){var t=function(e,t){var n=[];return t.forEach((function(t){n.push(e[t])})),n.join("\t")}(e,V);void 0===L[t]&&(L[t]=function(e,t){var n={};return t.forEach((function(t){n[t]=e[t]})),n}(e,V)),J(L,t,e,j)})),L)U.push(L[H]);return y=!1,C(U)}return C(_)}if("object"===e.type){var G="number"==typeof this.value[0]||null===this.value[0]?"number":"string";s=function(e,t){var n=d&&e||t||e;re.push({id:e,label:n,type:"string"})},u=function(e,t,n){var r=h(e),i=v(t);n&&re.push({id:"status",label:i,type:"string"}),re.push({id:"value",label:r,type:G})},c=function(e){pe.push({v:e})},f=function(e){pe.push({v:e}),ie.push({c:pe})}}else s=function(e,t){var n=d&&e||t||e;re.push(n)},u=function(e,t,n){var r=h(e),i=v(t);n&&re.push(i),re.push(r),ne.push(re)},c=function(e){pe.push(e)},f=function(e){pe.push(e),ne.push(pe)};var K=p.dimension,Q=p.id||K.id,W=p.size||K.size,X=Q.length;if(X!=W.length)return!1;var Y=[],Z=1,$=(T=1,[]),ee=[],te=[],ne=[],re=[],ie=[];for(i=0;i<X;i++){var le=Q[i];s(le,K[le].label),Z*=W[i],T*=W[i];var ae=[];for(l=0;l<W[i];l++)for(var oe in K[Q[i]].category.index)if(K[Q[i]].category.index[oe]===l){var se="id"!==e.content&&K[Q[i]].category.label?K[Q[i]].category.label[oe]:oe;ae.push(se)}Y.push(ae),$.push(T)}for(u(e.vlabel,e.slabel,y),o=Y.length,i=0;i<o;i++){for(var ue=[],ce=0,fe=Y[i].length;ce<fe;ce++)for(var de=0;de<Z/$[i];de++)ue.push(Y[i][ce]);ee.push(ue)}for(o=ee.length,i=0;i<o;i++){var he=[],ve=0;for(a=0;a<Z;a++)he.push(ee[i][ve]),++ve===ee[i].length&&(ve=0);te.push(he)}for(a=0;a<Z;a++){var pe=[];o=ee.length;for(var ye=0;ye<o;ye++)c(te[ye][a]);y&&c(this.status?this.status[a]:null),f(this.value[a])}return"object"===e.type?{cols:re,rows:ie}:ne},e.prototype.node=function(){return this.__tree__},e.prototype.toString=function(){return this.class},String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)};var g="3.5.0";export{c as datalist,h as fromCSV,v as fromSDMX,d as fromTable,p as join,u as tbrowser,b as toCSV,g as version};
|
package/main.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// jsonstat-suite v3.
|
|
2
|
-
"use strict";var e=require("jsonstat-toolkit");function t(t,n){return null==t?null:("string"!=typeof t&&void 0!==t.length||(t=e(t)),0===t.length||"dataset"!==t.class&&"collection"!==t.class&&"bundle"!==t.class?null:"dataset"===t.class?t:t.Dataset(n))}function n(e){if(null===e||0===e.length||"dataset"!==e.class)return!1;for(var t=e.length,n=1;t--;)n*=e.Dimension(t).length;return n===e.n}function r(e,t,n){var r,a,l,i,o;return(t.label||n).capitalize()+(a=t,o="",(r=e)&&"metric"===r.role&&a.unit&&(l=a.unit.hasOwnProperty("label")?a.unit.label:"")+(i=a.unit.hasOwnProperty("symbol")?a.unit.symbol:"")!==""&&(o=" ("+(o=""===i?l:""===l?i:"start"===a.unit.position?i+l:l+" "+i)+")"),o)}function a(e,t,n){var a,l='<select name="'+t+'">',i=[];if(null!==n[1]){if(a=e.id,i=e.Dimension(),2===a.length)return(e.Dimension(n[0]).label||n[0]).capitalize()}else{var o=e.Dimension(t);if(a=o.id,i=o.Category(),1===a.length)return}return a.forEach((function(e,t){var a=e!==n[0]?"":'selected="selected" ';null!==n[1]&&e===n[1]||(l+="<option "+a+'value="'+e+'">'+r(o,i[t],e)+"</option>")})),l+="</select>"}function l(e,t){var n={};return Array.isArray(e[t])?(e[t].forEach((function(e,t){null!==e&&(n[String(t)]=e)})),n):e[t]}function i(t,n){if(void 0===t)return null;void 0===n&&(n={}),"boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1);var r=n.vlabel||"Value",a=n.slabel||"Status",i=n.type||"array",o=n.label||"",s=n.header||null,u=[],c=[],d=[],f=[],h={},v={},b=function(e,t){for(var n=1,r=0,a=0;a<E;a++)r+=(n*=a>0?t[E-a]:1)*e[E-a-1];return r},p=function(){var e=t[S][r];d[b(x,c)]=isNaN(e)?null:e};switch(i){case"array":t=function(e){for(var t=e[0],n=e.slice(1),r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a][i];r.push(s)}return r}(t);break;case"object":t=function(e){for(var t=e.cols.map((function(e){return e.id})),n=e.rows,r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a].c[i].v;r.push(s)}return r}(t)}var g,m=t.length;for(var y in n.hasOwnProperty("drop")&&Array.isArray(n.drop)&&n.drop.length&&t.forEach((function(e){n.drop.forEach((function(t){delete e[t]}))})),t[0])if(y!==r)if(y!==a){if(u.push(y),s)g=s.dimension[y],h[y]=g.category.index;else{h[y]=[];for(var w=0;w<m;w++){var O=t[w][y];-1===h[y].indexOf(O)&&h[y].push(O)}}c.push(h[y].length),v[y]={label:s?g.label:y,category:{index:h[y]}},s&&(v[y].category.label=g.category.label,g.category.unit&&(v[y].category.unit=g.category.unit))}else p=function(){var e=t[S][r],n=t[S][a];d[b(x,c)]=isNaN(e)?null:e,f[b(x,c)]=""===n?null:n};for(var E=u.length,S=0;S<m;S++){for(var x=[],A=0;A<E;A++){var D=u[A];x.push(h[D].indexOf(t[S][D]))}p()}var P={version:"2.0",class:"dataset",value:d,dimension:v,id:u,size:c};return o&&(P.label=o),f.length&&(P.status=f),s&&(s.label&&(P.label=s.label),s.source&&(P.source=s.source),s.updated&&(P.updated=s.updated),s.href&&(P.href=s.href),s.role&&(P.role=s.role)),n.ovalue&&(P.value=l(P,"value")),n.ostatus&&P.hasOwnProperty("status")&&(P.status=l(P,"status")),n.instance?e(P):P}function o(e,t){return null==e?"":-1!==e.indexOf(t)?'"'+e+'"':e}String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)};exports.datalist=function(e,r){if(void 0===e)return null;void 0===r&&(r={});var a="",l="",i="",o=0,s=r.na||"n/a",u=r.dsid||0,c=r.vlabel||null,d=r.slabel||null,f=r.counter||!1,h=r.tblclass||"",v=r.numclass||"",b=r.valclass||"",p=r.status||!1,g=r.locale||"en-US",m=r.source||"Source",y=t(e,u),w=y.role&&y.role.metric?y.id.indexOf(y.role.metric[0]):null,O=y.Dimension({role:"metric"}),E={},S=Number.toLocaleString&&"none"!==g?function(e,t){return null===t?e.toLocaleString(g):e.toLocaleString(g,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)},x=function(e,t){var n=null;e.forEach((function(e,r){var i=P===r?' class="'+v+" "+b+'"':"",o=s;t?(w===r&&(n=E[e]),null!==e&&(o=P===r?S(e,n):e),l+="<td"+i+">"+o+"</td>"):a+="<th"+i+">"+e+"</th>"}))},A=f?function(e,t){t?l+='<tr><td class="'+v+'">'+t+"</td>":a+='<th class="'+v+'">#</th>',x(e,t),l+="</tr>"}:function(e,t){l+="<tr>",x(e,t),l+="</tr>"};if(!n(y))return null;O&&O[0].Category().forEach((function(e){var t=e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null;E[e.label]=t}));var D=y.toTable({status:p,vlabel:c,slabel:d}),P=D[0].length-1;return D.forEach((function(e,t){A(e,t)})),y.source&&(o=y.length+1,f&&o++,p&&o++,"."!==(m+=": "+y.source).slice(-1)&&(m+="."),i='<tfoot><td colspan="'+o+'">'+m+"</td></tfoot>"),'<table class="'+h+'"><caption>'+(r.caption||y.label||"")+"</caption><thead><tr>"+a+"</tr></thead><tbody>"+l+"</tbody>"+i+"</table>"},exports.fromCSV=function(e,t){if(void 0===e)return null;void 0===t&&(t={});var n,r,a,l=[],o=null,s=null,u=!1,c={time:[],geo:[],metric:[]},d="jsonstat"===e.substring(0,8),f=d?"value":t.vlabel,h=d?"status":t.slabel,v=d?e.substring(8,9):t.delimiter||",",b=";"===v?t.decimal||",":t.decimal||".",p=function(e,t){t=t||",";for(var n,r,a=new RegExp("(\\"+t+'|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\'+t+"\\r\\n]*))","gi"),l=[[]],i=null;i=a.exec(e);)(r=i[1]).length&&r!=t&&l.push([]),n=i[2]?i[2].replace(new RegExp('""',"g"),'"'):i[3],l[l.length-1].push(n);return l}(e.trim(),v);if(d){for(b=p[0][1],a=p[0][2],p.shift();"data"!==p[0][0];)l.push(p.shift());p.shift(),s={dimension:{}},l.forEach((function(e){var t,n,r,l,i,o,d,f;switch(e[0]){case"dimension":if(s.dimension[e[1]]={},(l=s.dimension[e[1]]).label=e[2],l.category={},(i=l.category).index=[],n={},r=2*e[3]+3,e.length>=r){for(t=4;t<r;t++)d=e[t],f=e[++t],Object.defineProperty(n,d,{value:f,writable:!0,configurable:!0,enumerable:!0}),i.label=n,i.index.push(d);"string"==typeof e[t]&&-1!==["time","geo","metric"].indexOf(e[t])&&(c[e[t]].push(e[1]),u=!0,"metric"===e[t]&&"string"==typeof e[++t]&&(i.unit={},i.index.forEach((function(n,r){var l=e[t+r].split(a);i.unit[n]={},o=i.unit[n],void 0!==l[0]&&""!==l[0]&&(o.decimals=1*l[0]),void 0!==l[1]&&""!==l[1]&&(o.label=l[1]),void 0!==l[2]&&""!==l[2]&&(o.symbol=l[2]),void 0!==l[1]&&-1!==["start","end"].indexOf(l[3])&&(o.position=l[3])}))))}break;case"label":case"source":case"updated":case"href":s[e[0]]=e[1]||null}})),u&&(c.time.length||delete c.time,c.geo.length||delete c.geo,c.metric.length||delete c.metric,s.role=c)}if(n=p.length,r=p[0].length,void 0!==f){for(;r--;)if(p[0][r]===f){o=r;break}if(null===o)return null}else o=r-1,f=p[0][o];if(","===b)for(r=1;r<n;r++)p[r][o]=Number(p[r][o].replace(",","."));else for(r=1;r<n;r++)p[r][o]=Number(p[r][o]);return i(p,{header:s,vlabel:f,slabel:h,type:"array",label:t.label||"",ovalue:t.ovalue||!1,ostatus:t.ostatus||!1,instance:t.instance||!1})},exports.fromSDMX=function(t,n){if("object"!=typeof t)return null;if(t.hasOwnProperty("data")&&t.hasOwnProperty("meta")&&t.data.hasOwnProperty("dataSets")&&t.data.hasOwnProperty("structures")&&Array.isArray(t.data.structures)&&(t.dataSets=t.data.dataSets,t.structure=t.data.structures[0],t.header=t.meta),!t.hasOwnProperty("dataSets")||!Array.isArray(t.dataSets))return null;if(1!==t.dataSets.length)return null;t.dataSets[0].hasOwnProperty("observations")||function(e){var t=e.dataSets[0],n=t.series,r=e.structure,a=r.dimensions,l={};Object.keys(n).forEach((function(e){var t=n[e].observations;Object.keys(t).forEach((function(r){l[e+":"+r]=t[r].concat(n[e].attributes)}))})),t.observations=l,delete t.series,a.observation=a.series.concat(a.observation),delete a.series,r.attributes.observation=r.attributes.observation.concat(r.attributes.series),delete r.attributes.series}(t),void 0===n?n={ovalue:!1,ostatus:!1,instance:!1}:("boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1));var r=t.structure,a=t.dataSets[0].observations,l=r.attributes.observation,i=r.dimensions;if(!i.hasOwnProperty("observation"))return null;if(i.hasOwnProperty("series")&&Object.keys(i.series).length)return null;var o=1,s=[],u=[],c={},d=[],f={time:[],geo:[]},h=function(){},v=function(e,t){for(var n=e.size,r=n.length-t.length;r--;)t.push(0);for(var a=0,l=n.length,i=0,o=1;a<l;a++)i+=(o*=a>0?n[l-a]:1)*t[l-a-1];return i},b=function(e){if(c[e.id]={label:e.name},e.hasOwnProperty("role"))switch(e.role){case"REF_AREA":f.geo.push(e.id);break;case"TIME_PERIOD":f.time.push(e.id)}Object.defineProperty(c[e.id],"category",{value:{index:[],label:{}},writable:!0,enumerable:!0}),s.push(e.id),u.push(e.values.length),o*=e.values.length;var t=c[e.id].category;e.values.forEach((function(e){t.index.push(e.id),Object.defineProperty(t.label,e.id,{value:e.name,writable:!0,enumerable:!0})}))},p=t.header.links?t.header.links.find((function(e){return"request"===e.rel})):null,g=l.findIndex((function(e){return"OBS_STATUS"===e.id}));-1!==g&&(l[g].values.length?d=l[g].values:g=-1),i.observation.forEach(b),i.hasOwnProperty("dataSet")&&i.dataSet.forEach(b);var m={version:"2.0",class:"dataset",updated:t.header.prepared||null,source:t.header.sender.name||null,label:r.name||null,id:s,size:u,dimension:c,value:n.ovalue?{}:new Array(o).fill(null)};for(var y in p&&(m.link={alternate:[{type:"application/vnd.sdmx.data+json",href:p.href}]}),f.geo.length+f.time.length>0&&(f.time.length||delete f.time,f.geo.length||delete f.geo,m.role=f),-1!==g&&(m.status=n.ostatus?{}:new Array(o).fill(null),m.extension={status:{label:{}}},d.forEach((function(e){m.extension.status.label[e.id]=e.name})),h=n.ostatus?function(){var e=a[y][g];null!==e&&(m.status[v(m,w)]=d[e].id)}:function(){var e=a[y][g];m.status[v(m,w)]=null===e?null:d[e].id}),g++,a){var w=y.split(":");n.ovalue&&null===a[y][0]||(m.value[v(m,w)]=a[y][0]),h()}return n.instance?e(m):m},exports.fromTable=i,exports.join=function(t,n){if(void 0===t||!Array.isArray(t))return null;var r=JSON.parse(JSON.stringify(t)),a=r[0];if(!a.hasOwnProperty("version")||!a.hasOwnProperty("class")||"dataset"!==a.class)return null;void 0===n&&(n={});var l=void 0===n.label?null:n.label,o=void 0===n.by?null:n.by,s=[];if(null===o){for(var u=1,c=r.length;u<c;u++)s=s.concat(r[u].value);return a.value=s,null!==l&&(a.label=l),a}var d,f,h,v=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=0===t[r]?n:t[r];return e};r.forEach((function(t,n){var r=e(t).toTable({status:!0}),a=t.dimension[o].category;0===n?(s=[r[0]],d=a.index,f=a.label,h=a.unit):(d=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=t[r]+n;return e}(d,a.index,Object.keys(d).length),f=v(f,a.label,n),h=v(h,a.unit,n)),s=s.concat(r.slice(1))}));var b=i(s);return a.value=b.value,a.size=b.size,a.status=b.status||null,a.label=l||"",a.href=null,a.dimension[o].category.index=d||null,a.dimension[o].category.label=f||null,a.dimension[o].category.unit=h||null,a},exports.tbrowser=function(e,l,i){function o(e){void 0!==l?l.innerHTML=s[e]:window.alert(s[e])}if(void 0!==e)if(void 0!==l){void 0===i&&(i={});var s=void 0===i.i18n||void 0===i.i18n.msgs?{urierror:"tbrowser: A valid JSON-stat input must be specified.",selerror:"tbrowser: A valid selector must be specified.",jsonerror:"The request did not return a valid JSON-stat dataset.",dimerror:"Only one dimension was found in the dataset. At least two are required.",dataerror:"Selection returned no data!",source:"Source",filters:"Filters",constants:"Constants",rc:"Rows & Columns",na:"n/a"}:i.i18n.msgs,u=void 0===i.i18n||void 0===i.i18n.locale?"en-US":i.i18n.locale,c=i.dsid||0,d=i.status||!1,f=i.tblclass||"",h=i.nonconst||!1,v=t(e,c);if(n(v)){if(h)var b=function(e){var t=0,n=e.size.slice(0),r=[];return n.forEach((function(n,a){var l=a-t,i=e.Dimension(l);1===n&&(delete e.__tree__.dimension[e.id[l]],e.size.splice(l,1),e.id.splice(l,1),e.length--,t++,r.push(i.label.capitalize()+": "+i.Category(0).label.capitalize()))})),r}(v);1!==v.length?function e(t,n,l,o){"function"==typeof i.callback&&i.callback(l);var c="",f="",v="",p="",g=l.rows,m=n.Dimension(g),y=m.id,w=l.cols,O=n.Dimension(w),E=O.id,S=n.role&&n.role.metric?n.role.metric[0]:null,x=null!==S?n.Dimension(S):null,A=function(e){return e.hasOwnProperty("unit")&&e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null},D=l.filters,P=JSON.parse(JSON.stringify(D)),j=[],k="",z="",C=n.source?s.source+": "+n.source:"",N=null!==n.label?'<span class="label">'+n.label.capitalize()+"</span>":"";for(var R in h&&b.length&&(N='<span class="label">'+b.join(". ")+"</span>"),""!==C&&"."!==C.slice(-1)&&(C+="."),v+="<caption>"+N+"<form>",D){var _=n.Dimension(R),L=_.label?_.label.capitalize():R.capitalize();_.length>1?k+="<p>"+a(n,R,[D[R],null])+" <strong>"+L+"</strong></p>":j.push({label:L,value:r(_,_.Category(0)),name:R,id:_.id[0]})}""!==k&&(k='<fieldset id="filters"><legend>'+s.filters+"</legend>"+k+"</fieldset>"),j.forEach((function(e){z+="<p>"+e.value+" <strong>"+e.label+'</strong></p><input type="hidden" name="'+e.name+'" value="'+e.id+'" />'})),""!==z&&(z='<fieldset id="constants"><legend>'+s.constants+"</legend>"+z+"</fieldset>"),v+=z+k+'<fieldset id="rowscols"><legend>'+s.rc+"</legend>"+a(n,"rows",[g,w])+" <a>↔</a> "+a(n,"cols",[w,g])+"</fieldset></form></caption>",p+="<tbody>";var T=Number.toLocaleString&&"none"!==u?function(e,t){return null===t?e.toLocaleString(u):e.toLocaleString(u,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)};if(y.forEach((function(e){P[g]=e;var t=n.Data(P),a=function(e,t){var n,r=w!==S?null===x?null:A(x.Category(P[S])):A(O.Category(t));null!==e.value?(n=T(e.value,r),d&&null!==e.status&&(n+=" ("+e.status+")")):n=e.status||s.na,p+="<td>"+n+"</td>"};null!==t?(p+='<tr><th scope="row">'+r(m,m.Category(e))+"</th>",Array.isArray(t)?t.forEach((function(e,t){a(e,t)})):a(t,0),p+="</tr>"):p="ERROR"})),"ERROR"===p)return s.dataerror;p+="</tbody>",c+="<thead><tr><th></th>",E.forEach((function(e){c+='<th scope="col">'+r(O,O.Category(e))+"</th>"})),c+="</tr></thead>",""!==C&&(f='<tfoot><tr><td colspan="'+(E.length+1)+'">'+C+"</td></tr></tfoot>"),t.innerHTML='<table class="'+o+'">'+v+c+p+f+"</table>",[].slice.call(t.querySelectorAll("select")).forEach((function(r){r.addEventListener("change",(function(r){var a,l;e(t,n,function(e,t,n){var r={filters:{}};return n.forEach((function(e){"rows"===e.name||"cols"===e.name?r[e.name]=e.value:r.filters[e.name]=e.value})),"rowscols"===t&&e.id.forEach((function(t,n){t!==r.rows&&t!==r.cols?void 0===r.filters[t]&&(r.filters[t]=e.Dimension(n).id[0]):delete r.filters[t]})),r}(n,r.target.parentElement.getAttribute("id"),(a=t,l=[],[].slice.call(a.querySelectorAll("select, input")).forEach((function(e){l.push({name:e.name,value:e.value})})),l)),o)}),!1)})),t.querySelector("a").addEventListener("click",(function(){l.cols=g,l.rows=w,e(t,n,l,o)}),!1)}(l,v,function(e,t){if("object"==typeof t)return{rows:t.rows,cols:t.cols,filters:t.filters};var n,r,a={},l=[],i=e.id;if(t){var o="bigger"===t?function(e,t){return e.len<t.len?1:-1}:function(e,t){return e.len>t.len?1:-1};e.Dimension().forEach((function(e,t){l.push({id:i[t],len:e.length})})),l.sort(o),n=l[0].id,r=l[1].id}else n=i[0],r=i[1];return e.Dimension(n).length<e.Dimension(r).length&&(n=r+(r=n,"")),i.forEach((function(t){t!==n&&t!==r&&(a[t]=e.Dimension(t).id[0])})),{rows:n,cols:r,filters:a}}(v,i.preset),f):o("dimerror")}else o("jsonerror")}else o("selerror");else o("urierror")},exports.toCSV=function(e,r){if(void 0===e)return null;void 0===r&&(r={});var a={content:!1,field:!1},l=!0===r.rich,i=r.content||"label",s=r.field||"label",u=l?"value":r.vlabel||"Value",c=l?"status":r.slabel||"Status",d=!0===r.status,f=r.na||"n/a",h=r.delimiter||",",v=r.separator||"|",b=";"===h?r.decimal||",":r.decimal||".",p=!0===r.array,g=t(e,r.dsid||0),m=p?[]:"",y=p?[]:"",w=p?function(e){m.push(e)}:function(e){m+=e+"\n"},O=p?function(e){y.push(e)}:function(e){y+=e+"\n"};if(!n(g))return null;l?d=null!==g.status:("[id] label"===i&&(a.content=!0,i="id"),"[id] label"===s&&(a.field=!0,s="id"));var E=g.toTable({vlabel:u,slabel:c,status:d,field:l||a.field?"id":s,content:l||a.content?"id":i,type:"array"}),S=E[0].indexOf("id"===s?"value":u),x=d?E[0].indexOf("id"===s?"status":c):-1;return E.forEach((function(e,t){e.forEach((function(n,r){var l=g.Dimension(r);t&&r===S?null===n?e[r]=o(f,h):"."!==b&&(e[r]=String(e[r]).replace(".",b)):t&&r===x&&null===n?e[r]="":(a.content&&t&&l&&(e[r]="["+e[r]+"] "+l.Category(e[r]).label),a.field&&0===t&&(e[r]=l?"["+e[r]+"] "+l.label:"value"===e[r]?u:c),e[r]=o(e[r],h))})),w(e.join(h))})),l&&(O("jsonstat"+h+b+h+v),["label","source","updated","href"].forEach((function(e){g[e]&&O(e+h+o(g[e],h))})),g.id.forEach((function(e,t){var n=[],r=g.Dimension(t),a=r.role,l=!1,i="";i+="dimension"+h+o(e,h)+h+o(r.label,h)+h+r.length,"metric"===a&&r.__tree__.category.unit&&(l=!0),r.id.forEach((function(e,t){var a=[],s=r.Category(t);i+=h+o(e,h)+h+o(s.label,h),l&&(a.push(s.unit.hasOwnProperty("decimals")?s.unit.decimals:""),a.push(s.unit.label||""),s.unit.symbol&&(a.push(s.unit.symbol),a.push(s.unit.position)),n.push(o(a.join(v),h)))})),null!==a&&"classification"!==a&&(i+=h+r.role,l&&(i+=h+n.join(h))),O(i)})),m=p?y.concat(["data"],m):y+"data\n"+m),m},exports.version="3.4.1";
|
|
1
|
+
// jsonstat-suite v3.5.0 Copyright 2023 Xavier Badosa https://jsonstat.com
|
|
2
|
+
"use strict";var e=require("jsonstat-toolkit");function t(t,n){return null==t?null:("string"!=typeof t&&void 0!==t.length||(t=e(t)),0===t.length||"dataset"!==t.class&&"collection"!==t.class&&"bundle"!==t.class?null:"dataset"===t.class?t:t.Dataset(n))}function n(e){if(null===e||0===e.length||"dataset"!==e.class)return!1;for(var t=e.length,n=1;t--;)n*=e.Dimension(t).length;return n===e.n}function r(e,t,n){var r,a,l,i,o;return(t.label||n).capitalize()+(a=t,o="",(r=e)&&"metric"===r.role&&a.unit&&(l=a.unit.hasOwnProperty("label")?a.unit.label:"")+(i=a.unit.hasOwnProperty("symbol")?a.unit.symbol:"")!==""&&(o=" ("+(o=""===i?l:""===l?i:"start"===a.unit.position?i+l:l+" "+i)+")"),o)}function a(e,t,n){var a,l='<select name="'+t+'">',i=[];if(null!==n[1]){if(a=e.id,i=e.Dimension(),2===a.length)return(e.Dimension(n[0]).label||n[0]).capitalize()}else{var o=e.Dimension(t);if(a=o.id,i=o.Category(),1===a.length)return}return a.forEach((function(e,t){var a=e!==n[0]?"":'selected="selected" ';null!==n[1]&&e===n[1]||(l+="<option "+a+'value="'+e+'">'+r(o,i[t],e)+"</option>")})),l+="</select>"}function l(e,t){var n={};return Array.isArray(e[t])?(e[t].forEach((function(e,t){null!==e&&(n[String(t)]=e)})),n):e[t]}function i(t,n){if(void 0===t)return null;void 0===n&&(n={}),"boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1);var r=n.vlabel||"Value",a=n.slabel||"Status",i=n.type||"array",o=n.label||"",s=n.header||null,u=[],c=[],d=[],f=[],h={},v={},b=function(e,t){for(var n=1,r=0,a=0;a<E;a++)r+=(n*=a>0?t[E-a]:1)*e[E-a-1];return r},p=function(){var e=t[S][r];d[b(x,c)]=isNaN(e)?null:e};switch(i){case"array":t=function(e){for(var t=e[0],n=e.slice(1),r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a][i];r.push(s)}return r}(t);break;case"object":t=function(e){for(var t=e.cols.map((function(e){return e.id})),n=e.rows,r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a].c[i].v;r.push(s)}return r}(t)}var m,g=t.length;for(var y in n.hasOwnProperty("drop")&&Array.isArray(n.drop)&&n.drop.length&&t.forEach((function(e){n.drop.forEach((function(t){delete e[t]}))})),t[0])if(y!==r)if(y!==a){if(u.push(y),s)m=s.dimension[y],h[y]=m.category.index;else{h[y]=[];for(var w=0;w<g;w++){var O=t[w][y];-1===h[y].indexOf(O)&&h[y].push(O)}}c.push(h[y].length),v[y]={label:s?m.label:y,category:{index:h[y]}},s&&(v[y].category.label=m.category.label,m.category.unit&&(v[y].category.unit=m.category.unit))}else p=function(){var e=t[S][r],n=t[S][a];d[b(x,c)]=isNaN(e)?null:e,f[b(x,c)]=""===n?null:n};for(var E=u.length,S=0;S<g;S++){for(var x=[],A=0;A<E;A++){var D=u[A];x.push(h[D].indexOf(t[S][D]))}p()}var j={version:"2.0",class:"dataset",value:d,dimension:v,id:u,size:c};return o&&(j.label=o),f.length&&(j.status=f),s&&(s.label&&(j.label=s.label),s.source&&(j.source=s.source),s.updated&&(j.updated=s.updated),s.href&&(j.href=s.href),s.role&&(j.role=s.role)),n.ovalue&&(j.value=l(j,"value")),n.ostatus&&j.hasOwnProperty("status")&&(j.status=l(j,"status")),n.instance?e(j):j}function o(e,t){return null==e?"":-1!==e.indexOf(t)?'"'+e+'"':e}String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)};exports.datalist=function(e,r){if(void 0===e)return null;void 0===r&&(r={});var a="",l="",i="",o=0,s=r.na||"n/a",u=r.dsid||0,c=r.vlabel||null,d=r.slabel||null,f=r.counter||!1,h=r.tblclass||"",v=r.numclass||"",b=r.valclass||"",p=r.status||!1,m=r.locale||"en-US",g=r.source||"Source",y=t(e,u),w=y.role&&y.role.metric?y.id.indexOf(y.role.metric[0]):null,O=y.Dimension({role:"metric"}),E={},S=Number.toLocaleString&&"none"!==m?function(e,t){return null===t?e.toLocaleString(m):e.toLocaleString(m,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)},x=function(e,t){var n=null;e.forEach((function(e,r){var i=j===r?' class="'+v+" "+b+'"':"",o=s;t?(w===r&&(n=E[e]),null!==e&&(o=j===r?S(e,n):e),l+="<td"+i+">"+o+"</td>"):a+="<th"+i+">"+e+"</th>"}))},A=f?function(e,t){t?l+='<tr><td class="'+v+'">'+t+"</td>":a+='<th class="'+v+'">#</th>',x(e,t),l+="</tr>"}:function(e,t){l+="<tr>",x(e,t),l+="</tr>"};if(!n(y))return null;O&&O[0].Category().forEach((function(e){var t=e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null;E[e.label]=t}));var D=y.toTable({status:p,vlabel:c,slabel:d}),j=D[0].length-1;return D.forEach((function(e,t){A(e,t)})),y.source&&(o=y.length+1,f&&o++,p&&o++,"."!==(g+=": "+y.source).slice(-1)&&(g+="."),i='<tfoot><td colspan="'+o+'">'+g+"</td></tfoot>"),'<table class="'+h+'"><caption>'+(r.caption||y.label||"")+"</caption><thead><tr>"+a+"</tr></thead><tbody>"+l+"</tbody>"+i+"</table>"},exports.fromCSV=function(e,t){if(void 0===e)return null;void 0===t&&(t={});var n,r,a,l=[],o=null,s=null,u=!1,c={time:[],geo:[],metric:[]},d="jsonstat"===e.substring(0,8),f=d?"value":t.vlabel,h=d?"status":t.slabel,v=d?e.substring(8,9):t.delimiter||",",b=";"===v?t.decimal||",":t.decimal||".",p=function(e,t){t=t||",";for(var n,r,a=new RegExp("(\\"+t+'|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\'+t+"\\r\\n]*))","gi"),l=[[]],i=null;i=a.exec(e);)(r=i[1]).length&&r!=t&&l.push([]),n=i[2]?i[2].replace(new RegExp('""',"g"),'"'):i[3],l[l.length-1].push(n);return l}(e.trim(),v);if(d){for(b=p[0][1],a=p[0][2],p.shift();"data"!==p[0][0];)l.push(p.shift());p.shift(),s={dimension:{}},l.forEach((function(e){var t,n,r,l,i,o,d,f;switch(e[0]){case"dimension":if(s.dimension[e[1]]={},(l=s.dimension[e[1]]).label=e[2],l.category={},(i=l.category).index=[],n={},r=2*e[3]+3,e.length>=r){for(t=4;t<r;t++)d=e[t],f=e[++t],Object.defineProperty(n,d,{value:f,writable:!0,configurable:!0,enumerable:!0}),i.label=n,i.index.push(d);"string"==typeof e[t]&&-1!==["time","geo","metric"].indexOf(e[t])&&(c[e[t]].push(e[1]),u=!0,"metric"===e[t]&&"string"==typeof e[++t]&&(i.unit={},i.index.forEach((function(n,r){var l=e[t+r].split(a);i.unit[n]={},o=i.unit[n],void 0!==l[0]&&""!==l[0]&&(o.decimals=1*l[0]),void 0!==l[1]&&""!==l[1]&&(o.label=l[1]),void 0!==l[2]&&""!==l[2]&&(o.symbol=l[2]),void 0!==l[1]&&-1!==["start","end"].indexOf(l[3])&&(o.position=l[3])}))))}break;case"label":case"source":case"updated":case"href":s[e[0]]=e[1]||null}})),u&&(c.time.length||delete c.time,c.geo.length||delete c.geo,c.metric.length||delete c.metric,s.role=c)}if(n=p.length,r=p[0].length,void 0!==f){for(;r--;)if(p[0][r]===f){o=r;break}if(null===o)return null}else o=r-1,f=p[0][o];if(","===b)for(r=1;r<n;r++)p[r][o]=Number(p[r][o].replace(",","."));else for(r=1;r<n;r++)p[r][o]=Number(p[r][o]);return i(p,{header:s,vlabel:f,slabel:h,type:"array",label:t.label||"",ovalue:t.ovalue||!1,ostatus:t.ostatus||!1,instance:t.instance||!1})},exports.fromSDMX=function(t,n){if("object"!=typeof t)return null;if(t.hasOwnProperty("data")&&t.hasOwnProperty("meta")&&t.data.hasOwnProperty("dataSets")&&t.data.hasOwnProperty("structures")&&Array.isArray(t.data.structures)&&(t.dataSets=t.data.dataSets,t.structure=t.data.structures[0],t.header=t.meta),!t.hasOwnProperty("dataSets")||!Array.isArray(t.dataSets))return null;if(1!==t.dataSets.length)return null;t.dataSets[0].hasOwnProperty("observations")||function(e){var t=e.dataSets[0],n=t.series,r=e.structure,a=r.dimensions,l={};Object.keys(n).forEach((function(e){var t=n[e].observations;Object.keys(t).forEach((function(r){l[e+":"+r]=t[r].concat(n[e].attributes)}))})),t.observations=l,delete t.series,a.observation=a.series.concat(a.observation),delete a.series,r.attributes.observation=r.attributes.observation.concat(r.attributes.series),delete r.attributes.series}(t),void 0===n?n={ovalue:!1,ostatus:!1,instance:!1}:("boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1));var r=t.structure,a=t.dataSets[0].observations,l=r.attributes.observation,i=r.dimensions;if(!i.hasOwnProperty("observation"))return null;if(i.hasOwnProperty("series")&&Object.keys(i.series).length)return null;var o=1,s=[],u=[],c={},d=[],f={time:[],geo:[]},h=function(){},v=function(e,t){for(var n=e.size,r=n.length-t.length;r--;)t.push(0);for(var a=0,l=n.length,i=0,o=1;a<l;a++)i+=(o*=a>0?n[l-a]:1)*t[l-a-1];return i},b=function(e){if(c[e.id]={label:e.name},e.hasOwnProperty("role"))switch(e.role){case"REF_AREA":f.geo.push(e.id);break;case"TIME_PERIOD":f.time.push(e.id)}Object.defineProperty(c[e.id],"category",{value:{index:[],label:{}},writable:!0,enumerable:!0}),s.push(e.id),u.push(e.values.length),o*=e.values.length;var t=c[e.id].category;e.values.forEach((function(e){t.index.push(e.id),Object.defineProperty(t.label,e.id,{value:e.name,writable:!0,enumerable:!0})}))},p=t.header.links?t.header.links.find((function(e){return"request"===e.rel})):null,m=l.findIndex((function(e){return"OBS_STATUS"===e.id}));-1!==m&&(l[m].values.length?d=l[m].values:m=-1),i.observation.forEach(b),i.hasOwnProperty("dataSet")&&i.dataSet.forEach(b);var g={version:"2.0",class:"dataset",updated:t.header.prepared||null,source:t.header.sender.name||null,label:r.name||null,id:s,size:u,dimension:c,value:n.ovalue?{}:new Array(o).fill(null)};for(var y in p&&(g.link={alternate:[{type:"application/vnd.sdmx.data+json",href:p.href}]}),f.geo.length+f.time.length>0&&(f.time.length||delete f.time,f.geo.length||delete f.geo,g.role=f),-1!==m&&(g.status=n.ostatus?{}:new Array(o).fill(null),g.extension={status:{label:{}}},d.forEach((function(e){g.extension.status.label[e.id]=e.name})),h=n.ostatus?function(){var e=a[y][m];null!==e&&(g.status[v(g,w)]=d[e].id)}:function(){var e=a[y][m];g.status[v(g,w)]=null===e?null:d[e].id}),m++,a){var w=y.split(":");n.ovalue&&null===a[y][0]||(g.value[v(g,w)]=a[y][0]),h()}return n.instance?e(g):g},exports.fromTable=i,exports.join=function(t,n){if(void 0===t||!Array.isArray(t))return null;var r=JSON.parse(JSON.stringify(t)),a=r[0];if(!a.hasOwnProperty("version")||!a.hasOwnProperty("class")||"dataset"!==a.class)return null;void 0===n&&(n={});var l=void 0===n.label?null:n.label,o=void 0===n.by?null:n.by,s=[];if(null===o){for(var u=1,c=r.length;u<c;u++)s=s.concat(r[u].value);return a.value=s,null!==l&&(a.label=l),a}var d,f,h,v=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=0===t[r]?n:t[r];return e};r.forEach((function(t,n){var r=e(t).toTable({status:!0}),a=t.dimension[o].category;0===n?(s=[r[0]],d=a.index,f=a.label,h=a.unit):(d=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=t[r]+n;return e}(d,a.index,Object.keys(d).length),f=v(f,a.label,n),h=v(h,a.unit,n)),s=s.concat(r.slice(1))}));var b=i(s);return a.value=b.value,a.size=b.size,a.status=b.status||null,a.label=l||"",a.href=null,a.dimension[o].category.index=d||null,a.dimension[o].category.label=f||null,a.dimension[o].category.unit=h||null,a},exports.tbrowser=function(e,l,i){function o(e){void 0!==l?l.innerHTML=s[e]:window.alert(s[e])}if(void 0!==e)if(void 0!==l){void 0===i&&(i={});var s=void 0===i.i18n||void 0===i.i18n.msgs?{urierror:"tbrowser: A valid JSON-stat input must be specified.",selerror:"tbrowser: A valid selector must be specified.",jsonerror:"The request did not return a valid JSON-stat dataset.",dimerror:"Only one dimension was found in the dataset. At least two are required.",dataerror:"Selection returned no data!",source:"Source",filters:"Filters",constants:"Constants",rc:"Rows & Columns",na:"n/a"}:i.i18n.msgs,u=void 0===i.i18n||void 0===i.i18n.locale?"en-US":i.i18n.locale,c=i.dsid||0,d=i.status||!1,f=i.tblclass||"",h=i.nonconst||!1,v=t(e,c);if(n(v)){if(h)var b=function(e){var t=0,n=e.size.slice(0),r=[];return n.forEach((function(n,a){var l=a-t,i=e.Dimension(l);1===n&&(delete e.__tree__.dimension[e.id[l]],e.size.splice(l,1),e.id.splice(l,1),e.length--,t++,r.push(i.label.capitalize()+": "+i.Category(0).label.capitalize()))})),r}(v);1!==v.length?function e(t,n,l,o){"function"==typeof i.callback&&i.callback(l);var c="",f="",v="",p="",m=l.rows,g=n.Dimension(m),y=g.id,w=l.cols,O=n.Dimension(w),E=O.id,S=n.role&&n.role.metric?n.role.metric[0]:null,x=null!==S?n.Dimension(S):null,A=function(e){return e.hasOwnProperty("unit")&&e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null},D=l.filters,j=JSON.parse(JSON.stringify(D)),P=[],C="",k="",z=n.source?s.source+": "+n.source:"",N=null!==n.label?'<span class="label">'+n.label.capitalize()+"</span>":"";for(var R in h&&b.length&&(N='<span class="label">'+b.join(". ")+"</span>"),""!==z&&"."!==z.slice(-1)&&(z+="."),v+="<caption>"+N+"<form>",D){var T=n.Dimension(R),_=T.label?T.label.capitalize():R.capitalize();T.length>1?C+="<p>"+a(n,R,[D[R],null])+" <strong>"+_+"</strong></p>":P.push({label:_,value:r(T,T.Category(0)),name:R,id:T.id[0]})}""!==C&&(C='<fieldset id="filters"><legend>'+s.filters+"</legend>"+C+"</fieldset>"),P.forEach((function(e){k+="<p>"+e.value+" <strong>"+e.label+'</strong></p><input type="hidden" name="'+e.name+'" value="'+e.id+'" />'})),""!==k&&(k='<fieldset id="constants"><legend>'+s.constants+"</legend>"+k+"</fieldset>"),v+=k+C+'<fieldset id="rowscols"><legend>'+s.rc+"</legend>"+a(n,"rows",[m,w])+" <a>↔</a> "+a(n,"cols",[w,m])+"</fieldset></form></caption>",p+="<tbody>";var L=Number.toLocaleString&&"none"!==u?function(e,t){return null===t?e.toLocaleString(u):e.toLocaleString(u,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)};if(y.forEach((function(e){j[m]=e;var t=n.Data(j),a=function(e,t){var n,r=w!==S?null===x?null:A(x.Category(j[S])):A(O.Category(t));null!==e.value?(n=L(e.value,r),d&&null!==e.status&&(n+=" ("+e.status+")")):n=e.status||s.na,p+="<td>"+n+"</td>"};null!==t?(p+='<tr><th scope="row">'+r(g,g.Category(e))+"</th>",Array.isArray(t)?t.forEach((function(e,t){a(e,t)})):a(t,0),p+="</tr>"):p="ERROR"})),"ERROR"===p)return s.dataerror;p+="</tbody>",c+="<thead><tr><th></th>",E.forEach((function(e){c+='<th scope="col">'+r(O,O.Category(e))+"</th>"})),c+="</tr></thead>",""!==z&&(f='<tfoot><tr><td colspan="'+(E.length+1)+'">'+z+"</td></tr></tfoot>"),t.innerHTML='<table class="'+o+'">'+v+c+p+f+"</table>",[].slice.call(t.querySelectorAll("select")).forEach((function(r){r.addEventListener("change",(function(r){var a,l;e(t,n,function(e,t,n){var r={filters:{}};return n.forEach((function(e){"rows"===e.name||"cols"===e.name?r[e.name]=e.value:r.filters[e.name]=e.value})),"rowscols"===t&&e.id.forEach((function(t,n){t!==r.rows&&t!==r.cols?void 0===r.filters[t]&&(r.filters[t]=e.Dimension(n).id[0]):delete r.filters[t]})),r}(n,r.target.parentElement.getAttribute("id"),(a=t,l=[],[].slice.call(a.querySelectorAll("select, input")).forEach((function(e){l.push({name:e.name,value:e.value})})),l)),o)}),!1)})),t.querySelector("a").addEventListener("click",(function(){l.cols=m,l.rows=w,e(t,n,l,o)}),!1)}(l,v,function(e,t){if("object"==typeof t)return{rows:t.rows,cols:t.cols,filters:t.filters};var n,r,a={},l=[],i=e.id;if(t){var o="bigger"===t?function(e,t){return e.len<t.len?1:-1}:function(e,t){return e.len>t.len?1:-1};e.Dimension().forEach((function(e,t){l.push({id:i[t],len:e.length})})),l.sort(o),n=l[0].id,r=l[1].id}else n=i[0],r=i[1];return e.Dimension(n).length<e.Dimension(r).length&&(n=r+(r=n,"")),i.forEach((function(t){t!==n&&t!==r&&(a[t]=e.Dimension(t).id[0])})),{rows:n,cols:r,filters:a}}(v,i.preset),f):o("dimerror")}else o("jsonerror")}else o("selerror");else o("urierror")},exports.toCSV=function(e,r){if(void 0===e)return null;void 0===r&&(r={});var a={content:!1,field:!1},l=!0===r.rich,i=r.content||"label",s=r.field||"label",u=l?"value":r.vlabel||"Value",c=l?"status":r.slabel||"Status",d=!0===r.status,f=r.na||"n/a",h=r.delimiter||",",v=r.separator||"|",b=";"===h?r.decimal||",":r.decimal||".",p=!0===r.array,m=t(e,r.dsid||0),g=p?[]:"",y=p?[]:"",w=p?function(e){g.push(e)}:function(e){g+=e+"\n"},O=p?function(e){y.push(e)}:function(e){y+=e+"\n"};if(!n(m))return null;l?d=null!==m.status:("[id] label"===i&&(a.content=!0,i="id"),"[id] label"===s&&(a.field=!0,s="id"));var E=!l&&r.by&&-1!==m.id.indexOf(r.by)?r.by:null,S=E&&void 0!==r.drop&&Array.isArray(r.drop)?r.drop:null;if(E)return function(e,t){const n=[],r=t.by,a=t.idlabel,l=t.drop,i=t.na,s=t.delimiter,u=t.decimal,c=a.content?"id":t.content,d=a.field?"label":t.field,f=e.toTable({drop:l,content:c,by:r,type:"arrobj"}),h=Object.keys(f[0]),v=function(e,t,n,r,l){return e.map((e=>"label"===n?-1!==r.id.indexOf(e)?o((a.field?"["+e+"] ":"")+r.Dimension(e).label,t):o((a.field?"["+e+"] ":"")+r.Dimension(l).Category(e).label,t):o(e,t))).join(t)+"\n"}(h,s,d,e,r),b="."!==u?function(e){return null===e?o(i,s):String(e).replace(".",u)}:function(e){return null===e?o(i,s):e};return f.forEach((t=>{let r=[];h.forEach((n=>{const l=t[n],i="string"==typeof l?o(a.content?"["+l+"] "+e.Dimension(n).Category(l).label:l,s):b(l);r.push(i)})),n.push(r.join(s))})),v+n.join("\n")}(m,{drop:S,na:f,delimiter:h,decimal:b,content:i,field:s,by:E,idlabel:a});var x=m.toTable({vlabel:u,slabel:c,status:d,field:l||a.field?"id":s,content:l||a.content?"id":i,type:"array"}),A=x[0].indexOf("id"===s?"value":u),D=d?x[0].indexOf("id"===s?"status":c):-1;return x.forEach((function(e,t){e.forEach((function(n,r){var l=m.Dimension(r);t&&r===A?null===n?e[r]=o(f,h):"."!==b&&(e[r]=String(e[r]).replace(".",b)):t&&r===D&&null===n?e[r]="":(a.content&&t&&l?e[r]="["+e[r]+"] "+l.Category(e[r]).label:a.field&&0===t&&(e[r]=l?"["+e[r]+"] "+l.label:"value"===e[r]?u:c),e[r]=o(e[r],h))})),w(e.join(h))})),l&&(O("jsonstat"+h+b+h+v),["label","source","updated","href"].forEach((function(e){m[e]&&O(e+h+o(m[e],h))})),m.id.forEach((function(e,t){var n=[],r=m.Dimension(t),a=r.role,l=!1,i="";i+="dimension"+h+o(e,h)+h+o(r.label,h)+h+r.length,"metric"===a&&r.__tree__.category.unit&&(l=!0),r.id.forEach((function(e,t){var a=[],s=r.Category(t);i+=h+o(e,h)+h+o(s.label,h),l&&(a.push(s.unit.hasOwnProperty("decimals")?s.unit.decimals:""),a.push(s.unit.label||""),s.unit.symbol&&(a.push(s.unit.symbol),a.push(s.unit.position)),n.push(o(a.join(v),h)))})),null!==a&&"classification"!==a&&(i+=h+r.role,l&&(i+=h+n.join(h))),O(i)})),g=p?y.concat(["data"],g):y+"data\n"+g),g},exports.version="3.5.0";
|
package/module.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
// jsonstat-suite v3.
|
|
2
|
-
import e from"jsonstat-toolkit";function t(t,n){return null==t?null:("string"!=typeof t&&void 0!==t.length||(t=e(t)),0===t.length||"dataset"!==t.class&&"collection"!==t.class&&"bundle"!==t.class?null:"dataset"===t.class?t:t.Dataset(n))}function n(e){if(null===e||0===e.length||"dataset"!==e.class)return!1;for(var t=e.length,n=1;t--;)n*=e.Dimension(t).length;return n===e.n}function a(e,t,n){var a,r,l,i,o;return(t.label||n).capitalize()+(r=t,o="",(a=e)&&"metric"===a.role&&r.unit&&(l=r.unit.hasOwnProperty("label")?r.unit.label:"")+(i=r.unit.hasOwnProperty("symbol")?r.unit.symbol:"")!==""&&(o=" ("+(o=""===i?l:""===l?i:"start"===r.unit.position?i+l:l+" "+i)+")"),o)}function r(e,t,n){var r,l='<select name="'+t+'">',i=[];if(null!==n[1]){if(r=e.id,i=e.Dimension(),2===r.length)return(e.Dimension(n[0]).label||n[0]).capitalize()}else{var o=e.Dimension(t);if(r=o.id,i=o.Category(),1===r.length)return}return r.forEach((function(e,t){var r=e!==n[0]?"":'selected="selected" ';null!==n[1]&&e===n[1]||(l+="<option "+r+'value="'+e+'">'+a(o,i[t],e)+"</option>")})),l+="</select>"}function l(e,l,i){function o(e){void 0!==l?l.innerHTML=s[e]:window.alert(s[e])}if(void 0!==e)if(void 0!==l){void 0===i&&(i={});var s=void 0===i.i18n||void 0===i.i18n.msgs?{urierror:"tbrowser: A valid JSON-stat input must be specified.",selerror:"tbrowser: A valid selector must be specified.",jsonerror:"The request did not return a valid JSON-stat dataset.",dimerror:"Only one dimension was found in the dataset. At least two are required.",dataerror:"Selection returned no data!",source:"Source",filters:"Filters",constants:"Constants",rc:"Rows & Columns",na:"n/a"}:i.i18n.msgs,u=void 0===i.i18n||void 0===i.i18n.locale?"en-US":i.i18n.locale,c=i.dsid||0,d=i.status||!1,f=i.tblclass||"",h=i.nonconst||!1,v=t(e,c);if(n(v)){if(h)var b=function(e){var t=0,n=e.size.slice(0),a=[];return n.forEach((function(n,r){var l=r-t,i=e.Dimension(l);1===n&&(delete e.__tree__.dimension[e.id[l]],e.size.splice(l,1),e.id.splice(l,1),e.length--,t++,a.push(i.label.capitalize()+": "+i.Category(0).label.capitalize()))})),a}(v);1!==v.length?function e(t,n,l,o){"function"==typeof i.callback&&i.callback(l);var c="",f="",v="",p="",g=l.rows,m=n.Dimension(g),y=m.id,w=l.cols,O=n.Dimension(w),E=O.id,S=n.role&&n.role.metric?n.role.metric[0]:null,x=null!==S?n.Dimension(S):null,A=function(e){return e.hasOwnProperty("unit")&&e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null},D=l.filters,P=JSON.parse(JSON.stringify(D)),j=[],k="",z="",N=n.source?s.source+": "+n.source:"",C=null!==n.label?'<span class="label">'+n.label.capitalize()+"</span>":"";for(var R in h&&b.length&&(C='<span class="label">'+b.join(". ")+"</span>"),""!==N&&"."!==N.slice(-1)&&(N+="."),v+="<caption>"+C+"<form>",D){var _=n.Dimension(R),L=_.label?_.label.capitalize():R.capitalize();_.length>1?k+="<p>"+r(n,R,[D[R],null])+" <strong>"+L+"</strong></p>":j.push({label:L,value:a(_,_.Category(0)),name:R,id:_.id[0]})}""!==k&&(k='<fieldset id="filters"><legend>'+s.filters+"</legend>"+k+"</fieldset>"),j.forEach((function(e){z+="<p>"+e.value+" <strong>"+e.label+'</strong></p><input type="hidden" name="'+e.name+'" value="'+e.id+'" />'})),""!==z&&(z='<fieldset id="constants"><legend>'+s.constants+"</legend>"+z+"</fieldset>"),v+=z+k+'<fieldset id="rowscols"><legend>'+s.rc+"</legend>"+r(n,"rows",[g,w])+" <a>↔</a> "+r(n,"cols",[w,g])+"</fieldset></form></caption>",p+="<tbody>";var T=Number.toLocaleString&&"none"!==u?function(e,t){return null===t?e.toLocaleString(u):e.toLocaleString(u,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)};if(y.forEach((function(e){P[g]=e;var t=n.Data(P),r=function(e,t){var n,a=w!==S?null===x?null:A(x.Category(P[S])):A(O.Category(t));null!==e.value?(n=T(e.value,a),d&&null!==e.status&&(n+=" ("+e.status+")")):n=e.status||s.na,p+="<td>"+n+"</td>"};null!==t?(p+='<tr><th scope="row">'+a(m,m.Category(e))+"</th>",Array.isArray(t)?t.forEach((function(e,t){r(e,t)})):r(t,0),p+="</tr>"):p="ERROR"})),"ERROR"===p)return s.dataerror;p+="</tbody>",c+="<thead><tr><th></th>",E.forEach((function(e){c+='<th scope="col">'+a(O,O.Category(e))+"</th>"})),c+="</tr></thead>",""!==N&&(f='<tfoot><tr><td colspan="'+(E.length+1)+'">'+N+"</td></tr></tfoot>"),t.innerHTML='<table class="'+o+'">'+v+c+p+f+"</table>",[].slice.call(t.querySelectorAll("select")).forEach((function(a){a.addEventListener("change",(function(a){var r,l;e(t,n,function(e,t,n){var a={filters:{}};return n.forEach((function(e){"rows"===e.name||"cols"===e.name?a[e.name]=e.value:a.filters[e.name]=e.value})),"rowscols"===t&&e.id.forEach((function(t,n){t!==a.rows&&t!==a.cols?void 0===a.filters[t]&&(a.filters[t]=e.Dimension(n).id[0]):delete a.filters[t]})),a}(n,a.target.parentElement.getAttribute("id"),(r=t,l=[],[].slice.call(r.querySelectorAll("select, input")).forEach((function(e){l.push({name:e.name,value:e.value})})),l)),o)}),!1)})),t.querySelector("a").addEventListener("click",(function(){l.cols=g,l.rows=w,e(t,n,l,o)}),!1)}(l,v,function(e,t){if("object"==typeof t)return{rows:t.rows,cols:t.cols,filters:t.filters};var n,a,r={},l=[],i=e.id;if(t){var o="bigger"===t?function(e,t){return e.len<t.len?1:-1}:function(e,t){return e.len>t.len?1:-1};e.Dimension().forEach((function(e,t){l.push({id:i[t],len:e.length})})),l.sort(o),n=l[0].id,a=l[1].id}else n=i[0],a=i[1];return e.Dimension(n).length<e.Dimension(a).length&&(n=a+(a=n,"")),i.forEach((function(t){t!==n&&t!==a&&(r[t]=e.Dimension(t).id[0])})),{rows:n,cols:a,filters:r}}(v,i.preset),f):o("dimerror")}else o("jsonerror")}else o("selerror");else o("urierror")}function i(e,a){if(void 0===e)return null;void 0===a&&(a={});var r="",l="",i="",o=0,s=a.na||"n/a",u=a.dsid||0,c=a.vlabel||null,d=a.slabel||null,f=a.counter||!1,h=a.tblclass||"",v=a.numclass||"",b=a.valclass||"",p=a.status||!1,g=a.locale||"en-US",m=a.source||"Source",y=t(e,u),w=y.role&&y.role.metric?y.id.indexOf(y.role.metric[0]):null,O=y.Dimension({role:"metric"}),E={},S=Number.toLocaleString&&"none"!==g?function(e,t){return null===t?e.toLocaleString(g):e.toLocaleString(g,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)},x=function(e,t){var n=null;e.forEach((function(e,a){var i=P===a?' class="'+v+" "+b+'"':"",o=s;t?(w===a&&(n=E[e]),null!==e&&(o=P===a?S(e,n):e),l+="<td"+i+">"+o+"</td>"):r+="<th"+i+">"+e+"</th>"}))},A=f?function(e,t){t?l+='<tr><td class="'+v+'">'+t+"</td>":r+='<th class="'+v+'">#</th>',x(e,t),l+="</tr>"}:function(e,t){l+="<tr>",x(e,t),l+="</tr>"};if(!n(y))return null;O&&O[0].Category().forEach((function(e){var t=e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null;E[e.label]=t}));var D=y.toTable({status:p,vlabel:c,slabel:d}),P=D[0].length-1;return D.forEach((function(e,t){A(e,t)})),y.source&&(o=y.length+1,f&&o++,p&&o++,"."!==(m+=": "+y.source).slice(-1)&&(m+="."),i='<tfoot><td colspan="'+o+'">'+m+"</td></tfoot>"),'<table class="'+h+'"><caption>'+(a.caption||y.label||"")+"</caption><thead><tr>"+r+"</tr></thead><tbody>"+l+"</tbody>"+i+"</table>"}function o(e,t){var n={};return Array.isArray(e[t])?(e[t].forEach((function(e,t){null!==e&&(n[String(t)]=e)})),n):e[t]}function s(t,n){if(void 0===t)return null;void 0===n&&(n={}),"boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1);var a=n.vlabel||"Value",r=n.slabel||"Status",l=n.type||"array",i=n.label||"",s=n.header||null,u=[],c=[],d=[],f=[],h={},v={},b=function(e,t){for(var n=1,a=0,r=0;r<E;r++)a+=(n*=r>0?t[E-r]:1)*e[E-r-1];return a},p=function(){var e=t[S][a];d[b(x,c)]=isNaN(e)?null:e};switch(l){case"array":t=function(e){for(var t=e[0],n=e.slice(1),a=[],r=0,l=n.length;r<l;r++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[r][i];a.push(s)}return a}(t);break;case"object":t=function(e){for(var t=e.cols.map((function(e){return e.id})),n=e.rows,a=[],r=0,l=n.length;r<l;r++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[r].c[i].v;a.push(s)}return a}(t)}var g,m=t.length;for(var y in n.hasOwnProperty("drop")&&Array.isArray(n.drop)&&n.drop.length&&t.forEach((function(e){n.drop.forEach((function(t){delete e[t]}))})),t[0])if(y!==a)if(y!==r){if(u.push(y),s)g=s.dimension[y],h[y]=g.category.index;else{h[y]=[];for(var w=0;w<m;w++){var O=t[w][y];-1===h[y].indexOf(O)&&h[y].push(O)}}c.push(h[y].length),v[y]={label:s?g.label:y,category:{index:h[y]}},s&&(v[y].category.label=g.category.label,g.category.unit&&(v[y].category.unit=g.category.unit))}else p=function(){var e=t[S][a],n=t[S][r];d[b(x,c)]=isNaN(e)?null:e,f[b(x,c)]=""===n?null:n};for(var E=u.length,S=0;S<m;S++){for(var x=[],A=0;A<E;A++){var D=u[A];x.push(h[D].indexOf(t[S][D]))}p()}var P={version:"2.0",class:"dataset",value:d,dimension:v,id:u,size:c};return i&&(P.label=i),f.length&&(P.status=f),s&&(s.label&&(P.label=s.label),s.source&&(P.source=s.source),s.updated&&(P.updated=s.updated),s.href&&(P.href=s.href),s.role&&(P.role=s.role)),n.ovalue&&(P.value=o(P,"value")),n.ostatus&&P.hasOwnProperty("status")&&(P.status=o(P,"status")),n.instance?e(P):P}function u(e,t){if(void 0===e)return null;void 0===t&&(t={});var n,a,r,l=[],i=null,o=null,u=!1,c={time:[],geo:[],metric:[]},d="jsonstat"===e.substring(0,8),f=d?"value":t.vlabel,h=d?"status":t.slabel,v=d?e.substring(8,9):t.delimiter||",",b=";"===v?t.decimal||",":t.decimal||".",p=function(e,t){t=t||",";for(var n,a,r=new RegExp("(\\"+t+'|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\'+t+"\\r\\n]*))","gi"),l=[[]],i=null;i=r.exec(e);)(a=i[1]).length&&a!=t&&l.push([]),n=i[2]?i[2].replace(new RegExp('""',"g"),'"'):i[3],l[l.length-1].push(n);return l}(e.trim(),v);if(d){for(b=p[0][1],r=p[0][2],p.shift();"data"!==p[0][0];)l.push(p.shift());p.shift(),o={dimension:{}},l.forEach((function(e){var t,n,a,l,i,s,d,f;switch(e[0]){case"dimension":if(o.dimension[e[1]]={},(l=o.dimension[e[1]]).label=e[2],l.category={},(i=l.category).index=[],n={},a=2*e[3]+3,e.length>=a){for(t=4;t<a;t++)d=e[t],f=e[++t],Object.defineProperty(n,d,{value:f,writable:!0,configurable:!0,enumerable:!0}),i.label=n,i.index.push(d);"string"==typeof e[t]&&-1!==["time","geo","metric"].indexOf(e[t])&&(c[e[t]].push(e[1]),u=!0,"metric"===e[t]&&"string"==typeof e[++t]&&(i.unit={},i.index.forEach((function(n,a){var l=e[t+a].split(r);i.unit[n]={},s=i.unit[n],void 0!==l[0]&&""!==l[0]&&(s.decimals=1*l[0]),void 0!==l[1]&&""!==l[1]&&(s.label=l[1]),void 0!==l[2]&&""!==l[2]&&(s.symbol=l[2]),void 0!==l[1]&&-1!==["start","end"].indexOf(l[3])&&(s.position=l[3])}))))}break;case"label":case"source":case"updated":case"href":o[e[0]]=e[1]||null}})),u&&(c.time.length||delete c.time,c.geo.length||delete c.geo,c.metric.length||delete c.metric,o.role=c)}if(n=p.length,a=p[0].length,void 0!==f){for(;a--;)if(p[0][a]===f){i=a;break}if(null===i)return null}else i=a-1,f=p[0][i];if(","===b)for(a=1;a<n;a++)p[a][i]=Number(p[a][i].replace(",","."));else for(a=1;a<n;a++)p[a][i]=Number(p[a][i]);return s(p,{header:o,vlabel:f,slabel:h,type:"array",label:t.label||"",ovalue:t.ovalue||!1,ostatus:t.ostatus||!1,instance:t.instance||!1})}function c(t,n){if("object"!=typeof t)return null;if(t.hasOwnProperty("data")&&t.hasOwnProperty("meta")&&t.data.hasOwnProperty("dataSets")&&t.data.hasOwnProperty("structures")&&Array.isArray(t.data.structures)&&(t.dataSets=t.data.dataSets,t.structure=t.data.structures[0],t.header=t.meta),!t.hasOwnProperty("dataSets")||!Array.isArray(t.dataSets))return null;if(1!==t.dataSets.length)return null;t.dataSets[0].hasOwnProperty("observations")||function(e){var t=e.dataSets[0],n=t.series,a=e.structure,r=a.dimensions,l={};Object.keys(n).forEach((function(e){var t=n[e].observations;Object.keys(t).forEach((function(a){l[e+":"+a]=t[a].concat(n[e].attributes)}))})),t.observations=l,delete t.series,r.observation=r.series.concat(r.observation),delete r.series,a.attributes.observation=a.attributes.observation.concat(a.attributes.series),delete a.attributes.series}(t),void 0===n?n={ovalue:!1,ostatus:!1,instance:!1}:("boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1));var a=t.structure,r=t.dataSets[0].observations,l=a.attributes.observation,i=a.dimensions;if(!i.hasOwnProperty("observation"))return null;if(i.hasOwnProperty("series")&&Object.keys(i.series).length)return null;var o=1,s=[],u=[],c={},d=[],f={time:[],geo:[]},h=function(){},v=function(e,t){for(var n=e.size,a=n.length-t.length;a--;)t.push(0);for(var r=0,l=n.length,i=0,o=1;r<l;r++)i+=(o*=r>0?n[l-r]:1)*t[l-r-1];return i},b=function(e){if(c[e.id]={label:e.name},e.hasOwnProperty("role"))switch(e.role){case"REF_AREA":f.geo.push(e.id);break;case"TIME_PERIOD":f.time.push(e.id)}Object.defineProperty(c[e.id],"category",{value:{index:[],label:{}},writable:!0,enumerable:!0}),s.push(e.id),u.push(e.values.length),o*=e.values.length;var t=c[e.id].category;e.values.forEach((function(e){t.index.push(e.id),Object.defineProperty(t.label,e.id,{value:e.name,writable:!0,enumerable:!0})}))},p=t.header.links?t.header.links.find((function(e){return"request"===e.rel})):null,g=l.findIndex((function(e){return"OBS_STATUS"===e.id}));-1!==g&&(l[g].values.length?d=l[g].values:g=-1),i.observation.forEach(b),i.hasOwnProperty("dataSet")&&i.dataSet.forEach(b);var m={version:"2.0",class:"dataset",updated:t.header.prepared||null,source:t.header.sender.name||null,label:a.name||null,id:s,size:u,dimension:c,value:n.ovalue?{}:new Array(o).fill(null)};for(var y in p&&(m.link={alternate:[{type:"application/vnd.sdmx.data+json",href:p.href}]}),f.geo.length+f.time.length>0&&(f.time.length||delete f.time,f.geo.length||delete f.geo,m.role=f),-1!==g&&(m.status=n.ostatus?{}:new Array(o).fill(null),m.extension={status:{label:{}}},d.forEach((function(e){m.extension.status.label[e.id]=e.name})),h=n.ostatus?function(){var e=r[y][g];null!==e&&(m.status[v(m,w)]=d[e].id)}:function(){var e=r[y][g];m.status[v(m,w)]=null===e?null:d[e].id}),g++,r){var w=y.split(":");n.ovalue&&null===r[y][0]||(m.value[v(m,w)]=r[y][0]),h()}return n.instance?e(m):m}function d(t,n){if(void 0===t||!Array.isArray(t))return null;var a=JSON.parse(JSON.stringify(t)),r=a[0];if(!r.hasOwnProperty("version")||!r.hasOwnProperty("class")||"dataset"!==r.class)return null;void 0===n&&(n={});var l=void 0===n.label?null:n.label,i=void 0===n.by?null:n.by,o=[];if(null===i){for(var u=1,c=a.length;u<c;u++)o=o.concat(a[u].value);return r.value=o,null!==l&&(r.label=l),r}var d,f,h,v=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var a in t)e[a]=0===t[a]?n:t[a];return e};a.forEach((function(t,n){var a=e(t).toTable({status:!0}),r=t.dimension[i].category;0===n?(o=[a[0]],d=r.index,f=r.label,h=r.unit):(d=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var a in t)e[a]=t[a]+n;return e}(d,r.index,Object.keys(d).length),f=v(f,r.label,n),h=v(h,r.unit,n)),o=o.concat(a.slice(1))}));var b=s(o);return r.value=b.value,r.size=b.size,r.status=b.status||null,r.label=l||"",r.href=null,r.dimension[i].category.index=d||null,r.dimension[i].category.label=f||null,r.dimension[i].category.unit=h||null,r}function f(e,t){return null==e?"":-1!==e.indexOf(t)?'"'+e+'"':e}function h(e,a){if(void 0===e)return null;void 0===a&&(a={});var r={content:!1,field:!1},l=!0===a.rich,i=a.content||"label",o=a.field||"label",s=l?"value":a.vlabel||"Value",u=l?"status":a.slabel||"Status",c=!0===a.status,d=a.na||"n/a",h=a.delimiter||",",v=a.separator||"|",b=";"===h?a.decimal||",":a.decimal||".",p=!0===a.array,g=t(e,a.dsid||0),m=p?[]:"",y=p?[]:"",w=p?function(e){m.push(e)}:function(e){m+=e+"\n"},O=p?function(e){y.push(e)}:function(e){y+=e+"\n"};if(!n(g))return null;l?c=null!==g.status:("[id] label"===i&&(r.content=!0,i="id"),"[id] label"===o&&(r.field=!0,o="id"));var E=g.toTable({vlabel:s,slabel:u,status:c,field:l||r.field?"id":o,content:l||r.content?"id":i,type:"array"}),S=E[0].indexOf("id"===o?"value":s),x=c?E[0].indexOf("id"===o?"status":u):-1;return E.forEach((function(e,t){e.forEach((function(n,a){var l=g.Dimension(a);t&&a===S?null===n?e[a]=f(d,h):"."!==b&&(e[a]=String(e[a]).replace(".",b)):t&&a===x&&null===n?e[a]="":(r.content&&t&&l&&(e[a]="["+e[a]+"] "+l.Category(e[a]).label),r.field&&0===t&&(e[a]=l?"["+e[a]+"] "+l.label:"value"===e[a]?s:u),e[a]=f(e[a],h))})),w(e.join(h))})),l&&(O("jsonstat"+h+b+h+v),["label","source","updated","href"].forEach((function(e){g[e]&&O(e+h+f(g[e],h))})),g.id.forEach((function(e,t){var n=[],a=g.Dimension(t),r=a.role,l=!1,i="";i+="dimension"+h+f(e,h)+h+f(a.label,h)+h+a.length,"metric"===r&&a.__tree__.category.unit&&(l=!0),a.id.forEach((function(e,t){var r=[],o=a.Category(t);i+=h+f(e,h)+h+f(o.label,h),l&&(r.push(o.unit.hasOwnProperty("decimals")?o.unit.decimals:""),r.push(o.unit.label||""),o.unit.symbol&&(r.push(o.unit.symbol),r.push(o.unit.position)),n.push(f(r.join(v),h)))})),null!==r&&"classification"!==r&&(i+=h+a.role,l&&(i+=h+n.join(h))),O(i)})),m=p?y.concat(["data"],m):y+"data\n"+m),m}String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)};var v="3.4.1";export{i as datalist,u as fromCSV,c as fromSDMX,s as fromTable,d as join,l as tbrowser,h as toCSV,v as version};
|
|
1
|
+
// jsonstat-suite v3.5.0 Copyright 2023 Xavier Badosa https://jsonstat.com
|
|
2
|
+
import e from"jsonstat-toolkit";function t(t,n){return null==t?null:("string"!=typeof t&&void 0!==t.length||(t=e(t)),0===t.length||"dataset"!==t.class&&"collection"!==t.class&&"bundle"!==t.class?null:"dataset"===t.class?t:t.Dataset(n))}function n(e){if(null===e||0===e.length||"dataset"!==e.class)return!1;for(var t=e.length,n=1;t--;)n*=e.Dimension(t).length;return n===e.n}function r(e,t,n){var r,a,l,i,o;return(t.label||n).capitalize()+(a=t,o="",(r=e)&&"metric"===r.role&&a.unit&&(l=a.unit.hasOwnProperty("label")?a.unit.label:"")+(i=a.unit.hasOwnProperty("symbol")?a.unit.symbol:"")!==""&&(o=" ("+(o=""===i?l:""===l?i:"start"===a.unit.position?i+l:l+" "+i)+")"),o)}function a(e,t,n){var a,l='<select name="'+t+'">',i=[];if(null!==n[1]){if(a=e.id,i=e.Dimension(),2===a.length)return(e.Dimension(n[0]).label||n[0]).capitalize()}else{var o=e.Dimension(t);if(a=o.id,i=o.Category(),1===a.length)return}return a.forEach((function(e,t){var a=e!==n[0]?"":'selected="selected" ';null!==n[1]&&e===n[1]||(l+="<option "+a+'value="'+e+'">'+r(o,i[t],e)+"</option>")})),l+="</select>"}function l(e,l,i){function o(e){void 0!==l?l.innerHTML=s[e]:window.alert(s[e])}if(void 0!==e)if(void 0!==l){void 0===i&&(i={});var s=void 0===i.i18n||void 0===i.i18n.msgs?{urierror:"tbrowser: A valid JSON-stat input must be specified.",selerror:"tbrowser: A valid selector must be specified.",jsonerror:"The request did not return a valid JSON-stat dataset.",dimerror:"Only one dimension was found in the dataset. At least two are required.",dataerror:"Selection returned no data!",source:"Source",filters:"Filters",constants:"Constants",rc:"Rows & Columns",na:"n/a"}:i.i18n.msgs,u=void 0===i.i18n||void 0===i.i18n.locale?"en-US":i.i18n.locale,c=i.dsid||0,d=i.status||!1,f=i.tblclass||"",h=i.nonconst||!1,v=t(e,c);if(n(v)){if(h)var b=function(e){var t=0,n=e.size.slice(0),r=[];return n.forEach((function(n,a){var l=a-t,i=e.Dimension(l);1===n&&(delete e.__tree__.dimension[e.id[l]],e.size.splice(l,1),e.id.splice(l,1),e.length--,t++,r.push(i.label.capitalize()+": "+i.Category(0).label.capitalize()))})),r}(v);1!==v.length?function e(t,n,l,o){"function"==typeof i.callback&&i.callback(l);var c="",f="",v="",p="",m=l.rows,g=n.Dimension(m),y=g.id,w=l.cols,O=n.Dimension(w),E=O.id,S=n.role&&n.role.metric?n.role.metric[0]:null,x=null!==S?n.Dimension(S):null,A=function(e){return e.hasOwnProperty("unit")&&e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null},D=l.filters,j=JSON.parse(JSON.stringify(D)),P=[],k="",z="",C=n.source?s.source+": "+n.source:"",N=null!==n.label?'<span class="label">'+n.label.capitalize()+"</span>":"";for(var R in h&&b.length&&(N='<span class="label">'+b.join(". ")+"</span>"),""!==C&&"."!==C.slice(-1)&&(C+="."),v+="<caption>"+N+"<form>",D){var _=n.Dimension(R),L=_.label?_.label.capitalize():R.capitalize();_.length>1?k+="<p>"+a(n,R,[D[R],null])+" <strong>"+L+"</strong></p>":P.push({label:L,value:r(_,_.Category(0)),name:R,id:_.id[0]})}""!==k&&(k='<fieldset id="filters"><legend>'+s.filters+"</legend>"+k+"</fieldset>"),P.forEach((function(e){z+="<p>"+e.value+" <strong>"+e.label+'</strong></p><input type="hidden" name="'+e.name+'" value="'+e.id+'" />'})),""!==z&&(z='<fieldset id="constants"><legend>'+s.constants+"</legend>"+z+"</fieldset>"),v+=z+k+'<fieldset id="rowscols"><legend>'+s.rc+"</legend>"+a(n,"rows",[m,w])+" <a>↔</a> "+a(n,"cols",[w,m])+"</fieldset></form></caption>",p+="<tbody>";var T=Number.toLocaleString&&"none"!==u?function(e,t){return null===t?e.toLocaleString(u):e.toLocaleString(u,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)};if(y.forEach((function(e){j[m]=e;var t=n.Data(j),a=function(e,t){var n,r=w!==S?null===x?null:A(x.Category(j[S])):A(O.Category(t));null!==e.value?(n=T(e.value,r),d&&null!==e.status&&(n+=" ("+e.status+")")):n=e.status||s.na,p+="<td>"+n+"</td>"};null!==t?(p+='<tr><th scope="row">'+r(g,g.Category(e))+"</th>",Array.isArray(t)?t.forEach((function(e,t){a(e,t)})):a(t,0),p+="</tr>"):p="ERROR"})),"ERROR"===p)return s.dataerror;p+="</tbody>",c+="<thead><tr><th></th>",E.forEach((function(e){c+='<th scope="col">'+r(O,O.Category(e))+"</th>"})),c+="</tr></thead>",""!==C&&(f='<tfoot><tr><td colspan="'+(E.length+1)+'">'+C+"</td></tr></tfoot>"),t.innerHTML='<table class="'+o+'">'+v+c+p+f+"</table>",[].slice.call(t.querySelectorAll("select")).forEach((function(r){r.addEventListener("change",(function(r){var a,l;e(t,n,function(e,t,n){var r={filters:{}};return n.forEach((function(e){"rows"===e.name||"cols"===e.name?r[e.name]=e.value:r.filters[e.name]=e.value})),"rowscols"===t&&e.id.forEach((function(t,n){t!==r.rows&&t!==r.cols?void 0===r.filters[t]&&(r.filters[t]=e.Dimension(n).id[0]):delete r.filters[t]})),r}(n,r.target.parentElement.getAttribute("id"),(a=t,l=[],[].slice.call(a.querySelectorAll("select, input")).forEach((function(e){l.push({name:e.name,value:e.value})})),l)),o)}),!1)})),t.querySelector("a").addEventListener("click",(function(){l.cols=m,l.rows=w,e(t,n,l,o)}),!1)}(l,v,function(e,t){if("object"==typeof t)return{rows:t.rows,cols:t.cols,filters:t.filters};var n,r,a={},l=[],i=e.id;if(t){var o="bigger"===t?function(e,t){return e.len<t.len?1:-1}:function(e,t){return e.len>t.len?1:-1};e.Dimension().forEach((function(e,t){l.push({id:i[t],len:e.length})})),l.sort(o),n=l[0].id,r=l[1].id}else n=i[0],r=i[1];return e.Dimension(n).length<e.Dimension(r).length&&(n=r+(r=n,"")),i.forEach((function(t){t!==n&&t!==r&&(a[t]=e.Dimension(t).id[0])})),{rows:n,cols:r,filters:a}}(v,i.preset),f):o("dimerror")}else o("jsonerror")}else o("selerror");else o("urierror")}function i(e,r){if(void 0===e)return null;void 0===r&&(r={});var a="",l="",i="",o=0,s=r.na||"n/a",u=r.dsid||0,c=r.vlabel||null,d=r.slabel||null,f=r.counter||!1,h=r.tblclass||"",v=r.numclass||"",b=r.valclass||"",p=r.status||!1,m=r.locale||"en-US",g=r.source||"Source",y=t(e,u),w=y.role&&y.role.metric?y.id.indexOf(y.role.metric[0]):null,O=y.Dimension({role:"metric"}),E={},S=Number.toLocaleString&&"none"!==m?function(e,t){return null===t?e.toLocaleString(m):e.toLocaleString(m,{minimumFractionDigits:t,maximumFractionDigits:t})}:function(e,t){return null===t?e:e.toFixed(t)},x=function(e,t){var n=null;e.forEach((function(e,r){var i=j===r?' class="'+v+" "+b+'"':"",o=s;t?(w===r&&(n=E[e]),null!==e&&(o=j===r?S(e,n):e),l+="<td"+i+">"+o+"</td>"):a+="<th"+i+">"+e+"</th>"}))},A=f?function(e,t){t?l+='<tr><td class="'+v+'">'+t+"</td>":a+='<th class="'+v+'">#</th>',x(e,t),l+="</tr>"}:function(e,t){l+="<tr>",x(e,t),l+="</tr>"};if(!n(y))return null;O&&O[0].Category().forEach((function(e){var t=e.unit&&e.unit.hasOwnProperty("decimals")?e.unit.decimals:null;E[e.label]=t}));var D=y.toTable({status:p,vlabel:c,slabel:d}),j=D[0].length-1;return D.forEach((function(e,t){A(e,t)})),y.source&&(o=y.length+1,f&&o++,p&&o++,"."!==(g+=": "+y.source).slice(-1)&&(g+="."),i='<tfoot><td colspan="'+o+'">'+g+"</td></tfoot>"),'<table class="'+h+'"><caption>'+(r.caption||y.label||"")+"</caption><thead><tr>"+a+"</tr></thead><tbody>"+l+"</tbody>"+i+"</table>"}function o(e,t){var n={};return Array.isArray(e[t])?(e[t].forEach((function(e,t){null!==e&&(n[String(t)]=e)})),n):e[t]}function s(t,n){if(void 0===t)return null;void 0===n&&(n={}),"boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1);var r=n.vlabel||"Value",a=n.slabel||"Status",l=n.type||"array",i=n.label||"",s=n.header||null,u=[],c=[],d=[],f=[],h={},v={},b=function(e,t){for(var n=1,r=0,a=0;a<E;a++)r+=(n*=a>0?t[E-a]:1)*e[E-a-1];return r},p=function(){var e=t[S][r];d[b(x,c)]=isNaN(e)?null:e};switch(l){case"array":t=function(e){for(var t=e[0],n=e.slice(1),r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a][i];r.push(s)}return r}(t);break;case"object":t=function(e){for(var t=e.cols.map((function(e){return e.id})),n=e.rows,r=[],a=0,l=n.length;a<l;a++){for(var i=0,o=t.length,s={};i<o;i++)s[t[i]]=n[a].c[i].v;r.push(s)}return r}(t)}var m,g=t.length;for(var y in n.hasOwnProperty("drop")&&Array.isArray(n.drop)&&n.drop.length&&t.forEach((function(e){n.drop.forEach((function(t){delete e[t]}))})),t[0])if(y!==r)if(y!==a){if(u.push(y),s)m=s.dimension[y],h[y]=m.category.index;else{h[y]=[];for(var w=0;w<g;w++){var O=t[w][y];-1===h[y].indexOf(O)&&h[y].push(O)}}c.push(h[y].length),v[y]={label:s?m.label:y,category:{index:h[y]}},s&&(v[y].category.label=m.category.label,m.category.unit&&(v[y].category.unit=m.category.unit))}else p=function(){var e=t[S][r],n=t[S][a];d[b(x,c)]=isNaN(e)?null:e,f[b(x,c)]=""===n?null:n};for(var E=u.length,S=0;S<g;S++){for(var x=[],A=0;A<E;A++){var D=u[A];x.push(h[D].indexOf(t[S][D]))}p()}var j={version:"2.0",class:"dataset",value:d,dimension:v,id:u,size:c};return i&&(j.label=i),f.length&&(j.status=f),s&&(s.label&&(j.label=s.label),s.source&&(j.source=s.source),s.updated&&(j.updated=s.updated),s.href&&(j.href=s.href),s.role&&(j.role=s.role)),n.ovalue&&(j.value=o(j,"value")),n.ostatus&&j.hasOwnProperty("status")&&(j.status=o(j,"status")),n.instance?e(j):j}function u(e,t){if(void 0===e)return null;void 0===t&&(t={});var n,r,a,l=[],i=null,o=null,u=!1,c={time:[],geo:[],metric:[]},d="jsonstat"===e.substring(0,8),f=d?"value":t.vlabel,h=d?"status":t.slabel,v=d?e.substring(8,9):t.delimiter||",",b=";"===v?t.decimal||",":t.decimal||".",p=function(e,t){t=t||",";for(var n,r,a=new RegExp("(\\"+t+'|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\'+t+"\\r\\n]*))","gi"),l=[[]],i=null;i=a.exec(e);)(r=i[1]).length&&r!=t&&l.push([]),n=i[2]?i[2].replace(new RegExp('""',"g"),'"'):i[3],l[l.length-1].push(n);return l}(e.trim(),v);if(d){for(b=p[0][1],a=p[0][2],p.shift();"data"!==p[0][0];)l.push(p.shift());p.shift(),o={dimension:{}},l.forEach((function(e){var t,n,r,l,i,s,d,f;switch(e[0]){case"dimension":if(o.dimension[e[1]]={},(l=o.dimension[e[1]]).label=e[2],l.category={},(i=l.category).index=[],n={},r=2*e[3]+3,e.length>=r){for(t=4;t<r;t++)d=e[t],f=e[++t],Object.defineProperty(n,d,{value:f,writable:!0,configurable:!0,enumerable:!0}),i.label=n,i.index.push(d);"string"==typeof e[t]&&-1!==["time","geo","metric"].indexOf(e[t])&&(c[e[t]].push(e[1]),u=!0,"metric"===e[t]&&"string"==typeof e[++t]&&(i.unit={},i.index.forEach((function(n,r){var l=e[t+r].split(a);i.unit[n]={},s=i.unit[n],void 0!==l[0]&&""!==l[0]&&(s.decimals=1*l[0]),void 0!==l[1]&&""!==l[1]&&(s.label=l[1]),void 0!==l[2]&&""!==l[2]&&(s.symbol=l[2]),void 0!==l[1]&&-1!==["start","end"].indexOf(l[3])&&(s.position=l[3])}))))}break;case"label":case"source":case"updated":case"href":o[e[0]]=e[1]||null}})),u&&(c.time.length||delete c.time,c.geo.length||delete c.geo,c.metric.length||delete c.metric,o.role=c)}if(n=p.length,r=p[0].length,void 0!==f){for(;r--;)if(p[0][r]===f){i=r;break}if(null===i)return null}else i=r-1,f=p[0][i];if(","===b)for(r=1;r<n;r++)p[r][i]=Number(p[r][i].replace(",","."));else for(r=1;r<n;r++)p[r][i]=Number(p[r][i]);return s(p,{header:o,vlabel:f,slabel:h,type:"array",label:t.label||"",ovalue:t.ovalue||!1,ostatus:t.ostatus||!1,instance:t.instance||!1})}function c(t,n){if("object"!=typeof t)return null;if(t.hasOwnProperty("data")&&t.hasOwnProperty("meta")&&t.data.hasOwnProperty("dataSets")&&t.data.hasOwnProperty("structures")&&Array.isArray(t.data.structures)&&(t.dataSets=t.data.dataSets,t.structure=t.data.structures[0],t.header=t.meta),!t.hasOwnProperty("dataSets")||!Array.isArray(t.dataSets))return null;if(1!==t.dataSets.length)return null;t.dataSets[0].hasOwnProperty("observations")||function(e){var t=e.dataSets[0],n=t.series,r=e.structure,a=r.dimensions,l={};Object.keys(n).forEach((function(e){var t=n[e].observations;Object.keys(t).forEach((function(r){l[e+":"+r]=t[r].concat(n[e].attributes)}))})),t.observations=l,delete t.series,a.observation=a.series.concat(a.observation),delete a.series,r.attributes.observation=r.attributes.observation.concat(r.attributes.series),delete r.attributes.series}(t),void 0===n?n={ovalue:!1,ostatus:!1,instance:!1}:("boolean"!=typeof n.ovalue&&(n.ovalue=!1),"boolean"!=typeof n.ostatus&&(n.ostatus=!1),"boolean"!=typeof n.instance&&(n.instance=!1));var r=t.structure,a=t.dataSets[0].observations,l=r.attributes.observation,i=r.dimensions;if(!i.hasOwnProperty("observation"))return null;if(i.hasOwnProperty("series")&&Object.keys(i.series).length)return null;var o=1,s=[],u=[],c={},d=[],f={time:[],geo:[]},h=function(){},v=function(e,t){for(var n=e.size,r=n.length-t.length;r--;)t.push(0);for(var a=0,l=n.length,i=0,o=1;a<l;a++)i+=(o*=a>0?n[l-a]:1)*t[l-a-1];return i},b=function(e){if(c[e.id]={label:e.name},e.hasOwnProperty("role"))switch(e.role){case"REF_AREA":f.geo.push(e.id);break;case"TIME_PERIOD":f.time.push(e.id)}Object.defineProperty(c[e.id],"category",{value:{index:[],label:{}},writable:!0,enumerable:!0}),s.push(e.id),u.push(e.values.length),o*=e.values.length;var t=c[e.id].category;e.values.forEach((function(e){t.index.push(e.id),Object.defineProperty(t.label,e.id,{value:e.name,writable:!0,enumerable:!0})}))},p=t.header.links?t.header.links.find((function(e){return"request"===e.rel})):null,m=l.findIndex((function(e){return"OBS_STATUS"===e.id}));-1!==m&&(l[m].values.length?d=l[m].values:m=-1),i.observation.forEach(b),i.hasOwnProperty("dataSet")&&i.dataSet.forEach(b);var g={version:"2.0",class:"dataset",updated:t.header.prepared||null,source:t.header.sender.name||null,label:r.name||null,id:s,size:u,dimension:c,value:n.ovalue?{}:new Array(o).fill(null)};for(var y in p&&(g.link={alternate:[{type:"application/vnd.sdmx.data+json",href:p.href}]}),f.geo.length+f.time.length>0&&(f.time.length||delete f.time,f.geo.length||delete f.geo,g.role=f),-1!==m&&(g.status=n.ostatus?{}:new Array(o).fill(null),g.extension={status:{label:{}}},d.forEach((function(e){g.extension.status.label[e.id]=e.name})),h=n.ostatus?function(){var e=a[y][m];null!==e&&(g.status[v(g,w)]=d[e].id)}:function(){var e=a[y][m];g.status[v(g,w)]=null===e?null:d[e].id}),m++,a){var w=y.split(":");n.ovalue&&null===a[y][0]||(g.value[v(g,w)]=a[y][0]),h()}return n.instance?e(g):g}function d(t,n){if(void 0===t||!Array.isArray(t))return null;var r=JSON.parse(JSON.stringify(t)),a=r[0];if(!a.hasOwnProperty("version")||!a.hasOwnProperty("class")||"dataset"!==a.class)return null;void 0===n&&(n={});var l=void 0===n.label?null:n.label,i=void 0===n.by?null:n.by,o=[];if(null===i){for(var u=1,c=r.length;u<c;u++)o=o.concat(r[u].value);return a.value=o,null!==l&&(a.label=l),a}var d,f,h,v=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=0===t[r]?n:t[r];return e};r.forEach((function(t,n){var r=e(t).toTable({status:!0}),a=t.dimension[i].category;0===n?(o=[r[0]],d=a.index,f=a.label,h=a.unit):(d=function(e,t,n){if(Array.isArray(e))e=e.concat(t);else for(var r in t)e[r]=t[r]+n;return e}(d,a.index,Object.keys(d).length),f=v(f,a.label,n),h=v(h,a.unit,n)),o=o.concat(r.slice(1))}));var b=s(o);return a.value=b.value,a.size=b.size,a.status=b.status||null,a.label=l||"",a.href=null,a.dimension[i].category.index=d||null,a.dimension[i].category.label=f||null,a.dimension[i].category.unit=h||null,a}function f(e,t){return null==e?"":-1!==e.indexOf(t)?'"'+e+'"':e}function h(e,r){if(void 0===e)return null;void 0===r&&(r={});var a={content:!1,field:!1},l=!0===r.rich,i=r.content||"label",o=r.field||"label",s=l?"value":r.vlabel||"Value",u=l?"status":r.slabel||"Status",c=!0===r.status,d=r.na||"n/a",h=r.delimiter||",",v=r.separator||"|",b=";"===h?r.decimal||",":r.decimal||".",p=!0===r.array,m=t(e,r.dsid||0),g=p?[]:"",y=p?[]:"",w=p?function(e){g.push(e)}:function(e){g+=e+"\n"},O=p?function(e){y.push(e)}:function(e){y+=e+"\n"};if(!n(m))return null;l?c=null!==m.status:("[id] label"===i&&(a.content=!0,i="id"),"[id] label"===o&&(a.field=!0,o="id"));var E=!l&&r.by&&-1!==m.id.indexOf(r.by)?r.by:null,S=E&&void 0!==r.drop&&Array.isArray(r.drop)?r.drop:null;if(E)return function(e,t){const n=[],r=t.by,a=t.idlabel,l=t.drop,i=t.na,o=t.delimiter,s=t.decimal,u=a.content?"id":t.content,c=a.field?"label":t.field,d=e.toTable({drop:l,content:u,by:r,type:"arrobj"}),h=Object.keys(d[0]),v=function(e,t,n,r,l){return e.map((e=>"label"===n?-1!==r.id.indexOf(e)?f((a.field?"["+e+"] ":"")+r.Dimension(e).label,t):f((a.field?"["+e+"] ":"")+r.Dimension(l).Category(e).label,t):f(e,t))).join(t)+"\n"}(h,o,c,e,r),b="."!==s?function(e){return null===e?f(i,o):String(e).replace(".",s)}:function(e){return null===e?f(i,o):e};return d.forEach((t=>{let r=[];h.forEach((n=>{const l=t[n],i="string"==typeof l?f(a.content?"["+l+"] "+e.Dimension(n).Category(l).label:l,o):b(l);r.push(i)})),n.push(r.join(o))})),v+n.join("\n")}(m,{drop:S,na:d,delimiter:h,decimal:b,content:i,field:o,by:E,idlabel:a});var x=m.toTable({vlabel:s,slabel:u,status:c,field:l||a.field?"id":o,content:l||a.content?"id":i,type:"array"}),A=x[0].indexOf("id"===o?"value":s),D=c?x[0].indexOf("id"===o?"status":u):-1;return x.forEach((function(e,t){e.forEach((function(n,r){var l=m.Dimension(r);t&&r===A?null===n?e[r]=f(d,h):"."!==b&&(e[r]=String(e[r]).replace(".",b)):t&&r===D&&null===n?e[r]="":(a.content&&t&&l?e[r]="["+e[r]+"] "+l.Category(e[r]).label:a.field&&0===t&&(e[r]=l?"["+e[r]+"] "+l.label:"value"===e[r]?s:u),e[r]=f(e[r],h))})),w(e.join(h))})),l&&(O("jsonstat"+h+b+h+v),["label","source","updated","href"].forEach((function(e){m[e]&&O(e+h+f(m[e],h))})),m.id.forEach((function(e,t){var n=[],r=m.Dimension(t),a=r.role,l=!1,i="";i+="dimension"+h+f(e,h)+h+f(r.label,h)+h+r.length,"metric"===a&&r.__tree__.category.unit&&(l=!0),r.id.forEach((function(e,t){var a=[],o=r.Category(t);i+=h+f(e,h)+h+f(o.label,h),l&&(a.push(o.unit.hasOwnProperty("decimals")?o.unit.decimals:""),a.push(o.unit.label||""),o.unit.symbol&&(a.push(o.unit.symbol),a.push(o.unit.position)),n.push(f(a.join(v),h)))})),null!==a&&"classification"!==a&&(i+=h+r.role,l&&(i+=h+n.join(h))),O(i)})),g=p?y.concat(["data"],g):y+"data\n"+g),g}String.prototype.capitalize=function(){return this.charAt(0).toUpperCase()+this.slice(1)};var v="3.5.0";export{i as datalist,u as fromCSV,c as fromSDMX,s as fromTable,d as join,l as tbrowser,h as toCSV,v as version};
|