PageSourceSearch

https://app.cloudavocado.com/assets/cloud-health-page-CDIoRpDP.js

js cloudavocado.com collected 2026-10-03 21:07:52 UTC 15,626 bytes, 4 lines download raw bytes

1import{e as P,a1 as r,aO as ge,b4 as _e,b5 as ve,X as M,az as fe,d as j,b6 as Y,S as J,W as F,ad as ee,o as d,f as V,w as n,s as c,h as e,i as p,j as t,l as h,n as A,g as l,k as B,F as te,r as pe,U as se,b7 as Q,aZ as oe,N as ae,q as be,x as ye,av as $e,M as K,y as He,$ as Re,a0 as Ce,b8 as ke}from"./index-DsnUaa-w.js";import{_ as we}from"./app-header.vue_vue_type_script_setup_true_lang-DpcxBFlr.js";import{F as ne}from"./feature-lock-overlay-BRbzDJK6.js";import{R as k}from"./dashboard-filter-date-interval-select.vue_vue_type_style_index_0_lang-DezfB2O4.js";import{U as G}from"./ui-card-widget-BI2ompTb.js";import{_ as L}from"./ui-help-popover.vue_vue_type_script_setup_true_lang-BGKha39k.js";import{_ as Se}from"./ui-progress-bar.vue_vue_type_script_setup_true_lang-CDPFBVwY.js";import{R as Z}from"./utils-F055CCYh.js";import{U as Ee}from"./ui-table-DLQLKtAF.js";import{D as Te}from"./dashboard-filter-controls-DlWzW0oe.js";import"./schedule-select.vue_vue_type_style_index_0_lang-BEMih8hA.js";import"./team-select.vue_vue_type_style_index_0_lang-D8wB5TE4.js";/*!
2 * CloudAvocado client application v2.1.3-patch.3 [2026-10-01T07:16:34.792Z]
3 * © 2021-2026 CloudAvocado Inc.
4 */function Me(i){const{t:u}=P(),y=r(()=>i.value<40?u("cloudHealth.status.critical"):i.value<75?u("cloudHealth.status.low"):u("cloudHealth.status.healthy")),m=r(()=>i.value<40?"danger":i.value<75?"warning":"success");return{healthStatus:y,healthVariant:m}}const le=ge(()=>{const{apiParams:i}=_e({inclusiveEndTime:!0}),u=M(0),y=M(0),m=M(0),$=M(0),g=M(0),_=M(0),H=M(0),b=M(0),R=r(()=>Math.round((_.value+H.value+b.value)/3)),[C,O]=ve(300,!0);async function w(){try{O(!0);const o=await fe.getCloudHealth(i.value);u.value=o.totalResourceCount,y.value=o.schedulableResourceCount,m.value=o.scheduledResourceCount,$.value=o.assignedResourceCount,g.value=o.taggedResourceCount,_.value=o.scheduledResourcePercent,H.value=o.assignedResourcePercent,b.value=o.taggedResourcePercent}finally{O(!1)}}return{totalResourceCount:u,schedulableResourceCount:y,scheduledResourceCount:m,assignedResourceCount:$,taggedResourceCount:g,scheduledResourcePercent:_,assignedResourcePercent:H,taggedResourcePercent:b,cloudHealthPercent:R,loadCloudHealth:w,isLoadingCloudHealth:C}}),Oe={class:"row"},Ae={class:"col-12 col-lg-4 d-flex mb-4"},De={class:"text-ca-gray-3 font-size-14 font-weight-bold d-flex align-items-center mb-3"},Ie={class:"mb-0"},ze={class:"d-flex align-items-center"},Le={class:"health-gauge"},Ne={class:"health-gauge__svg",viewBox:"0 0 120 120","aria-hidden":"true"},Pe=["stroke-dasharray"],Ue={class:"health-gauge__label"},xe={class:"health-gauge__score text-ca-gray-1"},qe={class:"health-gauge__max text-ca-gray-3 font-size-14"},Ge={class:"ml-3"},We={class:"font-size-16 font-weight-bold text-ca-gray-1 mt-1"},Fe={class:"col-12 col-lg-4 d-flex mb-4"},Ve={class:"d-flex flex-column h-100"},Be={class:"text-ca-gray-3 font-size-14 font-weight-bold d-flex align-items-center mb-2"},Qe=["title"],je={class:"text-ca-gray-3 font-size-14"},Ye={class:"text-ca-gray-3 font-size-14 mt-auto pt-3 d-flex align-items-center"},Ke={class:"col-12 col-lg-4 d-flex mb-4"},Ze={key:0,class:"d-flex flex-column h-100"},Xe={class:"quick-win-card__eyebrow text-success font-weight-bold font-size-12 mb-3"},Je={class:"d-flex align-items-start"},et={class:"h5 mb-1 quick-win-card__title"},tt={class:"quick-win-card__meta font-size-14"},st={key:1,class:"d-flex flex-column h-100"},ot={class:"quick-win-card__eyebrow text-success font-weight-bold font-size-12 mb-3"},at={class:"d-flex align-items-start"},nt={class:"h5 mb-1 quick-win-card__title"},lt={class:"quick-win-card__meta font-size-14"},ct={class:"card"},it={class:"card-body"},dt={class:"h4 mb-1"},ut={class:"text-ca-gray-3 font-size-14 mb-3 d-flex align-items-center"},rt={class:"mb-0"},ht={class:"coverage-list"},mt={class:"coverage-row__label"},gt={class:"font-weight-bold"},_t={class:"mb-0"},vt={class:"coverage-row__bar"},ft={class:"progress coverage-progress"},pt={class:"coverage-row__percent"},bt={class:"coverage-row__count text-ca-gray-3"},yt={class:"coverage-row__status d-flex align-items-center"},W=52,$t=12,X=100,Ht=75,Rt=j({__name:"cloud-health-card",setup(i){const u=2*Math.PI*W,{loadCloudHealth:y,isLoadingCloudHealth:m,cloudHealthPercent:$,totalResourceCount:g,schedulableResourceCount:_,sc
4heduledResourceCount:H,assignedResourceCount:b,taggedResourceCount:R,scheduledResourcePercent:C,assignedResourcePercent:O,taggedResourcePercent:w}=le(),{recommendations:o,ignoredRecommendations:S}=Y(),{healthStatus:U,healthVariant:I}=Me($),{t:E}=P({useScope:"global"}),a=new Set(Object.values(k)),D=r(()=>o.value.reduce((s,v)=>s+v.potentialMonthlySavings,0)),ce=r(()=>D.value*$t),ie=r(()=>`${$.value/X*u} ${u}`),T=r(()=>[...o.value].filter(v=>v.potentialMonthlySavings>0).sort((v,q)=>q.potentialMonthlySavings-v.potentialMonthlySavings)[0]??null),de=r(()=>!T.value||D.value<=0?0:T.value.potentialMonthlySavings/D.value);function ue(s){return a.has(s.recommendationType)?`cloudHealth.quickWin.action.${Q(s.recommendationType)}`:"cloudHealth.quickWin.action.default"}function re(s){return{name:oe,query:{recommendationType:s.recommendationType,includeIgnoredRecommendations:S.value.toString()}}}function x(s){return s<30?"critical":s<60?"low":"healthy"}function z(s){return s==="critical"?"danger":s==="low"?"warning":"success"}const he=r(()=>[{key:"tagged",label:E("cloudHealth.coverage.tagged"),subtitle:E("cloudHealth.coverage.tagged.subtitle"),percent:w.value,count:R.value,total:g.value,status:x(w.value)},{key:"scheduled",label:E("cloudHealth.coverage.scheduled"),subtitle:E("cloudHealth.coverage.scheduled.subtitle"),percent:C.value,count:H.value,total:_.value,status:x(C.value)},{key:"assigned",label:E("cloudHealth.coverage.assigned"),subtitle:E("cloudHealth.coverage.assigned.subtitle"),percent:O.value,count:b.value,total:g.value,status:x(O.value)}]);return J(()=>y()),(s,v)=>{const q=F("RouterLink"),me=ee("ui-tooltip");return d(),V(se,{show:l(m),rounded:""},{default:n(()=>[c(ne,{feature:"dashboards"},{default:n(()=>[e("div",Oe,[e("div",Ae,[c(G,null,{default:n(()=>[e("div",De,[p(t(s.$t("cloudHealth.healthScore"))+" ",1),c(L,null,{default:n(()=>[e("p",null,t(s.$t("cloudHealth.helpMessage.line1")),1),e("p",Ie,t(s.$t("cloudHealth.helpMessage.line2")),1)]),_:1})]),e("div",ze,[e("div",Le,[(d(),h("svg",Ne,[e("circle",{class:"health-gauge__track",cx:"60",cy:"60",r:W,fill:"none"}),e("circle",{class:A(["health-gauge__value",`text-${l(I)}`]),cx:"60",cy:"60",r:W,fill:"none","stroke-linecap":"round","stroke-dasharray":ie.value,transform:"rotate(-90 60 60)"},null,10,Pe)])),e("div",Ue,[e("span",xe,t(l($)),1),e("span",qe,t(s.$t("cloudHealth.healthScore.outOf",{max:X})),1)])]),e("div",Ge,[e("div",{class:A(["font-size-22 font-weight-bold",`text-${l(I)}`])},t(l(U)),3),e("div",We,t(s.$t("cloudHealth.healthScore.goal",{goal:Ht})),1)])])]),_:1})]),e("div",Fe,[c(G,null,{default:n(()=>[e("div",Ve,[e("div",Be,t(s.$t("cloudHealth.savingsOpportunity")),1),B((d(),h("div",{class:"h1 mb-0 font-weight-bold text-success",title:s.$n(D.value,"currency")},[p(t(s.$t("cloudHealth.recommendations.monthlySavings",{savings:s.$n(D.value,"currency:compact")})),1)],8,Qe)),[[me]]),e("div",je,t(s.$t("cloudHealth.savingsOpportunity.acrossN",{n:l(o).length},l(o).length)),1),e("div",Ye,[v[0]||(v[0]=e("i",{class:"fas fa-tag mr-2","aria-hidden":"true"},null,-1)),p(" "+t(s.$t("cloudHealth.savingsOpportunity.annualized",{savings:s.$n(ce.value,"currency")})),1)])])]),_:1})]),e("div",Ke,[c(G,{"card-class":"quick-win-card"},{default:n(()=>[T.value?(d(),h("div",Ze,[e("div",Xe,t(s.$t("cloudHealth.topQuickWin")),1),e("div",Je,[v[1]||(v[1]=e("div",{class:"quick-win-card__icon font-size-18 mr-3"},[e("i",{class:"fas fa-rocket","aria-hidden":"true"})],-1)),e("div",null,[e("h3",et,t(s.$t(ue(T.value),{n:T.value.affectedResourceCount},T.value.affectedResourceCount)),1),e("div",tt,t(s.$t("cloudHealth.topQuickWin.meta",{savings:s.$t("cloudHealth.recommendations.monthlySavings",{savings:s.$n(T.value.potentialMonthlySavings,"currency:compact")}),percent:s.$n(de.value,"percent:integer")})),1)])]),c(q,{class:"btn btn-success align-self-start mt-auto",to:re(T.value)},{default:n(()=>[p(t(s.$t("cloudHealth.topQuickWin.review"))+" → ",1)]),_:1},8,["to"])])):(d(),h("div",st,[e("div",ot,t(s.$t("cloudHealth.topQuickWin.allClear")),1),e("div",at,[v[2]||(v[2]=e("div",{class:"quick-win-card__icon font-size-18 mr-3"},[e("i",{class:"fas fa-check","aria-hidden":"true"})],-1)),e("div",null,[e("h3",nt,t(s.$t("cloudHealth.topQuickWin.allClear.title")),1),e("div",lt,t(s.$t("cloudHealth.topQuickWin.allClear.subtitle")),1)])])]))]),_:1})])]),e("div",ct,[e("div",it,[e("h2",dt,t(s.$t("cloudHealth.coverageBreakdown")),1),e("p",ut,[p(t(s.$t("cloudHealth.coverageBreakdown.subtitle"))+" ",1),c(L,null,{default:n(()=>[e("p",rt,t(s.$t("cloudHealth.helpMessage.line1")),1)]),_:1})]),e("div",ht,[(d(!0),h(te,null,pe(he.value,f=>(d(),h("div",{key:f.key,class:"coverage-row"},[e("div",mt,[e("span",gt,t(f.label),1),c(L,null,{default:n(()=>
4[e("p",_t,t(f.subtitle),1)]),_:2},1024)]),e("div",vt,[e("div",ft,[c(Se,{value:f.percent,variant:z(f.status)},null,8,["value","variant"])])]),e("div",pt,[e("span",{class:A(["font-weight-bold",`text-${z(f.status)}`])},t(s.$n(f.percent/100,"percent:integer")),3)]),e("div",bt,t(s.$t("cloudHealth.coverage.xOfY",{count:f.count,total:f.total})),1),e("div",yt,[e("span",{class:A(["coverage-dot mr-2",`bg-${z(f.status)}`])},null,2),e("span",{class:A(["font-weight-bold",`text-${z(f.status)}`])},t(s.$t(`cloudHealth.status.${f.status}`)),3)])]))),128))])])])]),_:1})]),_:1},8,["show"])}}}),Ct=ae(Rt,[["__scopeId","data-v-219577af"]]);var N=(i=>(i.COST="cost",i.UPDATES="updates",i.GOVERNANCE="governance",i))(N||{});const kt={[k.ASSIGN_SCHEDULE]:"cost",[k.RIGHTSIZE_RESOURCE]:"cost",[k.DELETE_RESOURCE]:"cost",[k.AWS_COMPUTE_OPTIMIZER]:"cost",[k.ASSIGN_TEAM]:"governance",[k.ASSIGN_TAG]:"governance",[k.EKS_PLATFORM_UPDATE]:"updates",[k.RDS_DB_ENGINE_UPDATE]:"updates",[k.AMI_DEPRECATION]:"updates"};function wt(i){return kt[i]??null}const St={class:"card"},Et={class:"card-body"},Tt={class:"d-flex flex-column flex-md-row align-items-md-center justify-content-md-between mb-3"},Mt={class:"h4 text-success font-weight-bold mb-2 mb-md-0"},Ot={class:"custom-control custom-switch"},At=["disabled"],Dt={class:"custom-control-label",for:"ignored-recommendations-switch"},It=["title","onClick"],zt={class:"font-weight-bold font-size-16"},Lt={key:0,class:"text-success font-weight-bold font-size-18"},Nt={key:1,class:"text-muted font-size-18"},Pt={class:"font-weight-bold"},Ut={key:2,class:"justify-content-end align-items-baseline mt-3 total-row"},xt={class:"font-size-18 font-weight-bold mr-2"},qt={class:"text-success font-weight-bold font-size-18 total-row__amount"},Gt=j({__name:"cloud-health-recommendations-card",setup(i){const{recommendations:u,loadRecommendations:y,isLoadingRecommendations:m,isRecommendationsEmpty:$,ignoredRecommendations:g}=Y(),{t:_}=P(),H=r(()=>u.value.reduce((o,S)=>o+S.potentialMonthlySavings,0)),b=r(()=>[{key:"_expand",label:"",class:"col-expand"},{key:"category",label:_("cloudHealth.recommendations.column.category"),class:"col-category align-middle"},{key:"recommendation",label:_("cloudHealth.recommendations.column.recommendation"),class:"col-recommendation align-middle"},{key:"savingsOpportunity",label:_("cloudHealth.recommendations.column.savingsOpportunity"),class:"col-savings text-right align-middle"},{key:"count",label:_("cloudHealth.recommendations.column.count"),class:"col-count text-right align-middle"},{key:"_actions",label:"",class:"col-actions text-right align-middle"}]),R={[N.COST]:"badge-soft-success",[N.UPDATES]:"badge-soft-warning",[N.GOVERNANCE]:"badge-soft-primary"};function C(o){return wt(o.recommendationType)}function O(o,S){return{name:oe,query:{...S,recommendationType:o.recommendationType,includeIgnoredRecommendations:g.value.toString()}}}function w(o){return o.potentialMonthlySavings>0?2:1}return J(async()=>{await y()}),(o,S)=>{const U=F("RouterLink"),I=F("I18nT"),E=ee("ui-tooltip");return d(),h("div",St,[e("div",Et,[e("div",Tt,[e("h2",Mt,[p(t(o.$t("cloudHealth.recommendations"))+" ",1),e("small",null,[c(L,null,{default:n(()=>[p(t(o.$t("cloudHealth.recommendations.helpMessage")),1)]),_:1})])]),e("div",Ot,[B(e("input",{id:"ignored-recommendations-switch","onUpdate:modelValue":S[0]||(S[0]=a=>ye(g)?g.value=a:null),type:"checkbox",class:"custom-control-input",disabled:l(m)},null,8,At),[[be,l(g)]]),e("label",Dt,t(o.$t("cloud.recommendations.includeIgnored")),1)])]),c(se,{show:l(m),class:"mb-4",opacity:"1",rounded:""},{default:n(()=>[c(ne,{feature:"dashboards"},{default:n(()=>[l($)?(d(),V($e,{key:0,variant:"positive"},{title:n(()=>[p(t(o.$t("cloudHealth.recommendations.healthyResource")),1)]),subtitle:n(()=>[p(t(o.$t("cloudHealth.noRecommendations")),1)]),_:1})):(d(),V(Ee,{key:1,columns:b.value,data:l(u),busy:l(m),responsive:""},{"cell(_expand)":n(a=>[B((d(),h("button",{type:"button",class:"btn btn-link btn--list-action py-2 pr-3 pl-0",title:a.detailsShowing?o.$t("cloudHealth.recommendations.hideDetails"):o.$t("cloudHealth.recommendations.showDetail
4s"),onClick:He(a.toggleDetails,["stop"])},[e("i",{"aria-hidden":"true",class:A(["fas",a.detailsShowing?"fa-chevron-up":"fa-chevron-down"])},null,2)],8,It)),[[E]])]),"cell(category)":n(a=>[C(a.item)?(d(),h("span",{key:0,class:A(["badge badge-pill font-size-13 px-3 py-2",R[C(a.item)]])},t(o.$t(`cloudHealth.recommendations.category.${C(a.item)}`)),3)):K("",!0)]),"cell(recommendation)":n(a=>[e("span",zt,t(o.$t(`cloud.recommendation.${l(Q)(a.item.recommendationType)}`,{n:w(a.item)})),1)]),"cell(savingsOpportunity)":n(a=>[a.item.potentialMonthlySavings>0?(d(),h("span",Lt,t(o.$t("cloudHealth.recommendations.monthlySavings",{savings:o.$n(a.item.potentialMonthlySavings,"currency:compact")})),1)):(d(),h("span",Nt,"—"))]),"cell(count)":n(a=>[p(t(o.$t("cloudHealth.recommendations.resourceCount",{n:a.item.affectedResourceCount},a.item.affectedResourceCount)),1)]),"cell(_actions)":n(a=>[c(U,{class:"btn btn-sm btn-primary",to:O(a.item,o.$route.query)},{default:n(()=>[p(t(o.$t("cloudHealth.recommendations.view")),1)]),_:1},8,["to"])]),"row-details":n(a=>[c(I,{class:"text-muted recommendation-description",keypath:`cloudHealth.recommendation.${l(Q)(a.item.recommendationType)}`,tag:"div",plural:w(a.item)},{n:n(()=>[p(t(w(a.item)),1)]),potentialMonthlySavings:n(()=>[e("span",Pt,t(o.$n(a.item.potentialMonthlySavings,"currency:compact")),1)]),teamTag:n(()=>[e("code",null,t(l(Z).TEAM)+": "+t("team-name"),1)]),scheduleTag:n(()=>[e("code",null,t(l(Z).SCHEDULE)+": "+t("schedule-id"),1)]),_:2},1032,["keypath","plural"])]),_:1},8,["columns","data","busy"])),H.value>0?(d(),h("div",Ut,[e("span",xt,t(o.$t("cloudHealth.recommendations.total")),1),e("span",qt,t(o.$t("cloudHealth.recommendations.monthlySavings",{savings:o.$n(H.value,"currency:compact")})),1)])):K("",!0)]),_:1})]),_:1},8,["show"])])])}}}),Wt=ae(Gt,[["__scopeId","data-v-0307696c"]]),Ft={class:"row mb-4"},Vt={class:"col"},as=j({__name:"cloud-health-page",setup(i){function u(){const{t:b}=P(),R=r(()=>b("cloudHealth")),C=r(()=>[{text:b("cloudHealth"),to:{name:ke}}]);return Re({title:R}),Ce({title:R}),{title:R,breadcrumbs:C}}const{loadCloudHealth:y,isLoadingCloudHealth:m}=le(),{loadRecommendations:$,isLoadingRecommendations:g}=Y(),{breadcrumbs:_}=u();async function H(){await Promise.all([y(),$()])}return(b,R)=>(d(),h(te,null,[c(we,{breadcrumbs:l(_)},null,8,["breadcrumbs"]),e("div",Ft,[e("div",Vt,[c(Te,{disabled:l(m)||l(g),onFilterChanged:H},null,8,["disabled"])])]),c(Ct),c(Wt)],64))}});export{as as default};

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.