1import{e as F,C as H,x as L,D as P,E as I,c as r,a as s,t,l as e,z as O,w as u,k as _,b,F as E,i as C,A as R,G as W,d as n,r as z,p as c,q as G,_ as J,s as N,o as l,m as K,j as Q,v as X}from"./D8644rYh.js";import{_ as Y}from"./BA4VewZY.js";/* empty css */import{a as U}from"./umGG1dom.js";import{u as Z}from"./MRLRowXz.js";import{u as ee}from"./Cxhm-wjv.js";const te={class:"wiimer-ui mx-auto max-w-6xl space-y-6 py-6 text-dark dark:text-white"},ie={class:"flex flex-wrap items-start justify-between gap-4"},ae={class:"text-2xl font-semibold"},se={class:"mt-2 max-w-2xl text-sm text-grey-text"},oe={key:0,role:"status","aria-busy":"true",class:"wiimer-panel"},le={key:1,class:"wiimer-panel",role:"alert"},re={class:"flex flex-wrap items-center justify-between gap-4"},ne={class:"wiimer-check"},de={key:0,role:"alert",class:"wiimer-feedback"},ce={key:1,role:"status",class:"wiimer-feedback"},me={key:2,class:"wiimer-panel text-grey-text"},ue={key:3,class:"wiimer-panel divide-y divide-gray-200 dark:divide-white/10"},_e={class:"wiimer-row !py-0"},we={class:"min-w-0 flex-1"},pe={class:"break-words text-lg font-semibold"},fe={class:"mt-1 break-words text-sm text-grey-text"},he={class:"text-sm font-medium"},ve={key:0,class:"mt-3 whitespace-pre-wrap"},ye=["onSubmit"],xe={class:"wiimer-field"},ke=["onUpdate:modelValue","disabled"],be={class:"wiimer-field"},ge=["onUpdate:modelValue","disabled"],Se={value:"changes_requested"},Ve={value:"validated"},Ce={class:"max-w-2xl text-sm leading-6 text-grey-text"},Be=F({name:"WiimerAdminSubmissions",__name:"submissions",setup(Me){const{t:i,locale:B}=H(),M=Z(),q=L(),{isAdmin:T}=ee(),g=c(!0),d=c(!1),w=c(""),p=c(""),f=c(""),h=c(!0),S=c([]),v=N({}),m=N({}),A=G(()=>S.value.filter(o=>!h.value||o.status==="submitted")),$=o=>new Intl.DateTimeFormat(B.value,{dateStyle:"medium",timeStyle:"short"}).format(new Date(o));async function y(){g.value=!0,w.value="";try{S.value=await M("/admin/wiimer/submissions");for(const o of S.value)m[o.id]??="changes_requested"}catch(o){w.value=U(o,i("wiimer.loadError"))}finally{g.value=!1}}async function j(o){if(!d.value&&!(m[o]==="validated"&&!window.confirm(i("wiimer.confirmReview")))){d.value=!0,p.value="",f.value="";try{await M(`/admin/wiimer/submissions/${o}`,{method:"PATCH",body:{decision:m[o],note:v[o].trim()}}),await y(),f.value=i("wiimer.decisionSaved")}catch(x){p.value=U(x,i("wiimer.saveError"))}finally{d.value=!1}}}return P(y),I({title:()=>`${i("wiimer.submissions")} · WiiM`,robots:"noindex, nofollow"}),(o,x)=>{const D=J,V=Y;return l(),r("div",te,[s("header",ie,[s("div",null,[s("h1",ae,t(e(i)("wiimer.submissions")),1),s("p",se,t(e(i)("wiimer.submissionsHelp")),1)]),e(T)?(l(),O(D,{key:0,to:e(q)("/admin/wiimer"),class:"wiimer-link"},{default:u(()=>[n(t(e(i)("wiimer.adminTitle")),1)]),_:1},8,["to"])):_("",!0)]),e(g)?(l(),r("p",oe,t(e(i)("wiimer.loading")),1)):e(w)?(l(),r("div",le,[s("p",null,t(e(w)),1),b(V,{class:"mt-4 min-h-11",onClick:y},{default:u(()=>[n(t(e(i)("common.retry")),1)]),_:1})])):(l(),r(E,{key:2},[s("div",re,[s("label",ne,[C(s("input",{"onUpdate:modelValue":x[0]||(x[0]=a=>W(h)?h.value=a:null),type:"checkbox"},null,512),[[R,e(h)]]),n(t(e(i)("wiimer.pendingOnly")),1)]),b(V,{variant:"ghost",class:"min-h-11",disabled:e(d),onClick:y},{default:u(()=>[n(t(e(i)("wiimer.refresh")),1)]),_:1},8,["disabled"])]),e(p)?(l(),r("p",de,t(e(p)),1)):_("",!0),e(f)?(l(),r("p",ce,t(e(f)),1)):_("",!0),e(A).length?(l(),r("ul",ue,[(l(!0),r(E,null,z(e(A),a=>(l(),r("li",{key:a.id,class:"py-5"},[s("div",_e,[s("div",we,[s("h2",pe,t(a.deal?.title),1),s("p",fe,t(a.deal?.city)+" · "+t(a.submitter?.full_name||a.submitter?.email)+" · "+t($(a.submitted_at)),1)]),s("span",he,t(e(i)(`wiimer.status.${a.status}`)),1)]),b(D,{to:e(q)(`/admin/deals/${a.deal_id||a.deal?.id}/analyse`),class:"wiimer-link mt-2"},{default:u(()=>[n(t(e(i)("wiimer.openAnalysis")),1)]),_:1},8,["to"]),a.review_note?(l(),r("p",ve,t(a.review_note),1)):_("",!0),a.status==="submitted"?(l(),r("form",{key:1,class:"mt-4 space-y-3",onSubmit:K(k=>j(a.id),["prevent"])},[s("label",xe,[n(t(e(i)("wiimer.reviewNote")),1),C(s("textarea",{"onUpdate:modelValue":k=>e(v)[a.id]=k,maxlength:"4000",rows:"3",required:"",disabled:e(d)},null,8,ke),[[Q,e(v)[a.id]]])]),s("label",be,[n(t(e(i)("wiimer.decision")),1),C(s("select",{"onUpdate:modelValue":k=>e(m)[a.id]=k,required:"",disabled:e(d)},[s("option",Se,t(e(i)("wiimer.requestChanges")),1),s("option",Ve,t(e(i)("wiimer.confirmValidation")),1)],8,ge),[[X,e(m)[a.id]]])]),s("p",Ce,t(e(i)("wiimer.validationHelp")),1),b(V,{type:"submit",class:"min-h-11",disabled:e(d)||!e(v)[a.id]?.trim()},{default:u(()=>[n(t(e(i)("wiimer.recordDecision")),1)]),_:1},8,["disabled"])],40,ye)):_("",!0)]))),128))])):(l(),r("p",me,t(e(i)("wiimer.emptySubmissions")),1))],64))])}}});
1export{Be 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.