2 lines
30 KiB
JavaScript
2 lines
30 KiB
JavaScript
import{Y as $e,Z as De,I as Q,d as Pe,g as L,R as de,x as Fe,_ as me,L as fe,o as j,c as W,b as T,w as H,a as r,e as ie,G as ve,j as R,t as te,i as Re,k as X,z as he,D as B,H as ee}from"./index-10f45eca.js";import{_ as je}from"./BasicMainCard-06dad464.js";import{_ as Ee}from"./BasicModal.vue_vue_type_style_index_0_lang-c07380a4.js";import{_ as We}from"./BasicInput.vue_vue_type_style_index_0_lang-ad9476fa.js";import{u as _e,_ as Ze,l as Je}from"./useBaseTable-89e367b0.js";import{_ as Ge}from"./button.vue_vue_type_style_index_0_lang-80cf0b72.js";import{d as J}from"./index-db46c961.js";import{I as K}from"./Icon-e9a9d64e.js";import{_ as pe}from"./BasicSelect.vue_vue_type_style_index_0_lang-2a0574c0.js";import{t as oe}from"./useDataTime-60875705.js";import{m as Xe}from"./index-9601d570.js";import{g as ge}from"./index-03a814ce.js";import{M as be}from"./index-5bc6b40d.js";import{S as ye}from"./index-00f73089.js";import{D as Ke}from"./dayjs-7e0fadbc.js";import{T as se}from"./index-ceff8631.js";import{U as we}from"./index-4b9d78ea.js";import"./_plugin-vue_export-helper-2f157ef4.js";import"./index-ecb339ad.js";import"./index-1b352863.js";import"./Col-c6f28462.js";import"./vnode-b14d5532.js";import"./useState-4f4a8c99.js";import"./isPlainObject-75024cd7.js";import"./usePrice-7afab779.js";import"./index-cca2d62a.js";import"./FormItemContext-a11ae724.js";import"./pickAttrs-2c86ae65.js";import"./toArray-45e57117.js";import"./index-2707819c.js";var Se={exports:{}};(function(n,o){(function(_,y){n.exports=y()})(De,function(){var _="minute",y=/[+-]\d\d(?::?\d\d)?/g,q=/([+-]|\d\d)/g;return function(I,S,c){var a=S.prototype;c.utc=function(e){var l={date:e,utc:!0,args:arguments};return new S(l)},a.utc=function(e){var l=c(this.toDate(),{locale:this.$L,utc:!0});return e?l.add(this.utcOffset(),_):l},a.local=function(){return c(this.toDate(),{locale:this.$L,utc:!1})};var O=a.parse;a.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),O.call(this,e)};var A=a.init;a.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else A.call(this)};var p=a.utcOffset;a.utcOffset=function(e,l){var U=this.$utils().u;if(U(e))return this.$u?0:U(this.$offset)?p.call(this):this.$offset;if(typeof e=="string"&&(e=function(C){C===void 0&&(C="");var v=C.match(y);if(!v)return null;var k=(""+v[0]).match(q)||["-",0,0],D=k[0],P=60*+k[1]+ +k[2];return P===0?0:D==="+"?P:-P}(e),e===null))return this;var f=Math.abs(e)<=16?60*e:e,d=this;if(l)return d.$offset=f,d.$u=e===0,d;if(e!==0){var w=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(d=this.local().add(f+w,_)).$offset=f,d.$x.$localOffset=w}else d=this.utc();return d};var i=a.format;a.format=function(e){var l=e||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return i.call(this,l)},a.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},a.isUTC=function(){return!!this.$u},a.toISOString=function(){return this.toDate().toISOString()},a.toString=function(){return this.toDate().toUTCString()};var h=a.toDate;a.toDate=function(e){return e==="s"&&this.$offset?c(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():h.call(this)};var M=a.diff;a.diff=function(e,l,U){if(e&&this.$u===e.$u)return M.call(this,e,l,U);var f=this.local(),d=c(e).local();return M.call(f,d,l,U)}}})})(Se);var Qe=Se.exports;const et=$e(Qe);var Me={exports:{}};(function(n,o){(function(_,y){n.exports=y()})(De,function(){var _={year:0,month:1,day:2,hour:3,minute:4,second:5},y={};return function(q,I,S){var c,a=function(i,h,M){M===void 0&&(M={});var e=new Date(i),l=function(U,f){f===void 0&&(f={});var d=f.timeZoneName||"short",w=U+"|"+d,C=y[w];return C||(C=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:U,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:d}),y[w]=C),C}(h,M);return l.formatToParts(e)},O=function(i,h){for(var M=a(i,h),e=[],l=0;l<M.length;l+=1){var U=M[l],f=U.type,d=U.value,w=_[f];w>=0&&(e[w]=parseInt(d,10))}var C=e[3],v=C===24?0:C,k=e[0]+"-"+e[1]+"-"+e[2]+" "+v+":"+e[4]+":"+e[5]+":000",D=+i;return(S.utc(k).valueOf()-(D-=D%1e3))/6e4},A=I.prototype;A.tz=function(i,h){i===void 0&&(i=c);var M=this.utcOffset(),e=this.toDate(),l=e.toLocaleString("en-US",{timeZone:i}),U=Math.round((e-new Date(l))/1e3/60),f=S(l).$set("millisecond",this.$ms).utcOffset(15*-Math.round(e.getTimezoneOffset()/15)-U,!0);if(h){var d=f.utcOffset();f=f.add(M-d,"minute")}return f.$x.$timezone=i,f},A.offsetName=function(i){var h=this.$x.$timezone||S.tz.guess(),M=a(this.valueOf(),h,{timeZoneName:i}).find(function(e){return e.type.toLowerCase()==="timezonename"});return M&&M.value};var p=A.startOf;A.startOf=function(i,h){if(!this.$x||!this.$x.$timezone)return p.call(this,i,h);var M=S(this.format("YYYY-MM-DD HH:mm:ss:SSS"));return p.call(M,i,h).tz(this.$x.$timezone,!0)},S.tz=function(i,h,M){var e=M&&h,l=M||h||c,U=O(+S(),l);if(typeof i!="string")return S(i).tz(l);var f=function(v,k,D){var P=v-60*k*1e3,z=O(P,D);if(k===z)return[P,k];var G=O(P-=60*(z-k)*1e3,D);return z===G?[P,z]:[v-60*Math.min(z,G)*1e3,Math.max(z,G)]}(S.utc(i,e).valueOf(),U,l),d=f[0],w=f[1],C=S(d).utcOffset(w);return C.$x.$timezone=l,C},S.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},S.tz.setDefault=function(i){c=i}}})})(Me);var tt=Me.exports;const st=$e(tt),at=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:n=>n.record.index+1},{title:"عنوان",dataIndex:"title",key:"title"},{title:"زیرعنوان",dataIndex:"sub_title",key:"sub_title"},{title:"کتاب مرتبط",dataIndex:"book_id",key:"book_id",align:"center",customRender:n=>{const o=n.record.book_title,_=n.record.book_id;return o||(_?`کتاب #${_}`:"-")}},{title:"زمان",dataIndex:"time",key:"time",customRender:n=>{const o=n.record.time||{minutes:0,seconds:0},_=Number(o.minutes||0),y=Number(o.seconds||0),q=I=>String(I).padStart(2,"0");return`${q(_)}:${q(y)}`}},{title:"صوت",dataIndex:"src",key:"src",customRender:n=>n.record.src?"دارد":"-"},{title:"زمان ایجاد",dataIndex:"created_at",key:"created_at",customRender:n=>oe(n.record.created_at)},{title:"زمان انتشار",dataIndex:"time_show",key:"time_show",align:"center",width:180,customRender:n=>{const o=n.record.time_show;if(!o)return"-";try{return Xe.utc(o).add(3,"hours").add(30,"minutes").format("jYYYY/jMM/jDD HH:mm:ss")}catch{try{return oe(o,"jYYYY/jMM/jDD HH:mm:ss")}catch{return o}}}},{title:"وضعیت نمایش",dataIndex:"show",key:"show",align:"center",width:120,customRender:n=>n.record.show===!1?"مخفی":"نمایش"},{title:"عملیات",dataIndex:"action",key:"action",slot:"action",filterable:!1,align:"center"}],it=[{title:"ردیف",dataIndex:"id",key:"id",filterable:!1,width:70,align:"center",customRender:n=>n.record.index+1},{title:"نام کاربر",dataIndex:"user_name",key:"user_name",filterable:!0,filterField:"user_name"},{title:"شماره همراه",dataIndex:"user_phone",key:"user_phone",filterable:!0,filterField:"user_phone"},{title:"تاریخ بازدید",dataIndex:"viewed_at",key:"viewed_at",filterable:!0,filterField:"viewed_at",customRender:n=>oe(n.record.viewed_at)}];async function ot(n){const{data:o,error:_}=await Q.from("storys").insert([{title:n.title,sub_title:n.sub_title,cover:n.cover,src:n.src,time:n.time,book_id:n.book_id||null,time_show:n.time_show||null}]).select();if(_)throw _;return o}async function ke(n,o){const{data:_,error:y}=await Q.from("storys").update({title:o.title,sub_title:o.sub_title,cover:o.cover,src:o.src,time:o.time,book_id:o.book_id||null,time_show:o.time_show||null}).eq("id",n).select();if(y)throw y;return _}async function rt(n,o){const{data:_,error:y}=await Q.from("storys").update({show:o}).eq("id",n).select();if(y)throw y;return _}async function nt(n){const{error:o}=await Q.from("storys").delete().eq("id",n);if(o)throw o}async function lt(n){try{const{limit:o,filters:_,page:y,sort:q,order:I,search:S}=n;let c=Q.from("storys").select("*, books!book_id(id, title, sub_title, cover)",{count:"exact"});if(S&&S.trim()){const e=`%${S.trim()}%`;c=c.or(`title.ilike.${e},sub_title.ilike.${e}`)}if(_&&Array.isArray(_)&&_.forEach(e=>{const{field:l,op:U,value:f,hidden:d}=e;if(!d)switch(U){case"eq":c=c.eq(l,f);break;case"neq":c=c.neq(l,f);break;case"gt":c=c.gt(l,f);break;case"lt":c=c.lt(l,f);break;case"gte":c=c.gte(l,f);break;case"lte":c=c.lte(l,f);break;case"has":c=c.ilike(l,`%${f}%`);break;case"like":c=c.like(l,`%${f}%`);break}}),q&&q.key){const e=q.order==="asc";c=c.order(q.key,{ascending:e})}else if(I){const e=!I.startsWith("-"),l=I.replace(/^[-+]/,"");c=c.order(l,{ascending:e})}else c=c.order("id",{ascending:!1});if(o&&y){const e=(y-1)*o,l=e+o-1;c=c.range(e,l)}const{data:a,error:O,count:A}=await c;if(O)return console.error("[getStorysTable] Supabase query error:",O),{query:{...n,limit:o||10,page:y||1,total:0},rows:[]};if(!a||a.length===0)return{query:{...n,limit:o||10,page:y||1,total:0},rows:[]};const p=y||1,i=o||20,h=(p-1)*i,M=a.map((e,l)=>{const f=(Array.isArray(e.books)?e.books[0]:e.books)||{};return{...e,id:e.id,title:e.title??"",sub_title:e.sub_title??"",cover:e.cover??null,src:e.src??null,time:e.time??{minutes:0,seconds:0},book_id:e.book_id??null,book_title:f.title||null,book_sub_title:f.sub_title||null,book_cover:f.cover||null,created_at:e.created_at??"",time_show:e.time_show??null,show:e.show!==void 0?e.show:!0,index:h+l}});return{query:{...n,limit:i,page:p,total:A||0},rows:M}}catch(o){throw console.error("[getStorysTable] Error:",o),o}}async function ut(n){try{const{data:o,error:_}=await Q.from("user_views").select("*, users!user_id(id, first_name, last_name, phone, name, email, username)").eq("item_id",n).order("viewed_at",{ascending:!1});if(_)throw console.error("[getStoryViews] Error fetching views:",_),_;const y=(o==null?void 0:o.length)||0,I=new Set((o==null?void 0:o.map(a=>a.user_id).filter(Boolean))||[]).size,S=new Map;(o||[]).forEach(a=>{const O=a.user_id;if(O&&!S.has(O)){const p=(Array.isArray(a.users)?a.users[0]:a.users)||{};let i="نامشخص";p&&Object.keys(p).length>0&&(p.name?i=p.name:p.first_name||p.last_name?i=`${p.first_name||""} ${p.last_name||""}`.trim():p.phone?i=p.phone:p.email?i=p.email:p.username&&(i=p.username)),S.set(O,{id:a.id,user_id:a.user_id,user_name:i,user_phone:(p==null?void 0:p.phone)||"",user_email:(p==null?void 0:p.email)||"",viewed_at:a.viewed_at||""})}});const c=Array.from(S.values());return{total_views:y,unique_viewers:I,viewers:c}}catch(o){throw console.error("[getStoryViews] Error:",o),o}}async function xe(n,o){try{const{limit:_,filters:y,page:q,sort:I,order:S,search:c}=n;let a=Q.from("user_views").select("*, users!user_id(id, first_name, last_name, phone, name, email, username)",{count:"exact"}).eq("item_id",o);if(y&&Array.isArray(y)&&y.forEach(i=>{const{field:h,op:M,value:e,hidden:l}=i;if(!(l||!["id","user_id","item_id","viewed_at"].includes(h)))switch(M){case"eq":a=a.eq(h,e);break;case"neq":a=a.neq(h,e);break;case"gt":a=a.gt(h,e);break;case"lt":a=a.lt(h,e);break;case"gte":a=a.gte(h,e);break;case"lte":a=a.lte(h,e);break;case"has":a=a.ilike(h,`%${e}%`);break;case"like":a=a.like(h,`%${e}%`);break}}),I&&I.key){const i=I.order==="asc";["id","user_id","item_id","viewed_at"].includes(I.key)&&(a=a.order(I.key,{ascending:i}))}else if(S){const i=!S.startsWith("-"),h=S.replace(/^[-+]/,"");["id","user_id","item_id","viewed_at"].includes(h)&&(a=a.order(h,{ascending:i}))}else a=a.order("viewed_at",{ascending:!1});const{data:O,error:A,count:p}=await a;if(A)return console.error("[getStoryViewersTable] Supabase query error:",A),{query:{...n,limit:_||10,page:q||1,total:0},rows:[]};if(!O||O.length===0)return{query:{...n,limit:_||10,page:q||1,total:0},rows:[]};try{let i=O.map((d,w)=>{const v=(Array.isArray(d.users)?d.users[0]:d.users)||{};let k="نامشخص";return v&&Object.keys(v).length>0&&(v.name?k=v.name:v.first_name||v.last_name?k=`${v.first_name||""} ${v.last_name||""}`.trim():v.phone?k=v.phone:v.email?k=v.email:v.username&&(k=v.username)),{id:d.id,user_id:d.user_id,user_name:k,user_phone:(v==null?void 0:v.phone)||"",user_email:(v==null?void 0:v.email)||"",viewed_at:d.viewed_at??"",index:w,...d}});if(c&&c.trim()){const d=c.toLowerCase();i=i.filter(w=>w.user_name&&w.user_name.toLowerCase().includes(d)||w.user_phone&&w.user_phone.toLowerCase().includes(d)||w.viewed_at&&w.viewed_at.toLowerCase().includes(d))}if(y&&Array.isArray(y)&&y.length>0){const d=y.filter(w=>!w.field||w.hidden?!1:["user_name","user_phone","viewed_at","id","user_id"].includes(w.field));d.length>0&&(i=i.filter(w=>d.every(C=>{const v=w[C.field],k=C.value;if(k==null||k==="")return!0;switch(C.op){case"eq":return String(v)===String(k);case"neq":return String(v)!==String(k);case"gt":return Number(v)>Number(k);case"gte":return Number(v)>=Number(k);case"lt":return Number(v)<Number(k);case"lte":return Number(v)<=Number(k);case"has":case"like":return String(v||"").toLowerCase().includes(String(k).toLowerCase());case"sw":return String(v||"").toLowerCase().startsWith(String(k).toLowerCase());case"ew":return String(v||"").toLowerCase().endsWith(String(k).toLowerCase());default:return!0}})))}!I&&!S?i.sort((d,w)=>{const C=d.viewed_at?new Date(d.viewed_at).getTime():0;return(w.viewed_at?new Date(w.viewed_at).getTime():0)-C}):I&&I.key&&i.sort((d,w)=>{const C=d[I.key],v=w[I.key],k=I.order==="asc";return C<v?k?-1:1:C>v?k?1:-1:0});const h=q||1,M=_||20,e=(h-1)*M,l=e+M,f=i.slice(e,l).map((d,w)=>({...d,index:e+w}));return{query:{...n,limit:_||10,page:q||1,total:i.length},rows:f}}catch(i){console.log("[getStoryViewersTable] normalize error:",i)}return{query:{...n,limit:_||10,page:q||1,total:0},rows:[]}}catch(_){throw console.error("[getStoryViewersTable] Error:",_),_}}const ct={class:"flex justify-between items-center mb-4"},dt=r("h2",null,"قصه ها",-1),mt={class:"gap-2 flex justify-center"},ft=r("span",null,"بازدیدها",-1),vt=r("span",null,"حذف",-1),ht=r("span",null,"ویرایش",-1),_t=r("span",null,"مرتبط کردن کتاب",-1),pt={class:"space-y-4 relative"},gt={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},bt=r("div",{class:"mb-1 text-sm text-gray-600"},"عنوان",-1),yt=r("div",{class:"mb-1 text-sm text-gray-600"},"زیرعنوان",-1),wt=r("div",{class:"mb-1 text-sm text-gray-600"},"کتاب مرتبط",-1),kt=r("div",{class:"mb-1 text-sm text-gray-600"},[ie(" زمان انتشار "),r("span",{class:"text-xs text-gray-500"},"(در صورت خالی گذاشتن این فیلد زمان حال ثبت می شود)")],-1),xt={class:"flex gap-4"},$t={class:"flex-1"},Dt=r("div",{class:"mb-1 text-sm text-gray-600"},"زمان",-1),St={class:"space-y-2"},Mt=r("div",{class:"mb-1 text-xs text-gray-500"},"دقیقه",-1),Tt=r("div",{class:"mb-1 text-xs text-gray-500"},"ثانیه",-1),Ct={class:"flex-1 flex justify-center gap-4"},Yt=r("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر کاور",-1),Ut={key:0},It=r("div",null,"آپلود کاور",-1),Ot={key:0,class:"mt-1"},qt={class:"h-2 rounded bg-gray-200 overflow-hidden"},zt={class:"text-xs text-gray-700 font-semibold text-center mt-1"},Lt=r("div",{class:"mb-1 text-sm text-gray-600"},"آپلود صوت (src)",-1),Nt={key:0},Vt=r("div",null,"آپلود صوت",-1),Ht={key:0,class:"text-xs text-gray-500 mt-1 text-center"},At={class:"h-2 rounded bg-gray-200 overflow-hidden"},Bt={class:"text-xs text-gray-700 font-semibold text-center mt-1"},Pt={class:"space-y-4"},Ft=r("div",{class:"mb-1 text-sm text-gray-600"},"کتاب مرتبط",-1),Rt={class:"flex justify-end"},jt={key:0,class:"space-y-4"},Et={class:"grid grid-cols-2 gap-4"},Wt={class:"bg-blue-50 p-4 rounded-lg"},Zt=r("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدید",-1),Jt={class:"text-2xl font-bold text-blue-600"},Gt={class:"bg-purple-50 p-4 rounded-lg"},Xt=r("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدیدکننده",-1),Kt={class:"text-2xl font-bold text-purple-600"},Qt=r("div",{class:"text-sm font-semibold text-gray-700 mb-2"},"لیست بازدیدکنندهها",-1),es={key:0},ts={key:1,class:"text-center py-8 text-gray-500"},ss={key:1,class:"flex justify-center items-center py-8"},Os=Pe({__name:"index",setup(n){J.extend(et),J.extend(st);const o=Ke,_={authorization:`Bearer ${ge()||localStorage.getItem("tamin_token")||""}`},[y,q]=_e(),I=L({columns:at,api:lt,defaultPageLimit:20}),S=L(!1),c=L(!1),a=L(null),O=L([]),A=L([]),p=L(0),i=L(0),h=L(0),M=L([]),e=L(!1),l=L(null),U=L(!1),f=L(null),d=L(!1),w=L(null),[C,v]=_e(),k=L({columns:it,api:t=>xe(t,w.value),defaultPageLimit:20}),D=L({title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},book_id:null,time_show:null}),P=L({book_id:null}),z=L(null),G=L(!1);let ae=!1;de(()=>D.value.time_show,t=>{if(ae){ae=!1;return}if(t)try{const s=J(t);(!z.value||!s.isSame(z.value))&&(z.value=s)}catch{z.value=null}else z.value&&(z.value=null)},{immediate:!0});function Te(t,s){t?z.value=t:z.value=null}function Ce(t){if(t){ae=!0;const m=t.calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss");D.value.time_show=m,z.value=t}else ae=!0,D.value.time_show=null,z.value=null;G.value=!1}function Ye(){O.value=[],A.value=[],c.value=!1,a.value=null,D.value={title:"",sub_title:"",cover:null,src:null,time:{minutes:0,seconds:0},book_id:null,time_show:null},z.value=null,S.value=!0}function re(){S.value=!1}function Ue(t){return t.type.startsWith("audio/")?t.size/1024/1024<61?!0:(B.error("حجم فایل باید کمتر از 60MB باشد"),!1):(B.error("فقط فایلهای صوتی مجاز است"),!1)}async function Ie(t){const{file:s,onSuccess:g,onError:m,onProgress:Y}=t,F=new FormData;F.append("file",s);const E=`${ee}/upload/machartaa-audio`;i.value=0,p.value++,await new Promise((u,N)=>{const b=new XMLHttpRequest;b.open("POST",E),b.setRequestHeader("Authorization",`Bearer ${localStorage.getItem("tamin_token")||""}`),b.timeout=15*60*1e3,b.upload.onprogress=$=>{if($.lengthComputable){const x=Math.round($.loaded/$.total*100);i.value=x,Y==null||Y({percent:x})}},b.onload=()=>{if(i.value=100,b.status>=200&&b.status<300)try{const $=JSON.parse(b.responseText||"{}"),x=$.full_src||$.url||$.src||$.path||$.data&&($.data.full_src||$.data.url||$.data.src||$.data.path)||"";let V=x;x!=null&&x.startsWith("http")&&(V=x.replace(/^https?:\/\/[^\/]+/,""));const Z=V.startsWith("http")?V:`${ee}${V}`;D.value.src=V,O.value=Z?[{uid:`${Date.now()}`,name:"audio.mp3",status:"done",url:Z,response:{path:V}}]:[],g==null||g($,b),B.success("صوت با موفقیت آپلود شد!"),u()}catch($){m==null||m($,b),N($)}else if(b.status===413){const $=new Error("حجم فایل خیلی بزرگ است. لطفاً فایل کوچکتری انتخاب کنید.");B.error("حجم فایل خیلی بزرگ است. لطفاً فایل کوچکتری انتخاب کنید."),m==null||m($,b),N($)}else{let $="خطا در آپلود فایل";try{const V=JSON.parse(b.responseText||"{}");V.message?$=V.message:V.error&&($=V.error)}catch{}const x=new Error($);B.error($),m==null||m(x,b),N(x)}},b.onerror=()=>{const $=new Error("خطا در آپلود صوت");m==null||m($,b),N($)},b.ontimeout=()=>{const $=new Error("آپلود timeout شد - فایل خیلی بزرگ است");m==null||m($,b),N($)},b.onloadend=()=>{p.value=Math.max(0,p.value-1),i.value=0},b.send(F)})}function ne(t){return{width:`${Math.max(0,Math.min(100,t))}%`}}function Oe(t){return t.type.startsWith("image/")?t.size/1024/1024<5?!0:(B.error("حجم تصویر باید کمتر از 5MB باشد"),!1):(B.error("فقط فایلهای تصویری مجاز است"),!1)}async function qe(t){const{file:s,onSuccess:g,onError:m,onProgress:Y}=t,F=new FormData;F.append("file",s);const E=`${ee}/upload/machartaa-img`;h.value=0,p.value++,await new Promise((u,N)=>{const b=new XMLHttpRequest;b.open("POST",E);const $=ge()||localStorage.getItem("tamin_token")||"";b.setRequestHeader("Authorization",`Bearer ${$}`),b.upload.onprogress=x=>{if(x.lengthComputable){const V=Math.round(x.loaded/x.total*100);h.value=V,Y==null||Y({percent:V})}},b.onload=()=>{if(h.value=100,b.status>=200&&b.status<300)try{const x=JSON.parse(b.responseText||"{}"),V=x.full_src||x.url||x.src||x.path||x.data&&(x.data.full_src||x.data.url||x.data.src||x.data.path)||"";let Z=V;V!=null&&V.startsWith("http")&&(Z=V.replace(/^https?:\/\/[^\/]+/,""));const ce=Z.startsWith("http")?Z:`${ee}${Z}`;D.value.cover=Z,A.value=ce?[{uid:`${Date.now()}`,name:"cover.jpg",status:"done",url:ce,response:{path:Z}}]:[],g==null||g(x,b),B.success("کاور با موفقیت آپلود شد!"),u()}catch(x){m==null||m(x,b),N(x)}else{const x=new Error("خطا در آپلود تصویر");m==null||m(x,b),N(x)}},b.onerror=()=>{const x=new Error("خطا در آپلود کاور");m==null||m(x,b),N(x)},b.onloadend=()=>{p.value=Math.max(0,p.value-1),h.value=0},b.send(F)})}async function ze(){var g,m,Y,F,E,u;if(!((g=D.value.title)!=null&&g.trim()))return;if(p.value>0){B.warning("لطفاً تا پایان آپلود صبر کنید");return}let t=D.value.time_show;if(!t||t.trim()==="")t=J().calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss");else try{J(t).isValid()||(t=J(t).locale("fa").calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss"))}catch{t=J().calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss")}const s={title:D.value.title.trim(),sub_title:((m=D.value.sub_title)==null?void 0:m.trim())||"",cover:((Y=D.value.cover)==null?void 0:Y.trim())||null,src:((F=D.value.src)==null?void 0:F.trim())||null,time:{minutes:Number((E=D.value.time)==null?void 0:E.minutes)||0,seconds:Number((u=D.value.time)==null?void 0:u.seconds)||0},book_id:D.value.book_id||null,time_show:t};try{c.value&&a.value?(await ke(a.value,s),B.success("قصه با موفقیت ویرایش شد")):(await ot(s),B.success("قصه با موفقیت افزوده شد")),re(),await q()}catch(N){console.error("Error saving story:",N),B.error("خطا در ذخیره قصه: "+(N.message||"خطای ناشناخته"))}}function Le(t){c.value=!0,a.value=t.id;let s=t.cover||null;s&&s.startsWith("http")&&(s=s.replace(/^https?:\/\/[^\/]+/,""));let g=t.src||null;g&&g.startsWith("http")&&(g=g.replace(/^https?:\/\/[^\/]+/,"")),D.value={title:t.title||"",sub_title:t.sub_title||"",cover:s,src:g,time:t.time&&typeof t.time=="object"?{minutes:Number(t.time.minutes)||0,seconds:Number(t.time.seconds)||0}:{minutes:0,seconds:0},book_id:t.book_id||null,time_show:t.time_show||null},t.time_show?z.value=J(t.time_show):z.value=null;const m=g?g.startsWith("http")?g:`${ee}${g}`:null,Y=s?s.startsWith("http")?s:`${ee}${s}`:null;O.value=m?[{uid:"-1",name:"audio.mp3",status:"done",url:m,response:{path:g}}]:[],A.value=Y?[{uid:"-2",name:"cover.jpg",status:"done",url:Y,response:{path:s}}]:[],S.value=!0}function Ne(t){l.value=t.id,P.value={book_id:t.book_id||null},e.value=!0}function le(){e.value=!1,l.value=null,P.value={book_id:null}}async function Ve(){if(l.value)try{const{supabase:t}=await me(()=>import("./index-10f45eca.js").then(E=>E.bM),["assets/index-10f45eca.js","assets/index-0e9f449f.css"]),{data:s,error:g}=await t.from("storys").select("*").eq("id",l.value).single();if(g||!s){B.error("قصه یافت نشد");return}let m=s.cover||null;m&&m.startsWith("http")&&(m=m.replace(/^https?:\/\/[^\/]+/,""));let Y=s.src||null;Y&&Y.startsWith("http")&&(Y=Y.replace(/^https?:\/\/[^\/]+/,""));const F={title:s.title||"",sub_title:s.sub_title||"",cover:m,src:Y,time:s.time&&typeof s.time=="object"?{minutes:Number(s.time.minutes)||0,seconds:Number(s.time.seconds)||0}:{minutes:0,seconds:0},book_id:P.value.book_id||null};await ke(l.value,F),B.success("کتاب با موفقیت مرتبط شد"),le(),await q()}catch(t){console.error("Error linking book:",t),B.error("خطا در مرتبط کردن کتاب: "+(t.message||"خطای ناشناخته"))}}Fe(async()=>{try{const{getBooks:t}=await me(()=>import("./books-db5fefbb.js"),["assets/books-db5fefbb.js","assets/index-10f45eca.js","assets/index-0e9f449f.css"]),s=await t();M.value=s||[]}catch(t){console.error("Error loading books:",t)}});async function He(t){const g=(t==null?void 0:t.show)===!1,m=!!g;be.confirm({title:g?"نمایش دادن قصه":"مخفی کردن قصه",content:g?`آیا مطمئن هستید که میخواهید قصه "${t.title}" را نمایش دهید؟`:`آیا مطمئن هستید که میخواهید قصه "${t.title}" را مخفی کنید؟`,okText:g?"بله، نمایش بده":"بله، مخفی کن",cancelText:"انصراف",okType:"default",centered:!0,onOk:async()=>{try{await rt(t.id,m),B.success(g?"قصه با موفقیت نمایش داده شد":"قصه با موفقیت مخفی شد"),await q()}catch(Y){console.error("Error toggling show:",Y),B.error("خطا در تغییر وضعیت قصه: "+(Y.message||"خطای ناشناخته"))}}})}function Ae(t){be.confirm({title:"حذف قصه",content:`آیا مطمئن هستید که میخواهید قصه "${t.title}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{await nt(t.id),await q()}})}async function Be(t){w.value=t.id,U.value=!0,d.value=!0,f.value=null;try{const s=await ut(t.id);f.value=s,k.value.api=g=>xe(g,t.id)}catch(s){console.error("Error loading views:",s),B.error("خطا در بارگذاری اطلاعات بازدیدها: "+(s.message||"خطای ناشناخته"))}finally{d.value=!1}}de([U,f],async([t,s])=>{if(t&&s&&s.total_views>0){await fe(),await fe();try{await v()}catch{setTimeout(async()=>{try{await v()}catch(m){console.warn("Could not reload viewers table:",m)}},200)}}},{immediate:!1});function ue(){U.value=!1,f.value=null,w.value=null}return(t,s)=>{const g=Ge,m=Ze,Y=We,F=Ee,E=je;return j(),W("div",null,[T(E,null,{default:H(()=>[r("div",ct,[dt,T(g,{type:"primary",onClick:Ye},{default:H(()=>[ie("افزودن قصه")]),_:1})]),T(m,ve(I.value,{ref:"table",onRegister:R(y)}),{action:H(({record:u})=>[r("div",mt,[T(R(se),{class:"cursor-pointer"},{title:H(()=>[ft]),default:H(()=>[T(K,{icon:"vuesax-linear:monitor",color:"#8B5CF6",onClick:N=>Be(u)},null,8,["onClick"])]),_:2},1024),T(R(se),{class:"cursor-pointer"},{title:H(()=>[r("span",null,te((u==null?void 0:u.show)===!1?"نمایش دادن":"مخفی کردن"),1)]),default:H(()=>[T(K,{icon:(u==null?void 0:u.show)===!1?"vuesax-linear:eye":"vuesax-linear:eye-slash",color:(u==null?void 0:u.show)===!1?"#10B981":"#F59E0B",onClick:N=>He(u)},null,8,["icon","color","onClick"])]),_:2},1024),T(R(se),{class:"cursor-pointer"},{title:H(()=>[vt]),default:H(()=>[T(K,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:N=>Ae(u)},null,8,["onClick"])]),_:2},1024),T(R(se),{class:"cursor-pointer"},{title:H(()=>[ht]),default:H(()=>[T(K,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:N=>Le(u)},null,8,["onClick"])]),_:2},1024),u!=null&&u.book_id?X("",!0):(j(),Re(R(se),{key:0,class:"cursor-pointer"},{title:H(()=>[_t]),default:H(()=>[T(K,{icon:"vuesax-linear:book",color:"#217346",onClick:N=>Ne(u)},null,8,["onClick"])]),_:2},1024))])]),_:1},16,["onRegister"]),T(F,{visible:S.value,"onUpdate:visible":s[9]||(s[9]=u=>S.value=u),title:c.value?"ویرایش قصه":"افزودن قصه",onOk:ze,onCancel:re,width:"80%",confirmLoading:p.value>0},{default:H(()=>[r("div",pt,[p.value>0?(j(),W("div",gt,[T(R(ye),{size:"large"})])):X("",!0),r("div",null,[bt,T(Y,{value:D.value.title,"onUpdate:value":s[0]||(s[0]=u=>D.value.title=u),placeholder:"عنوان"},null,8,["value"])]),r("div",null,[yt,T(Y,{value:D.value.sub_title,"onUpdate:value":s[1]||(s[1]=u=>D.value.sub_title=u),placeholder:"زیرعنوان"},null,8,["value"])]),r("div",null,[wt,T(pe,{value:D.value.book_id??void 0,"onUpdate:value":s[2]||(s[2]=u=>D.value.book_id=u??null),items:M.value,keyName:"id",valueName:"title",placeholder:"انتخاب کتاب",allowClear:!0},null,8,["value","items"])]),r("div",null,[kt,T(R(o),{value:z.value,"onUpdate:value":s[3]||(s[3]=u=>z.value=u),open:G.value,"onUpdate:open":s[4]||(s[4]=u=>G.value=u),locale:R(Je),"show-time":{format:"HH:mm:ss"},format:"YYYY-MM-DD HH:mm:ss",placeholder:"انتخاب تاریخ و زمان انتشار",class:"w-full",onChange:Te,onOk:Ce},null,8,["value","open","locale"])]),r("div",xt,[r("div",$t,[Dt,r("div",St,[r("div",null,[Mt,T(Y,{value:D.value.time.minutes,"onUpdate:value":s[5]||(s[5]=u=>D.value.time.minutes=u),type:"number",placeholder:"0"},null,8,["value"])]),r("div",null,[Tt,T(Y,{value:D.value.time.seconds,"onUpdate:value":s[6]||(s[6]=u=>D.value.time.seconds=u),type:"number",placeholder:"0"},null,8,["value"])])])]),r("div",Ct,[r("div",null,[Yt,T(R(we),{"file-list":A.value,"onUpdate:fileList":s[7]||(s[7]=u=>A.value=u),"before-upload":Oe,"custom-request":qe,headers:_,accept:"image/*","max-count":1,"list-type":"picture-card"},{default:H(()=>[A.value.length<1?(j(),W("div",Ut,[T(K,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),It])):X("",!0)]),_:1},8,["file-list"]),h.value>0&&h.value<100?(j(),W("div",Ot,[r("div",qt,[r("div",{class:"h-2 bg-blue-500 transition-all",style:he(ne(h.value))},null,4)]),r("div",zt,te(h.value)+"%",1)])):X("",!0)]),r("div",null,[Lt,T(R(we),{"file-list":O.value,"onUpdate:fileList":s[8]||(s[8]=u=>O.value=u),"before-upload":Ue,"custom-request":Ie,headers:_,accept:"audio/*","max-count":1,"list-type":"picture-card"},{default:H(()=>[O.value.length<1?(j(),W("div",Nt,[T(K,{icon:"vuesax-linear:music",class:"text-2xl mb-2"}),Vt])):X("",!0)]),_:1},8,["file-list"]),i.value>0&&i.value<100?(j(),W("div",Ht,[r("div",At,[r("div",{class:"h-2 bg-blue-500 transition-all",style:he(ne(i.value))},null,4)]),r("div",Bt,te(i.value)+"%",1)])):X("",!0)])])])])]),_:1},8,["visible","title","confirmLoading"]),T(F,{visible:e.value,"onUpdate:visible":s[11]||(s[11]=u=>e.value=u),title:"مرتبط کردن کتاب",onOk:Ve,onCancel:le,width:"500px"},{default:H(()=>[r("div",Pt,[r("div",null,[Ft,T(pe,{value:P.value.book_id??void 0,"onUpdate:value":s[10]||(s[10]=u=>P.value.book_id=u??null),items:M.value,keyName:"id",valueName:"title",placeholder:"انتخاب کتاب",allowClear:!0},null,8,["value","items"])])])]),_:1},8,["visible"]),T(F,{visible:U.value,"onUpdate:visible":s[12]||(s[12]=u=>U.value=u),title:"اطلاعات بازدیدها",onCancel:ue,width:"800px",customFooter:!0,okText:""},{footer:H(()=>[r("div",Rt,[T(g,{onClick:ue},{default:H(()=>[ie("بستن")]),_:1})])]),default:H(()=>[f.value?(j(),W("div",jt,[r("div",Et,[r("div",Wt,[Zt,r("div",Jt,te(f.value.total_views),1)]),r("div",Gt,[Xt,r("div",Kt,te(f.value.unique_viewers),1)])]),r("div",null,[Qt,f.value&&f.value.total_views>0?(j(),W("div",es,[T(m,ve(k.value,{onRegister:R(C)}),null,16,["onRegister"])])):(j(),W("div",ts," هنوز بازدیدی ثبت نشده است "))])])):d.value?(j(),W("div",ss,[T(R(ye),{size:"large"})])):X("",!0)]),_:1},8,["visible"])]),_:1})])}}});export{Os as default};
|