@devgateway/dvz-ui-react
Version:
A modular, embeddable React component library for data visualization and UI, built with TypeScript. Provides reusable components for charts, maps, dashboards, and more, with built-in support for internationalization and Redux integration.
2 lines (1 loc) • 4.96 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const k=require("react/jsx-runtime"),q=require("react"),f=require("./Utils.js"),F=t=>{const{data:e,measures:n,swap:v,dimensions:m,locale:y,customLabels:d}=t;let s={};const g=m.filter(D=>D!=""),L=new Set;if(g.length==0&&e){const D=f.measuresMap(e),p=new Set,j=new Set;let x=[],M;if(e.metadata&&e.metadata.measures){const l=e.metadata.measures.filter(i=>n.includes(i.value)).sort((i,u)=>i.position!=null&&u.position!=null&&i.position!=u.position?i.position-u.position:0);x=[],M="measure",p.add("measure");const h={};Object.keys(e).forEach(i=>{h[i]=e[i]}),l.forEach(i=>{const u={},O=d[i.value]||f.getTranslatedValue(D[i.value],y);u.type="measure",u.measureFieldName=i.value,u.measure=O,u[O]=e[i.value],u.variables=h,x.push(u),j.add(O),L.add(D[i.value])}),s={categories:p,indexBy:M,keys:Array.from(j),measuresMetadata:L,data:x}}}return s},J=t=>{const{data:e,measures:n,dimensions:v,overallLabel:m}=t;if(v.length==1&&e.children){if(!(e.children.filter(d=>d.value==m).length>0)){const d={};d.type=v[0],d.value=m,d.label=m,Object.keys(e).forEach(s=>{["children","metadata","type","value"].includes(s)||(d[s]=e[s])}),e.children=[d,...e.children]}}else v.length==2&&e.children&&e.children.forEach(y=>{if(!(y.children.filter(s=>s.value==m).length>0)){const s={};s.type=v[1],s.value=m,s.label=m,Object.keys(y).forEach(g=>{["children","metadata","type","value"].includes(g)||(s[g]=y[g])}),y.children=[s,...y.children]}});return e},K=t=>{var j,x,M;let e={};const{data:n,measures:v,swap:m,dimensions:y,includeOverall:d,locale:s,customLabels:g,colorBy:L,hiddenBars:D}=t,p=y.filter(l=>l!="");if(n.metadata.measures.filter(l=>v.includes(l.value)).sort((l,h)=>l.position!=null&&h.position!=null&&l.position!=h.position?l.position-h.position:0),d&&v.length==1&&J(t),p.length==0&&n)e=F(t);else if(n&&n.children&&n.children.length>0&&p.length>0){const l=f.measuresMap(n),h=f.typesMap(n),i=new Set,u=new Set,O=new Set,T=new Set,E=[],R=n.children[0].type,I=((M=(x=(j=n==null?void 0:n.metadata)==null?void 0:j.types)==null?void 0:x.find(r=>r.dimension==p[0]))==null?void 0:M.items)||[];t.sort=="alphabetically"?I.sort((r,S)=>f.alphaSort(t.sortReverse,s,r.value,S.value)):t.sort=="values"?I.sort((r,S)=>f.numericSort(t.sortReverse,r.value,S.value)):t.sort=="date"&&I.sort((r,S)=>f.dateSort(t.sortReverse,r.value,S.value)),v.forEach(r=>{const S={variables:{}};S.id=f.getTranslatedValue(l[r],s),S.label=f.getTranslatedValue(l[r],s);const a=[];I.forEach(c=>{const o=n.children.find(B=>B.value===c.value);if(o){const B={};Object.keys(o).forEach(b=>{B[b]=o[b]}),B.value=o[r],B[o.type]=o.value.toString(),u.add(h[o.type]),a.push({x:o.value,y:o[r],variables:B}),S.data=a}}),E.push(S)});const V=Array.from(T);let N=D&&E?E.filter(r=>D.indexOf(r[R])==-1):E;e={metadata:n.metadata,indexBy:R,categories:i,dimensionsMetadata:u,measuresMetadata:O,keys:V,data:N}}return q.Children.map(t.children,l=>q.cloneElement(l,{options:e}))},_=t=>{var D,p,j,x,M,l;const{data:e,measures:n,includeOverall:v,dimensions:m,hiddenBars:y,colorBy:d,locale:s}=t,g=m.filter(h=>h!="");let L={};if(v&&J(t),g.length==0&&e)L=F(t);else if(e&&e.children&&e.children.length>0&&g.length>0){const h=f.measuresMap(e),i=f.typesMap(e),u=n[0],O=new Set,T=new Set,E=[],R=[],I=e.children[0].type,V=((j=(p=(D=e==null?void 0:e.metadata)==null?void 0:D.types)==null?void 0:p.find(a=>a.dimension==g[0]))==null?void 0:j.items)||[],N=((l=(M=(x=e==null?void 0:e.metadata)==null?void 0:x.types)==null?void 0:M.find(a=>a.dimension==g[1]))==null?void 0:l.items)||[];t.sortSecondDimension=="alphabetically"?N.sort((a,c)=>f.alphaSort(t.sortReverseSecondDimension,s,a.value,c.value)):t.sortSecondDimension=="date"&&N.sort((a,c)=>f.dateSort(t.sortReverseSecondDimension,a.value,c.value)),T.add(h[u]),N.forEach(a=>{const c={variables:{}};c.id=a.value,c.label=a.value;const o=[];V.forEach(B=>{const b=e.children.find(w=>w.value===B.value);O.add(i[b.type]);const A=b.children.find(w=>w.value===a.value);if(A){O.add(i[A.type]);const w={};Object.keys(A).forEach(C=>{w[C]=A[C]}),w.value=A[n[0]],w[b.type]=b.value.toString(),w[A.type]=A.value.toString(),o.push({x:b.value,y:A[n[0]],variables:w}),E.indexOf(b.value)==-1&&E.push(b.value)}}),c.data=o,R.push(c)}),R.forEach(a=>{E.forEach(c=>{a.data.find(o=>o.x==c)||a.data.push({x:c,y:null,variables:{}})})}),R.forEach(a=>{a.data.sort((c,o)=>t.sort=="alphabetically"?f.alphaSort(t.sortReverse,s,c.x,o.x):t.sort=="date"?f.dateSort(t.sortReverse,c.x,o.x):0)});const r=d=="id"?R:R.filter(a=>y.indexOf(a[I])==-1),S=[...E];L={metadata:e.metadata,dimensionsMetadata:O,measuresMetadata:T,indexBy:I,keys:d=="index"?S:S.filter(a=>y.indexOf(a)==-1),data:r}}return k.jsx(k.Fragment,{children:q.Children.map(t.children,h=>q.cloneElement(h,{options:L}))})},P=t=>{const{data:e,measures:n,dimensions:v}=t,m=JSON.parse(JSON.stringify(e));return v.length===1?k.jsx(K,{...t,data:m}):k.jsx(_,{...t,data:m})};exports.default=P;