@progress/kendo-react-pivotgrid
Version:
React PivotGrid (also called Pivot Table) can be data-bound to an OLAP service and customized extensively. KendoReact PivotGrid package
9 lines (8 loc) • 4.63 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const H=require("react"),d=require("@progress/kendo-pivotgrid-common"),$=require("@progress/kendo-react-common");function B(e){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const i in e)if(i!=="default"){const h=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(l,i,h.get?h:{enumerable:!0,get:()=>e[i]})}}return l.default=e,Object.freeze(l)}const m=B(H),y=e=>{const[l,i]=m.useState(!0),[h,O]=m.useState({data:[],columns:[],rows:[]}),[q,v]=m.useState([]),[f,b]=m.useState(e.defaultColumnAxes||[]),[x,A]=m.useState(e.defaultRowAxes||[]),[p,N]=m.useState(e.defaultMeasureAxes||[]),[S,U]=m.useState(e.defaultSort||[]),[g,D]=m.useState(e.defaultFilter||[]),C=t=>{A(t.value)},P=t=>{b(t.value)},M=t=>{N(t.value)},E=t=>{U(t.value)},I=t=>{D(t.value)};m.useEffect(()=>{i(!0);const t={connection:{catalog:e.catalog,cube:e.cube},columnAxes:f.slice(),rowAxes:x.slice(),measureAxes:p,sort:S,filter:g};setTimeout(()=>{d.fetchData({url:e.url},$.clone(t)).then(d.createDataState).then(o=>{O(o),i(!1)})})},[f,x,p,g,S,e.cube,e.catalog,e.url]),m.useEffect(()=>{i(!0);const t={connection:{catalog:e.catalog,cube:e.cube},restrictions:{catalogName:e.catalog,cubeName:e.cube},command:"schemaDimensions"};d.fetchDiscover({url:e.url},t).then(o=>{d.addKPI(o),v(o),i(!1)})},[e.catalog,e.cube,e.url]);const w=(t=[],o)=>{for(let n=0;n<t.length;n++){const c=t[n];if(String(c.name)===String(o.name))return c}return null},F=(t=[],o)=>{for(let n=0;n<t.length;n++){const c=t[n];if(c.uniqueName===o.uniqueName)return c;const a=F(c.children,o);if(a!==null)return a}return null},L=async t=>{let o,n,c,a,s,u;t.name&&(o="schemaMembers",a=`${String(t.name)}.[(ALL)]`);const r={connection:{catalog:e.catalog,cube:e.cube},restrictions:{catalogName:e.catalog,cubeName:e.cube,hierarchyUniqueName:c,dimensionUniqueName:n,levelUniqueName:a,memberUniqueName:s,treeOp:u},command:o};return d.fetchDiscover({url:e.url},r)},R=async t=>{let o,n,c,a,s,u;t.uniqueName&&(o="schemaMembers",s=t.uniqueName.replace(/\&/g,"&"),u=1);const r={connection:{catalog:e.catalog,cube:e.cube},restrictions:{catalogName:e.catalog,cubeName:e.cube,hierarchyUniqueName:c,dimensionUniqueName:n,levelUniqueName:a,memberUniqueName:s,treeOp:u},command:o};return d.fetchDiscover({url:e.url},r)},K=async t=>{let o,n,c,a,s,u;t.type===2?o="schemaMeasures":t.dimensionUniqueName?(o="schemaLevels",c=t.uniqueName):(o="schemaHierarchies",n=t.uniqueName);const r={connection:{catalog:e.catalog,cube:e.cube},restrictions:{catalogName:e.catalog,cubeName:e.cube,hierarchyUniqueName:c,dimensionUniqueName:n,levelUniqueName:a,memberUniqueName:s,treeOp:u},command:o};return d.fetchDiscover({url:e.url},r)},j=async()=>{const t={connection:{catalog:e.catalog,cube:e.cube},restrictions:{catalogName:e.catalog,cubeName:e.cube},command:"schemaKPIs"};return d.fetchDiscover({url:e.url},t)},k=async t=>{const o=q.slice(),n=F(o,t.value);if(n&&n.uniqueName==="[KPIs]"){const c=J(await j());n.children=c}else if(n&&n.type==="kpi")n.children=d.buildKPIMeasures(n);else if(n&&!n.children){const c=await K(n);n.children=c}v(o)},T=async t=>{if(!t)return;const o={rowAxes:[x,A],columnAxes:[f,b],measureAxes:[p,N]},[n,c]=o[t.target.props.axes],a=n.slice(),s=w(a,t.target.props.dataItem);if(s&&!s.fields){const u=await L(s);s.fields=u,c(a)}},_=async t=>{if(!t)return;const o={rowAxes:[x,A],columnAxes:[f,b],measureAxes:[p,N]},[n,c]=o[t.target.props.axes],a=n.slice(),s=w(a,t.target.props.dataItem);if(s){const u=(s.fields||[]).slice(),r=F(u,t.value);if(r&&(!r.children||!r.children.length)){const z=await R(r);r.children=z,s.fields=u,c(a)}}};return{pivotProps:{rowAxes:x,columnAxes:f,data:h.data,rows:h.rows,columns:h.columns,onRowAxesChange:C,onColumnAxesChange:P},configuratorProps:{sort:S,onSortChange:E,filter:g,onFilterChange:I,data:q,rowAxes:x,columnAxes:f,measureAxes:p,onRowAxesChange:C,onColumnAxesChange:P,onMeasureAxesChange:M,onFieldsEditorFieldExpand:k,onAxisFilterFieldExpand:_,onAxisFilterFieldsExpandChange:T},state:{loading:l}}},G=e=>{const l=y(e);return e.children(l)},J=e=>{for(let l=0,i=e.length;l<i;l++)e[l].uniqueName=e[l].name,e[l].type="kpi";return e};exports.PivotOLAPService=G;exports.usePivotOLAPService=y;