1import{d as L,u as O,bF as P,a as l,r as h,v as q,w as W,j as s,s as v,o,q as A,l as n,k as Y,n as J,p as m,m as w,F as K,x as Q,bU as X,W as Z}from"./DZ7mik94.js";const aa={key:0,class:"availability-header"},ea={class:"min-w-0"},ta={class:"availability-title"},la={key:1,class:"availability-detail-row"},ia={class:"availability-detail-time w-[100px]"},sa={class:"availability-detail-rate"},oa=["aria-label"],na=["title","onMouseenter"],ra={key:2,class:"availability-compact-summary"},ua={key:0,class:"availability-compact-rate"},ca={class:"availability-compact-rate"},da={key:3,class:"availability-footer"},va=L({__name:"ModelAvailabilityGrid",props:{modelId:{},modelName:{},modelStatus:{},availabilityHidden:{type:Boolean,default:!1},compact:{type:Boolean,default:!1},showTitle:{type:Boolean,default:!0}},setup(u){const y=u,{t:b,locale:H}=O(),I=P(),S=l(()=>!I.isAvailabilityGridEnabled),f=h(!1),c=h(null),i=h(!1),g=l(()=>y.modelId||y.modelName||""),D=()=>{const a=new Date;return a.setUTCMinutes(0,0,0),Array.from({length:24},(t,r)=>{const e=new Date(a.getTime()-(23-r)*60*60*1e3);return{hour:`${e.getUTCFullYear()}-${String(e.getUTCMonth()+1).padStart(2,"0")}-${String(e.getUTCDate()).padStart(2,"0")}-${String(e.getUTCHours()).padStart(2,"0")}`,success_rate:1}})},N=a=>{const t=a.split("-").map(Number);return(t[0]??0)*1e6+(t[1]??0)*1e4+(t[2]??0)*100+(t[3]??0)},U=a=>{const t=D(),r=new Map((a||[]).filter(e=>e?.hour).map(e=>[e.hour,e]));return t.map(e=>r.get(e.hour)||e).sort((e,p)=>N(e.hour)-N(p.hour))},M=l(()=>U(c.value?.hourly_slots)),k=l(()=>{const a=Number(c.value?.overall_success_rate);return Number.isFinite(a)?a:1}),B=l(()=>`${(k.value*100).toFixed(k.value===1?0:1)}%`),G=l(()=>{const a=M.value;return a.length>0?a[a.length-1]:null}),R=l(()=>d.value?"-":f.value?"...":B.value);l(()=>i.value?b("model_detail.availability.unavailable"):b("model_detail.availability.window"));const C=async()=>{if(!(S.value||!g.value||d.value)){f.value=!0,i.value=!1;try{c.value=await X.getModelAvailability(g.value,y.modelName),c.value||(i.value=!0)}catch{i.value=!0,c.value=null}finally{f.value=!1}}},E=a=>{const[t,r,e,p]=a.split("-").map(Number);return new Date(Date.UTC(t||1970,(r||1)-1,e||1,p||0))},T=a=>E(a).toLocaleString(H.value,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}),V=a=>{const t=`${(Number(a.success_rate||0)*100).toFixed(a.success_rate===1?0:1)}%`;return`${T(a.hour)} · ${t}`},j=a=>{if(d.value||i.value)return"availability-cell--unknown";const t=Number(a.success_rate||0);return t>=.98?"availability-cell--excellent":t>=.9?"availability-cell--good":t>=.85?"availability-cell--watch":t>=.7?"availability-cell--degraded":t>=.5?"availability-cell--warning":"availability-cell--down"},d=l(()=>{if(y.availabilityHidden)return!0;const a=y.modelStatus;return a===1||a===2}),x=h(null),_=l(()=>x.value||G.value),F=l(()=>!_.value||i.value?"":T(_.value.hour)),$=l(()=>{if(d.value||i.value)return"-";if(!_.value)return R.value;const a=Number(_.value.success_rate||0);return`${(a*100).toFixed(a>=.995?0:1)}%`}),z=a=>{x.value=a};return q(C),W(g,()=>{c.value=null,C()}),(a,t)=>{const r=J;return S.value?v("",!0):(o(),s("div",{key:0,class:A(["availability",{"availability--compact":u.compact}])},[u.showTitle?(o(),s("div",aa,[n("div",ea,[n("div",ta,[Y(r,{name:"lucide:signal",class:"h-3.5 w-3.5"}),n("span",null,m(w(b)("model_detail.availability.title")),1)])])])):v("",!0),u.compact?v("",!0):(o(),s("div",la,[n("span",ia,m(F.value),1),n("span",sa,m($.value),1)])),n("div",{class:"availability-grid","aria-label":w(b)("model_detail.availability.title")},[(o(!0),s(K,null,Q(M.value,e=>(o(),s("span",{key:e.hour,class:A(["availability-cell",j(e)]),title:V(e),onMouseenter:p=>z(e)},null,42,na))),128))],8,oa),u.compact?(o(),s("div",ra,[_.value&&!d.value?(o(),s("span",ua,m(F.value),1)):v("",!0),n("span",ca,m(d.value||i.value?"-":$.value),1)])):v("",!0),u.compact?v("",!0):(o(),s("div",da,[n("span",null,m(w(b)("model_detail.availability.window")),1)]))],2))}}}),ya=Object.assign(Z(va,[["__scopeId","data-v-96d00e71"]]),{__name:"PagesModelsModelAvailabilityGrid"});export{ya as M};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.