UNPKG

datajunction-ui

Version:
7 lines (5 loc) 29.1 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),v=require("react"),ke=require("react-router-dom"),i=require("./index-h1A5IisM.cjs"),K=require("./BarChart-GlY5o0Rr.cjs"),ne=require("./LineChart-DiBufR9L.cjs"),He=require("./Legend-DUEUnCaw.cjs");function Qe(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,r.get?r:{enumerable:!0,get:()=>e[a]})}}return t.default=e,Object.freeze(t)}const y=Qe(v);var De=(e,t,a,r)=>i.selectAxisWithScale(e,"xAxis",t,r),_e=(e,t,a,r)=>i.selectTicksOfGraphicalItem(e,"xAxis",t,r),Me=(e,t,a,r)=>i.selectAxisWithScale(e,"yAxis",a,r),Be=(e,t,a,r)=>i.selectTicksOfGraphicalItem(e,"yAxis",a,r),et=i.createSelector([i.selectChartLayout,De,Me,_e,Be],(e,t,a,r,o)=>i.isCategoricalAxis(e,"xAxis")?i.getBandSizeOfAxis(t,r,!1):i.getBandSizeOfAxis(a,o,!1)),tt=(e,t,a,r,o)=>{var c,f=i.selectChartLayout(e),m=i.isCategoricalAxis(f,"xAxis"),p;if(m?p=i.selectStackGroups(e,"yAxis",a,r):p=i.selectStackGroups(e,"xAxis",t,r),p!=null){var{dataKey:A,stackId:h}=o;if(h!=null){var P=(c=p[h])===null||c===void 0?void 0:c.stackedData;return P==null?void 0:P.find(N=>N.key===A)}}},at=(e,t,a,r,o)=>o,rt=i.createSelector([i.selectUnfilteredCartesianItems,at],(e,t)=>{if(e.some(a=>a.type==="area"&&t.dataKey===a.dataKey&&i.getNormalizedStackId(t.stackId)===a.stackId&&t.data===a.data))return t}),st=i.createSelector([i.selectChartLayout,De,Me,_e,Be,tt,i.selectChartDataWithIndexesIfNotInPanorama,et,rt],(e,t,a,r,o,c,f,m,p)=>{var{chartData:A,dataStartIndex:h,dataEndIndex:P}=f;if(!(p==null||e!=="horizontal"&&e!=="vertical"||t==null||a==null||r==null||o==null||r.length===0||o.length===0||m==null)){var{data:N}=p,w;if(N&&N.length>0?w=N:w=A==null?void 0:A.slice(h,P+1),w!=null){var g=void 0;return Nt({layout:e,xAxis:t,yAxis:a,xAxisTicks:r,yAxisTicks:o,dataStartIndex:h,areaSettings:p,stackedData:c,displayedData:w,chartBaseValue:g,bandSize:m})}}}),nt=["layout","type","stroke","connectNulls","isRange"],it=["activeDot","animationBegin","animationDuration","animationEasing","connectNulls","dot","fill","fillOpacity","hide","isAnimationActive","legendType","stroke","xAxisId","yAxisId"];function Te(e,t){if(e==null)return{};var a,r,o=lt(e,t);if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(e);for(r=0;r<c.length;r++)a=c[r],t.indexOf(a)===-1&&{}.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}function lt(e,t){if(e==null)return{};var a={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;a[r]=e[r]}return a}function Pe(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),a.push.apply(a,r)}return a}function ae(e){for(var t=1;t<arguments.length;t++){var a=arguments[t]!=null?arguments[t]:{};t%2?Pe(Object(a),!0).forEach(function(r){ue(e,r,a[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):Pe(Object(a)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(a,r))})}return e}function ue(e,t,a){return(t=ot(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function ot(e){var t=ct(e,"string");return typeof t=="symbol"?t:t+""}function ct(e,t){if(typeof e!="object"||!e)return e;var a=e[Symbol.toPrimitive];if(a!==void 0){var r=a.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function H(){return H=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)({}).hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},H.apply(null,arguments)}function ce(e,t){return e&&e!=="none"?e:t}var ut=e=>{var{dataKey:t,name:a,stroke:r,fill:o,legendType:c,hide:f}=e;return[{inactive:f,dataKey:t,type:c,color:ce(r,o),value:i.getTooltipNameProp(a,t),payload:e}]};function dt(e){var{dataKey:t,data:a,stroke:r,strokeWidth:o,fill:c,name:f,hide:m,unit:p}=e;return{dataDefinedOnItem:a,positions:void 0,settings:{stroke:r,strokeWidth:o,fill:c,dataKey:t,nameKey:void 0,name:i.getTooltipNameProp(f,t),hide:m,type:e.tooltipType,color:ce(r,c),unit:p}}}var pt=(e,t)=>{var a;if(y.isValidElement(e))a=y.cloneElement(e,t);else if(typeof e=="function")a=e(t);else{var r=i.clsx("recharts-area-dot",typeof e!="boolean"?e.className:"");a=y.createElement(ne.Dot,H({},t,{className:r}))}return a};function mt(e,t){return e==null?!1:t?!0:e.length===1}function ht(e){var{clipPathId:t,points:a,props:r}=e,{needClip:o,dot:c,dataKey:f}=r;if(!mt(a,c))return null;var m=i.isClipDot(c),p=i.filterProps(r,!1),A=i.filterProps(c,!0),h=a.map((N,w)=>{var g=ae(ae(ae({key:"dot-".concat(w),r:3},p),A),{},{index:w,cx:N.x,cy:N.y,dataKey:f,value:N.value,payload:N.payload,points:a});return pt(c,g)}),P={clipPath:o?"url(#clipPath-".concat(m?"":"dots-").concat(t,")"):void 0};return y.createElement(i.Layer,H({className:"recharts-area-dots"},P),h)}function ve(e){var{points:t,baseLine:a,needClip:r,clipPathId:o,props:c,showLabels:f}=e,{layout:m,type:p,stroke:A,connectNulls:h,isRange:P}=c,N=Te(c,nt);return y.createElement(y.Fragment,null,(t==null?void 0:t.length)>1&&y.createElement(i.Layer,{clipPath:r?"url(#clipPath-".concat(o,")"):void 0},y.createElement(i.Curve,H({},i.filterProps(N,!0),{points:t,connectNulls:h,type:p,baseLine:a,layout:m,stroke:"none",className:"recharts-area-area"})),A!=="none"&&y.createElement(i.Curve,H({},i.filterProps(c,!1),{className:"recharts-area-curve",layout:m,type:p,connectNulls:h,fill:"none",points:t})),A!=="none"&&P&&y.createElement(i.Curve,H({},i.filterProps(c,!1),{className:"recharts-area-curve",layout:m,type:p,connectNulls:h,fill:"none",points:a}))),y.createElement(ht,{points:t,props:c,clipPathId:o}),f&&K.LabelList.renderCallByParent(c,t))}function ft(e){var{alpha:t,baseLine:a,points:r,strokeWidth:o}=e,c=r[0].y,f=r[r.length-1].y;if(!i.isWellBehavedNumber(c)||!i.isWellBehavedNumber(f))return null;var m=t*Math.abs(c-f),p=Math.max(...r.map(A=>A.x||0));return i.isNumber(a)?p=Math.max(a,p):a&&Array.isArray(a)&&a.length&&(p=Math.max(...a.map(A=>A.x||0),p)),i.isNumber(p)?y.createElement("rect",{x:0,y:c<f?c:c-m,width:p+(o?parseInt("".concat(o),10):1),height:Math.floor(m)}):null}function vt(e){var{alpha:t,baseLine:a,points:r,strokeWidth:o}=e,c=r[0].x,f=r[r.length-1].x;if(!i.isWellBehavedNumber(c)||!i.isWellBehavedNumber(f))return null;var m=t*Math.abs(c-f),p=Math.max(...r.map(A=>A.y||0));return i.isNumber(a)?p=Math.max(a,p):a&&Array.isArray(a)&&a.length&&(p=Math.max(...a.map(A=>A.y||0),p)),i.isNumber(p)?y.createElement("rect",{x:c<f?c:c-m,y:0,width:m,height:Math.floor(p+(o?parseInt("".concat(o),10):1))}):null}function yt(e){var{alpha:t,layout:a,points:r,baseLine:o,strokeWidth:c}=e;return a==="vertical"?y.createElement(ft,{alpha:t,points:r,baseLine:o,strokeWidth:c}):y.createElement(vt,{alpha:t,points:r,baseLine:o,strokeWidth:c})}function gt(e){var{needClip:t,clipPathId:a,props:r,previousPointsRef:o,previousBaselineRef:c}=e,{points:f,baseLine:m,isAnimationActive:p,animationBegin:A,animationDuration:h,animationEasing:P,onAnimationStart:N,onAnimationEnd:w}=r,g=K.useAnimationId(r,"recharts-area-"),[D,S]=v.useState(!0),_=v.useCallback(()=>{typeof w=="function"&&w(),S(!1)},[w]),E=v.useCallback(()=>{typeof N=="function"&&N(),S(!0)},[N]),L=o.current,C=c.current;return y.createElement(i.Animate,{begin:A,duration:h,isActive:p,easing:P,from:{t:0},to:{t:1},onAnimationEnd:_,onAnimationStart:E,key:g},O=>{var{t:b}=O;if(L){var R=L.length/f.length,W=b===1?f:f.map((M,Y)=>{var q=Math.floor(Y*R);if(L[q]){var B=L[q];return ae(ae({},M),{},{x:i.interpolate(B.x,M.x,b),y:i.interpolate(B.y,M.y,b)})}return M}),z;return i.isNumber(m)?z=i.interpolate(C,m,b):i.isNullish(m)||i.isNan(m)?z=i.interpolate(C,0,b):z=m.map((M,Y)=>{var q=Math.floor(Y*R);if(Array.isArray(C)&&C[q]){var B=C[q];return ae(ae({},M),{},{x:i.interpolate(B.x,M.x,b),y:i.interpolate(B.y,M.y,b)})}return M}),b>0&&(o.current=W,c.current=z),y.createElement(ve,{points:W,baseLine:z,needClip:t,clipPathId:a,props:r,showLabels:!D})}return b>0&&(o.current=f,c.current=m),y.createElement(i.Layer,null,y.createElement("defs",null,y.createElement("clipPath",{id:"animationClipPath-".concat(a)},y.createElement(yt,{alpha:b,points:f,baseLine:m,layout:r.layout,strokeWidth:r.strokeWidth}))),y.createElement(i.Layer,{clipPath:"url(#animationClipPath-".concat(a,")")},y.createElement(ve,{points:f,baseLine:m,needClip:t,clipPathId:a,props:r,showLabels:!0})))})}function xt(e){var{needClip:t,clipPathId:a,props:r}=e,{points:o,baseLine:c,isAnimationActive:f}=r,m=v.useRef(null),p=v.useRef(),A=m.current,h=p.current;return f&&o&&o.length&&(A!==o||h!==c)?y.createElement(gt,{needClip:t,clipPathId:a,props:r,previousPointsRef:m,previousBaselineRef:p}):y.createElement(ve,{points:o,baseLine:c,needClip:t,clipPathId:a,props:r,showLabels:!0})}class bt extends v.PureComponent{constructor(){super(...arguments),ue(this,"id",i.uniqueId("recharts-area-"))}render(){var t,{hide:a,dot:r,points:o,className:c,top:f,left:m,needClip:p,xAxisId:A,yAxisId:h,width:P,height:N,id:w,baseLine:g}=this.props;if(a)return null;var D=i.clsx("recharts-area",c),S=i.isNullish(w)?this.id:w,{r:_=3,strokeWidth:E=2}=(t=i.filterProps(r,!1))!==null&&t!==void 0?t:{r:3,strokeWidth:2},L=i.isClipDot(r),C=_*2+E;return y.createElement(y.Fragment,null,y.createElement(i.Layer,{className:D},p&&y.createElement("defs",null,y.createElement(K.GraphicalItemClipPath,{clipPathId:S,xAxisId:A,yAxisId:h}),!L&&y.createElement("clipPath",{id:"clipPath-dots-".concat(S)},y.createElement("rect",{x:m-C/2,y:f-C/2,width:P+C,height:N+C}))),y.createElement(xt,{needClip:p,clipPathId:S,props:this.props})),y.createElement(ne.ActivePoints,{points:o,mainColor:ce(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot}),this.props.isRange&&Array.isArray(g)&&y.createElement(ne.ActivePoints,{points:g,mainColor:ce(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot}))}}var Ke={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:!i.Global.isSsr,legendType:"line",stroke:"#3182bd",xAxisId:0,yAxisId:0};function jt(e){var t,a=i.resolveDefaultProps(e,Ke),{activeDot:r,animationBegin:o,animationDuration:c,animationEasing:f,connectNulls:m,dot:p,fill:A,fillOpacity:h,hide:P,isAnimationActive:N,legendType:w,stroke:g,xAxisId:D,yAxisId:S}=a,_=Te(a,it),E=i.useChartLayout(),L=i.useChartName(),{needClip:C}=K.useNeedsClip(D,S),O=i.useIsPanorama(),b=v.useMemo(()=>({baseValue:e.baseValue,stackId:e.stackId,connectNulls:m,data:e.data,dataKey:e.dataKey}),[e.baseValue,e.stackId,m,e.data,e.dataKey]),{points:R,isRange:W,baseLine:z}=(t=i.useAppSelector(G=>st(G,D,S,O,b)))!==null&&t!==void 0?t:{},{height:M,width:Y,left:q,top:B}=i.useOffset();return E!=="horizontal"&&E!=="vertical"||L!=="AreaChart"&&L!=="ComposedChart"?null:y.createElement(bt,H({},_,{activeDot:r,animationBegin:o,animationDuration:c,animationEasing:f,baseLine:z,connectNulls:m,dot:p,fill:A,fillOpacity:h,height:M,hide:P,layout:E,isAnimationActive:N,isRange:W,legendType:w,needClip:C,points:R,stroke:g,width:Y,left:q,top:B,xAxisId:D,yAxisId:S}))}var At=(e,t,a,r,o)=>{var c=a??t;if(i.isNumber(c))return c;var f=e==="horizontal"?o:r,m=f.scale.domain();if(f.type==="number"){var p=Math.max(m[0],m[1]),A=Math.min(m[0],m[1]);return c==="dataMin"?A:c==="dataMax"||p<0?p:Math.max(Math.min(m[0],m[1]),0)}return c==="dataMin"?m[0]:c==="dataMax"?m[1]:m[0]};function Nt(e){var{areaSettings:{connectNulls:t,baseValue:a,dataKey:r},stackedData:o,layout:c,chartBaseValue:f,xAxis:m,yAxis:p,displayedData:A,dataStartIndex:h,xAxisTicks:P,yAxisTicks:N,bandSize:w}=e,g=o&&o.length,D=At(c,f,a,m,p),S=c==="horizontal",_=!1,E=A.map((C,O)=>{var b;g?b=o[h+O]:(b=i.getValueByDataKey(C,r),Array.isArray(b)?_=!0:b=[D,b]);var R=b[1]==null||g&&!t&&i.getValueByDataKey(C,r)==null;return S?{x:i.getCateCoordinateOfLine({axis:m,ticks:P,bandSize:w,entry:C,index:O}),y:R?null:p.scale(b[1]),value:b,payload:C}:{x:R?null:m.scale(b[1]),y:i.getCateCoordinateOfLine({axis:p,ticks:N,bandSize:w,entry:C,index:O}),value:b,payload:C}}),L;return g||_?L=E.map(C=>{var O=Array.isArray(C.value)?C.value[0]:null;return S?{x:C.x,y:O!=null&&C.y!=null?p.scale(O):null}:{x:O!=null?m.scale(O):null,y:C.y}}):L=S?p.scale(D):m.scale(D),{points:E,baseLine:L,isRange:_}}class ye extends v.PureComponent{render(){return y.createElement(K.CartesianGraphicalItemContext,{type:"area",data:this.props.data,dataKey:this.props.dataKey,xAxisId:this.props.xAxisId,yAxisId:this.props.yAxisId,zAxisId:0,stackId:this.props.stackId,hide:this.props.hide,barSize:void 0},y.createElement(K.SetLegendPayload,{legendPayload:ut(this.props)}),y.createElement(i.SetTooltipEntrySettings,{fn:dt,args:this.props}),y.createElement(jt,this.props))}}ue(ye,"displayName","Area");ue(ye,"defaultProps",Ke);var Ct=["axis"],St=v.forwardRef((e,t)=>y.createElement(K.CartesianChart,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:Ct,tooltipPayloadSearcher:i.arrayTooltipSearcher,categoricalChartProps:e,ref:t}));const Ie=["#3b51d6","#00C49F","#FFBB28","#FF91A3","#AA46BE","#0088FE","#FF8042","#82ca9d"],we={source:"#22c55e",transform:"#3b82f6",metric:"#f43f5e",dimension:"#f59e0b",cube:"#a855f7",tag:"#8b5cf6"},kt=(e,t)=>{if(!e)return{color:t,opacity:.85};const a=String(e).toLowerCase();return we[a]?{color:we[a],opacity:.85}:{color:t,opacity:.85}},Ee=[{value:"=",label:"="},{value:"!=",label:"≠"},{value:"in",label:"is one of"},{value:">",label:">"},{value:"<",label:"<"},{value:">=",label:"≥"},{value:"<=",label:"≤"}],Le=e=>/(_date|_week|_month|_quarter|_year|_day|dateint|created_at)/i.test(e),$e=e=>{if(!e)return"#";const t=String(e).toLowerCase();return/(bool)/.test(t)?"✓":/(date|time)/.test(t)?"📅":/(int|long|double|float|decimal|numeric|number)/.test(t)?"123":/(string|varchar|char|text)/.test(t)?"Aa":/(list|array)/.test(t)?"[ ]":"#"},fe={groupHeading:e=>({...e,fontSize:10.5,fontWeight:600,textTransform:"uppercase",letterSpacing:"0.04em",color:"#64748b",padding:"6px 12px 2px"}),option:(e,t)=>({...e,paddingLeft:t.data&&t.data.group?28:e.paddingLeft}),group:e=>({...e,paddingTop:4,paddingBottom:4})};function Re({active:e,payload:t,label:a}){if(!e||!t||!t.length)return null;const r=t.filter(o=>o&&o.value!==0&&o.value!=null);return r.length?s.jsxs("div",{style:{background:"#fff",border:"1px solid #e2e8f0",borderRadius:6,padding:"8px 10px",fontSize:12,boxShadow:"0 2px 8px rgba(0,0,0,0.08)"},children:[s.jsx("div",{style:{fontWeight:600,marginBottom:4,color:"#1e293b"},children:a}),r.map(o=>s.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,color:"#334155"},children:[s.jsx("span",{style:{display:"inline-block",width:9,height:9,background:o.color,borderRadius:2}}),s.jsx("span",{children:o.name}),s.jsx("span",{style:{marginLeft:"auto",fontVariantNumeric:"tabular-nums"},children:typeof o.value=="number"?o.value.toLocaleString():o.value})]},o.dataKey))]}):null}const Oe=e=>typeof e=="number"||typeof e=="string"&&/^-?\d+(\.\d+)?$/.test(e),Pt=v.memo(function({chartData:t,resolvedChartType:a,startAtZero:r}){const o=t.series.length>1,c=a==="line",f=a==="area",m=f?St:c?ne.LineChart:K.BarChart;return s.jsx("div",{className:"sme-chart-body",children:s.jsx(K.ResponsiveContainer,{width:"100%",height:"100%",children:s.jsxs(m,{data:t.data,margin:{top:10,right:30,left:10,bottom:20},children:[s.jsx(K.CartesianGrid,{strokeDasharray:"3 3",stroke:"#eee"}),s.jsx(K.XAxis,{dataKey:t.xKey,tick:{fontSize:12}}),s.jsx(K.YAxis,{tick:{fontSize:12},domain:r?[0,"auto"]:["auto","auto"]}),s.jsx(i.Tooltip$1,{content:s.jsx(Re,{}),isAnimationActive:!1,cursor:{fill:"rgba(15, 23, 42, 0.04)"}}),o?s.jsx(He.Legend,{}):null,t.series.map((p,A)=>{const h=t.labels[p]||p,{color:P,opacity:N}=kt(h,Ie[A%Ie.length]);return f?s.jsx(ye,{type:"monotone",dataKey:p,name:h,stackId:o?"1":void 0,stroke:P,fill:P,fillOpacity:N,isAnimationActive:!1,activeDot:!1},p):c?s.jsx(ne.Line,{type:"monotone",dataKey:p,name:h,stroke:P,strokeWidth:2,dot:!1,isAnimationActive:!1,activeDot:!1},p):s.jsx(K.Bar,{dataKey:p,name:h,fill:P,fillOpacity:N,stackId:o?"1":void 0,isAnimationActive:!1,activeBar:!1},p)})]})})})});function It(e){const t=new URLSearchParams(e),a=t.getAll("filter").map(r=>{const[o="",c="=",...f]=r.split("|");return{dim:o,op:c,value:f.join("|")}}).filter(r=>r.dim);return{metric:t.get("metric")||null,xAxis:t.get("x")||null,compareBy:(t.get("by")||"").split(",").filter(Boolean),filters:a,view:t.get("view")==="table"?"table":"chart",chartType:["line","area","bar","auto"].includes(t.get("chart"))?t.get("chart"):"auto",startAtZero:t.get("zero")==="1"}}function We(){const e=v.useContext(i.DJClientContext).DataJunctionAPI,t=ke.useLocation(),a=ke.useNavigate(),r=v.useMemo(()=>It(t.search),[]),[o,c]=v.useState([]),[f,m]=v.useState(""),[p,A]=v.useState(""),[h,P]=v.useState(r.metric),[N,w]=v.useState([]),[g,D]=v.useState(null),[S,_]=v.useState([]),[E,L]=v.useState(r.filters),C=v.useRef(r.xAxis),O=v.useRef(r.compareBy),[b,R]=v.useState(null),[W,z]=v.useState([]),[M,Y]=v.useState(!1),[q,B]=v.useState(null),[G,ge]=v.useState(r.view),[Q,ze]=v.useState(r.chartType),[ie,Ve]=v.useState(r.startAtZero);v.useEffect(()=>{let n=!1;return(async()=>{try{const l=await e.system.list();if(n)return;if(!Array.isArray(l)){B(`Unexpected response from /system/metrics: ${JSON.stringify(l).slice(0,200)}`),c([]);return}const u=l.map(d=>{if(typeof d=="string")return{name:d,display_name:d,description:"",group:"Other",subgroup:"Other",suggestedCompareBy:[]};const x=d.custom_metadata||{};return{name:d.name,display_name:d.display_name||d.name,description:d.description||"",group:x.group||"Other",subgroup:x.subgroup||"Other",suggestedCompareBy:Array.isArray(x.suggested_compare_by)?x.suggested_compare_by:[]}});c(u),u.length&&!h&&P(u[0].name)}catch(l){n||B(String(l))}})(),()=>{n=!0}},[e]),v.useEffect(()=>{if(!h){w([]);return}let n=!1;return D(null),_([]),R(null),z([]),B(null),(async()=>{try{const l=await e.commonDimensions([h]);if(n)return;const u=(Array.isArray(l)?l:[]).map(d=>{const x=d.name.match(/\[([^\]]+)\]$/),j=x?x[1]:null,V=(j?d.name.slice(0,-x[0].length):d.name).split("."),Z=V[V.length-1],F=d.node_display_name||V.slice(0,-1).join("."),re=d.column_display_name||Z,ee=j?`${F} [${j}]`:F;return{value:d.name,label:re,combinedLabel:`${ee} · ${re}`,attr:Z,nodeDisplay:F,colDisplay:re,role:j,group:ee,path:d.path.join(" ▶ "),type:d.type}});if(w(u),C.current){const d=u.find(x=>x.value===C.current);d&&D(d),C.current=null}else{const x=u.find(j=>/_week\b/i.test(j.value))||u.find(j=>Le(j.value));x&&D(x)}if(O.current&&O.current.length){const d=O.current.map(x=>u.find(j=>j.value===x)).filter(Boolean);d.length&&_(d),O.current=null}else{const d=o.find(j=>j.name===h),x=d&&d.suggestedCompareBy||[];if(x.length){const j=x.map(T=>u.find(V=>V.value===T)).filter(Boolean);j.length&&_(j)}}}catch(l){n||B(String(l))}})(),()=>{n=!0}},[h,e]),v.useEffect(()=>{const n=new URLSearchParams;h&&n.set("metric",h),g&&n.set("x",g.value),S.length&&n.set("by",S.map(d=>d.value).join(",")),E.forEach(d=>{d.dim&&d.op&&n.append("filter",`${d.dim}|${d.op}|${d.value??""}`)}),G!=="chart"&&n.set("view",G),Q!=="auto"&&n.set("chart",Q),ie&&n.set("zero","1");const l=n.toString(),u=window.location.search.replace(/^\?/,"");l!==u&&a({pathname:window.location.pathname,search:l?`?${l}`:""},{replace:!0})},[h,g,S,E,G,Q,ie,a]),v.useEffect(()=>{if(!h)return;let n=!1;return(async()=>{Y(!0),B(null);try{const l=[...g?[g.value]:[],...S.map(j=>j.value)],u=E.filter(j=>j.dim&&j.op&&j.value!=="").map(j=>{if(j.op==="in"){const Z=j.value.split(",").map(F=>F.trim()).filter(Boolean).map(F=>Oe(F)?F:`'${F.replace(/'/g,"''")}'`).join(", ");return`${j.dim} IN (${Z})`}const T=j.dim,V=Oe(j.value)?j.value:`'${String(j.value).replace(/'/g,"''")}'`;return`${T} ${j.op} ${V}`}),d=g?[g.value]:[],x=await e.querySystemMetric({metric:h,dimensions:l,filters:u,orderby:d});if(n)return;z(x.columns||[]),R(x.rows||[])}catch(l){n||B(String(l)),R(null),z([])}finally{n||Y(!1)}})(),()=>{n=!0}},[h,g,S,E,e]);const le=v.useMemo(()=>{const n={};for(const l of o)n[l.name]=l.display_name||l.name;return n},[o]),Fe=v.useMemo(()=>{var Ae,Ne;const n={data:[],series:[],xKey:null,labels:{}};if(!b||!h)return n;const l=g==null?void 0:g.value,u=((Ae=S[0])==null?void 0:Ae.value)||null,d=h,x=W.indexOf(d);if(x===-1)return n;const j=I=>{if(I==null)return 0;const k=typeof I=="number"?I:parseFloat(I);return Number.isFinite(k)?k:0},T="__x",V=({data:I,series:k,labels:$,xKey:J})=>{const te=k.filter(X=>I.some(U=>U[X]!==0&&U[X]!=null)),Ce={};for(const X of te)Ce[X]=$[X];return{data:I.map(X=>{const U={[J]:X[J]};for(const Se of te)U[Se]=X[Se];return U}).filter(X=>te.some(U=>X[U]!==0&&X[U]!=null)),series:te,labels:Ce,xKey:J}};if(!l){const I=u?W.indexOf(u):-1,k="s0",$=le[d]||d.replace(/^system\.dj\./,"");return I===-1?{data:[{[T]:d,[k]:j((Ne=b[0])==null?void 0:Ne[x])}],series:[k],xKey:T,labels:{[k]:$}}:V({data:b.map(J=>({[T]:String(J[I]),[k]:j(J[x])})),series:[k],xKey:T,labels:{[k]:$}})}const Z=W.indexOf(l);if(Z===-1)return n;const F=le[d]||d.replace(/^system\.dj\./,"");if(!u){const I="s0";return V({data:b.map(k=>({[T]:String(k[Z]),[I]:j(k[x])})),series:[I],xKey:T,labels:{[I]:F}})}const re=W.indexOf(u),ee=new Map,se=new Map,he=[];for(const I of b){const k=String(I[Z]),$=String(I[re]);if(!se.has($)){const te=`s${se.size}`;se.set($,te),he.push(te)}const J=se.get($);ee.has(k)||ee.set(k,{[T]:k}),ee.get(k)[J]=j(I[x])}const be={};se.forEach((I,k)=>{be[I]=k});const je=[];return ee.forEach(I=>{const k={...I};for(const $ of he)(k[$]===void 0||k[$]===null)&&(k[$]=0);je.push(k)}),V({data:je,series:he,xKey:T,labels:be})},[b,W,g,S,h,le]),de=v.useMemo(()=>{const n=f.toLowerCase();return o.filter(l=>l.name.toLowerCase().includes(n)||l.display_name&&l.display_name.toLowerCase().includes(n))},[o,f]),Xe=v.useMemo(()=>{const n=[],l={};for(const u of de){const d=u.group||"Other",x=u.subgroup||"Other";l[d]||(l[d]={subgroupOrder:[],subgroups:{}},n.push(d)),l[d].subgroups[x]||(l[d].subgroups[x]=[],l[d].subgroupOrder.push(x)),l[d].subgroups[x].push(u)}return n.map(u=>({group:u,subgroups:l[u].subgroupOrder.map(d=>({subgroup:d,metrics:l[u].subgroups[d]}))}))},[de]),qe=h?le[h]||h.replace(/^system\.dj\./,""):null,xe=h&&(o.find(n=>n.name===h)||{}).description||"",pe=v.useMemo(()=>{const n=p.toLowerCase();return N.filter(l=>l.value.toLowerCase().includes(n)||l.combinedLabel.toLowerCase().includes(n))},[N,p]),oe=v.useMemo(()=>{const n=[],l=new Map;for(const u of pe)l.has(u.group)||(l.set(u.group,[]),n.push(u.group)),l.get(u.group).push(u);return n.map(u=>({label:u,options:l.get(u)}))},[pe]),Ge=v.useMemo(()=>Q!=="auto"?Q:g&&Le(g.value)?S.length>0?"area":"line":"bar",[Q,g,S]),Ye=()=>L([...E,{dim:"",op:"=",value:""}]),me=(n,l)=>L(E.map((u,d)=>d===n?{...u,...l}:u)),Ze=n=>L(E.filter((l,u)=>u!==n)),Je=()=>M?s.jsxs("div",{className:"sme-empty",children:[s.jsx("span",{className:"sme-spinner"}),"Loading…"]}):!b||b.length===0?s.jsxs("div",{className:"sme-empty",children:[s.jsx("div",{className:"sme-empty-icon",children:"📈"}),"No data."]}):s.jsx(Pt,{chartData:Fe,resolvedChartType:Ge,startAtZero:ie}),Ue=()=>M?s.jsxs("div",{className:"sme-empty",children:[s.jsx("span",{className:"sme-spinner"}),"Loading…"]}):!b||b.length===0?s.jsx("div",{className:"sme-empty",children:"No data."}):s.jsx("div",{className:"sme-table-wrap",children:s.jsxs("table",{className:"sme-table",children:[s.jsx("thead",{children:s.jsx("tr",{children:W.map(n=>s.jsx("th",{children:n},n))})}),s.jsx("tbody",{children:b.map((n,l)=>s.jsx("tr",{children:n.map((u,d)=>s.jsx("td",{children:u==null?"":String(u)},`${l}-${d}`))},`row-${l}`))})]})});return s.jsxs("div",{className:"sme-page",children:[s.jsxs("aside",{className:"sme-rail",children:[s.jsxs("div",{className:"sme-rail-section grow",children:[s.jsxs("div",{className:"sme-rail-header",children:[s.jsx("span",{children:"System Metrics"}),s.jsx("span",{className:"sme-rail-count",children:de.length})]}),s.jsx("input",{className:"sme-rail-search",placeholder:"Search metrics",value:f,onChange:n=>m(n.target.value)}),s.jsx("div",{className:"sme-rail-list",children:Xe.map(n=>s.jsxs("div",{className:"sme-rail-group",children:[s.jsx("div",{className:"sme-rail-group-header",children:n.group}),n.subgroups.map(l=>s.jsxs("div",{className:"sme-rail-subgroup",children:[s.jsx("div",{className:"sme-rail-subgroup-header",children:l.subgroup}),l.metrics.map(u=>s.jsxs("div",{className:`sme-rail-item indent${h===u.name?" active":""}`,onClick:()=>P(u.name),title:u.description?`${u.name} ${u.description}`:u.name,children:[s.jsx("span",{className:"sme-rail-icon",children:"Σ"}),u.display_name||u.name.replace(/^system\.dj\./,"")]},u.name))]},l.subgroup))]},n.group))})]}),s.jsxs("div",{className:"sme-rail-section grow",children:[s.jsxs("div",{className:"sme-rail-header",children:[s.jsx("span",{children:"Dimensions"}),s.jsx("span",{className:"sme-rail-count",children:pe.length})]}),s.jsx("input",{className:"sme-rail-search",placeholder:"Search dimensions",value:p,onChange:n=>A(n.target.value),disabled:!h}),s.jsx("div",{className:"sme-rail-list",children:oe.map(n=>s.jsxs("div",{className:"sme-rail-group",children:[s.jsx("div",{className:"sme-rail-group-header",children:n.label}),n.options.map(l=>{const u=S.some(d=>d.value===l.value)||(g==null?void 0:g.value)===l.value;return s.jsxs("div",{className:`sme-rail-item indent${u?" active":""}`,title:`${l.value} ${l.path} Click to toggle in Compare-by`,onClick:()=>{(g==null?void 0:g.value)!==l.value&&_(d=>d.some(x=>x.value===l.value)?d.filter(x=>x.value!==l.value):[...d,l])},children:[s.jsx("span",{className:"sme-rail-icon",children:$e(l.type)}),l.label]},l.value)})]},n.label))})]})]}),s.jsxs("div",{className:"sme-main",children:[s.jsxs("div",{className:"sme-toolbar",children:[s.jsxs("div",{className:"sme-row",children:[s.jsx("span",{className:"sme-label",children:"X-axis"}),s.jsx("span",{className:"sme-select-wide",children:s.jsx(i.StateManagedSelect$1,{isClearable:!0,placeholder:"Choose an X-axis dimension",options:oe,value:g,onChange:D,isDisabled:!h,styles:fe})})]}),s.jsxs("div",{className:"sme-row",children:[s.jsx("span",{className:"sme-label",children:"Compare by"}),s.jsx("span",{className:"sme-select-wide",children:s.jsx(i.StateManagedSelect$1,{isMulti:!0,isClearable:!0,placeholder:"Break down by dimensions",options:oe.map(n=>({...n,options:n.options.filter(l=>l.value!==(g==null?void 0:g.value))})).filter(n=>n.options.length>0),value:S,onChange:n=>_(n||[]),isDisabled:!h,styles:fe})})]}),E.map((n,l)=>s.jsxs("div",{className:"sme-filter-row",children:[s.jsx("span",{className:"sme-label",children:l===0?"Filter":"and"}),s.jsx("span",{className:"sme-select",children:s.jsx(i.StateManagedSelect$1,{placeholder:"Dimension",options:oe,value:N.find(u=>u.value===n.dim)||null,onChange:u=>me(l,{dim:(u==null?void 0:u.value)||""}),styles:fe})}),s.jsx("span",{style:{minWidth:140},children:s.jsx(i.StateManagedSelect$1,{options:Ee,value:Ee.find(u=>u.value===n.op),onChange:u=>me(l,{op:u.value})})}),s.jsx("input",{className:"sme-text-input",placeholder:n.op==="in"?"comma-separated values":"value",value:n.value,onChange:u=>me(l,{value:u.target.value})}),s.jsx("button",{className:"sme-remove-filter",onClick:()=>Ze(l),"aria-label":"Remove filter",children:"×"})]},`f-${l}`)),s.jsx("div",{className:"sme-row",children:s.jsx("button",{className:"sme-add-filter",onClick:Ye,disabled:!h,children:"+ Add filter"})})]}),s.jsxs("div",{className:"sme-content",children:[s.jsxs("div",{className:"sme-chart-controls",children:[s.jsxs("div",{className:"sme-view-toggle",children:[s.jsx("button",{className:`sme-view-btn${G==="chart"?" active":""}`,onClick:()=>ge("chart"),children:"📈 Chart"}),s.jsx("button",{className:`sme-view-btn${G==="table"?" active":""}`,onClick:()=>ge("table"),children:"▦ Table"})]}),G==="chart"?s.jsx("div",{className:"sme-view-toggle",children:[{key:"auto",label:"Auto"},{key:"line",label:"Line"},{key:"area",label:"Area"},{key:"bar",label:"Bar"}].map(n=>s.jsx("button",{className:`sme-view-btn${Q===n.key?" active":""}`,onClick:()=>ze(n.key),children:n.label},n.key))}):null,s.jsx("div",{className:"sme-options",children:s.jsxs("label",{children:[s.jsx("input",{type:"checkbox",checked:ie,onChange:n=>Ve(n.target.checked)}),"Start scale at zero"]})})]}),s.jsx("h2",{className:"sme-chart-title",children:h?s.jsx("a",{href:`/nodes/${h}`,target:"_blank",rel:"noreferrer",title:`Open ${h}`,className:"sme-chart-title-link",children:qe}):"Pick a system metric"}),xe?s.jsx("p",{className:"sme-chart-description",children:xe}):null,q?s.jsx("div",{className:"sme-error",children:q}):null,G==="chart"?Je():Ue()]})]})]})}We.defaultProps={djClient:i.DataJunctionAPI};exports.NonZeroTooltip=Re;exports.SystemMetricsExplorerPage=We;exports.typeIcon=$e; //# sourceMappingURL=index-BmlSMAOJ.cjs.map