usage-board 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +1 -1
- package/dist/public/_nuxt/BJUAqwzD.js +1 -0
- package/dist/public/_nuxt/{y3weNNd-.js → BuL2_OVR.js} +2 -2
- package/dist/public/_nuxt/Bz0aA7IQ.js +1 -0
- package/dist/public/_nuxt/CEZpUSPI.js +1 -0
- package/dist/public/_nuxt/CF27djws.js +1 -0
- package/dist/public/_nuxt/CbwePq4F.js +119 -0
- package/dist/public/_nuxt/Cd5S9Sm2.js +1 -0
- package/dist/public/_nuxt/{Be3rizqy.js → CoVMsEv_.js} +1 -1
- package/dist/public/_nuxt/D7Qebc1i.js +4 -0
- package/dist/public/_nuxt/DS17D0R7.js +25 -0
- package/dist/public/_nuxt/{7Dy4NLP8.js → Dr4nyTE3.js} +24 -24
- package/dist/public/_nuxt/Dzuxw4nD.js +21 -0
- package/dist/public/_nuxt/LYzk-FvL.js +1 -0
- package/dist/public/_nuxt/WjVGlVHF.js +6 -0
- package/dist/public/_nuxt/builds/latest.json +1 -1
- package/dist/public/_nuxt/builds/meta/5b933d30-47b4-45ca-8d5a-cba3255174fa.json +1 -0
- package/dist/public/_nuxt/entry.vHfFzkyD.css +1 -0
- package/dist/server/chunks/_/shared.cjs.prod.mjs +1 -1
- package/dist/server/chunks/build/client.precomputed.mjs +1 -1
- package/dist/server/chunks/nitro/nitro.mjs +540 -88
- package/dist/server/chunks/routes/api/analysis/agent/session.json.mjs +22 -0
- package/dist/server/chunks/routes/api/analysis/agent/token.json.mjs +25 -0
- package/dist/server/chunks/routes/api/analysis/cache.json.mjs +25 -0
- package/dist/server/chunks/routes/api/analysis/hot-project.json.mjs +25 -0
- package/dist/server/chunks/routes/api/analysis/model.json.mjs +25 -0
- package/dist/server/chunks/routes/api/analysis/overview-cards.json.mjs +25 -0
- package/dist/server/chunks/routes/api/analysis/session.json.mjs +22 -0
- package/dist/server/chunks/routes/api/analysis/token/daily.json.mjs +22 -0
- package/dist/server/chunks/routes/api/analysis/token.json.mjs +25 -0
- package/dist/server/chunks/routes/api/payload.json.mjs +1 -1
- package/dist/server/chunks/routes/api/projects/_project/modules.get.mjs +1 -1
- package/dist/server/chunks/routes/api/projects/catalog.get.mjs +1 -1
- package/dist/server/chunks/routes/renderer.mjs +1 -1
- package/dist/server/chunks/routes/ws.mjs +1 -1
- package/dist/server/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/public/_nuxt/B-VlGWDb.js +0 -21
- package/dist/public/_nuxt/C0azgqnZ.js +0 -1
- package/dist/public/_nuxt/CMNdiQCa.js +0 -1
- package/dist/public/_nuxt/CPuXQJE_.js +0 -1
- package/dist/public/_nuxt/DenksPSi.js +0 -119
- package/dist/public/_nuxt/Dkya5WaL.js +0 -9
- package/dist/public/_nuxt/HN9OZyaQ.js +0 -25
- package/dist/public/_nuxt/JtK-nXxy.js +0 -1
- package/dist/public/_nuxt/builds/meta/37e8bb21-a086-45bf-93dc-47eeeada7299.json +0 -1
- package/dist/public/_nuxt/entry.r-q4oQC0.css +0 -1
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import{M as ve,N as be,O as At,Q as q,R as _e,U as Nt,W as ot,X as I,Y as W,Z as Ft,$ as z,a0 as _t,a1 as ht,a2 as $t,a3 as It,a4 as j,a5 as ye,a6 as Yt,a7 as xe,a8 as ke,a9 as Se,aa as Jt,ab as X,ac as Qt,ad as Ae,ae as $e,af as it,ag as Tt,ah as Te,ai as Mt,aj as Ce,ak as Xt,al as xt,am as De,an as we,ao as Re,ap as te,aq as Me,ar as Le,as as Ee,at as Pe,au as Ue,av as Pt,aw as Ut,ax as Oe,ay as je,az as ee,K as Ot,S as Ve,f as Kt,z as ae,_ as ne,p as lt,j as J,k as se,s as rt,r as Ge,aA as We,m as qt,aB as Be,aC as ze,G as He,aD as Zt,v as Ne,w as Fe,x as Ie,y as Ye,B as Xe,E as Ke,F as qe,o as Z,J as Ze,I as Je,H as Qe}from"./7Dy4NLP8.js";import{E as ta,_ as ea,a as aa,b as na}from"./HN9OZyaQ.js";import{z as tt,G as sa,p as oa,i as ft,v as jt,o as G,c as Y,C as ia,E as la,r as Vt,ak as Ct,ai as Dt,af as oe,Q as ie,n as le,h as T,B as pt,w,a as M,t as O,b as S,D,K as kt,J as St,S as Gt,Y as ra,al as ca,a5 as wt,d as V,a6 as ua,I as da,a7 as ga}from"./Dkya5WaL.js";const ha=Object.assign(Object.assign({},ve),{tooltip:void 0,annotations:void 0});class pa extends be{constructor(e,t,s){var l;super(e),this._defaultConfig=ha,this.config=this._defaultConfig,t&&(this.updateContainer(t,!0),this.component=t.component),s&&this.setData(s,!0),!((l=this.component)===null||l===void 0)&&l.datamodel.data&&this.render()}setData(e,t){var s;const{config:l}=this;this.component&&this.component.setData(e),t||this.render(),(s=l.tooltip)===null||s===void 0||s.hide()}updateContainer(e,t){super.updateContainer(e),this._removeAllChildren(),this.component=e.component,e.sizing&&(this.component.sizing=e.sizing),this.element.appendChild(this.component.element);const s=e.tooltip;s&&(s.hasContainer()||s.setContainer(this._container),s.setComponents([this.component]));const l=e.annotations;l&&this.element.appendChild(l.element),this.element.appendChild(this._svgDefs.node()),this.element.appendChild(this._svgDefsExternal.node()),t||this.render()}updateComponent(e,t){this.component.setConfig(e),t||this.render()}update(e,t,s){e&&this.updateContainer(e,!0),t&&this.updateComponent(t,!0),s&&this.setData(s,!0),this.render()}getFitWidthScale(){const{config:e,component:t}=this,s=t;if(!s.getWidth)return 1;const l=s.getWidth()+e.margin.left+e.margin.right;return this.width/l}_preRender(){var e,t;super._preRender(),this.component.setSize(this.width,this.height,this.containerWidth,this.containerHeight),this.component.setContainerMargin(this.config.margin),(e=this.config.annotations)===null||e===void 0||e.setSize(this.width,this.height,this.containerWidth,this.containerHeight),(t=this.config.annotations)===null||t===void 0||t.setContainerMargin(this.config.margin)}_render(e){var t,s;const{config:l,component:r}=this;super._render(e),r.g.attr("transform",`translate(${l.margin.left},${l.margin.top})`),r.render(e),(t=l.annotations)===null||t===void 0||t.render(e),l.tooltip&&l.tooltip.update(),(s=l.onRenderComplete)===null||s===void 0||s.call(l,this.svg.node(),l.margin,this.containerWidth,this.containerHeight,this.width,this.height)}render(e=this.config.duration){const{config:t,component:s}=this;if(t.sizing===At.Extend||t.sizing===At.FitWidth){const l=t.sizing===At.FitWidth,r=s,n=r.getWidth()+t.margin.left+t.margin.right,a=r.getHeight()+t.margin.top+t.margin.bottom,d=l?this.getFitWidthScale():1,i=this.svg.attr("width"),o=this.svg.attr("height"),f=n*d,m=a*d,g=i||o;q(this.svg,g?e:0).attr("width",f).attr("height",m).attr("viewBox",`0 0 ${n} ${l?m:a}`).attr("preserveAspectRatio","xMinYMin")}else this.svg.attr("width",this.config.width||this.containerWidth).attr("height",this.config.height||this.containerHeight);this._resizeObserver||this._setUpResizeObserver(),cancelAnimationFrame(this._renderAnimationFrameId),this._renderAnimationFrameId=requestAnimationFrame(()=>{this._preRender(),this._render(e)})}_onResize(){var e;const{config:t}=this;super._onResize(),(e=t.tooltip)===null||e===void 0||e.hide()}destroy(){var e,t;const{component:s,config:l}=this;super.destroy(),s?.destroy(),(e=l.tooltip)===null||e===void 0||e.destroy(),(t=l.annotations)===null||t===void 0||t.destroy()}}function fa(h){return h.innerRadius}function ma(h){return h.outerRadius}function va(h){return h.startAngle}function ba(h){return h.endAngle}function _a(h){return h&&h.padAngle}function ya(h,e,t,s,l,r,n,a){var d=t-h,i=s-e,o=n-l,f=a-r,m=f*d-o*i;if(!(m*m<z))return m=(o*(e-r)-f*(h-l))/m,[h+m*d,e+m*i]}function bt(h,e,t,s,l,r,n){var a=h-t,d=e-s,i=(n?r:-r)/ht(a*a+d*d),o=i*d,f=-i*a,m=h+o,g=e+f,p=t+o,b=s+f,c=(m+p)/2,x=(g+b)/2,$=p-m,E=b-g,_=$*$+E*E,u=l-r,v=m*b-p*g,R=(E<0?-1:1)*ht(ye(0,u*u*_-v*v)),P=(v*E-$*R)/_,U=(-v*$-E*R)/_,A=(v*E+$*R)/_,L=(-v*$+E*R)/_,B=P-c,y=U-x,C=A-c,F=L-x;return B*B+y*y>C*C+F*F&&(P=A,U=L),{cx:P,cy:U,x01:-o,y01:-f,x11:P*(l/u-1),y11:U*(l/u-1)}}function xa(){var h=fa,e=ma,t=W(0),s=null,l=va,r=ba,n=_a,a=null,d=_e(i);function i(){var o,f,m=+h.apply(this,arguments),g=+e.apply(this,arguments),p=l.apply(this,arguments)-Ft,b=r.apply(this,arguments)-Ft,c=It(b-p),x=b>p;if(a||(a=o=d()),g<m&&(f=g,g=m,m=f),!(g>z))a.moveTo(0,0);else if(c>_t-z)a.moveTo(g*ot(p),g*I(p)),a.arc(0,0,g,p,b,!x),m>z&&(a.moveTo(m*ot(b),m*I(b)),a.arc(0,0,m,b,p,x));else{var $=p,E=b,_=p,u=b,v=c,R=c,P=n.apply(this,arguments)/2,U=P>z&&(s?+s.apply(this,arguments):ht(m*m+g*g)),A=$t(It(g-m)/2,+t.apply(this,arguments)),L=A,B=A,y,C;if(U>z){var F=Yt(U/m*I(P)),et=Yt(U/g*I(P));(v-=F*2)>z?(F*=x?1:-1,_+=F,u-=F):(v=0,_=u=(p+b)/2),(R-=et*2)>z?(et*=x?1:-1,$+=et,E-=et):(R=0,$=E=(p+b)/2)}var K=g*ot($),at=g*I($),ct=m*ot(u),Q=m*I(u);if(A>z){var ut=g*ot(E),nt=g*I(E),dt=m*ot(_),mt=m*I(_),N;if(c<Nt)if(N=ya(K,at,dt,mt,ut,nt,ct,Q)){var gt=K-N[0],k=at-N[1],H=ut-N[0],st=nt-N[1],zt=1/I(xe((gt*H+k*st)/(ht(gt*gt+k*k)*ht(H*H+st*st)))/2),Ht=ht(N[0]*N[0]+N[1]*N[1]);L=$t(A,(m-Ht)/(zt-1)),B=$t(A,(g-Ht)/(zt+1))}else L=B=0}R>z?B>z?(y=bt(dt,mt,K,at,g,B,x),C=bt(ut,nt,ct,Q,g,B,x),a.moveTo(y.cx+y.x01,y.cy+y.y01),B<A?a.arc(y.cx,y.cy,B,j(y.y01,y.x01),j(C.y01,C.x01),!x):(a.arc(y.cx,y.cy,B,j(y.y01,y.x01),j(y.y11,y.x11),!x),a.arc(0,0,g,j(y.cy+y.y11,y.cx+y.x11),j(C.cy+C.y11,C.cx+C.x11),!x),a.arc(C.cx,C.cy,B,j(C.y11,C.x11),j(C.y01,C.x01),!x))):(a.moveTo(K,at),a.arc(0,0,g,$,E,!x)):a.moveTo(K,at),!(m>z)||!(v>z)?a.lineTo(ct,Q):L>z?(y=bt(ct,Q,ut,nt,m,-L,x),C=bt(K,at,dt,mt,m,-L,x),a.lineTo(y.cx+y.x01,y.cy+y.y01),L<A?a.arc(y.cx,y.cy,L,j(y.y01,y.x01),j(C.y01,C.x01),!x):(a.arc(y.cx,y.cy,L,j(y.y01,y.x01),j(y.y11,y.x11),!x),a.arc(0,0,m,j(y.cy+y.y11,y.cx+y.x11),j(C.cy+C.y11,C.cx+C.x11),x),a.arc(C.cx,C.cy,L,j(C.y11,C.x11),j(C.y01,C.x01),!x))):a.arc(0,0,m,u,_,x)}if(a.closePath(),o)return a=null,o+""||null}return i.centroid=function(){var o=(+h.apply(this,arguments)+ +e.apply(this,arguments))/2,f=(+l.apply(this,arguments)+ +r.apply(this,arguments))/2-Nt/2;return[ot(f)*o,I(f)*o]},i.innerRadius=function(o){return arguments.length?(h=typeof o=="function"?o:W(+o),i):h},i.outerRadius=function(o){return arguments.length?(e=typeof o=="function"?o:W(+o),i):e},i.cornerRadius=function(o){return arguments.length?(t=typeof o=="function"?o:W(+o),i):t},i.padRadius=function(o){return arguments.length?(s=o==null?null:typeof o=="function"?o:W(+o),i):s},i.startAngle=function(o){return arguments.length?(l=typeof o=="function"?o:W(+o),i):l},i.endAngle=function(o){return arguments.length?(r=typeof o=="function"?o:W(+o),i):r},i.padAngle=function(o){return arguments.length?(n=typeof o=="function"?o:W(+o),i):n},i.context=function(o){return arguments.length?(a=o??null,i):a},i}function ka(h,e){return e<h?-1:e>h?1:e>=h?0:NaN}function Sa(h){return h}function Aa(){var h=Sa,e=ka,t=null,s=W(0),l=W(_t),r=W(0);function n(a){var d,i=(a=ke(a)).length,o,f,m=0,g=new Array(i),p=new Array(i),b=+s.apply(this,arguments),c=Math.min(_t,Math.max(-_t,l.apply(this,arguments)-b)),x,$=Math.min(Math.abs(c)/i,r.apply(this,arguments)),E=$*(c<0?-1:1),_;for(d=0;d<i;++d)(_=p[g[d]=d]=+h(a[d],d,a))>0&&(m+=_);for(e!=null?g.sort(function(u,v){return e(p[u],p[v])}):t!=null&&g.sort(function(u,v){return t(a[u],a[v])}),d=0,f=m?(c-i*E)/m:0;d<i;++d,b=x)o=g[d],_=p[o],x=b+(_>0?_*f:0)+E,p[o]={data:a[o],index:d,value:_,startAngle:b,endAngle:x,padAngle:$};return p}return n.value=function(a){return arguments.length?(h=typeof a=="function"?a:W(+a),n):h},n.sortValues=function(a){return arguments.length?(e=a,t=null,n):e},n.sort=function(a){return arguments.length?(t=a,e=null,n):t},n.startAngle=function(a){return arguments.length?(s=typeof a=="function"?a:W(+a),n):s},n.endAngle=function(a){return arguments.length?(l=typeof a=="function"?a:W(+a),n):l},n.padAngle=function(a){return arguments.length?(r=typeof a=="function"?a:W(+a),n):r},n}function $a({x:h,y:e,w:t,h:s,tl:l=!1,tr:r=!1,bl:n=!1,br:a=!1,r:d=0}){let i;i=`M${h+d},${e}h${t-2*d}`;let o=r?d:0,f=r?0:d;return i+=`a${o},${o} 0 0 1 ${o},${o}`,i+=`h${f}v${f}`,i+=`v${s-2*d}`,o=a?d:0,f=a?0:d,i+=`a${o},${o} 0 0 1 ${-o},${o}`,i+=`v${f}h${-f}`,i+=`h${2*d-t}`,o=n?d:0,f=n?0:d,i+=`a${o},${o} 0 0 1 ${-o},${-o}`,i+=`h${-f}v${-f}`,i+=`v${2*d-s}`,o=l?d:0,f=l?0:d,i+=`a${o},${o} 0 0 1 ${o},${-o}`,i+=`v${-f}h${f}`,i+="z",i}const Ta=Object.assign(Object.assign({},Se),{color:void 0,barMaxWidth:void 0,barWidth:void 0,dataStep:void 0,barPadding:0,roundedCorners:2,cursor:null,barMinHeight1Px:!1,barMinHeightZeroValue:null,orientation:Jt.Vertical}),re=X`
|
|
2
|
-
label: stacked-bar-component;
|
|
3
|
-
`,Ca=Qt`
|
|
4
|
-
:root {
|
|
5
|
-
--vis-stacked-bar-cursor: default;
|
|
6
|
-
--vis-stacked-bar-fill-color: var(--vis-color-main);
|
|
7
|
-
--vis-stacked-bar-stroke-color: none;
|
|
8
|
-
--vis-stacked-bar-stroke-width: 0px;
|
|
9
|
-
--vis-stacked-bar-hover-stroke-width: none;
|
|
10
|
-
--vis-stacked-bar-hover-stroke-color: none;
|
|
11
|
-
|
|
12
|
-
/* Dark Theme */
|
|
13
|
-
--vis-dark-stacked-bar-stroke-color: none;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
body.theme-dark ${`.${re}`} {
|
|
17
|
-
--vis-stacked-bar-stroke-color: var(--vis-dark-stacked-bar-stroke-color);
|
|
18
|
-
}
|
|
19
|
-
`,yt=X`
|
|
20
|
-
label: bar;
|
|
21
|
-
fill: var(--vis-stacked-bar-fill-color);
|
|
22
|
-
stroke: var(--vis-stacked-bar-stroke-color);
|
|
23
|
-
stroke-width: var(--vis-stacked-bar-stroke-width);
|
|
24
|
-
cursor: var(--vis-stacked-bar-cursor);
|
|
25
|
-
|
|
26
|
-
&:hover {
|
|
27
|
-
stroke-width: var(--vis-stacked-bar-hover-stroke-width);
|
|
28
|
-
stroke: var(--vis-stacked-bar-hover-stroke-color);
|
|
29
|
-
}
|
|
30
|
-
`,Lt=X`
|
|
31
|
-
label: barGroup;
|
|
32
|
-
`,ce=X`
|
|
33
|
-
label: barGroupExit;
|
|
34
|
-
`,Da=Object.freeze(Object.defineProperty({__proto__:null,bar:yt,barGroup:Lt,barGroupExit:ce,globalStyles:Ca,root:re},Symbol.toStringTag,{value:"Module"}));class Wt extends Ae{constructor(e){super(),this._defaultConfig=Ta,this.config=this._defaultConfig,this.getAccessors=()=>$e(this.config.y)?this.config.y:[this.config.y],this.stacked=!0,this.events={},this._barData=[],e&&this.setConfig(e)}get bleed(){if(this._barData=this._getVisibleData(),this._barData.length===0)return{top:0,bottom:0,left:0,right:0};const e=!this.isVertical()&&this.dataScale.range()[0]>this.dataScale.range()[1],t=this.dataScale.domain(),s=this._getBarWidth()/2,l=this._barData.map((g,p)=>it(g,this.config.x,p)),r=Tt(l),n=Te(l),a=this.dataScale(r),d=this.dataScale(n),i=this.dataScale.invert(a+(e?s:-s)),o=this.dataScale.invert(d+(e?-s:s)),f=i<=t[0]?this.dataScale(t[0])-this.dataScale(i):0,m=o>t[1]?this.dataScale(o)-this.dataScale(t[1]):0;return{top:this.isVertical()?0:e?-m:f,bottom:this.isVertical()?0:e?-f:m,left:this.isVertical()?f:0,right:this.isVertical()?m:0}}get dataScale(){return this.isVertical()?this.xScale:this.yScale}get valueScale(){return this.isVertical()?this.yScale:this.xScale}isVertical(){return this.config.orientation===Jt.Vertical}_render(e){const{config:t}=this,s=Mt(e)?e:t.duration,l=this.getAccessors(),r=Ce(this._barData,0,l,this._prevNegative);this._prevNegative=r.map(p=>!!p.isMostlyNegative);const n=this.g.selectAll(`.${Lt}`).data(this._barData,(p,b)=>{var c;return`${(c=Xt(p,t.id,b))!==null&&c!==void 0?c:b}`}),a=(p,b)=>{const c=this.dataScale(it(p,t.x,b)),x=this.isVertical()?c:0,$=this.isVertical()?0:c;return`translate(${x},${$})`},i=n.enter().append("g").attr("class",Lt).attr("transform",a).style("opacity",1).merge(n);q(i,s).attr("transform",a).style("opacity",1);const o=n.exit().attr("class",ce);q(o,s).style("opacity",0).remove(),q(o.selectAll(`.${yt}`),s).attr("transform",this.isVertical()?`translate(0,${this._height/3})`:`translate(${this._width/6},0)`);const f=i.selectAll(`.${yt}`).data((p,b)=>r.map((c,x)=>({datum:p,index:b,stacked:c[b],stackIndex:x,isEnding:x===r.length-1||x<=r.length-1&&r[x+1][b][0]!==c[b][1]})).filter(c=>c.stacked[0]!==c.stacked[1]),p=>p.stackIndex),g=f.enter().append("path").attr("class",yt).attr("d",p=>this._getBarPath(p,!0)).style("fill",p=>xt(p.datum,t.color,p.stackIndex)).merge(f);q(g,s).attr("d",p=>this._getBarPath(p)).style("fill",p=>xt(p.datum,t.color,p.stackIndex)).style("cursor",p=>Xt(p.datum,t.cursor,p.stackIndex)),q(f.exit(),s).style("opacity",0).remove()}_getBarWidth(){const{config:e,datamodel:{data:t}}=this;if(De(t))return 0;if(e.barWidth)return Tt([e.barWidth,e.barMaxWidth]);const s=this.dataScale.bandwidth,l=this.dataScale.domain?this.dataScale.domain():[];let n=1+(s?l.length:l[1]-l[0])/e.dataStep||!s&&t.filter((i,o)=>{const f=it(i,e.x,o);return f>=l[0]&&f<=l[1]}).length||t.length;!s&&n>=2&&(n+=1);const d=(n<2?1:1-e.barPadding)*(this.isVertical()?this._width:this._height)/n;return Tt([d,e.barMaxWidth])}_getVisibleData(){const{config:e,datamodel:{data:t}}=this,s=this._getBarWidth(),l=t.length<2?0:s/2,r=this.dataScale,n=Math.abs(r.invert(l)-r.invert(0));return t?.filter((d,i)=>{const o=it(d,e.x,i),f=r.domain(),m=+f[0],g=+f[1];return o>=m-n&&o<=g+n})}_getBarPath(e,t=!1){const{config:s}=this,l=this.getAccessors(),r=this._getBarWidth(),n=e.stacked[1]<0,a=e.isEnding,d=it(e.datum,l[e.stackIndex],e.index),i=t?0:Math.abs(this.valueScale(e.stacked[0])-this.valueScale(e.stacked[1])),o=!t&&s.barMinHeight1Px&&i<1&&isFinite(d)&&d!==s.barMinHeightZeroValue?1:i,f=t?this.valueScale(0):this.valueScale(n?e.stacked[0]:e.stacked[1])-(i<1&&s.barMinHeight1Px?1:0),m=-r/2,g=r,p=s.roundedCorners?Mt(s.roundedCorners)?+s.roundedCorners:g/2:0,b=te(p,0,Math.min(i,g)/2),c=this.yScale.range()[0]>this.yScale.range()[1];return $a({x:this.isVertical()?m:f-o,y:this.isVertical()?f+(c?0:-o):m,w:this.isVertical()?g:o,h:this.isVertical()?o:g,tl:a&&(this.isVertical()?!n&&c||n&&!c:n),tr:a&&(this.isVertical()?!n&&c||n&&!c:!n),br:a&&(this.isVertical()?n&&c||!n&&!c:!n),bl:a&&(this.isVertical()?n&&c||!n&&!c:n),r:b})}getValueScaleExtent(e){const{datamodel:t}=this,s=this.getAccessors(),l=e?this._getVisibleData():t.data;return we(l,...s)}getDataScaleExtent(){const{config:e,datamodel:t}=this;return Re(t.data,e.x)}getYDataExtent(e){return this.isVertical()?this.getValueScaleExtent(e):this.getDataScaleExtent()}getXDataExtent(){return this.isVertical()?this.getDataScaleExtent():this.getValueScaleExtent(!1)}}Wt.selectors=Da;const wa=Object.assign(Object.assign({},Me),{id:(h,e)=>{var t;return(t=h.id)!==null&&t!==void 0?t:e},value:void 0,angleRange:[0,2*Math.PI],padAngle:0,sortFunction:void 0,cornerRadius:0,color:void 0,radius:void 0,arcWidth:20,centralLabel:void 0,centralSubLabel:void 0,centralSubLabelWrap:!0,showEmptySegments:!1,emptySegmentAngle:.5*Math.PI/180,showBackground:!0,backgroundAngleRange:void 0,centralLabelOffsetX:void 0,centralLabelOffsetY:void 0});function Ra(h,e){h.style("fill",t=>xt(t.data,e.color,t.index)).style("opacity",0).each((t,s,l)=>{const r=l[s],n=(t.startAngle+t.endAngle)/2,a=(t.endAngle-t.startAngle)/2;r._animState={startAngle:n-a,endAngle:n+a,innerRadius:t.innerRadius,outerRadius:t.outerRadius,padAngle:t.padAngle}})}function Ma(h,e,t,s){h.style("transition",`fill ${s}ms`).style("fill",r=>xt(r.data,e.color,r.index));const l=r=>e.showEmptySegments||r.value?1:0;s?q(h,s).style("opacity",l).attrTween("d",(n,a,d)=>{const i=d[a],o={startAngle:n.startAngle,endAngle:n.endAngle,innerRadius:n.innerRadius,outerRadius:n.outerRadius,padAngle:n.padAngle},f=Le(i._animState,o);return m=>(i._animState=f(m),t(i._animState))}):h.attr("d",t).style("opacity",l)}function La(h,e){q(h,e).style("opacity",0).remove()}const ue=Array.from({length:4},(h,e)=>{const t=-Math.PI/2+e*Math.PI/2;return[t,t+Math.PI]}),[xn,kn,Sn,An]=ue,de=X`
|
|
35
|
-
label: donut-component;
|
|
36
|
-
`,Ea=Qt`
|
|
37
|
-
:root {
|
|
38
|
-
--vis-donut-central-label-font-size: 16px;
|
|
39
|
-
--vis-donut-central-label-text-color: #5b5f6d;
|
|
40
|
-
// Undefined by default to allow proper fallback to var(--vis-font-family)
|
|
41
|
-
/* --vis-donut-central-label-font-family: */
|
|
42
|
-
--vis-donut-central-label-font-weight: 600;
|
|
43
|
-
|
|
44
|
-
--vis-donut-central-sub-label-font-size: 12px;
|
|
45
|
-
--vis-donut-central-sub-label-text-color: #5b5f6d;
|
|
46
|
-
// Undefined by default to allow proper fallback to var(--vis-font-family)
|
|
47
|
-
/* --vis-donut-central-sub-label-font-family: */
|
|
48
|
-
--vis-donut-central-sub-label-font-weight: 500;
|
|
49
|
-
|
|
50
|
-
--vis-donut-background-color: #E7E9F3;
|
|
51
|
-
--vis-donut-segment-stroke-width: 0;
|
|
52
|
-
// The line segment color variable is not defined by default
|
|
53
|
-
// to allow it to fallback to the donut background color
|
|
54
|
-
/* --vis-donut-segment-stroke-color: none; */
|
|
55
|
-
|
|
56
|
-
--vis-dark-donut-central-label-text-color: #C2BECE;
|
|
57
|
-
--vis-dark-donut-central-sub-label-text-color: #C2BECE;
|
|
58
|
-
--vis-dark-donut-background-color: #18160C;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
body.theme-dark ${`.${de}`} {
|
|
62
|
-
--vis-donut-central-label-text-color: var(--vis-dark-donut-central-label-text-color);
|
|
63
|
-
--vis-donut-central-sub-label-text-color: var(--vis-dark-donut-central-sub-label-text-color);
|
|
64
|
-
--vis-donut-background-color: var(--vis-dark-donut-background-color);
|
|
65
|
-
}
|
|
66
|
-
`,ge=X`
|
|
67
|
-
label: background;
|
|
68
|
-
fill: var(--vis-donut-background-color);
|
|
69
|
-
`,Et=X`
|
|
70
|
-
label: segment;
|
|
71
|
-
stroke-width: var(--vis-donut-segment-stroke-width);
|
|
72
|
-
stroke: var(--vis-donut-segment-stroke-color, var(--vis-donut-background-color));
|
|
73
|
-
`,he=X`
|
|
74
|
-
label: segment-exit;
|
|
75
|
-
`,pe=X`
|
|
76
|
-
label: central-label;
|
|
77
|
-
text-anchor: middle;
|
|
78
|
-
dominant-baseline: middle;
|
|
79
|
-
font-size: var(--vis-donut-central-label-font-size);
|
|
80
|
-
font-family: var(--vis-donut-central-label-font-family, var(--vis-font-family));
|
|
81
|
-
font-weight: var(--vis-donut-central-label-font-weight);
|
|
82
|
-
fill: var(--vis-donut-central-label-text-color);
|
|
83
|
-
`,fe=X`
|
|
84
|
-
label: central-label;
|
|
85
|
-
text-anchor: middle;
|
|
86
|
-
dominant-baseline: middle;
|
|
87
|
-
font-size: var(--vis-donut-central-sub-label-font-size);
|
|
88
|
-
font-family: var(--vis-donut-central-sub-label-font-family, var(--vis-font-family));
|
|
89
|
-
font-weight: var(--vis-donut-central-sub-label-font-weight);
|
|
90
|
-
fill: var(--vis-donut-central-sub-label-text-color);
|
|
91
|
-
`,Pa=Object.freeze(Object.defineProperty({__proto__:null,background:ge,centralLabel:pe,centralSubLabel:fe,root:de,segment:Et,segmentExit:he,variables:Ea},Symbol.toStringTag,{value:"Module"}));class Bt extends Ee{constructor(e){super(),this._defaultConfig=wa,this.config=this._defaultConfig,this.datamodel=new Pe,this.arcGen=xa(),this.events={},e&&this.setConfig(e),this.arcBackground=this.g.append("path"),this.arcGroup=this.g.append("g"),this.centralLabel=this.g.append("text").attr("class",pe),this.centralSubLabel=this.g.append("text").attr("class",fe)}get bleed(){return{top:0,bottom:0,left:0,right:0}}_render(e){var t,s,l,r,n,a,d,i,o,f,m,g,p,b;const{config:c,datamodel:x,bleed:$}=this,E=x.data.map((k,H)=>({index:H,datum:k})).filter(k=>c.showEmptySegments||it(k.datum,c.value,k.index)),_=Mt(e)?e:c.duration,[u,v,R,P]=ue.map(k=>c.angleRange&&c.angleRange[0]===k[0]&&c.angleRange[1]===k[1]),U=u||R,A=v||P,L=this._width*(A?2:1),B=this._height*(U?2:1),y=c.radius||Math.min(L-$.left-$.right,B-$.top-$.bottom)/2,C=c.arcWidth===0?0:te(y-c.arcWidth,0,y-1),F=this._height/2+(u?y/2:R?-y/2:0),et=this._width/2+(P?y/2:v?-y/2:0),K=`translate(${et},${F})`;this.arcGroup.attr("transform",K),this.arcGen.startAngle(k=>k.startAngle).endAngle(k=>k.endAngle).innerRadius(k=>k.innerRadius).outerRadius(k=>k.outerRadius).padAngle(k=>k.padAngle).cornerRadius(c.cornerRadius);const ct=Aa().startAngle((s=(t=c.angleRange)===null||t===void 0?void 0:t[0])!==null&&s!==void 0?s:0).endAngle((r=(l=c.angleRange)===null||l===void 0?void 0:l[1])!==null&&r!==void 0?r:2*Math.PI).padAngle(c.padAngle).value(k=>it(k.datum,c.value,k.index)||0).sort((k,H)=>{var st;return(st=c.sortFunction)===null||st===void 0?void 0:st.call(c,k.datum,H.datum)})(E).map(k=>{const H=Object.assign(Object.assign({},k),{data:k.data.datum,index:k.data.index,innerRadius:C,outerRadius:y});return c.showEmptySegments&&k.endAngle-k.startAngle-k.padAngle<=Number.EPSILON&&(H.endAngle=k.startAngle+Math.max(c.emptySegmentAngle,c.padAngle),H.padAngle=k.padAngle/2),H}),Q=this.arcGroup.selectAll(`.${Et}`).data(ct,k=>c.id(k.data,k.index)),ut=Q.enter().append("path").attr("class",Et).call(Ra,c),nt=Q.merge(ut);nt.call(Ma,c,this.arcGen,_),nt.sort((k,H)=>H.value-k.value),Q.exit().attr("class",he).call(La,_);const dt=v?"start":P?"end":"middle";this.centralLabel.attr("dy",c.centralSubLabel?"-0.55em":null).style("text-anchor",dt).text((n=c.centralLabel)!==null&&n!==void 0?n:null),this.centralSubLabel.attr("dy",c.centralLabel?"0.55em":null).style("text-anchor",dt).text((a=c.centralSubLabel)!==null&&a!==void 0?a:null),c.centralSubLabelWrap&&Ue(this.centralSubLabel,C*1.9);const mt=(c.centralLabelOffsetX||0)+et;let N=(c.centralLabelOffsetY||0)+F;U&&c.centralLabelOffsetX===void 0&&c.centralLabelOffsetY===void 0&&(N=(u?-this.centralSubLabel.node().getBoundingClientRect().height:R?this.centralLabel.node().getBoundingClientRect().height:0)+F);const gt=`translate(${mt},${N})`;this.centralLabel.attr("transform",gt),this.centralSubLabel.attr("transform",gt),this.arcBackground.attr("class",ge).attr("visibility",c.showBackground?null:"hidden").attr("transform",K),q(this.arcBackground,_).attr("d",this.arcGen({startAngle:(f=(i=(d=c.backgroundAngleRange)===null||d===void 0?void 0:d[0])!==null&&i!==void 0?i:(o=c.angleRange)===null||o===void 0?void 0:o[0])!==null&&f!==void 0?f:0,endAngle:(b=(g=(m=c.backgroundAngleRange)===null||m===void 0?void 0:m[1])!==null&&g!==void 0?g:(p=c.angleRange)===null||p===void 0?void 0:p[1])!==null&&b!==void 0?b:2*Math.PI,innerRadius:C,outerRadius:y}))}}Bt.selectors=Pa;const Ua=tt({__name:"index",props:{component:{},tooltip:{},annotations:{},duration:{},margin:{},padding:{},sizing:{},width:{},height:{},svgDefs:{},ariaLabel:{},data:{}},setup(h,{expose:e}){const t=h,{data:s}=sa(t),l=Pt(t);let r;const n=la({component:void 0,tooltip:void 0,annotations:void 0}),a=Vt(),d=()=>{r||a.value&&n.component&&(r=new pa(a.value,{...Ct(n)},s.value))};return oa(()=>{var i;d(),(i=n.component)==null||i.config,r?.updateContainer({...Ct(l.value),...Ct(n)})}),ft(s,()=>{r?r.setData(s.value,!0):d()}),jt(()=>r?.destroy()),Dt(Ut,{data:s,update:i=>n.component=i,destroy:()=>n.component=void 0}),Dt(Oe,{data:s,update:i=>n.tooltip=i,destroy:()=>{n.tooltip=void 0}}),Dt(je,{data:s,update:i=>n.annotations=i,destroy:()=>{n.annotations=void 0}}),e({component:r}),(i,o)=>(G(),Y("div",{"data-vis-single-container":"",ref_key:"elRef",ref:a,class:"unovis-single-container"},[ia(i.$slots,"default")],512))}}),Oa={"data-vis-component":""},ja=Wt.selectors,Va=tt({__name:"index",props:{color:{type:[Function,String,Array,null]},barWidth:{},barMaxWidth:{},dataStep:{},barPadding:{},roundedCorners:{type:[Number,Boolean]},cursor:{type:[Function,String,null]},barMinHeight1Px:{type:Boolean},barMinHeightZeroValue:{},orientation:{},x:{type:[Function,Number,null]},y:{type:[Function,Number,null,Array]},id:{type:Function},xScale:{type:[Object,Function]},yScale:{type:[Object,Function]},excludeFromDomainCalculation:{type:Boolean},duration:{},events:{},attributes:{},data:{}},setup(h,{expose:e}){const t=oe(Ut),s=h,l=T(()=>t.data.value??s.data),r=Pt(s),n=Vt();return ie(()=>{le(()=>{var a;n.value=new Wt(r.value),(a=n.value)==null||a.setData(l.value),t.update(n.value)})}),jt(()=>{var a;(a=n.value)==null||a.destroy(),t.destroy()}),ft(r,(a,d)=>{var i;ee(a,d)||(i=n.value)==null||i.setConfig(r.value)}),ft(l,()=>{var a;(a=n.value)==null||a.setData(l.value)}),e({component:n}),(a,d)=>(G(),Y("div",Oa))}}),Ga={"data-vis-component":""},Wa=Bt.selectors,Ba=tt({__name:"index",props:{id:{type:Function},value:{type:[Function,Number,null]},angleRange:{},padAngle:{},sortFunction:{type:Function},cornerRadius:{},color:{type:[Function,String,Array,null]},radius:{},arcWidth:{},centralLabel:{},centralSubLabel:{},centralSubLabelWrap:{type:Boolean},showEmptySegments:{type:Boolean},emptySegmentAngle:{},showBackground:{type:Boolean},backgroundAngleRange:{},centralLabelOffsetX:{},centralLabelOffsetY:{},duration:{},events:{},attributes:{},data:{}},setup(h,{expose:e}){const t=oe(Ut),s=h,l=T(()=>t.data.value??s.data),r=Pt(s),n=Vt();return ie(()=>{le(()=>{var a;n.value=new Bt(r.value),(a=n.value)==null||a.setData(l.value),t.update(n.value)})}),jt(()=>{var a;(a=n.value)==null||a.destroy(),t.destroy()}),ft(r,(a,d)=>{var i;ee(a,d)||(i=n.value)==null||i.setConfig(r.value)}),ft(l,()=>{var a;(a=n.value)==null||a.setData(l.value)}),e({component:n}),(a,d)=>(G(),Y("div",Ga))}}),za={class:"mb-4 grid grid-cols-2 gap-3"},Ha={class:"rounded-md border px-3 py-2"},Na={class:"mt-1 text-xl font-semibold tabular-nums"},Fa={class:"rounded-md border px-3 py-2"},Ia={class:"mt-1 text-xl font-semibold tabular-nums"},Ya={class:"mt-4 flex flex-wrap justify-center items-center gap-3 text-xs text-muted-foreground"},Xa=tt({name:"StatisticalAnalysisSessionAnalysisPanel",__name:"SessionAnalysisPanel",props:{items:{},totalSessions:{}},setup(h){const e=h,t=[{color:"#2563eb",key:"tokens",label:"Token Usage"},{color:"#b6d72f",key:"duration",label:"Duration"},{color:"#f97316",key:"cost",label:"Cost"}],s={cost:{color:t[2].color,label:t[2].label},duration:{color:t[1].color,label:t[1].label},tokens:{color:t[0].color,label:t[0].label}},l={bottom:32,left:120,right:12,top:8},r=T(()=>{const u=e.items.reduce((v,R)=>v+R.costUSD,0)/e.items.length;return lt(u)}),n=T(()=>{const u=new Map;for(const A of e.items){const L=u.get(A.project)??{costUSD:0,durationMinutes:0,sessionCount:0,tokenTotal:0};L.costUSD+=A.costUSD,L.durationMinutes+=i(A.duration),L.sessionCount+=1,L.tokenTotal+=A.tokenTotal,u.set(A.project,L)}const v=Array.from(u.entries()).map(([A,L])=>({project:A,...L})).sort((A,L)=>L.costUSD-A.costUSD),R=Math.max(...v.map(A=>A.tokenTotal),0),P=Math.max(...v.map(A=>A.durationMinutes),0),U=Math.max(...v.map(A=>A.costUSD),0);return v.map((A,L)=>({...A,costLabel:lt(A.costUSD),costScore:f(A.costUSD,U),durationLabel:o(A.durationMinutes),durationScore:f(A.durationMinutes,P),index:L,tokenLabel:J(A.tokenTotal),tokenScore:f(A.tokenTotal,R)}))}),a=T(()=>n.value.map(u=>u.index)),d=T(()=>({[ja.bar]:x}));function i(u){const v=u.match(/(\d+)h/)?.[1],R=u.match(/(\d+)m/)?.[1];return Number(v??0)*60+Number(R??0)}function o(u){const v=Math.floor(u/60),R=u%60;return v===0?`${R}m`:R===0?`${v}h`:`${v}h ${R}m`}function f(u,v){return v>0?u/v*100:0}function m(u){return u.index}function g(u){return u.tokenScore}function p(u){return u.durationScore}function b(u){return u.costScore}function c(u,v){return t[v]?.color??t[0].color}function x(u){const v=u.datum,R=t[u.stackIndex]??t[0],P=$(v,u.stackIndex);return`
|
|
92
|
-
<div class="grid min-w-44 gap-2 rounded-md border bg-background px-3 py-2 text-xs shadow-lg">
|
|
93
|
-
<div class="font-medium text-foreground">${se(v.project)}</div>
|
|
94
|
-
<div class="flex items-center justify-between gap-4">
|
|
95
|
-
<span class="flex items-center gap-2 text-muted-foreground">
|
|
96
|
-
<span class="size-2 rounded-sm" style="background-color: ${R.color}"></span>
|
|
97
|
-
${R.label}
|
|
98
|
-
</span>
|
|
99
|
-
<span class="font-mono font-semibold text-foreground">${P}</span>
|
|
100
|
-
</div>
|
|
101
|
-
<div class="grid gap-1 border-t pt-2 text-muted-foreground">
|
|
102
|
-
<div class="flex justify-between gap-4"><span>Tokens</span><span>${v.tokenLabel}</span></div>
|
|
103
|
-
<div class="flex justify-between gap-4"><span>Duration</span><span>${v.durationLabel}</span></div>
|
|
104
|
-
<div class="flex justify-between gap-4"><span>Cost</span><span>${v.costLabel}</span></div>
|
|
105
|
-
<div class="flex justify-between gap-4"><span>Sessions</span><span>${v.sessionCount}</span></div>
|
|
106
|
-
</div>
|
|
107
|
-
</div>
|
|
108
|
-
`}function $(u,v){return v===0?`${u.tokenLabel} tokens`:v===1?u.durationLabel:u.costLabel}function E(u){return u instanceof Date?"":n.value.find(v=>v.index===u)?.project??""}function _(u){return u instanceof Date?"":`${Math.round(u)}%`}return(u,v)=>{const R=ne,P=Ot;return G(),pt(P,{description:"Token, duration, and cost grouped by project",icon:"lucide:messages-square",title:"Session Analysis"},{default:w(()=>[M("div",za,[M("div",Ha,[v[0]||(v[0]=M("p",{class:"text-xs text-muted-foreground"}," Total Sessions ",-1)),M("p",Na,O(h.totalSessions),1)]),M("div",Fa,[v[1]||(v[1]=M("p",{class:"text-xs text-muted-foreground"}," Top Session Avg ",-1)),M("p",Ia,O(r.value),1)])]),S(R,{class:"h-80 w-full",config:s},{default:w(()=>[S(D(Ve),{"auto-margin":!1,data:n.value,height:320,margin:l,"y-direction":"south"},{default:w(()=>[S(D(Va),{"bar-max-width":28,"bar-padding":.28,color:c,cursor:"pointer",orientation:"horizontal","rounded-corners":3,x:m,y:[g,p,b]},null,8,["y"]),S(D(Kt),{"grid-line":!1,"tick-format":E,"tick-text-width":100,"tick-text-fit-mode":"trim","tick-text-trim-type":"end","tick-values":a.value,type:"y"},null,8,["tick-values"]),S(D(Kt),{"num-ticks":4,"tick-format":_,type:"x"}),S(D(ae),{triggers:d.value},null,8,["triggers"])]),_:1},8,["data"])]),_:1}),M("div",Ya,[(G(),Y(St,null,kt(t,U=>M("div",{key:U.key,class:"flex items-center gap-2"},[M("span",{class:"size-2.5 rounded-sm",style:Gt({backgroundColor:U.color})},null,4),M("span",null,O(U.label),1)])),64))])]),_:1})}}}),Ka=Object.assign(Xa,{__name:"StatisticalAnalysisSessionAnalysisPanel"}),qa={class:"space-y-4"},Za={class:"flex items-start justify-between gap-3"},Ja={class:"min-w-0"},Qa={class:"truncate text-sm font-medium"},tn={class:"truncate text-xs text-muted-foreground"},en={class:"shrink-0 text-sm font-semibold tabular-nums"},an={class:"h-2 overflow-hidden rounded-full bg-secondary"},nn=tt({name:"StatisticalAnalysisUsageBarList",__name:"UsageBarList",props:{items:{}},setup(h){function e(s){switch(s){case"green":return"bg-emerald-500";case"amber":return"bg-amber-500";case"sky":return"bg-sky-500";case"rose":return"bg-rose-500";default:return"bg-primary"}}function t(s){return`${Math.max(s.percent,s.percent>0?3:0)}%`}return(s,l)=>(G(),Y("div",qa,[(G(!0),Y(St,null,kt(h.items,r=>(G(),Y("div",{key:r.label,class:"space-y-2"},[M("div",Za,[M("div",Ja,[M("p",Qa,O(r.label),1),M("p",tn,O(r.detail),1)]),M("span",en,O(r.value),1)]),M("div",an,[M("div",{class:ra(["h-full rounded-full transition-[width]",e(r.tone)]),style:Gt({width:t(r)})},null,6)])]))),128))]))}}),sn=Object.assign(nn,{__name:"StatisticalAnalysisUsageBarList"}),on={class:"grid gap-6 lg:grid-cols-[220px_1fr] lg:items-center"},ln={class:"flex items-center justify-center"},rn={class:"space-y-3"},cn={class:"flex min-w-0 items-center gap-2"},un={class:"truncate text-sm text-muted-foreground"},dn={class:"text-sm font-semibold tabular-nums"},gn={class:"w-12 text-right text-xs text-muted-foreground tabular-nums"},hn={class:"mt-5 border-t pt-4"},pn=tt({name:"StatisticalAnalysisEfficiencyCachePanel",__name:"EfficiencyCachePanel",props:{dailyItems:{},items:{}},setup(h){const e=h,t=T(()=>e.dailyItems.reduce((g,p)=>g+p.inputTokens,0)),s=T(()=>e.dailyItems.reduce((g,p)=>g+p.cachedInputTokens,0)),l=T(()=>Math.max(t.value-s.value,0)),r=T(()=>t.value>0?s.value/t.value:0),n=T(()=>rt(r.value)),a=T(()=>[{color:"#059669",key:"cached",label:"Cached Input",shareLabel:rt(r.value),value:s.value,valueLabel:J(s.value)},{color:"#0ea5e9",key:"fresh",label:"Fresh Input",shareLabel:rt(t.value>0?l.value/t.value:0),value:l.value,valueLabel:J(l.value)}]),d=T(()=>Object.fromEntries(a.value.map(g=>[g.key,{color:g.color,label:g.label}]))),i=T(()=>({[Wa.segment]:m}));function o(g){return g.value}function f(g){return g.color}function m(g){const p=g.data;return`
|
|
109
|
-
<div class="grid min-w-40 gap-2 rounded-md border bg-background px-3 py-2 text-xs shadow-lg">
|
|
110
|
-
<div class="flex items-center gap-2 font-medium text-foreground">
|
|
111
|
-
<span class="size-2 rounded-sm" style="background-color: ${p.color}"></span>
|
|
112
|
-
${se(p.label)}
|
|
113
|
-
</div>
|
|
114
|
-
<div class="grid gap-1 text-muted-foreground">
|
|
115
|
-
<div class="flex justify-between gap-4"><span>Tokens</span><span class="font-mono font-medium text-foreground">${p.valueLabel}</span></div>
|
|
116
|
-
<div class="flex justify-between gap-4"><span>Share</span><span class="font-mono font-medium text-foreground">${p.shareLabel}</span></div>
|
|
117
|
-
</div>
|
|
118
|
-
</div>
|
|
119
|
-
`}return(g,p)=>{const b=ne,c=sn,x=Ot;return G(),pt(x,{description:"Cached input ratio across total input tokens",icon:"lucide:gauge",title:"Efficiency / Cache"},{default:w(()=>[M("div",on,[M("div",ln,[S(b,{class:"h-52 w-full max-w-56",config:D(d)},{default:w(()=>[S(D(Ua),{data:D(a),height:208},{default:w(()=>[S(D(Ba),{"arc-width":26,"central-label":D(n),"central-sub-label":"Hit Rate",color:f,"corner-radius":4,"pad-angle":.04,value:o},null,8,["central-label"]),S(D(ae),{triggers:D(i)},null,8,["triggers"])]),_:1},8,["data"])]),_:1},8,["config"])]),M("div",rn,[(G(!0),Y(St,null,kt(D(a),$=>(G(),Y("div",{key:$.key,class:"grid grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3"},[M("div",cn,[M("span",{class:"size-2.5 shrink-0 rounded-full",style:Gt({backgroundColor:$.color})},null,4),M("span",un,O($.label),1)]),M("span",dn,O($.valueLabel),1),M("span",gn,O($.shareLabel),1)]))),128))])]),M("div",hn,[S(c,{items:h.items},null,8,["items"])])]),_:1})}}}),fn=Object.assign(pn,{__name:"StatisticalAnalysisEfficiencyCachePanel"});function me(){const{payload:h}=ca(),e=T(()=>h.value?wt.map(_=>h.value[_]??ta):[]),t=T(()=>e.value.flatMap((_,u)=>_.sessionUsage.map(v=>({...v,id:`${wt[u]}:${v.id}`,sessionId:`${wt[u]}:${v.sessionId}`}))).sort((_,u)=>Date.parse(u.startedAt)-Date.parse(_.startedAt))),s=T(()=>He(e.value.flatMap(_=>_.dailyTokenUsage))),l=T(()=>ze(e.value.flatMap(_=>_.monthlyModelUsage))),r=T(()=>Be(t.value)),n=T(()=>s.value.reduce((_,u)=>_+u.costUSD,0)),a=T(()=>s.value.reduce((_,u)=>_+u.totalTokens,0)),d=T(()=>s.value.reduce((_,u)=>_+u.inputTokens,0)),i=T(()=>s.value.reduce((_,u)=>_+u.cachedInputTokens,0)),o=T(()=>s.value.reduce((_,u)=>_+u.outputTokens,0)),f=T(()=>s.value.reduce((_,u)=>_+u.reasoningOutputTokens,0)),m=T(()=>t.value.length),g=Ge(new Date),p=We(g),b=T(()=>s.value.find(_=>Zt(_.date)===g)),c=T(()=>s.value.find(_=>Zt(_.date)===p)),x=T(()=>qt(b.value?.costUSD??0,c.value?.costUSD??0,lt)),$=T(()=>qt(b.value?.totalTokens??0,c.value?.totalTokens??0,J)),E=T(()=>{const _=Rt(i.value,d.value),u=Rt(f.value,a.value),v=Rt(o.value,a.value);return[{label:"Cache Hit Rate",value:rt(_),detail:`${J(i.value)} cached input tokens`,percent:_*100,tone:"green"},{label:"Reasoning Token Share",value:rt(u),detail:`${J(f.value)} reasoning output tokens`,percent:u*100,tone:"amber"},{label:"Output Token Share",value:rt(v),detail:`${J(o.value)} output tokens`,percent:v*100,tone:"sky"}]});return{cachedInputTokens:i,costGrowthTrend:x,dailyTokenUsage:s,efficiencyMetrics:E,inputTokens:d,monthlyModelUsage:l,projectUsage:r,sessionUsage:t,totalCost:n,totalSessions:m,totalTokens:a,tokenGrowthTrend:$}}function Rt(h,e){return e>0?h/e:0}const vt=10,mn=tt({name:"StatisticalAnalysisTokensUsagePanel",__name:"TokensUsagePanel",setup(h){const{dailyTokenUsage:e}=me(),t=ga(1),s=T(()=>Math.max(1,Math.ceil(e.value.length/vt))),l=T(()=>{const n=(Math.min(t.value,s.value)-1)*vt;return e.value.slice(n,n+vt)});return ft(e,()=>{t.value=1}),(r,n)=>{const a=Ie,d=Fe,i=Ne,o=qe,f=Ye,m=Xe,g=Ke,p=Ot;return G(),pt(p,{description:"Daily model activity by token type, cache reads, total usage, and cost",icon:"lucide:calendar-days",title:"Daily Token Usage"},{default:w(()=>[S(m,null,{default:w(()=>[S(i,null,{default:w(()=>[S(d,null,{default:w(()=>[S(a,null,{default:w(()=>[...n[1]||(n[1]=[V("Date",-1)])]),_:1}),S(a,null,{default:w(()=>[...n[2]||(n[2]=[V("Models",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[3]||(n[3]=[V(" Input ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[4]||(n[4]=[V(" Output ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[5]||(n[5]=[V(" Reasoning ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[6]||(n[6]=[V(" Cache Read ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[7]||(n[7]=[V(" Total Tokens ",-1)])]),_:1}),S(a,{class:"text-right"},{default:w(()=>[...n[8]||(n[8]=[V(" Cost (USD) ",-1)])]),_:1})]),_:1})]),_:1}),S(f,null,{default:w(()=>[(G(!0),Y(St,null,kt(D(l),b=>(G(),pt(d,{key:b.date},{default:w(()=>[S(o,{class:"font-medium"},{default:w(()=>[V(O(b.date),1)]),_:2},1024),S(o,null,{default:w(()=>[V(O(Object.keys(b.models).join(", ")),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.inputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.outputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.reasoningOutputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.cachedInputTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(D(Z)(b.totalTokens)),1)]),_:2},1024),S(o,{class:"text-right"},{default:w(()=>[V(O(b.costUSD.toFixed(2)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1}),D(e).length>vt?(G(),pt(g,{key:0,page:D(t),"onUpdate:page":n[0]||(n[0]=b=>ua(t)?t.value=b:null),"page-count":D(s),"page-size":vt,total:D(e).length},null,8,["page","page-count","total"])):da("",!0)]),_:1})}}}),vn=Object.assign(mn,{__name:"StatisticalAnalysisTokensUsagePanel"}),$n=tt({__name:"index",setup(h){const{cachedInputTokens:e,costGrowthTrend:t,dailyTokenUsage:s,efficiencyMetrics:l,inputTokens:r,monthlyModelUsage:n,projectUsage:a,sessionUsage:d,totalCost:i,totalSessions:o,totalTokens:f,tokenGrowthTrend:m}=me(),g=T(()=>[{detail:`${lt(i.value)} total spend across all tools`,icon:"lucide:wallet",name:"Total Spend",trend:t.value.trend,trendTone:t.value.trendTone,value:lt(i.value)},{detail:`${Z(f.value)} total tokens across all tools`,icon:"solar:cpu-line-duotone",name:"Token Usage",trend:m.value.trend,trendTone:m.value.trendTone,value:J(f.value)},{detail:`${Z(e.value)} of ${Z(r.value)} input tokens were served from cache`,icon:"lucide:database-zap",name:"Cache Hit Rate",trend:`${J(e.value)} cached`,trendTone:"neutral",value:rt(r.value>0?e.value/r.value:0)},{detail:`${lt(i.value)} across ${Z(o.value)} sessions`,icon:"lucide:receipt-text",name:"Avg Session Cost",trend:"across all tools",trendTone:"neutral",value:lt(o.value>0?i.value/o.value:0)}]);return(p,b)=>{const c=Ze,x=ea,$=aa,E=na,_=Ka,u=fn,v=vn,R=Je,P=Qe;return G(),pt(P,null,{default:w(()=>[S(c,{cards:D(g)},null,8,["cards"]),S(R,null,{default:w(()=>[S(x,{"monthly-items":D(n),class:"md:col-span-8"},null,8,["monthly-items"]),S($,{items:D(a),class:"md:col-span-4"},null,8,["items"]),S(E,{items:D(s),class:"md:col-span-12","heat-metric":"cost",title:"Usage Trend"},null,8,["items"]),S(_,{items:D(d),"total-sessions":D(o),class:"md:col-span-6"},null,8,["items","total-sessions"]),S(u,{"daily-items":D(s),items:D(l),class:"md:col-span-6"},null,8,["daily-items","items"]),S(v,{class:"md:col-span-12"})]),_:1})]),_:1})}}});export{$n as default};
|