PageSourceSearch

https://app.pesquis.ai/cadernos-app/assets/ExamForm-C41-mdE2.js

js pesquis.ai collected 2026-10-05 15:24:14 UTC 14,770 bytes, 1 lines download raw bytes

1import{j as e}from"./vendor-tiptap-D1kc7WI9.js";import{a as d}from"./vendor-universe-D4BD-x29.js";import{s as $}from"./toast-CFaXm2Ga.js";import{e as F,a as N,c as x}from"./index-DWSxdEMH.js";import{A as G}from"./AdminNav-BIm8EezM.js";import"./vendor-prosemirror-DOILltZE.js";function H(n){if(!n)return"Sem expiração";try{return new Date(n).toLocaleDateString("pt-BR")}catch{return n}}function _(){return{starts_at:"",ends_at:""}}function v(n){if(!n)return"";const g=new Date(n);return Number.isNaN(g.getTime())?"":new Date(g.getTime()-g.getTimezoneOffset()*6e4).toISOString().slice(0,16)}function Q(){const{examId:n}=F(),g=N(),c=!!n,[E,A]=d.useState([]),[w,S]=d.useState(!1),[C,h]=d.useState(""),[z,j]=d.useState([]),[R,T]=d.useState(!1),[p,f]=d.useState({label:"",max_uses:"",expires_at:""}),[k,I]=d.useState(!1),[o,m]=d.useState({title:"",description:"",duration_minutes:60,cycle_id:"",cycle_position:"",availability_windows:[_()],shuffle_questions:!1,shuffle_answers:!1,practice_mode_enabled:!0,proctoring_settings:{webcam_enabled:!0,webcam_interval_sec:120,block_tab_switch:!0,require_fullscreen:!0,max_tab_violations:3,action_on_max_violations:"warn",block_copy_paste:!0,block_right_click:!0,auto_submit_on_time:!0}}),B=()=>{c&&(T(!0),x.get(`/exam-tokens/exams/${n}`).then(t=>j(t.data)).catch(()=>{}).finally(()=>T(!1)))};d.useEffect(()=>{x.get("/cycles/").then(t=>A(t.data)).catch(()=>{}),c&&B(),c&&x.get(`/exams/${n}`).then(t=>{const i=t.data;m({title:i.title||"",description:i.description||"",duration_minutes:i.duration_minutes||60,cycle_id:i.cycle_id||"",cycle_position:i.cycle_position||"",availability_windows:Array.isArray(i.availability_windows)&&i.availability_windows.length>0?i.availability_windows.map(s=>({starts_at:v(s.starts_at),ends_at:v(s.ends_at)})):i.starts_at&&i.ends_at?[{starts_at:v(i.starts_at),ends_at:v(i.ends_at)}]:[_()],shuffle_questions:i.shuffle_questions||!1,shuffle_answers:i.shuffle_answers||!1,practice_mode_enabled:i.practice_mode_enabled??!0,proctoring_settings:i.proctoring_settings||o.proctoring_settings})}).catch(()=>h("Erro ao carregar prova"))},[n]);const u=(t,i)=>m(s=>({...s,[t]:i})),y=(t,i)=>m(s=>({...s,proctoring_settings:{...s.proctoring_settings,[t]:i}})),W=(t,i,s)=>m(r=>({...r,availability_windows:r.availability_windows.map((l,P)=>P===t?{...l,[i]:s}:l)})),q=()=>m(t=>({...t,availability_windows:[...t.availability_windows,_()]})),D=t=>m(i=>({...i,availability_windows:i.availability_windows.length===1?[_()]:i.availability_windows.filter((s,r)=>r!==t)})),L=async()=>{var t,i;if(!o.title.trim()){h("Título obrigatório");return}S(!0),h("");try{const s=o.availability_windows.map(l=>({starts_at:l.starts_at?new Date(l.starts_at).toISOString():"",ends_at:l.ends_at?new Date(l.ends_at).toISOString():""})).filter(l=>l.starts_at&&l.ends_at),r={...o,cycle_id:o.cycle_id||null,cycle_position:o.cycle_position?parseInt(o.cycle_position):null,availability_windows:s};if(c)await x.put(`/exams/${n}`,r),h("Prova atualizada!");else{const l=await x.post("/exams/",r);g(`/admin/exams/${l.data.id}/questions`)}}catch(s){h(((i=(t=s.response)==null?void 0:t.data)==null?void 0:i.detail)||"Erro ao salvar")}finally{S(!1)}};return e.jsxs("div",{style:a.page,children:[e.jsx(G,{}),e.jsxs("div",{style:a.main,children:[e.jsxs("div",{style:a.header,children:[e.jsx("button",{style:a.btnBack,onClick:()=>g("/admin/exams"),children:"← Voltar"}),e.jsx("h1",{style:a.title,children:c?"Editar Prova":"Nova Prova"})]}),C&&e.jsx("div",{style:a.msg,children:C}),e.jsxs("div",{style:a.card,children:[e.jsx("h2",{style:a.section,children:"Informações básicas"}),e.jsx("label",{style:a.label,children:"Título *"}),e.jsx("input",{style:a.input,value:o.title,onChange:t=>u("title",t.target.value),placeholder:"Ex: Simulado VII — ProEF 2026"}),e.jsx("label",{style:a.label,children:"Descrição"}),e.jsx("textarea",{style:a.textarea,rows:3,value:o.description,onChange:t=>u("description",t.target.value),placeholder:"Descrição opcional"}),e.jsxs("div",{style:a.row,children:[e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Duração (minutos) *"}),e.jsx("input",{style:a.input,type:"number",min:5,value:o.duration_minutes,onChange:t=>u("duration_minutes",parseInt(t.target.value))})]}),e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Ciclo (opcional)"}),e.jsxs("select",{style:a.select,value:o.cycle_id,onChange:t=>u("cycle_id",t.target.value),children:[e.jsx("option",{value:"",children:"— Prova avulsa —"}),E.map(t=>e.jsx("option",{value:t.id,children:t.name},t.id))]})]}),e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Posição no ciclo"}),e.jsx("input",{style:a.input,type:"number",min:1,value:o.cycle_position,onChange:t=>u("cycle_position",t.target.value),placeholder:"Ex: 7",disabled:!o.cycle_id})]})]}),e.jsxs("div",{style:a.checkRow,children:[e.jsxs("label",{style:a.checkLabel,children:[e.jsx("input",{type:"checkbox",checked:o.shuffle_questions,onChange:t=>u("shuffle_questions",t.target.checked)})," Embaralhar questões"]}),e.jsxs("label",{style:a.checkLabel,children:[e.jsx("input",{type:"checkbox",checked:o.shuffle_answers,onChange:t=>u("shuffle_answers",t.target.checked)})," Embaralhar alternativas"]}),e.jsxs("label",{style:a.checkLabel,children:[e.jsx("input",{type:"checkbox",checked:o.practice_mode_enabled,onChange:t=>u("practice_mode_enabled",t.target.checked)})," Modo treino disponível após encerramento"]})]})]}),e.jsxs("div",{style:a.card,children:[e.jsx("h2",{style:a.section,children:"Configurações de Proctoring"}),e.jsx("div",{style:a.procGrid,children:[["webcam_enabled","Webcam ativa"],["block_tab_switch","Bloquear troca de aba"],["require_fullscreen","Exigir tela cheia"],["block_copy_paste","Bloquear Ctrl+C/V"],["block_right_click","Bloquear clique direito"],["auto_submit_on_time","Auto-envio ao acabar o tempo"]].map(([t,i])=>e.jsxs("label",{style:a.checkLabel,children:[e.jsx("input",{type:"checkbox",checked:o.proctoring_settings[t],onChange:s=>y(t,s.target.checked)})," ",i]},t))}),e.jsxs("div",{style:a.row,children:[e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Intervalo webcam (seg)"}),e.jsx("input",{style:a.input,type:"number",min:30,value:o.proctoring_settings.webcam_interval_sec,onChange:t=>y("webcam_interval_sec",parseInt(t.target.value))})]}),e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Máx. violações de aba"}),e.jsx("input",{style:a.input,type:"number",min:1,value:o.proctoring_settings.max_tab_violations,onChange:t=>y("max_tab_violations",parseInt(t.target.value))})]}),e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Ação ao atingir máx."}),e.jsxs("select",{style:a.select,value:o.proctoring_settings.action_on_max_violations,onChange:t=>y("action_on_max_violations",t.target.value),children:[e.jsx("option",{value:"warn",children:"Apenas avisar"}),e.jsx("option",{value:"submit",children:"Enviar prova"}),e.jsx("option",{value:"block",children:"Bloquear candidato"})]})]})]})]}),e.jsxs("div",{style:a.card,children:[e.jsx("h2",{style:a.section,children:"Agenda da prova"}),e.jsx("p",{style:a.sectionHelp,children:"Defina uma ou mais janelas de abertura. Fora dessas janelas, novos alunos não iniciam a prova, mas quem já começou continua normalmente."}),e.jsx("div",{style:a.scheduleList,children:o.availability_windows.map((t,i)=>
1e.jsxs("div",{style:a.scheduleRow,children:[e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Início"}),e.jsx("input",{style:a.input,type:"datetime-local",value:t.starts_at,onChange:s=>W(i,"starts_at",s.target.value)})]}),e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Fim"}),e.jsx("input",{style:a.input,type:"datetime-local",value:t.ends_at,onChange:s=>W(i,"ends_at",s.target.value)})]}),e.jsx("button",{type:"button",style:a.btnRemoveWindow,onClick:()=>D(i),children:"Remover"})]},i))}),e.jsx("button",{type:"button",style:a.btnAddWindow,onClick:q,children:"+ Adicionar janela"})]}),c&&e.jsxs("div",{style:a.card,children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:10,marginBottom:16,paddingBottom:8,borderBottom:"1px solid #eee"},children:[e.jsx("h2",{style:{...a.section,margin:0,border:"none",padding:0},children:"Links de Acesso Público"}),e.jsx("span",{style:{background:"#dcfce7",color:"#166534",fontSize:11,fontWeight:700,padding:"3px 8px",borderRadius:20},children:"Sem necessidade de conta"})]}),R&&e.jsx("p",{style:{fontSize:13,color:"#888"},children:"Carregando links..."}),!R&&z.length===0&&e.jsx("p",{style:{fontSize:13,color:"#888",marginBottom:16},children:"Nenhum link criado ainda."}),z.map(t=>e.jsxs("div",{style:b.item,children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,marginBottom:4},children:[e.jsx("span",{style:{fontWeight:600,fontSize:14,color:"#1a1a2e"},children:t.label||"Link sem nome"}),e.jsx("span",{style:{...b.badge,...t.is_active?b.badgeActive:b.badgeInactive},children:t.is_active?"Ativo":"Inativo"})]}),e.jsxs("div",{style:{fontSize:12,color:"#666",marginBottom:8},children:[t.used_count,"/",t.max_uses??"∞"," usos · ",H(t.expires_at)]}),e.jsxs("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:[e.jsx("button",{style:b.btnCopy,onClick:()=>{const i=window.location.origin+"/cadernos-app/".replace(/\/$/,"");navigator.clipboard.writeText(`${i}/prova/${t.token}`)},children:"Copiar URL"}),e.jsx("button",{style:b.btnToggle,onClick:()=>x.patch(`/exam-tokens/${t.id}/toggle`).then(i=>j(s=>s.map(r=>r.id===t.id?i.data:r))),children:t.is_active?"Desativar":"Ativar"}),e.jsx("button",{style:b.btnDelete,onClick:()=>{window.confirm("Remover este link? Candidatos com a URL não conseguirão mais acessar.")&&x.delete(`/exam-tokens/${t.id}`).then(()=>j(i=>i.filter(s=>s.id!==t.id)))},children:"Remover"})]})]},t.id)),e.jsxs("div",{style:{marginTop:16,paddingTop:16,borderTop:"1px solid #f0f0f0"},children:[e.jsx("p",{style:{fontSize:13,fontWeight:600,color:"#333",marginBottom:10},children:"Gerar novo link"}),e.jsxs("div",{style:a.row,children:[e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Label (opcional)"}),e.jsx("input",{style:a.input,placeholder:"Ex: Turma A",value:p.label,onChange:t=>f(i=>({...i,label:t.target.value}))})]}),e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Limite de usos"}),e.jsx("input",{style:a.input,type:"number",min:1,placeholder:"Ilimitado",value:p.max_uses,onChange:t=>f(i=>({...i,max_uses:t.target.value}))})]}),e.jsxs("div",{style:a.col,children:[e.jsx("label",{style:a.label,children:"Expira em"}),e.jsx("input",{style:a.input,type:"date",value:p.expires_at,onChange:t=>f(i=>({...i,expires_at:t.target.value}))})]})]}),e.jsx("button",{style:{...b.btnCreate,...k?{opacity:.6,cursor:"not-allowed"}:{}},disabled:k,onClick:async()=>{I(!0);try{await x.post(`/exam-tokens/exams/${n}`,{label:p.label||null,max_uses:p.max_uses?parseInt(p.max_uses):null,expires_at:p.expires_at?new Date(p.expires_at).toISOString():null}),f({label:"",max_uses:"",expires_at:""}),B()}catch{$("Erro ao criar link.","error")}finally{I(!1)}},children:k?"Gerando...":"Gerar link"})]})]}),e.jsxs("div",{style:a.footer,children:[e.jsx("button",{style:a.btnCancel,onClick:()=>g("/admin/exams"),children:"Cancelar"}),e.jsx("button",{style:a.btnSave,onClick:L,disabled:w,children:w?"Salvando...":c?"Salvar alterações":"Criar prova e adicionar questões →"})]})]})]})}const a={page:{minHeight:"100vh",background:"#f5f6fa",fontFamily:"system-ui, sans-serif"},main:{maxWidth:820,margin:"0 auto",padding:"24px 20px"},header:{display:"flex",alignItems:"center",gap:16,marginBottom:20},btnBack:{background:"none",border:"1px solid #ccc",borderRadius:6,padding:"6px 14px",cursor:"pointer",color:"#555",fontSize:13},title:{fontSize:22,fontWeight:700,color:"#1a1a2e",margin:0},msg:{background:"#fff3cd",border:"1px solid #ffc107",borderRadius:6,padding:"10px 16px",marginBottom:16,fontSize:14},card:{background:"#fff",borderRadius:10,padding:"22px 24px",boxShadow:"0 2px 8px rgba(0,0,0,.06)",marginBottom:16},section:{fontSize:15,fontWeight:700,color:"#1a1a2e",marginBottom:16,paddingBottom:8,borderBottom:"1px solid #eee"},sectionHelp:{margin:"-6px 0 16px",fontSize:13,color:"#666",lineHeight:1.5},label:{display:"block",fontSize:12,fontWeight:600,color:"#555",marginBottom:4,marginTop:12},input:{width:"100%",border:"1px solid #ddd",borderRadius:6,padding:"8px 10px",fontSize:14,boxSizing:"border-box"},textarea:{width:"100%",border:"1px solid #ddd",borderRadius:6,padding:"8px 10px",fontSize:14,resize:"vertical",boxSizing:"border-box"},select:{width:"100%",border:"1px solid #ddd",borderRadius:6,padding:"8px 10px",fontSize:14,background:"#fff",boxSizing:"border-box"},row:{display:"flex",gap:16,marginTop:12},col:{flex:1},scheduleList:{display:"flex",flexDirection:"column",gap:12},scheduleRow:{display:"flex",gap:12,alignItems:"flex-end",flexWrap:"wrap"},btnAddWindow:{marginTop:12,background:"#e8f0fe",color:"#0f3460",border:"1px solid #b6c8f5",borderRadius:6,padding:"8px 12px",cursor:"pointer",fontSize:13,fontWeight:600},btnRemoveWindow:{background:"#fff",color:"#b42318",border:"1px solid #f1b0a7",borderRadius:6,padding:"8px 12px",cursor:"pointer",fontSize:13,minHeight:40},checkRow:{display:"flex",gap:24,marginTop:14,flexWrap:"wrap"},checkLabel:{display:"flex",alignItems:"center",fontSize:14,color:"#333",cursor:"pointer",gap:4},procGrid:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:12,marginBottom:16},footer:{display:"flex",justifyContent:"flex-end",gap:12,marginTop:8},btnCancel:{background:"none",border:"1px solid #ccc",borderRadius:6,padding:"10px 20px",cursor:"pointer",fontSize:14},btnSave:{background:"#0f3460",color:"#fff",border:"none",borderRadius:6,padding:"10px 24px",cursor:"pointer",fontSize:14,fontWeight:700}},b={item:{background:"#f8fafc",border:"1px solid #e2e8f0",borderRadius:8,padding:"12px 14px",marginBottom:10},badge:{fontSize:11,fontWeight:700,padding:"2px 8px",borderRadius:20},badgeActive:{background:"#dcfce7",color:"#166534"},badgeInactive:{background:"#f1f5f9",color:"#64748b"},btnCopy:{background:"#eff6ff",color:"#1d4ed8",border:"1px solid #bfdbfe",borderRadius:6,padding:"5px 10px",cursor:"pointer",fontSize:12,fontWeight:600},btnToggle:{background:"#f8fafc",color:"#475569",border:"1px solid #e2e8f0",borderRadius:6,padding:"5px 10px",cursor:"pointer",fontSize:12},btnDelete:{background:"#fff5f5",color:"#c53030",border:"1px solid #fed7d7",borderRadius:6,padding:"5px 10px",cursor:"pointer",fontSize:12},btnCreate:{marginTop:12,background:"#0f3460",color:"#fff",border:"none",borderRadius:6,padding:"8px 16px",cursor:"pointer",fontSize:13,fontWeight:700}};export{Q 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.