PageSourceSearch

https://dgac.gob.gt/assets/ProjectForms-WDNHV7la.js

js dgac.gob.gt collected 2026-09-24 23:02:44 UTC 6,097 bytes, 1 lines download raw bytes

1import{r as o,j as e,bH as $,bj as B,F as j,D as z,c$ as J,bQ as M}from"./ui-vendor-Nh77zFHh.js";import{aX as H,bm as p,s as U,d as V,B as c,I as q,e as N}from"./index-BCakBLyb.js";import{T as G}from"./TourButton-DHeq7_zB.js";import{C as v,d as y,a as K,b as Q,c as X}from"./card-IGpSy_k-.js";import{g as Y}from"./digitalFormService-D5IdDs0J.js";import{P as W}from"./projectService-BuOVXAFE.js";import{L as Z}from"./LoadingSpinner-CbDDqUpX.js";import{a as ee,u as se,S as C}from"./useRealtimeQuery-C5TKHl3O.js";import{a as ae,d as te}from"./react-vendor-B-TOzi2X.js";import"./radix-vendor-8V-X-v15.js";import"./chart-vendor-BHC9f-XT.js";import"./table-vendor-CmSNR_WU.js";import"./popover-DJHTinoQ.js";const re=[{element:'[data-tour="forms-header"]',popover:{title:"📄 Formularios del Proyecto",description:"Crea formularios digitales para recopilar datos en campo: inspecciones, checklist, encuestas, etc.",side:"bottom",align:"start"}},{element:'[data-tour="forms-search"]',popover:{title:"🔍 Búsqueda",description:"Encuentra formularios por nombre.",side:"bottom",align:"start"}},{element:'[data-tour="forms-create"]',popover:{title:"➕ Nuevo Formulario",description:"Diseña formularios con campos personalizados: texto, números, selección, fotos, ubicación y firmas digitales.",side:"left",align:"start"}},{element:'[data-tour="forms-list"]',popover:{title:"📋 Lista de Formularios",description:"Todos los formularios creados. Muestra cuántas respuestas ha recibido cada uno.",side:"top",align:"center"}},{element:'[data-tour="forms-fill"]',popover:{title:"✏️ Llenar Formulario",description:"Abre el formulario para capturar datos. Funciona offline y sincroniza cuando hay conexión.",side:"left",align:"center"}},{element:'[data-tour="forms-entries"]',popover:{title:"📊 Ver Respuestas",description:"Consulta todas las respuestas enviadas con fotos, firmas y ubicaciones capturadas.",side:"left",align:"start"}}],b="project_forms_return_context";function je({embedded:l=!1,projectDocumentId:P}){const i=ae(),{documentId:F}=te(),r=P||H(F),a=p(r),{hasPermission:f}=U(),w=f("api::digital-form.digital-form.create"),I=f("api::form-entry.form-entry.create"),{startTour:S,hasSeenTour:L}=V("project-forms-tour",re),[T,E]=o.useState(!0),[x,R]=o.useState(""),D=o.useCallback(async()=>{const s=await Y();return Array.isArray(s)?{data:s}:{data:(s==null?void 0:s.data)||[],pagination:s==null?void 0:s.pagination}},[]),{data:m,isLoading:h}=ee(["project",r],()=>r?W.getProject(r):Promise.resolve({success:!1,data:null}),C.PROJECT,r||""),{data:n,isLoading:g}=se(["digital-forms"],D,C.DIGITAL_FORM),d=(m==null?void 0:m.data)||null,A=o.useMemo(()=>((n==null?void 0:n.data)||[]).filter(t=>!t.proyectos||!Array.isArray(t.proyectos)?!1:t.proyectos.some(O=>O.documentId===r)),[n,r]);o.useEffect(()=>{E(h||g)},[h,g]),o.useEffect(()=>{if(!a)return;const s=`/crm/project/${a}/forms`;sessionStorage.setItem(b,JSON.stringify({returnPath:s,projectId:a,ts:Date.now()}))},[a]);const _=o.useCallback(()=>{const s=`/crm/project/${a}/forms`;sessionStorage.setItem(b,JSON.stringify({returnPath:s,projectId:a,ts:Date.now()})),i("/digitalform")},[i,a]),u=A.filter(s=>s.title.toLowerCase().includes(x.toLowerCase())),k=s=>{var t;return((t=s.form_entries)==null?void 0:t.length)||0};return T?e.jsx(Z,{}):e.jsxs("div",{className:l?"space-y-4":"container mx-auto py-6 space-y-6",children:[!l&&e.jsx(G,{onClick:S,hasSeenTour:L}),e.jsx("div",{className:"flex items-center justify-between","data-tour":"forms-header",children:e.jsxs("div",{className:"flex items-center gap-4",children:[!l&&e.jsx(c,{variant:"ghost",size:"icon",onClick:()=>i(`/crm/project/${a}`),children:e.jsx($,{className:"h-4 w-4"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold",children:"Formularios del Proyecto"}),e.jsx("p",{className:"text-muted-foreground",children:d==null?void 0:d.Nombre})]})]})}),e.jsxs("div",{className:"flex items-center gap-4","data-tour":"forms-search",children:[e.jsxs("div",{className:"relative flex-1 max-w-sm",children:[e.jsx(B,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(q,{placeholder:"Buscar formularios...",value:x,onChange:s=>R(s.target.value),className:"pl-10"})]}),e.jsxs(N,{variant:"secondary",className:"whitespace-nowrap",children:[u.length," formulario(s)"]})]}),u.length===0?e.jsx(v,{children:e.jsxs(y,{className:"py-12 text-center",children:[e.jsx(j,{className:"h-12 w-12 mx-auto text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"No hay formularios asignados"}),e.jsx("p",{className:"text-muted-foreground mb-4",children:"Este proyecto no tiene formularios vinculados. Puedes vincular formularios desde la sección de Formularios Digitales."}),w&&e.jsx(c,{onClick:_,children:"Ir a Formularios Digitales"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4","data-tour":"forms-list",children:u.map(s=>{var t;return e.jsxs(v,{className:"hover:shadow-md transition-shadow",children:[e.jsxs(K,{className:"pb-2",children:[e.jsx("div",{className:"flex items-start justify-between",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(j,{className:"h-5 w-5 text-primary"}),e.jsx(Q,{className:"text-lg",children:s.title})]})}),e.jsxs(X,{children:[((t=s.structure)==null?void 0:t.length)||0," campos"]})]}),e.jsxs(y,{className:"space-y-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(N,{variant:"outline",children:[e.jsx(z,{className:"h-3 w-3 mr-1"}),k(s)," respuesta(s)"]})}),e.jsxs("div",{className:"flex gap-2",children:[I&&e.jsxs(c,{variant:"default",size:"sm",className:"flex-1",onClick:()=>i(`/crm/project/${a}
1/forms/${p(s.documentId)}/fill`),"data-tour":"forms-fill",children:[e.jsx(J,{className:"h-4 w-4 mr-1"}),"Llenar"]}),e.jsxs(c,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>i(`/crm/project/${a}/forms/${p(s.documentId)}/entries`),"data-tour":"forms-entries",children:[e.jsx(M,{className:"h-4 w-4 mr-1"}),"Ver Respuestas"]})]})]})]},s.documentId)})})]})}export{je 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.