unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
2 lines (1 loc) • 2.1 kB
JavaScript
import{s as h,L as f,j as n,b5 as m,bh as p,ca as y,r as d,bl as v,bj as g,aB as b,bk as k,b0 as x}from"./index-DEkgmbaI.js";const E=h(f)(({theme:a})=>({textDecoration:"none",color:a.palette.primary.main,fontWeight:a.fontWeight.bold})),w=({isOpen:a,onClose:r,features:e,project:t})=>n.jsxs(m,{title:"You can't archive a feature that other features depend on",open:a,primaryButtonText:"OK",onClick:r,children:[n.jsx("p",{children:"The following features depend on your feature:"}),n.jsx("ul",{children:e.map(s=>n.jsx("li",{children:n.jsx(E,{to:`/projects/${t}/features/${s}`,target:"_blank",rel:"noopener noreferrer",children:s})},s))})]}),F=p("api/admin/client-metrics/features"),A=(a,r)=>{const e=p(`api/admin/client-metrics/features/${a}/raw?hoursBack=${r}`),{data:t,error:s}=y(e,()=>L(e)),o=d.useCallback(()=>{v(F).catch(console.warn)},[]);return{featureMetrics:t==null?void 0:t.data,loading:!s&&!t,refetchFeatureMetrics:o,error:s}},L=a=>fetch(a).then(g("Features")).then(r=>r.json()).then(),M=48,T=({hoursBack:a,setHoursBack:r,label:e="Period"})=>{const{trackEvent:t}=b(),s=i=>{r(Number.parseInt(i)),t("feature-metrics",{props:{eventType:"change-period",hoursBack:i}})},{isEnterprise:o}=k(),l=o()?[...u,...R]:u,c=l.map(i=>Number(i.key)).includes(a)?a:M;return d.useEffect(()=>{a!==c&&r(c)},[a]),n.jsx("div",{children:n.jsx(x,{name:"feature-metrics-period",label:e,id:"feature-metrics-period",options:l,value:String(c),onChange:s,fullWidth:!0})})},u=[{key:"1",label:"Last hour"},{key:"24",label:"Last 24 hours"},{key:"48",label:"Last 48 hours"}],R=[{key:`${7*24}`,label:"Last 7 days"},{key:`${30*24}`,label:"Last 30 days"},{key:`${90*24}`,label:"Last 90 days"}],$=a=>{const r=new Map;return a.forEach(e=>{let t=r.get(e.timestamp);if(t||(t={...e,yes:0,no:0,variants:{}},r.set(e.timestamp,t)),t.yes+=e.yes,t.no+=e.no,e.variants){t.variants=t.variants||{};for(const[s,o]of Object.entries(e.variants))t.variants[s]=(t.variants[s]||0)+o}}),Array.from(r.values()).map(e=>({...e,variants:e.variants&&Object.keys(e.variants).length===0?void 0:e.variants}))};export{w as F,M as a,$ as b,T as c,A as u};