@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.26 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),N=require("react"),y=require("semantic-ui-react"),Q=require("../connected-templates/PostIntro.js"),X=require("react-intl"),G=require("./utils.js"),Z=require("./NoData.js"),Y=require("react-redux"),$=require("../reducers/data-api.js"),tt=require("react-router"),M=require("../../utils/data.js"),et=F=>{const{posts:l,numberOfColumns:S,sortFirstBy:u,countryCategory:i,postWidth:p,postHeight:C}=F,d=[];if(i&&u&&u!=="none"){const c=l.filter(f=>f[i].includes(Number(u))),h=l.filter(f=>!f[i].includes(Number(u)));d.push(...c),d.push(...h)}else d.push(...l);return a.jsx(y.Grid,{className:"filtered-posts",columns:S,children:a.jsx(y.GridRow,{children:d.map(c=>a.jsx(y.Grid.Column,{children:a.jsx("div",{className:"filtered-posts-column",style:{width:p,height:C,overflow:"hidden"},children:a.jsx(Q.default,{style:{width:"100%",height:"100%",overflow:"hidden",margin:0,padding:0},as:y.Container,fluid:!0,post:c},c.id)})},c.id))})})},ot=F=>{const{"data-group":l,"data-number-of-columns":S,"data-type":u,"data-taxonomy":i,"data-categories":p,"data-height":C,"data-post-width":d,"data-post-height":c,"data-number-of-items-per-page":h,"data-enable-sorting":f,"data-sort-first-by":D,"data-sorting-taxonomy":j,editing:V}=F,B=Y.useDispatch(),{locale:z}=tt.useParams(),[w,x]=N.useState(!1),q=Y.useSelector(t=>t).getIn(["data","posts",l]),[T,E]=N.useState([]),A=M.toBoolean(f)&&D!=="none"?M.toNumber(D):null,g=q??{yearFilter:null,categoryFilter:null,countryFilter:null,page:1,countryTaxonomy:null,categoryTaxonomy:null},b=t=>{if(t==null)return{values:[],isExplicitNone:!1};const e=Array.isArray(t)?t:[t],s=e.some(o=>Number(o)===Number.MIN_SAFE_INTEGER);return{values:e.map(o=>Number(o)).filter(o=>Number.isFinite(o)&&o!==Number.MIN_SAFE_INTEGER),isExplicitNone:s}},H=t=>{if(!t||t.length===0)return null;const e=Array.from(new Set(t)).sort((P,v)=>P-v);if(e.length===0)return null;const s=e[0],r=e[e.length-1],o=G.getStartDateAndEndDateFromYear(s),n=G.getStartDateAndEndDateFromYear(r);return!(o!=null&&o.startDate)||!(n!=null&&n.endDate)?null:{startDate:o.startDate,endDate:n.endDate}},W=()=>{const t=b(g.yearFilter),e=t.isExplicitNone?null:H(t.values),s=g.countryFilter??null,r=g.categoryFilter??null,o=g.categoryTaxonomy||(i&&i!=="none"?i:null),n=g.countryTaxonomy||null;return{before:(e==null?void 0:e.endDate)||null,after:(e==null?void 0:e.startDate)||null,categoryFilter:r,categoryTaxonomy:o,countryFilter:s,countryTaxonomy:n}},I=t=>V?t:decodeURIComponent(t),J=t=>{try{return JSON.parse(I(t))}catch(e){return console.warn("JSON parsing failed for value:",t,"- treating as plain string. Error:",e),I(t)}},L=()=>{const t=J(p);return t?typeof t=="string"?t.split(",").map(Number):typeof t=="number"?[t]:t:[]},U=(t,e,s)=>{if(s)return null;if(t.length===0)return e.length>0?e:null;if(e.length===0)return t;const r=new Set(t),o=e.filter(n=>r.has(n));return o.length>0?o:null},k=async()=>{x(!0);const t=W(),e=b(L()).values,s=b(t.categoryFilter),r=U(e,s.values,s.isExplicitNone),o=b(t.countryFilter);if(s.isExplicitNone){E([]),x(!1);return}if(o.isExplicitNone){E([]),x(!1);return}const n=new Map;t.categoryTaxonomy&&r&&r.length>0&&n.set(t.categoryTaxonomy,r),t.countryTaxonomy&&o.values.length>0&&n.set(t.countryTaxonomy,o.values);const P=r?r.join(","):void 0,v={after:t.after,before:t.before,perPage:Number(h||10),page:g.page||1,locale:z||"en",postType:u,taxonomy:t.categoryTaxonomy||void 0,category:P||void 0,taxonomyFilters:n,ordering:"date",orderingDirection:"desc"};await $.getCustomPosts(v).then(O=>{if(O){const{data:K,meta:m}=O;E(K);const R=m&&m["x-wp-totalpages"]?m["x-wp-totalpages"]:1,_=m&&m["x-wp-total"]?m["x-wp-total"]:0;R&&_&&B({type:"SET_POSTS_PAGINATION",group:l,totalPages:Number(R),totalItems:Number(_)})}}).finally(()=>{x(!1)})};return N.useEffect(()=>{(async()=>await k())()},[q,u,i,h,p,A,j]),a.jsx(y.Container,{fluid:!0,children:w?a.jsx(y.Loader,{active:!0,inline:"centered"}):!w&&T&&T.length>0?a.jsx(et,{posts:T,postWidth:Number(d),postHeight:Number(c),numberOfColumns:Number(S),sortFirstBy:A,countryCategory:j}):a.jsx(Z.default,{noDataMsg:"No posts found",group:l})})},rt=X.injectIntl(N.memo(ot));exports.default=rt;