Files
app/dist/assets/TripsHistory-BBeF9ORG.js
2026-03-13 09:19:40 +01:00

2 lines
6.0 KiB
JavaScript

import{j as s,m as r}from"./vendor-animation-0s3FMHwK.js";import{r as a}from"./vendor-react-BVs3cwbi.js";import{a as f,u as w,c as S,F as u,A as z,f as n}from"./index-BBlIrj2z.js";import{F as _}from"./Forbidden-D25jV3Oq.js";import{b as L}from"./attendanceHelpers-D6sLEw0q.js";import"./vendor-utils-Dyr8OjFr.js";const C="/api/admin";function V(){const h=f(),{hasPermission:p}=w(),[c,x]=a.useState(!0),[i,y]=a.useState(()=>{const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}`}),[t,v]=a.useState(""),[N,g]=a.useState({trips:[],vehicles:[],totals:{total:0,business:0,count:0}}),j=a.useCallback(async()=>{x(!0);try{let e=`${C}/trips.php?action=history&month=${i}`;t&&(e+=`&vehicle_id=${t}`);const d=await S(e);if(d.status===401)return;const l=await d.json();l.success&&g(l.data)}catch{h.error("Nepodařilo se načíst data")}finally{x(!1)}},[i,t,h]);if(a.useEffect(()=>{j()},[j]),!p("trips.history"))return s.jsx(_,{});const k=e=>{const[d,l]=e.split("-");return new Date(d,parseInt(l)-1).toLocaleDateString("cs-CZ",{month:"long",year:"numeric"})},{trips:o,vehicles:b,totals:m}=N;return s.jsxs("div",{children:[s.jsx(r.div,{className:"admin-page-header",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4},children:s.jsxs("div",{children:[s.jsx("h1",{className:"admin-page-title",children:"Historie jízd"}),s.jsx("p",{className:"admin-page-subtitle",children:k(i)})]})}),s.jsx(r.div,{className:"admin-card",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.1},children:s.jsx("div",{className:"admin-card-body",children:s.jsxs("div",{className:"admin-form-row",children:[s.jsx(u,{label:"Měsíc",children:s.jsx(z,{mode:"month",value:i,onChange:e=>y(e)})}),s.jsx(u,{label:"Vozidlo",children:s.jsxs("select",{value:t,onChange:e=>v(e.target.value),className:"admin-form-select",children:[s.jsx("option",{value:"",children:"Všechna vozidla"}),b.map(e=>s.jsxs("option",{value:e.id,children:[e.spz," - ",e.name]},e.id))]})})]})})}),s.jsxs(r.div,{className:"admin-grid admin-grid-3",style:{marginTop:"1.5rem"},initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.15},children:[s.jsxs("div",{className:"admin-stat-card info",children:[s.jsx("div",{className:"admin-stat-icon info",children:s.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("line",{x1:"12",y1:"20",x2:"12",y2:"10"}),s.jsx("line",{x1:"18",y1:"20",x2:"18",y2:"4"}),s.jsx("line",{x1:"6",y1:"20",x2:"6",y2:"16"})]})}),s.jsxs("div",{className:"admin-stat-content",children:[s.jsx("span",{className:"admin-stat-value",children:m.count}),s.jsx("span",{className:"admin-stat-label",children:"Počet jízd"})]})]}),s.jsxs("div",{className:"admin-stat-card",children:[s.jsx("div",{className:"admin-stat-icon",children:s.jsx("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("path",{d:"M22 12h-4l-3 9L9 3l-3 9H2"})})}),s.jsxs("div",{className:"admin-stat-content",children:[s.jsxs("span",{className:"admin-stat-value",children:[n(m.total)," km"]}),s.jsx("span",{className:"admin-stat-label",children:"Celkem naježděno"})]})]}),s.jsxs("div",{className:"admin-stat-card success",children:[s.jsx("div",{className:"admin-stat-icon success",children:s.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("rect",{x:"1",y:"3",width:"15",height:"13",rx:"2",ry:"2"}),s.jsx("path",{d:"M16 8h2a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-1"}),s.jsx("circle",{cx:"5.5",cy:"18",r:"2"}),s.jsx("circle",{cx:"18.5",cy:"18",r:"2"}),s.jsx("path",{d:"M8 18h8"})]})}),s.jsxs("div",{className:"admin-stat-content",children:[s.jsxs("span",{className:"admin-stat-value",children:[n(m.business)," km"]}),s.jsx("span",{className:"admin-stat-label",children:"Služební km"})]})]})]}),s.jsx(r.div,{className:"admin-card",style:{marginTop:"1.5rem"},initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.2},children:s.jsxs("div",{className:"admin-card-body",children:[c&&s.jsx("div",{className:"admin-skeleton",style:{gap:"1.25rem"},children:[0,1,2,3,4].map(e=>s.jsxs("div",{className:"admin-skeleton-row",children:[s.jsx("div",{className:"admin-skeleton-line w-1/4"}),s.jsx("div",{className:"admin-skeleton-line w-1/3"}),s.jsx("div",{className:"admin-skeleton-line w-1/4"})]},e))}),!c&&o.length===0&&s.jsx("div",{className:"admin-empty-state",children:s.jsx("p",{children:"Žádné záznamy jízd pro vybrané období."})}),!c&&o.length>0&&s.jsx("div",{className:"admin-table-responsive",children:s.jsxs("table",{className:"admin-table",children:[s.jsx("thead",{children:s.jsxs("tr",{children:[s.jsx("th",{children:"Datum"}),s.jsx("th",{children:"Vozidlo"}),s.jsx("th",{children:"Řidič"}),s.jsx("th",{children:"Trasa"}),s.jsx("th",{children:"Stav km"}),s.jsx("th",{children:"Vzdálenost"}),s.jsx("th",{children:"Typ"}),s.jsx("th",{children:"Poznámka"})]})}),s.jsx("tbody",{children:o.map(e=>s.jsxs("tr",{children:[s.jsx("td",{className:"admin-mono",children:L(e.trip_date)}),s.jsx("td",{children:s.jsx("span",{className:"admin-badge",children:e.spz})}),s.jsx("td",{style:{color:"var(--text-secondary)"},children:e.driver_name}),s.jsx("td",{children:s.jsxs("span",{style:{whiteSpace:"nowrap"},children:[e.route_from," → ",e.route_to]})}),s.jsx("td",{className:"admin-mono",children:s.jsxs("span",{style:{whiteSpace:"nowrap",color:"var(--text-secondary)"},children:[n(e.start_km)," - ",n(e.end_km)]})}),s.jsx("td",{className:"admin-mono",children:s.jsxs("strong",{children:[n(e.distance)," km"]})}),s.jsx("td",{children:s.jsx("span",{className:`admin-badge ${e.is_business?"admin-badge-success":"admin-badge-warning"}`,children:e.is_business?"Služební":"Soukromá"})}),s.jsx("td",{style:{color:"var(--text-secondary)",maxWidth:"200px"},children:e.notes||"—"})]},e.id))})]})})]})})]})}export{V as default};