UNPKG

@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.74 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),P=require("react"),E=require("semantic-ui-react"),Me=require("../data/DataProvider.js"),De=require("../data/DataConsumer.js"),Pe=require("@devgateway/wp-react-lib"),qe=require("../common/colors/ColorProvider.js"),W=require("../common/Messages.js"),Oe=require("react-redux"),Re=require("./Sankey.js"),we=require("papaparse"),Ee=h=>{const{parent:j,editing:u=!1,unique:k,childContent:o,categories:C,injectedMeasures:i,"data-csv":s="","data-no-data-message":d="No data matches your selection","data-view-mode":n="info","data-height":r,"data-source":m,"data-dimension1":e,"data-dimension2":l,"data-dimension3":t,"data-scheme":v="nivo","data-margin-left":f,"data-margin-top":x,"data-margin-right":z,"data-margin-bottom":K,"data-show-legends":I,"data-legend-position":Q,"data-app":p,"data-measures":L={},"data-format":X="{}","data-tooltip-html":q,"data-layout":Y,"data-group":F,"data-filters":Z=[],"data-no-data-message":He,"data-legend-label":ee,"data-tooltip-enabled":S,"data-use-label-background":T,"data-use-check-box-background":H,"data-legend-label-color":te,"data-tooltip-enable-markdown":B,"data-reverse-legend":N,"data-sort":U,"data-node-thickness":ae,"data-node-opacity":ne,"data-node-hover-opacity":oe,"data-node-inner-padding":re,"data-node-spacing":ie,"data-node-hover-others-opacity":se,"data-node-border-width":de,"data-node-border-radius":le,"data-link-opacity":ce,"data-link-hover-opacity":ue,"data-link-hover-others-opacity":me,"data-link-contract":pe,"data-enable-link-gradient":$,"data-enable-labels":G,"data-label-position":ge,"data-label-padding":he,"data-use-custom-label-color":V,"data-label-text-color":fe,"data-label-orientation":be,"data-manual-colors":ye="{}"}=h,_=h.intl.locale,ve=P.useRef(null),O=c=>u?c:decodeURIComponent(c),b=c=>{try{return JSON.parse(O(c))}catch{console.error("error parsing value:"+c)}return null},xe=()=>b(ye)[p],y=b(X),ke=y?{style:y.style==="compacted"?"decimal":y.style,notation:y.style==="compacted"?"compact":"standard",currency:y.currency,minimumFractionDigits:parseInt(y.minimumFractionDigits),maximumFractionDigits:parseInt(y.maximumFractionDigits)}:{notation:"standard",currency:"USD",minimumFractionDigits:2,maximumFractionDigits:2},[Ce,Ne]=P.useState(n),Le=u?n:Ce,je={scheme:v},M=u?r-80:r-40,Be={},A={app:p,layout:Y,showLegends:I==!0||I=="true",legendLabel:ee,marginLeft:parseInt(f),marginTop:parseInt(x),marginRight:parseInt(z),marginBottom:parseInt(K),height:`${M}px`,legendPosition:Q,legends:Be,tooltip:q?B===!0||B==="true"?O(q):O(q).replace(/\r\n/g,"<hr/>").replace(/[\r\n]/g,"<hr/>"):"",colors:je,format:ke,categories:C,legendLabelColor:decodeURIComponent(te),tooltipEnabled:S==!0||S=="true",tooltipEnableMarkdown:B==!0||B=="true",reverseLegend:N==!0||N=="true",sort:U,nodeThickness:ae,nodeOpacity:ne,nodeHoverOpacity:oe,nodeInnerPadding:re,nodeSpacing:ie,nodeHoverOthersOpacity:se,nodeBorderWidth:de,nodeBorderRadius:parseInt(le),linkOpacity:ce,linkHoverOpacity:ue,linkContract:pe,enableLinkGradient:$==!0||$=="true",linkHoverOthersOpacity:me,enableLabels:G==!0||G=="true",labelPosition:ge,labelPadding:he,useCustomLabelColor:V==!0||V=="true",labelTextColor:fe,labelOrientation:be,useLabelBackground:T==!0||T=="true",useCheckBoxBackground:H==!0||H=="true"},J={},R=b(Z)||{};R&&R.forEach&&R.forEach(c=>{c.value!=null&&c.value.filter(w=>w!=null&&w.toString().trim()!="").length>0&&(J[c.param]=c.value)});let D=!1;const g=[];return e!="none"&&g.push(e),l!="none"&&g.push(l),t!="none"&&g.push(t),p!="csv"?(!g.length||!L||!b(L)||!b(L)[0])&&(D=!0):s.length==0&&(D=!0),a.jsx("div",{ref:ve,children:a.jsxs(E.Container,{className:"chart container",style:{minHeight:r+"px"},fluid:!0,children:[a.jsx(Me.default,{style:{height:`${M}px`},params:J,app:p,group:F,csv:s,editing:u,store:[p,k,...g],source:g.join("/"),children:a.jsxs(E.Container,{style:{height:`${M}px`},className:"body",fluid:!0,children:[D&&a.jsx(W.default,{editing:u}),!D&&a.jsxs(De.default,{children:[a.jsx(W.default,{app:p,group:F,noDataMsg:d,children:" "}),a.jsx(Ie,{locale:_,colorBy:"id",dimensions:[...g],sort:U,csv:s,app:p,measure:b(L)[0]||null,children:a.jsx(qe.default,{app:p,locale:_,manualColors:xe(),colorBy:"id",scheme:v,barColor:A.barColor,children:a.jsx(Re.default,{...A,dimensions:g,measure:b(L)[0]||null})})})]})]})}),a.jsx("br",{}),o&&Le=="info"&&a.jsx(E.Container,{fluid:!0,style:{height:M+"px"},className:"body",children:a.jsx(Pe.PostContent,{post:{content:{rendered:o}}})})]})})},Ie=h=>{const{children:j,csv:u,app:k}=h;let o={nodes:[],links:[]},C={indexBy:"",keys:o.nodes.map(i=>i.id),data:o};if(k!="csv"){const i=d=>{const{data:n,dimensions:r,measure:m}=d,e=[],l=[],t={};return t[n.type]=n.value,s(n.children,e,l,null,m,t),{nodes:e,links:l}},s=(d=[],n,r,m,e,l)=>{d.forEach(t=>{const v={};if(v[t.type]=t.value,n.find(f=>f.id===t.value)||n.push({id:t.value}),m){const f=r.find(x=>x.source===m&&x.target===t.value);if(f)f.value=f.value+t[e];else{const x={...t,...v,...l};r.push({source:m,target:t.value,value:t[e],data:x})}}t.children&&t.children.length>0&&s(t.children,n,r,t.value,e,v)})};o=i(h),C={indexBy:"",keys:o.nodes.map(d=>d.id),data:o}}else{const i=we.parse(u,{header:!0,dynamicTyping:!0}),s=i.meta.fields,d=s.shift(),n=i.data.map(e=>e[d]),r=[...s.map(e=>({id:e})),...n.map(e=>({id:e}))],m=[];i.data.forEach(e=>{s.forEach(l=>{m.push({source:l,target:e[d],value:e[l]})})}),C={indexBy:"",keys:r.map(e=>e.id),data:{nodes:r,links:m}}}return P.Children.map(j,i=>P.cloneElement(i,{options:C}))},Fe=(h,j)=>{const{"data-app":u,"data-group":k}=j,o=h.getIn(["data","measures",u,k]);return o?{injectedMeasures:o}:{}},Se={},Te=Oe.connect(Fe,Se)(Ee);exports.default=Te;