- Settings.jsx: pridany admin-card-body + admin-table-responsive - CompanySettings.jsx: admin-table-wrapper -> admin-table-responsive - zadny admin-table-wrapper v JSX nezbyva Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2 lines
9.2 KiB
JavaScript
2 lines
9.2 KiB
JavaScript
import{j as e,m as p,A as $}from"./vendor-animation-0s3FMHwK.js";import{r as t}from"./vendor-react-BVs3cwbi.js";import{a as L,u as Z,c as x,b as O,f as z,F as j,C as B}from"./index-CnEy_BDh.js";import{F}from"./Forbidden-D25jV3Oq.js";import"./vendor-utils-Dyr8OjFr.js";const u="/api/admin";function H(){const i=L(),{hasPermission:C}=Z(),[S,k]=t.useState(!0),[v,_]=t.useState([]),[N,d]=t.useState(!1),[y,g]=t.useState(null),[s,l]=t.useState({spz:"",name:"",brand:"",model:"",initial_km:0,is_active:!0}),[h,c]=t.useState({}),[o,b]=t.useState({show:!1,vehicle:null}),m=t.useCallback(async(a=!0)=>{a&&k(!0);try{const r=await(await x(`${u}/trips.php?action=vehicles`,{})).json();r.success&&_(r.data.vehicles)}catch{i.error("Nepodařilo se načíst data")}finally{a&&k(!1)}},[i]);if(t.useEffect(()=>{m()},[m]),O(N),!C("trips.vehicles"))return e.jsx(F,{});const w=()=>{g(null),l({spz:"",name:"",brand:"",model:"",initial_km:0,is_active:!0}),c({}),d(!0)},P=a=>{g(a),l({spz:a.spz,name:a.name,brand:a.brand||"",model:a.model||"",initial_km:a.initial_km,is_active:!!a.is_active}),c({}),d(!0)},M=async()=>{const a={};if(s.spz||(a.spz="Zadejte SPZ"),s.name||(a.name="Zadejte název"),c(a),!(Object.keys(a).length>0))try{const n=y?{...s,id:y.id}:s,f=await(await x(`${u}/trips.php?action=vehicle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})).json();f.success?(d(!1),await m(!1),await new Promise(V=>setTimeout(V,300)),i.success(f.message)):i.error(f.error)}catch{i.error("Chyba připojení")}},A=async()=>{if(o.vehicle)try{const n=await(await x(`${u}/trips.php?action=vehicle&id=${o.vehicle.id}`,{method:"DELETE"})).json();n.success?(b({show:!1,vehicle:null}),await m(!1),i.success(n.message)):i.error(n.error)}catch{i.error("Chyba připojení")}},E=async a=>{try{const r=await(await x(`${u}/trips.php?action=vehicle`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a.id,spz:a.spz,name:a.name,brand:a.brand||"",model:a.model||"",initial_km:a.initial_km,is_active:!a.is_active})})).json();r.success?(m(!1),i.success(a.is_active?"Vozidlo bylo deaktivováno":"Vozidlo bylo aktivováno")):i.error(r.error)}catch{i.error("Chyba připojení")}};return S?e.jsxs("div",{className:"admin-skeleton",style:{padding:0,gap:"1.5rem"},children:[e.jsxs("div",{className:"admin-skeleton-row",style:{justifyContent:"space-between"},children:[e.jsx("div",{children:e.jsx("div",{className:"admin-skeleton-line h-8",style:{width:"200px"}})}),e.jsx("div",{className:"admin-skeleton-line h-10",style:{width:"150px",borderRadius:"8px"}})]}),e.jsx("div",{className:"admin-card",children:e.jsx("div",{className:"admin-skeleton",style:{gap:"1.25rem"},children:[0,1,2,3,4].map(a=>e.jsxs("div",{className:"admin-skeleton-row",children:[e.jsx("div",{className:"admin-skeleton-line circle"}),e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"admin-skeleton-line w-1/3 mb-2"}),e.jsx("div",{className:"admin-skeleton-line w-1/4",style:{height:"10px"}})]}),e.jsx("div",{className:"admin-skeleton-line w-1/4"})]},a))})})]}):e.jsxs("div",{children:[e.jsxs(p.div,{className:"admin-page-header",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4},children:[e.jsx("div",{children:e.jsx("h1",{className:"admin-page-title",children:"Správa vozidel"})}),e.jsx("div",{className:"admin-page-actions",children:e.jsxs("button",{onClick:w,className:"admin-btn admin-btn-primary",children:[e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),"Přidat vozidlo"]})})]}),e.jsx(p.div,{className:"admin-card",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.1},children:e.jsxs("div",{className:"admin-card-body",children:[v.length===0&&e.jsxs("div",{className:"admin-empty-state",children:[e.jsx("div",{className:"admin-empty-icon",children:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"1",y:"3",width:"15",height:"13"}),e.jsx("polygon",{points:"16 8 20 8 23 11 23 16 16 16 16 8"}),e.jsx("circle",{cx:"5.5",cy:"18.5",r:"2.5"}),e.jsx("circle",{cx:"18.5",cy:"18.5",r:"2.5"})]})}),e.jsx("p",{children:"Zatím nejsou žádná vozidla."}),e.jsx("button",{onClick:w,className:"admin-btn admin-btn-primary",children:"Přidat první vozidlo"})]}),v.length>0&&e.jsx("div",{className:"admin-table-responsive",children:e.jsxs("table",{className:"admin-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"SPZ"}),e.jsx("th",{children:"Název"}),e.jsx("th",{children:"Značka / Model"}),e.jsx("th",{children:"Počáteční km"}),e.jsx("th",{children:"Aktuální km"}),e.jsx("th",{children:"Počet jízd"}),e.jsx("th",{children:"Stav"}),e.jsx("th",{children:"Akce"})]})}),e.jsx("tbody",{children:v.map(a=>e.jsxs("tr",{className:a.is_active?"":"admin-table-row-inactive",children:[e.jsx("td",{className:"admin-mono fw-500",children:a.spz}),e.jsx("td",{children:a.name}),e.jsx("td",{children:a.brand||a.model?`${a.brand||""} ${a.model||""}`.trim():"—"}),e.jsxs("td",{className:"admin-mono",children:[z(a.initial_km)," km"]}),e.jsxs("td",{className:"admin-mono fw-500",children:[z(a.current_km)," km"]}),e.jsx("td",{className:"admin-mono",children:a.trip_count}),e.jsx("td",{children:e.jsx("button",{onClick:()=>E(a),className:`admin-badge ${a.is_active?"admin-badge-active":"admin-badge-inactive"}`,children:a.is_active?"Aktivní":"Neaktivní"})}),e.jsx("td",{children:e.jsxs("div",{className:"admin-table-actions",children:[e.jsx("button",{onClick:()=>P(a),className:"admin-btn-icon",title:"Upravit","aria-label":"Upravit",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),e.jsx("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})}),e.jsx("button",{onClick:()=>b({show:!0,vehicle:a}),className:"admin-btn-icon danger",title:"Smazat","aria-label":"Smazat",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("polyline",{points:"3 6 5 6 21 6"}),e.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]})})]},a.id))})]})})]})}),e.jsx($,{children:N&&e.jsxs(p.div,{className:"admin-modal-overlay",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:[e.jsx("div",{className:"admin-modal-backdrop",onClick:()=>d(!1)}),e.jsxs(p.div,{className:"admin-modal",initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.2},children:[e.jsx("div",{className:"admin-modal-header",children:e.jsx("h2",{className:"admin-modal-title",children:y?"Upravit vozidlo":"Přidat vozidlo"})}),e.jsx("div",{className:"admin-modal-body",children:e.jsxs("div",{className:"admin-form",children:[e.jsxs("div",{className:"admin-form-row",children:[e.jsx(j,{label:"SPZ",error:h.spz,required:!0,children:e.jsx("input",{type:"text",value:s.spz,onChange:a=>{l({...s,spz:a.target.value.toUpperCase()}),c(n=>({...n,spz:void 0}))},className:"admin-form-input",placeholder:"1AB 2345","aria-invalid":!!h.spz})}),e.jsx(j,{label:"Název",error:h.name,required:!0,children:e.jsx("input",{type:"text",value:s.name,onChange:a=>{l({...s,name:a.target.value}),c(n=>({...n,name:void 0}))},className:"admin-form-input",placeholder:"Služební #1","aria-invalid":!!h.name})})]}),e.jsxs("div",{className:"admin-form-row",children:[e.jsx(j,{label:"Značka",children:e.jsx("input",{type:"text",value:s.brand,onChange:a=>l({...s,brand:a.target.value}),className:"admin-form-input",placeholder:"Škoda"})}),e.jsx(j,{label:"Model",children:e.jsx("input",{type:"text",value:s.model,onChange:a=>l({...s,model:a.target.value}),className:"admin-form-input",placeholder:"Octavia Combi"})})]}),e.jsxs("div",{className:"admin-form-group",children:[e.jsx("label",{className:"admin-form-label",children:"Počáteční stav km"}),e.jsx("input",{type:"number",inputMode:"numeric",value:s.initial_km,onChange:a=>l({...s,initial_km:parseInt(a.target.value)||0}),className:"admin-form-input",min:"0"}),e.jsx("small",{className:"admin-form-hint",children:"Stav tachometru při přidání vozidla"})]}),e.jsxs("label",{className:"admin-form-checkbox",children:[e.jsx("input",{type:"checkbox",checked:s.is_active,onChange:a=>l({...s,is_active:a.target.checked})}),e.jsx("span",{children:"Vozidlo je aktivní"})]})]})}),e.jsxs("div",{className:"admin-modal-footer",children:[e.jsx("button",{type:"button",onClick:()=>d(!1),className:"admin-btn admin-btn-secondary",children:"Zrušit"}),e.jsx("button",{type:"button",onClick:M,className:"admin-btn admin-btn-primary",children:"Uložit"})]})]})]})}),e.jsx(B,{isOpen:o.show,onClose:()=>b({show:!1,vehicle:null}),onConfirm:A,title:"Smazat vozidlo",message:o.vehicle?`Opravdu chcete smazat vozidlo ${o.vehicle.spz} - ${o.vehicle.name}?`:"",confirmText:"Smazat",confirmVariant:"danger"})]})}export{H as default};
|