unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
2 lines • 3 kB
JavaScript
import{n as e,s as t,t as n}from"./jsx-runtime-ButemYzH.js";import{D as r,_ as i,a,f as o,g as s,h as c,i as l,o as u,u as d}from"./chart-BMc0j_v5.js";import{Cd as f,Xs as p,bc as m,jt as h,xc as g,yc as _}from"./index-B0RbDPtk.js";import{t as v}from"./daysOrHours-CWsdHL8Z.js";var y=t(e(),1),b=(e,t,n)=>({datasets:[{label:`Enabled`,borderColor:e.palette.charts.flagMetrics.enabled,backgroundColor:e.palette.charts.flagMetrics.enabled,data:x(t,n,e=>e.yes)},{label:`Not enabled`,borderColor:e.palette.charts.flagMetrics.notEnabled,backgroundColor:e.palette.charts.flagMetrics.notEnabled,data:x(t,n,e=>e.no)}]}),x=(e,t,n)=>e.map(e=>({x:e.timestamp,y:n(e),variants:e.variants||{}})),S=(e,t)=>{if(t===0)return``;let[n,r]=e;return`${r} (${Math.floor(Number(r)/t*100)}%) - ${n}`},C=(e,t,n,r)=>({locale:r.locale,responsive:!0,maintainAspectRatio:!1,interaction:{mode:`index`,intersect:!1},color:e.palette.text.secondary,plugins:{tooltip:{backgroundColor:e.palette.background.paper,bodyColor:e.palette.text.primary,titleColor:e.palette.text.secondary,borderColor:e.palette.primary.main,borderWidth:1,padding:10,boxPadding:5,usePointStyle:!0,position:`nearest`,itemSort:(e,t)=>{let n=[`Enabled`,`Not enabled`];return n.indexOf(e.dataset.label)-n.indexOf(t.dataset.label)},callbacks:{beforeBody:e=>`${e.reduce((e,t)=>e+t.parsed.y,0).toLocaleString(r.locale)} - Total evaluations`,label:e=>`${e.formattedValue} - ${e.dataset.label}`,afterLabel:e=>{let t=e.dataset.data[e.dataIndex];if(e.dataset.label!==`Enabled`||t.variants===void 0)return``;let{disabled:n,...r}=t.variants;return Object.entries(r).map(e=>S(e,t.y)).join(`
`)},title:e=>`Time: ${n>48?g(e[0].parsed.x,r.locale,`UTC`):_(e[0].parsed.x,r.locale)}`}},legend:{position:`top`,align:`end`,labels:{boxWidth:10,boxHeight:10,usePointStyle:!0}},title:{text:w(n),position:`top`,align:`start`,display:!0,font:{size:16,weight:`400`},color:e.palette.text.primary}},scales:{y:{type:`linear`,stacked:!0,title:{display:!0,text:`Number of requests`,color:e.palette.text.secondary},suggestedMin:0,ticks:{precision:0,color:e.palette.text.secondary},grid:{color:e.palette.divider,borderColor:e.palette.divider}},x:{type:`time`,stacked:!0,time:{unit:n>48?`day`:`hour`},grid:{display:!1},ticks:{callback:(e,t,i)=>n>48?m(i[t].value,r.locale,`UTC`):_(i[t].value,r.locale),color:e.palette.text.secondary}}}}),w=e=>e===1?`Requests in the last hour`:`Requests in the last ${v(e)}`;r.font={...r.font,family:`Sen`,size:13,weight:`400`};var T=n(),E=({metrics:e,hoursBack:t,statsSectionId:n})=>{let r=f(),{locationSettings:i}=p(),a=(0,y.useMemo)(()=>[...e].sort((e,t)=>e.timestamp.localeCompare(t.timestamp)),[e]),o=(0,y.useMemo)(()=>C(r,a,t,i),[r,a,t,i]);return(0,T.jsx)(`div`,{style:{height:400},children:(0,T.jsx)(h,{data:(0,y.useMemo)(()=>b(r,a,i),[r,a,i]),options:o,"aria-label":`A stacked bar chart showing feature flag exposure metrics: exposed and not exposed requests.`,"aria-describedby":n})})};u.register(a,d,l,o,c,i,s);export{E as FeatureMetricsChart,E as default};