PageSourceSearch

https://zop.dev/zopnight/app/assets/JobsPage-BNmvaxcz.js

js zop.dev collected 2026-10-03 19:47:52 UTC 13,332 bytes, 1 lines download raw bytes

1import{p as ee,r as h,j as s}from"./react-vendor-xjz46aeH.js";import{aa as F,ai as K,aj as se,S as te,E as H,v as E,ab as ae,a7 as ne,D as _}from"./index-DB-GErVi.js";import{D as I}from"./DataTable-DHou1xit.js";import{E as ce}from"./ErrorState-DlvwccLP.js";import{h as S}from"./GenericResourcePage-BoVTuzy8.js";import{P as z}from"./Pagination-CrLnsmAm.js";import{L as re}from"./LiveBadge-D9T7SBmG.js";import{R as le}from"./ResourceSearchInput-CjzG8RxE.js";import{g as oe}from"./tanstack-vendor-CK-H18W-.js";import"./sentry-vendor-B7Zxq--p.js";import"./useDebouncedValue-BGg0Nx9L.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};e.SENTRY_RELEASE={id:"53c0c37b9d0458a05694e8ed0430da9c4ec6eaca"};var c=new e.Error().stack;c&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[c]="f9b6f56c-660c-498e-9bec-0960b245fbe8",e._sentryDebugIdIdentifier="sentry-dbid-f9b6f56c-660c-498e-9bec-0960b245fbe8")}catch{}})();const d=oe(),V={Complete:"success",Running:"info",Failed:"danger"};function o({label:e,children:c}){return s.jsxs("div",{className:"bg-surface-secondary rounded px-3 py-2.5",children:[s.jsx("span",{className:"text-[10px] uppercase tracking-wider text-text-muted font-medium block mb-0.5",children:e}),s.jsx("div",{className:"text-sm font-medium text-text-primary",children:c})]})}function ie({job:e,clusterResId:c,onClose:n}){const r=e.name||e.Name||"",p=e.namespace||e.Namespace||"",g=(e.succeeded??e.Succeeded)>0?"Complete":(e.failed??e.Failed)>0?"Failed":"Running",b=`${e.succeeded??e.Succeeded??0}/${e.completions??e.Completions??1}`,v=e.parallelism??e.Parallelism??1,C=S(e.creationTime||e.CreationTime),T=(()=>{const t=e.startTime||e.StartTime,l=e.completionTime||e.CompletionTime;if(!t)return"-";if(!l)return"running";const i=Math.floor((new Date(l)-new Date(t))/1e3);return i<60?`${i}s`:`${Math.floor(i/60)}m${i%60}s`})(),m=e.active??e.Active??0,w=e.succeeded??e.Succeeded??0,f=e.failed??e.Failed??0,N=e.labels??e.Labels??{},{data:j}=ae(c,p),y=h.useMemo(()=>{const t=j?.items??[],l=e.selector??e.Selector??e.matchLabels??{},i=l.matchLabels??l,D=Object.entries(i);return D.length===0?t.filter(J=>(J.name||"").startsWith(r+"-")):t.filter(J=>{const P=J.labels||J.Labels||{};return D.every(([$,L])=>P[$]===L)})},[j,r,e]),{data:a}=ne(c,p),u=h.useMemo(()=>(a?.items??(Array.isArray(a)?a:[])).filter(l=>l.object?.includes(r)),[a,r]);return s.jsx(_,{open:!0,onClose:n,title:r,half:!0,children:s.jsxs("div",{className:"space-y-6",children:[s.jsx("div",{className:"flex items-center justify-between",children:s.jsx("span",{className:"text-xs text-text-muted",children:p})}),s.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[s.jsx(o,{label:"Status",children:s.jsx(E,{variant:V[g]??"neutral",size:"sm",children:g})}),s.jsx(o,{label:"Completions",children:s.jsx("span",{className:"font-mono",children:b})}),s.jsx(o,{label:"Parallelism",children:s.jsx("span",{className:"font-mono",children:v})}),s.jsx(o,{label:"Duration",children:T}),s.jsx(o,{label:"Age",children:C}),s.jsx(o,{label:"Active/Succeeded/Failed",children:s.jsxs("span",{className:"font-mono",children:[m,"/",w,"/",f]})})]}),e.startTime&&s.jsx(o,{label:"Start Time",children:s.jsx("span",{className:"font-mono text-xs",children:new Date(e.startTime||e.StartTime).toLocaleString()})}),y.length>0&&s.jsxs("div",{children:[s.jsx("h4",{className:"text-sm font-semibold text-text-primary mb-2",children:"Pods"}),s.jsx("div",{className:"space-y-2",children:y.map(t=>s.jsxs("div",{className:"flex items-center justify-between bg-surface-secondary rounded-lg px-3 py-2",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:`w-2 h-2 rounded-full ${t.status==="Running"?"bg-success-500":t.status==="Succeeded"?"bg-primary-500":"bg-warning-500"}`}),s.jsx("span",{className:"text-xs font-mono text-text-primary",children:t.name})]}),s.jsx(E,{variant:t.status==="Running"?"info":t.status==="Succeeded"?"success":"warning",size:"sm",children:t.status})]},t.name))})]}),Object.keys(N).length>0&&s.jsxs("div",{children:[s.jsx("h4",{className:"text-sm font-semibold text-text-primary mb-2",children:"Labels"}),s.jsx("div",{className:"border border-border rounded overflow-hidden",children:s.jsx("table",{className:"w-full text-xs",children:s.jsx("tbody",{children:Object.entries(N).map(([t,l],i)=>s.jsxs("tr",{className:i%2?"bg-surface-secondary/30":"",children:[s.jsx("td",{className:"px-3 py-2 font-mono text-text-primary",children:t}),s.jsx("td",{className:"py-2 text-text-muted w-4 text-center",children:"|"}),s.jsx("td",{className:"px-3 py-2 text-text-secondary",children:String(l)}
1)]},t))})})})]}),s.jsxs("div",{children:[s.jsx("h4",{className:"text-sm font-semibold text-text-primary mb-2",children:"Events"}),u.length>0?s.jsx("div",{className:"space-y-2",children:u.map((t,l)=>s.jsxs("div",{className:`border-l-2 pl-3 py-1.5 ${t.type==="Warning"?"border-warning-400":"border-success-400"}`,children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:`text-xs font-medium ${t.type==="Warning"?"text-warning-700":"text-success-700"}`,children:t.reason}),t.count>1&&s.jsxs("span",{className:"text-xs text-text-muted",children:["x",t.count]}),t.age&&s.jsx("span",{className:"text-xs text-text-muted",children:t.age})]}),t.message&&s.jsx("p",{className:"text-xs text-text-secondary mt-0.5",children:t.message})]},l))}):s.jsx("p",{className:"text-xs text-text-muted",children:"No events"})]})]})})}function de({cj:e,clusterResId:c,onClose:n}){const r=e.name||e.Name||"",p=e.namespace||e.Namespace||"",g=e.schedule||e.Schedule||"",b=e.suspended??e.Suspended??!1,v=e.activeJobs??e.ActiveJobs??0,C=e.lastScheduleTime?S(e.lastScheduleTime||e.LastScheduleTime):"-",T=S(e.creationTime||e.CreationTime),m=e.concurrencyPolicy||e.ConcurrencyPolicy||"Allow",w=e.successfulJobsHistoryLimit??3,f=e.failedJobsHistoryLimit??1,N=e.containers??e.Containers??[],{data:j}=K(c,p),y=h.useMemo(()=>(j?.items??[]).filter(u=>(u.name||u.Name||"").startsWith(r+"-")).slice(0,10),[j,r]);return s.jsx(_,{open:!0,onClose:n,title:r,half:!0,children:s.jsxs("div",{className:"space-y-6",children:[s.jsx("div",{className:"flex items-center justify-between",children:s.jsx("span",{className:"text-xs text-text-muted",children:p})}),s.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[s.jsx(o,{label:"Schedule",children:s.jsx("span",{className:"font-mono",children:g})}),s.jsx(o,{label:"Suspended",children:s.jsx("span",{className:b?"text-warning-600":"text-success-600",children:b?"Yes":"No"})}),s.jsx(o,{label:"Active Jobs",children:s.jsx("span",{className:"font-mono",children:v})}),s.jsx(o,{label:"Last Scheduled",children:C}),s.jsx(o,{label:"Age",children:T}),s.jsx(o,{label:"Concurrency",children:m}),s.jsx(o,{label:"Success History",children:s.jsx("span",{className:"font-mono",children:w})}),s.jsx(o,{label:"Failed History",children:s.jsx("span",{className:"font-mono",children:f})})]}),N.length>0&&s.jsxs("div",{children:[s.jsx("h4",{className:"text-sm font-semibold text-text-primary mb-2",children:"Container Spec"}),s.jsx("div",{className:"space-y-2",children:N.map(a=>s.jsx("div",{className:"bg-surface-secondary rounded-lg p-2.5",children:s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"w-2 h-2 rounded-full bg-success-500"}),s.jsx("span",{className:"text-xs font-medium text-text-primary",children:a.name||a.Name}),(a.image||a.Image)&&s.jsx("span",{className:"text-[10px] text-text-muted font-mono truncate",children:a.image||a.Image})]})},a.name||a.Name))})]}),y.length>0&&s.jsxs("div",{children:[s.jsx("h4",{className:"text-sm font-semibold text-text-primary mb-2",children:"Recent Jobs"}),s.jsx("div",{className:"space-y-1.5",children:y.map(a=>{const u=a.name||a.Name||"",t=(a.succeeded??a.Succeeded)>0?"Complete":(a.failed??a.Failed)>0?"Failed":"Running",l=S(a.creationTime||a.CreationTime);return s.jsxs("div",{className:"flex items-center justify-between bg-surface-secondary rounded-lg px-3 py-2",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"text-xs font-mono text-text-primary",children:u}),s.jsx("span",{className:"text-[10px] text-text-muted",children:l})]}),s.jsx(E,{variant:V[t]??"neutral",size:"sm",children:t})]},u)})})]})]})})}const me=[d.accessor(e=>e.name||e.Name||"",{id:"name",header:"Name",meta:{sortable:!0},enableSorting:!0,cell:e=>s.jsx("span",{className:"text-xs font-medium text-text-primary",children:e.getValue()})}),d.accessor(e=>e.namespace||e.Namespace||"",{id:"namespace",header:"Namespace",meta:{sortable:!0},enableSorting:!0,cell:e=>s.jsx("span",{className:"text-xs text-text-secondary",children:e.getValue()})}),d.accessor(e=>(e.succeeded??e.Succeeded)>0?"Complete":(e.failed??e.Failed)>0?"Failed":"Running",{id:"status",header:"Status",meta:{sortable:!0},enableSorting:!0,cell:e=>s.jsx(E,{variant:V[e.getValue()]??"neutral",size:"sm",children:e.getValue()})}),d.accessor(e=>`${e.succeeded??e.Succeeded??0}/${e.completions??e.Completions??1}`,{id:"completions",header:"Completions",cell:e=>s.jsx("span",{className:"text-xs font-mono",children:e.getValue()})}),d.accessor(e=>{const c=e.startTime||e.StartTime,n=e.completionTime||e.CompletionTime;if(!c)return"-";if(!n)return"running";const r=Math.floor((new Date(n)-new Date(c))/1e3);return r<60?`${r}s`:`${Math.floor(r/60)}m${r%60}s`},{id:"duration",header:"Duration",cell:e=>s.jsx("span",{className:"text-xs text-text-secondary",children:e.getValue()})}),d.accessor(e=>S(e.creationTime||e.CreationTime),{id:"age",header:"Age",meta:{sortable:!0},enableSorting:!0,cell:e=>s.jsx("span",{className:"text-xs text-text-secondary",children:e.getValue()})})],xe=[d.accessor(e=>
1e.name||e.Name||"",{id:"name",header:"Name",meta:{sortable:!0},enableSorting:!0,cell:e=>s.jsx("span",{className:"font-medium text-text-primary text-xs truncate max-w-[200px] block",children:e.getValue()})}),d.accessor(e=>e.namespace||e.Namespace||"",{id:"namespace",header:"Namespace",meta:{sortable:!0},enableSorting:!0,cell:e=>s.jsx("span",{className:"text-xs text-text-secondary",children:e.getValue()})}),d.accessor(e=>e.schedule||e.Schedule||"",{id:"schedule",header:"Schedule",cell:e=>s.jsx("span",{className:"text-xs font-mono text-text-secondary",children:e.getValue()})}),d.accessor(e=>e.suspended??e.Suspended?"Yes":"No",{id:"suspended",header:"Suspended",meta:{sortable:!0},enableSorting:!0,cell:e=>s.jsx("span",{className:`text-xs ${e.getValue()==="Yes"?"text-warning-600":"text-primary-600"}`,children:e.getValue()})}),d.accessor(e=>e.activeJobs??e.ActiveJobs??0,{id:"active",header:"Active",cell:e=>s.jsx("span",{className:"text-xs font-mono",children:e.getValue()})}),d.accessor(e=>e.lastScheduleTime?S(e.lastScheduleTime||e.LastScheduleTime):"-",{id:"lastSchedule",header:"Last Schedule",cell:e=>s.jsx("span",{className:"text-xs text-text-secondary",children:e.getValue()})}),d.accessor(e=>S(e.creationTime||e.CreationTime),{id:"age",header:"Age",meta:{sortable:!0},enableSorting:!0,cell:e=>s.jsx("span",{className:"text-xs text-text-secondary",children:e.getValue()})})];function Ce(){const{clusterResId:e,namespace:c}=ee(),[n,r]=h.useState("Jobs"),[p,g]=h.useState([]),[b,v]=h.useState(null),[C,T]=h.useState(null),[m,w]=h.useState(""),{page:f,currentToken:N,goNext:j,goPrev:y}=F([c,m]),{page:a,currentToken:u,goNext:t,goPrev:l}=F([c,m]),{data:i,isLoading:D,isError:J,error:P,refetch:$}=K(e,c,{continue:N,search:n==="Jobs"?m:""}),{data:L,isLoading:G,isError:O,error:W,refetch:Y}=se(e,c,{continue:u,search:n==="CronJobs"?m:""}),M=i?.hasMore??!1,B=i?.continue??"",k=L?.hasMore??!1,q=L?.continue??"",A=h.useMemo(()=>i?.items??[],[i]),R=h.useMemo(()=>L?.items??[],[L]),Q=n==="Jobs"?D:G,U=n==="Jobs"?J:O,X=n==="Jobs"?P:W,Z=n==="Jobs"?$:Y;return s.jsxs("div",{className:"space-y-4",children:[s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsx("div",{className:"flex items-center gap-3",children:["Jobs","CronJobs"].map(x=>s.jsx("button",{onClick:()=>{r(x),g([]),w("")},className:`px-4 py-1.5 text-sm font-medium rounded-lg transition-colors ${n===x?"bg-primary-600 text-white":"bg-surface-secondary text-text-secondary hover:text-text-primary"}`,children:x},x))}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(le,{onChange:w,placeholder:`Search ${n.toLowerCase()}…`},n),s.jsx(re,{})]})]}),Q?s.jsx("div",{className:"flex justify-center py-16",children:s.jsx(te,{})}):U?s.jsx(ce,{error:X,onRetry:Z}):n==="Jobs"?A.length===0?s.jsx(H,{message:m?`No jobs match “${m}”.`:"No jobs in the selected namespace."}):s.jsxs(s.Fragment,{children:[s.jsx(I,{data:A,columns:me,onRowClick:x=>v(x),sorting:p,onSortingChange:g,manualSorting:!1}),(f>1||M)&&s.jsx(z,{page:f,hasMore:M,count:A.length,pageSize:50,label:"jobs",onPageChange:x=>x>f?j(B):y()})]}):R.length===0?s.jsx(H,{message:m?`No cronjobs match “${m}”.`:"No cronjobs in the selected namespace."}):s.jsxs(s.Fragment,{children:[s.jsx(I,{data:R,columns:xe,onRowClick:x=>T(x),sorting:p,onSortingChange:g,manualSorting:!1}),(a>1||k)&&s.jsx(z,{page:a,hasMore:k,count:R.length,pageSize:50,label:"cronjobs",onPageChange:x=>x>a?t(q):l()})]}),b&&s.jsx(ie,{job:b,clusterResId:e,onClose:()=>v(null)}),C&&s.jsx(de,{cj:C,clusterResId:e,onClose:()=>T(null)})]})}export{Ce 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.