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