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