Files
app/dist/assets/AuditLog-CbWiRsHx.js
Simon 9e3c95e576 feat: zodpovedna osoba za projekt - novy sloupec + editace
Pridano pole responsible_user_id do tabulky projects s FK na users.
Select zodpovedne osoby v ProjectDetail, ProjectCreate a sloupec v seznamu projektu.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:03:44 +01:00

2 lines
10 KiB
JavaScript

import{j as e,m as y}from"./vendor-animation-0s3FMHwK.js";import{r as t}from"./vendor-react-BVs3cwbi.js";import{u as E,a as I,c as N,d as B,F as h,A as b}from"./index-CNxd7jIT.js";import{F as D}from"./Forbidden-D25jV3Oq.js";import{P as F}from"./Pagination-B1sbY6V7.js";import"./vendor-utils-Dyr8OjFr.js";const _="/api/admin",k={create:"Vytvoření",update:"Úprava",delete:"Smazání",login:"Přihlášení",login_failed:"Neúspěšné přihlášení",logout:"Odhlášení",view:"Zobrazení",activate:"Aktivace",deactivate:"Deaktivace",password_change:"Změna hesla",permission_change:"Změna oprávnění",access_denied:"Přístup odepřen"},R={create:"admin-badge-success",update:"admin-badge-info",delete:"admin-badge-danger",login:"admin-badge-secondary",login_failed:"admin-badge-danger",logout:"admin-badge-secondary",view:"admin-badge-info",activate:"admin-badge-success",deactivate:"admin-badge-warning",password_change:"admin-badge-info",permission_change:"admin-badge-warning",access_denied:"admin-badge-danger"},w={user:"Uživatel",attendance:"Docházka",leave_request:"Žádost o nepřítomnost",offers_quotation:"Nabídka",offers_customer:"Zákazník",offers_item_template:"Šablona položky",offers_scope_template:"Šablona rozsahu",offers_settings:"Nastavení nabídek",orders_order:"Objednávka",invoices_invoice:"Faktura",projects_project:"Projekt",role:"Role",trips:"Jízda",vehicles:"Vozidlo",bank_account:"Bankovní účet"},Z=Object.entries(k).map(([o,i])=>({value:o,label:i})),$=Object.entries(w).map(([o,i])=>({value:o,label:i}));function G(){const{hasPermission:o}=E(),i=I(),[u,C]=t.useState([]),[p,g]=t.useState(!0),[r,S]=t.useState(null),[s,z]=t.useState({search:"",action:"",entity_type:"",date_from:"",date_to:""}),[P,x]=t.useState(!1),[v,A]=t.useState(90),[j,f]=t.useState(!1),c=t.useCallback(async(a=1,n=50)=>{g(!0);try{const d=new URLSearchParams({page:String(a),per_page:String(n)});s.search&&d.set("search",s.search),s.action&&d.set("action",s.action),s.entity_type&&d.set("entity_type",s.entity_type),s.date_from&&d.set("date_from",s.date_from),s.date_to&&d.set("date_to",s.date_to);const l=await(await N(`${_}/audit-log.php?${d.toString()}`)).json();l.success?(C(l.data.logs||[]),S({total:l.data.total,page:l.data.page,per_page:l.data.per_page,total_pages:l.data.pages})):i.error(l.error||"Nepodařilo se načíst audit log")}catch{i.error("Chyba připojení")}finally{g(!1)}},[s]);if(t.useEffect(()=>{c()},[c]),!o("settings.audit"))return e.jsx(D,{});const m=(a,n)=>{z(d=>({...d,[a]:n}))},T=a=>{c(a,r?.per_page||50)},O=a=>{c(1,a)},V=async()=>{f(!0);try{const n=await(await N(`${_}/audit-log.php`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"cleanup",days:v})})).json();n.success?(i.success(n.message),x(!1),c()):i.error(n.error)}catch{i.error("Chyba připojení")}finally{f(!1)}},L=a=>a?new Date(a).toLocaleString("cs-CZ"):"-";return p&&u.length===0?e.jsxs("div",{className:"admin-skeleton",style:{padding:0,gap:"1.5rem"},children:[e.jsx("div",{className:"admin-skeleton-row",style:{justifyContent:"space-between"},children:e.jsxs("div",{children:[e.jsx("div",{className:"admin-skeleton-line h-8",style:{width:"160px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"100px"}})]})}),e.jsx("div",{className:"admin-card",children:e.jsx("div",{className:"admin-skeleton",style:{gap:"0.75rem",padding:"1rem"},children:e.jsx("div",{className:"admin-skeleton-line h-10",style:{width:"100%",borderRadius:"8px"}})})}),e.jsx("div",{className:"admin-card",children:e.jsxs("div",{className:"admin-skeleton",style:{gap:"1rem"},children:[e.jsx("div",{className:"admin-skeleton-line h-10",style:{width:"100%",borderRadius:"4px"}}),Array.from({length:8},(a,n)=>e.jsxs("div",{className:"admin-skeleton-row",children:[e.jsx("div",{className:"admin-skeleton-line",style:{width:"120px"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"80px"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"70px",borderRadius:"10px"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"80px"}}),e.jsx("div",{className:"admin-skeleton-line flex-1"}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"90px"}})]},n))]})})]}):e.jsxs("div",{children:[e.jsxs(y.div,{className:"admin-page-header",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4},children:[e.jsxs("div",{children:[e.jsx("h1",{className:"admin-page-title",children:"Audit log"}),r&&e.jsxs("p",{className:"admin-page-subtitle",children:[r.total," ",B(r.total,"záznam","záznamy","záznamů")]})]}),e.jsxs("button",{className:"admin-btn admin-btn-secondary admin-btn-sm",onClick:()=>x(!0),children:[e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",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"})]}),"Vyčistit"]})]}),P&&e.jsxs("div",{className:"admin-modal-overlay",style:{opacity:1},children:[e.jsx("div",{className:"admin-modal-backdrop",onClick:()=>!j&&x(!1)}),e.jsxs(y.div,{className:"admin-modal admin-confirm-modal",initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},transition:{duration:.2},children:[e.jsxs("div",{className:"admin-modal-body admin-confirm-content",children:[e.jsx("div",{className:"admin-confirm-icon admin-confirm-icon-danger",children:e.jsxs("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",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"})]})}),e.jsx("h2",{className:"admin-confirm-title",children:"Vyčistit audit log"}),e.jsx("p",{className:"admin-confirm-message",children:"Smazat záznamy starší než:"}),e.jsx("div",{style:{margin:"0.75rem auto",maxWidth:"200px"},children:e.jsxs("select",{className:"admin-form-select",value:v,onChange:a=>A(parseInt(a.target.value)),children:[e.jsx("option",{value:30,children:"30 dní"}),e.jsx("option",{value:60,children:"60 dní"}),e.jsx("option",{value:90,children:"90 dní"}),e.jsx("option",{value:180,children:"180 dní"}),e.jsx("option",{value:365,children:"1 rok"}),e.jsx("option",{value:0,children:"Vše"})]})}),e.jsx("p",{className:"admin-confirm-message",style:{fontSize:"12px",opacity:.6},children:"Tato akce je nevratná."})]}),e.jsxs("div",{className:"admin-modal-footer",children:[e.jsx("button",{type:"button",onClick:()=>x(!1),className:"admin-btn admin-btn-secondary",disabled:j,children:"Zrušit"}),e.jsx("button",{type:"button",onClick:V,className:"admin-btn admin-btn-primary",disabled:j,children:j?"Mažu...":"Smazat"})]})]})]}),e.jsx(y.div,{className:"admin-card mb-4",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.1},children:e.jsx("div",{className:"admin-card-body",children:e.jsxs("div",{className:"admin-form-row admin-form-row-5",children:[e.jsx(h,{label:"Hledat",children:e.jsx("input",{type:"text",className:"admin-form-input",placeholder:"Popis, uživatel...",value:s.search,onChange:a=>m("search",a.target.value)})}),e.jsx(h,{label:"Akce",children:e.jsxs("select",{className:"admin-form-select",value:s.action,onChange:a=>m("action",a.target.value),children:[e.jsx("option",{value:"",children:"Všechny"}),Z.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))]})}),e.jsx(h,{label:"Typ entity",children:e.jsxs("select",{className:"admin-form-select",value:s.entity_type,onChange:a=>m("entity_type",a.target.value),children:[e.jsx("option",{value:"",children:"Všechny"}),$.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))]})}),e.jsx(h,{label:"Od",children:e.jsx(b,{mode:"date",value:s.date_from,onChange:a=>m("date_from",a)})}),e.jsx(h,{label:"Do",children:e.jsx(b,{mode:"date",value:s.date_to,onChange:a=>m("date_to",a)})})]})})}),e.jsx(y.div,{className:"admin-card",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.15},children:e.jsxs("div",{className:"admin-card-body",children:[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:"Čas"}),e.jsx("th",{children:"Uživatel"}),e.jsx("th",{children:"Akce"}),e.jsx("th",{children:"Typ entity"}),e.jsx("th",{children:"Popis"}),e.jsx("th",{children:"IP"})]})}),e.jsxs("tbody",{children:[p&&Array.from({length:10},(a,n)=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("div",{className:"admin-skeleton-line",style:{width:"110px",height:"14px"}})}),e.jsx("td",{children:e.jsx("div",{className:"admin-skeleton-line",style:{width:"80px",height:"14px"}})}),e.jsx("td",{children:e.jsx("div",{className:"admin-skeleton-line",style:{width:"70px",height:"22px",borderRadius:"10px"}})}),e.jsx("td",{children:e.jsx("div",{className:"admin-skeleton-line",style:{width:"80px",height:"14px"}})}),e.jsx("td",{children:e.jsx("div",{className:"admin-skeleton-line",style:{width:"60%",height:"14px"}})}),e.jsx("td",{children:e.jsx("div",{className:"admin-skeleton-line",style:{width:"90px",height:"14px"}})})]},`skeleton-${n}`)),!p&&u.length===0&&e.jsx("tr",{children:e.jsx("td",{colSpan:"6",children: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",children:[e.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e.jsx("polyline",{points:"14 2 14 8 20 8"}),e.jsx("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),e.jsx("line",{x1:"16",y1:"17",x2:"8",y2:"17"})]})}),e.jsx("p",{children:"Žádné záznamy k zobrazení"})]})})}),!p&&u.map(a=>e.jsxs("tr",{children:[e.jsx("td",{className:"admin-mono",children:L(a.created_at)}),e.jsx("td",{className:"fw-500",children:a.username||"-"}),e.jsx("td",{children:e.jsx("span",{className:`admin-badge ${R[a.action]||"admin-badge-secondary"}`,children:k[a.action]||a.action})}),e.jsx("td",{children:w[a.entity_type]||a.entity_type||"-"}),e.jsx("td",{children:a.description||"-"}),e.jsx("td",{className:"admin-mono",children:a.user_ip||"-"})]},a.id))]})]})}),e.jsx(F,{pagination:r,onPageChange:T,onPerPageChange:O})]})})]})}export{G as default};