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.6 kB
"use strict";const a=require("react/jsx-runtime"),P=require("react"),I=require("semantic-ui-react"),De=require("../data/DataProvider.js"),Me=require("../data/DataConsumer.js"),Pe=require("@devgateway/wp-react-lib"),qe=require("../common/colors/ColorProvider.js"),z=require("../common/Messages.js"),Re=require("react-redux"),we=require("./Sankey.js"),Ee=require("papaparse"),Ie=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":b,"data-margin-top":x,"data-margin-right":K,"data-margin-bottom":Q,"data-show-legends":O,"data-legend-position":X,"data-app":p,"data-measures":L={},"data-format":Y="{}","data-tooltip-html":q,"data-layout":Z,"data-group":F,"data-filters":_=[],"data-no-data-message":Te,"data-legend-label":ee,"data-tooltip-enabled":H,"data-use-label-background":S,"data-use-check-box-background":T,"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":be,"data-label-orientation":fe,"data-manual-colors":ye="{}"}=h,A=h.intl.locale,ve=P.useRef(null),R=c=>u?c:decodeURIComponent(c),f=c=>{try{return JSON.parse(R(c))}catch{console.error("error parsing value:"+c)}return null},xe=()=>f(ye)[p],y=f(Y),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},D=u?r-80:r-40,Be={},J={app:p,layout:Z,showLegends:O==!0||O=="true",legendLabel:ee,marginLeft:parseInt(b),marginTop:parseInt(x),marginRight:parseInt(K),marginBottom:parseInt(Q),height:`${D}px`,legendPosition:X,legends:Be,tooltip:q?B===!0||B==="true"?R(q):R(q).replace(/\r\n/g,"<hr/>").replace(/[\r\n]/g,"<hr/>"):"",colors:je,format:ke,categories:C,legendLabelColor:decodeURIComponent(te),tooltipEnabled:H==!0||H=="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:be,labelOrientation:fe,useLabelBackground:S==!0||S=="true",useCheckBoxBackground:T==!0||T=="true"},W={},w=f(_)||{};w&&w.forEach&&w.forEach(c=>{c.value!=null&&c.value.filter(E=>E!=null&&E.toString().trim()!="").length>0&&(W[c.param]=c.value)});let M=!1;const g=[];return e!="none"&&g.push(e),l!="none"&&g.push(l),t!="none"&&g.push(t),p!="csv"?(!g.length||!L||!f(L)||!f(L)[0])&&(M=!0):s.length==0&&(M=!0),a.jsx("div",{ref:ve,children:a.jsxs(I.Container,{className:"chart container",style:{minHeight:r+"px"},fluid:!0,children:[a.jsx(De,{style:{height:`${D}px`},params:W,app:p,group:F,csv:s,editing:u,store:[p,k,...g],source:g.join("/"),children:a.jsxs(I.Container,{style:{height:`${D}px`},className:"body",fluid:!0,children:[M&&a.jsx(z,{editing:u}),!M&&a.jsxs(Me,{children:[a.jsx(z,{app:p,group:F,noDataMsg:d,children:" "}),a.jsx(Oe,{locale:A,colorBy:"id",dimensions:[...g],sort:U,csv:s,app:p,measure:f(L)[0]||null,children:a.jsx(qe,{app:p,locale:A,manualColors:xe(),colorBy:"id",scheme:v,barColor:J.barColor,children:a.jsx(we,{...J,dimensions:g,measure:f(L)[0]||null})})})]})]})}),a.jsx("br",{}),o&&Le=="info"&&a.jsx(I.Container,{fluid:!0,style:{height:D+"px"},className:"body",children:a.jsx(Pe.PostContent,{post:{content:{rendered:o}}})})]})})},Oe=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(b=>b.id===t.value)||n.push({id:t.value}),m){const b=r.find(x=>x.source===m&&x.target===t.value);if(b)b.value=b.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=Ee.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}:{}},He={},Se=Re.connect(Fe,He)(Ie);module.exports=Se;