2 lines
5.7 KiB
JavaScript
2 lines
5.7 KiB
JavaScript
import{$ as ee,r as y,Z as te,a as U,w as ae,o as ne,aa as k,a3 as m,a5 as r,a8 as w,a4 as x,a9 as V,ao as se,a1 as q,a0 as S,af as D,a6 as F,aq as N,a7 as M,ab as R,ac as oe}from"./index-GXFLJtQL.js";import{u as le,a as ce,Q as re,b as ie}from"./userstore-SjLknvTP.js";import{a as me}from"./QChip-DE2_FO3B.js";import{u as ue}from"./vue-i18n.runtime-BXSOjn_j.js";import{_ as de}from"./IndexPage-C20RwqJI.js";const pe=["data-id"],fe={class:"row col q-px-md"},he={class:"row q-ml-md full-width items-center no-wrap"},ve={class:"col q-ml-md"},ye={class:"row items-center no-wrap full-width"},we={key:2,class:"comment-attachment__file-name q-px-sm"},_e={class:"row items-start q-gutter-sm q-ml-md q-mt-xs q-mb-none full-width"},ge={class:"row col q-pa-none q-ma-none q-ml-md"},be={class:"text-caption q-mb-sm q-mt-none"},ke={class:"column items-center q-gutter-sm full-width"},xe=ee({__name:"CommentAttachment",props:{modelValue:{},label:{},title:{},id:{}},emits:["update:modelValue"],setup(_,{emit:L}){const u=_,$=L,{t:g}=ue(),j=le(),C=ce(),P=y(null),T=u.modelValue?.attachments,s=te({comments:u.modelValue?.comments||"",attachments:Array.isArray(T)?[...T]:[]}),b=y(s.comments),l=y(null),i=y(!1),c=y([]),I=new Set(["pdf","docx","txt","md"]);function B(e){const t=(e.name||"").trim().toLowerCase(),a=t.includes(".")?t.split(".").pop():"";return!!a&&I.has(a)}const J=U(()=>!!l.value),O=U(()=>l.value?.name||"");function p(e){for(;c.value.length<=e;)c.value.push({percent:0,color:"primary",icon:"attach_file"});const t=c.value[e];if(!t){const a={percent:0,color:"primary",icon:"attach_file"};return c.value[e]=a,a}return t}function f(){$("update:modelValue",{comments:s.comments||"",attachments:[...s.attachments]})}function E(e){if(e&&!B(e)){l.value=null,i.value=!1,c.value=[];return}l.value=e,i.value=!1,c.value=e?[{percent:0,color:"primary",icon:"attach_file"}]:[]}function H(e){const t=c.value,a=t[e];if(a?.xhr&&a.percent<1)try{a.xhr.abort()}catch{}l.value=null;const n=[...t];n.splice(e,1),c.value=n}function X(){H(0)}async function Z(){const e=l.value;if(!e||!B(e))return;i.value=!0;const t="http://localhost:8082/upload";await new Promise(a=>{const n=new XMLHttpRequest,h=p(0);h.xhr=n,n.upload.onprogress=o=>{if(!o.lengthComputable)return;const d=o.total>0?o.loaded/o.total:0;p(0).percent=Math.max(0,Math.min(1,d))},n.onload=()=>{const o=n.status>=200&&n.status<300,d=p(0);if(d.percent=o?1:d.percent,d.color=o?"positive":"negative",d.icon=o?"check":"error",o){try{const Q=JSON.parse(n.responseText),A=Array.isArray(Q.files)?Q.files[0]:void 0,Y=A?.storedName||A?.originalName||A?.name;s.attachments.push(Y||e.name)}catch{s.attachments.push(e.name)}f()}a()},n.onerror=()=>{const o=p(0);o.color="negative",o.icon="error",a()},n.onabort=()=>{const o=p(0);o.color="warning",o.icon="close",a()};const v=new FormData;v.append("session",u.id??""),v.append("user",C.id),v.append("documents",e),n.open("POST",t),n.send(v)}),l.value=null,c.value=[],i.value=!1}ae(()=>u.modelValue,e=>{e&&typeof e.comments=="string"?s.comments=e.comments:e===null&&(s.comments=""),e&&Array.isArray(e.attachments)?s.attachments=[...e.attachments]:e===null&&(s.attachments=[]),b.value=s.comments});function z(){s.comments=b.value||"",f()}async function G(e){return new Promise(t=>{j.dialog({message:"<h6 class='q-my-sm' >"+g("confirmDeleteAttachment")+" </h6> "+e,cancel:!0,persistent:!0,html:!0}).onOk(()=>t(!0)).onCancel(()=>t(!1)).onDismiss(()=>t(!1))})}async function K(e){const t=s.attachments[e];if(!t||!await G(t))return;const n=C.id,h=u.id;if(!n||!h){s.attachments.splice(e,1),f();return}try{if(!(await fetch("http://localhost:8082/deleteattachment",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:n,session:h,filename:t})})).ok)return}catch{return}s.attachments.splice(e,1),f()}function W(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}return ne(async()=>{const e=u.id,t=C.id;if(!(!e||!t))try{const a=await fetch("http://localhost:8082/loadattachments",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:t,session:e})});if(!a.ok)return;const n=await a.json();W(n)&&(s.attachments=n,f())}catch{}}),(e,t)=>(m(),k("div",{class:"comment-attachment column full-width shadow-1 q-pa-sm bg-white","data-id":_.id},[r("div",null,w(_.title||_.label),1),r("div",fe,[x(se,{class:"full-width",type:"textarea",modelValue:b.value,"onUpdate:modelValue":t[0]||(t[0]=a=>b.value=a),onBlur:z,label:V(g)("commenti"),autogrow:"",dense:""},null,8,["modelValue","label"])]),r("div",he,[r("div",ve,[x(ie,{ref_key:"fileRef",ref:P,"model-value":l.value,"onUpdate:modelValue":E,accept:".pdf,.docx,.txt,.md",dense:"",borderless:"","hide-bottom-space":"",clearable:!1,"input-style":"display: none",style:{"max-width":"400px"}},{prepend:q(()=>[r("div",ye,[l.value?(m(),k(R,{key:1},[x(F,{round:"",dense:"",flat:"",color:"primary",icon:"cloud_upload",disable:!J.value||i.value,loading:i.value,onClick:N(Z,["stop"])},null,8,["disable","loading"]),i.value?D("",!0):(m(),S(F,{key:0,round:"",dense:"",flat:"",color:"primary",icon:"delete",disable:!l.value,onClick:N(X,["stop","prevent"])},null,8,["disable"]))],64)):(m(),S(F,{key:0,round:"",dense:"",flat:"",color:"primary",icon:"attach_file",disable:i.value,onClick:t[1]||(t[1]=N(a=>P.value?.pickFiles(),["stop"]))},{default:q(()=>[x(re,null,{default:q(()=>[M(w(V(g)("pickFiles")),1)]),_:1})]),_:1},8,["disable"])),O.value?(m(),k("div",we,w(O.value),1)):D("",!0)])]),_:1},8,["model-value"])])]),r("div",_e,[r("div",ge,[r("div",be,w(V(g)("attachments")),1),r("div",ke,[(m(!0),k(R,null,oe(s.attachments,(a,n)=>(m(),S(me,{class:"full-width",key:n,removable:"",onRemove:h=>K(n)},{default:q(()=>[M(w(a),1)]),_:2},1032,["onRemove"]))),128))])])])],8,pe))}}),Fe=de(xe,[["__scopeId","data-v-a0ff9b6f"]]);export{Fe as C};
|