Files
yakpanel-core/YakPanel-server/frontend/dist/assets/DockerPage-DyZ77ivO.js
2026-04-07 10:03:25 +05:30

2 lines
6.2 KiB
JavaScript

import{r as t,j as e,$ as H,a0 as M,a1 as O,a2 as W,M as j}from"./index-Cvh4tLHo.js";import{M as o}from"./Modal-CCihVZTY.js";import{A as G}from"./AdminAlert-Bt3L8_zJ.js";import{A as d}from"./AdminButton-BKglG8kI.js";import{A}from"./AdminTable-BQ5Lf7EC.js";import{E as J}from"./EmptyState-D6lCh4WN.js";import{P as _}from"./PageHeader-D6k34vvM.js";function p({show:m}){return m?e.jsx("span",{className:"spinner-border spinner-border-sm",role:"status"}):null}function ee(){const[m,E]=t.useState([]),[f,T]=t.useState([]),[$,g]=t.useState(!0),[b,n]=t.useState(""),[i,r]=t.useState(null),[z,c]=t.useState(!1),[u,x]=t.useState(""),[N,y]=t.useState(""),[S,v]=t.useState(""),[k,C]=t.useState(!1),[h,R]=t.useState(""),[P,w]=t.useState(!1),l=()=>{g(!0),Promise.all([H(),M()]).then(([s,a])=>{E(s.containers||[]),T(a.images||[]),n(s.error||a.error||"")}).catch(s=>n(s.message)).finally(()=>g(!1))};t.useEffect(()=>{l()},[]);const D=s=>{r(s),j(`/docker/${s}/start`,{method:"POST"}).then(l).catch(a=>n(a.message)).finally(()=>r(null))},F=s=>{r(s),j(`/docker/${s}/stop`,{method:"POST"}).then(l).catch(a=>n(a.message)).finally(()=>r(null))},L=s=>{r(s),j(`/docker/${s}/restart`,{method:"POST"}).then(l).catch(a=>n(a.message)).finally(()=>r(null))},I=s=>s.toLowerCase().startsWith("up")||s.toLowerCase().includes("running"),q=s=>{s.preventDefault(),u.trim()&&(C(!0),W(u.trim(),N.trim()||void 0,S.trim()||void 0).then(()=>{c(!1),x(""),y(""),v(""),l()}).catch(a=>n(a.message)).finally(()=>C(!1)))},B=()=>{h.trim()&&(w(!0),O(h.trim()).then(()=>{R(""),l()}).catch(s=>n(s.message)).finally(()=>w(!1)))};return $?e.jsxs(e.Fragment,{children:[e.jsx(_,{title:"Docker"}),e.jsx("p",{className:"text-secondary",children:"Loading…"})]}):e.jsxs(e.Fragment,{children:[e.jsx(_,{title:"Docker",actions:e.jsxs("div",{className:"d-flex flex-wrap align-items-center gap-2",children:[e.jsxs("div",{className:"d-flex gap-1 align-items-center",children:[e.jsx("input",{value:h,onChange:s=>R(s.target.value),placeholder:"nginx:latest",className:"form-control form-control-sm",style:{width:"10rem"}}),e.jsxs(d,{variant:"warning",size:"sm",onClick:B,disabled:P||!h.trim(),children:[P?e.jsx(p,{show:!0}):e.jsx("i",{className:"ti ti-download me-1","aria-hidden":!0}),"Pull"]})]}),e.jsxs(d,{variant:"primary",size:"sm",onClick:()=>c(!0),children:[e.jsx("i",{className:"ti ti-plus me-1","aria-hidden":!0}),"Run Container"]}),e.jsxs(d,{variant:"secondary",size:"sm",onClick:l,children:[e.jsx("i",{className:"ti ti-rotate-clockwise me-1","aria-hidden":!0}),"Refresh"]})]})}),e.jsxs(o,{show:z,onHide:()=>c(!1),centered:!0,children:[e.jsx(o.Header,{closeButton:!0,children:e.jsx(o.Title,{children:"Run Container"})}),e.jsxs("form",{onSubmit:q,children:[e.jsxs(o.Body,{children:[e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:"Image"}),e.jsx("input",{value:u,onChange:s=>x(s.target.value),placeholder:"nginx:latest",className:"form-control",required:!0})]}),e.jsxs("div",{className:"mb-3",children:[e.jsx("label",{className:"form-label",children:"Name (optional)"}),e.jsx("input",{value:N,onChange:s=>y(s.target.value),placeholder:"my-nginx",className:"form-control"})]}),e.jsxs("div",{className:"mb-0",children:[e.jsx("label",{className:"form-label",children:"Ports (optional, e.g. 80:80 or 8080:80)"}),e.jsx("input",{value:S,onChange:s=>v(s.target.value),placeholder:"80:80",className:"form-control"})]})]}),e.jsxs(o.Footer,{children:[e.jsx(d,{type:"button",variant:"secondary",onClick:()=>c(!1),children:"Cancel"}),e.jsx(d,{type:"submit",variant:"primary",disabled:k,children:k?"Starting…":"Run"})]})]})]}),b?e.jsx(G,{variant:"warning",className:"mb-3",children:b}):null,e.jsx("div",{className:"card",children:e.jsxs(A,{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Container"}),e.jsx("th",{children:"Image"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Ports"}),e.jsx("th",{className:"text-end",children:"Actions"})]})}),e.jsx("tbody",{children:m.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:5,className:"p-0",children:e.jsx(J,{title:"No containers",description:"Install Docker and run some containers."})})}):m.map(s=>e.jsxs("tr",{children:[e.jsx("td",{className:"font-monospace small",children:s.names||s.id}),e.jsx("td",{children:s.image}),e.jsx("td",{children:e.jsx("span",{className:I(s.status)?"text-success":"text-secondary",children:s.status})}),e.jsx("td",{className:"small text-truncate",style:{maxWidth:200},children:s.ports||"—"}),e.jsx("td",{className:"text-end",children:e.jsx("span",{className:"d-inline-flex gap-1 justify-content-end",children:I(s.status)?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"btn btn-link btn-sm text-warning p-1",title:"Restart",disabled:i===s.id_full,onClick:()=>L(s.id_full),children:i===s.id_full?e.jsx(p,{show:!0}):e.jsx("i",{className:"ti ti-rotate-clockwise","aria-hidden":!0})}),e.jsx("button",{type:"button",className:"btn btn-link btn-sm text-danger p-1",title:"Stop",disabled:i===s.id_full,onClick:()=>F(s.id_full),children:e.jsx("i",{className:"ti ti-square","aria-hidden":!0})})]}):e.jsx("button",{type:"button",className:"btn btn-link btn-sm text-success p-1",title:"Start",disabled:i===s.id_full,onClick:()=>D(s.id_full),children:i===s.id_full?e.jsx(p,{show:!0}):e.jsx("i",{className:"ti ti-player-play","aria-hidden":!0})})})})]},s.id))})]})}),e.jsx("h2",{className:"h5 mt-4 mb-3",children:"Images"}),e.jsx("div",{className:"card",children:f.length===0?e.jsx("div",{className:"card-body",children:e.jsx("p",{className:"text-secondary text-center mb-0",children:"No images. Pull one above."})}):e.jsxs(A,{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Repository"}),e.jsx("th",{children:"Tag"}),e.jsx("th",{children:"Size"}),e.jsx("th",{className:"text-end",children:"Action"})]})}),e.jsx("tbody",{children:f.map(s=>e.jsxs("tr",{children:[e.jsx("td",{className:"font-monospace",children:s.repository}),e.jsx("td",{children:s.tag}),e.jsx("td",{children:s.size}),e.jsx("td",{className:"text-end",children:e.jsx("button",{type:"button",className:"btn btn-link btn-sm text-primary p-1",title:"Run",onClick:()=>{x(`${s.repository}:${s.tag}`),c(!0)},children:e.jsx("i",{className:"ti ti-player-play","aria-hidden":!0})})})]},s.id))})]})})]})}export{ee as DockerPage};