2 lines
31 KiB
JavaScript
2 lines
31 KiB
JavaScript
import{ae as De,af as Se,I as Q,d as Be,g as q,P as de,x as je,_ as me,R as fe,o as j,c as W,b as C,w as V,a as r,e as ie,G as ve,j as B,t as ee,i as Ee,k as X,z as he,D as H,H as _e}from"./index-108817e3.js";import{_ as We}from"./BasicMainCard-0a3c966a.js";import{_ as Ze}from"./BasicModal.vue_vue_type_style_index_0_lang-b6c04ed1.js";import{_ as Je}from"./BasicInput.vue_vue_type_style_index_0_lang-5e5b83f8.js";import{u as pe,_ as Ge,l as Xe}from"./useBaseTable-f0604f98.js";import{_ as Ke}from"./button.vue_vue_type_style_index_0_lang-9ce24083.js";import{m as Qe,d as Z}from"./index-802c3c8f.js";import{I as K}from"./Icon-03d9588d.js";import{_ as ge}from"./BasicSelect.vue_vue_type_style_index_0_lang-bf2c93fd.js";import{t as oe}from"./useDataTime-0f06f32d.js";import{g as ae}from"./convert-67c23be8.js";import{g as be}from"./index-0f0e7a01.js";import{M as ye}from"./index-0d047161.js";import{S as we}from"./index-f0ba03aa.js";import{D as et}from"./dayjs-1639faa5.js";import{T as te}from"./shallowequal-105194c4.js";import{U as ke}from"./index-7f62fea2.js";import"./_plugin-vue_export-helper-ec62f026.js";import"./index-60d145d7.js";import"./index-d1557459.js";import"./Col-b2cbfe37.js";import"./vnode-9b8abbbf.js";import"./useState-472505a2.js";import"./useRefs-eb5e3b2f.js";import"./isPlainObject-a22b8354.js";import"./usePrice-7afab779.js";import"./index-707b194d.js";import"./FormItemContext-cecaca7f.js";import"./index-7c9c2b70.js";import"./pickAttrs-f899bdd0.js";import"./toArray-a421612c.js";import"./index-4f951158.js";var Me={exports:{}};(function(l,o){(function(_,y){l.exports=y()})(Se,function(){var _="minute",y=/[+-]\d\d(?::?\d\d)?/g,Y=/([+-]|\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(),_):u},a.local=function(){return d(this.toDate(),{locale:this.$L,utc:!1})};var I=a.parse;a.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),I.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 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(Y)||["-",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,_)).$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)}}})})(Me);var tt=Me.exports;const st=De(tt);var Te={exports:{}};(function(l,o){(function(_,y){l.exports=y()})(Se,function(){var _={year:0,month:1,day:2,hour:3,minute:4,second:5},y={};return function(Y,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)},I=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=_[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},A=O.prototype;A.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},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 g=A.startOf;A.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=I(+S(),u);if(typeof i!="string")return S(i).tz(u);var f=function(v,k,x){var R=v-60*k*1e3,N=I(R,x);if(k===N)return[R,k];var J=I(R-=60*(N-k)*1e3,x);return N===J?[R,N]:[v-60*Math.min(N,J)*1e3,Math.max(N,J)]}(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}}})})(Te);var at=Te.exports;const it=De(at),ot=[{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,_=l.record.book_id;return o||(_?`کتاب #${_}`:"-")}},{title:"زمان",dataIndex:"time",key:"time",customRender:l=>{const o=l.record.time||{minutes:0,seconds:0},_=Number(o.minutes||0),y=Number(o.seconds||0),Y=O=>String(O).padStart(2,"0");return`${Y(_)}:${Y(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 Qe.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"}],rt=[{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 nt(l){const{data:o,error:_}=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(_)throw _;return o}async function xe(l,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",l).select();if(y)throw y;return _}async function lt(l,o){const{data:_,error:y}=await Q.from("storys").update({show:o}).eq("id",l).select();if(y)throw y;return _}async function ut(l){const{error:o}=await Q.from("storys").delete().eq("id",l);if(o)throw o}async function ct(l){try{const{limit:o,filters:_,page:y,sort:Y,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(_&&Array.isArray(_)&&_.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}}),Y&&Y.key){const e=Y.order==="asc";d=d.order(Y.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:I,count:A}=await d;if(I)return console.error("[getStorysTable] Supabase query error:",I),{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:A||0},rows:M}}catch(o){throw console.error("[getStorysTable] Error:",o),o}}async function dt(l){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",l).order("viewed_at",{ascending:!1});if(_)throw console.error("[getStoryViews] Error fetching views:",_),_;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 I=a.user_id;if(I&&!S.has(I)){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(I,{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 $e(l,o){try{const{limit:_,filters:y,page:Y,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:I,error:A,count:g}=await a;if(A)return console.error("[getStoryViewersTable] Supabase query error:",A),{query:{...l,limit:_||10,page:Y||1,total:0},rows:[]};if(!I||I.length===0)return{query:{...l,limit:_||10,page:Y||1,total:0},rows:[]};try{let i=I.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=Y||1,M=_||20,e=(h-1)*M,u=e+M,f=i.slice(e,u).map((m,w)=>({...m,index:e+w}));return{query:{...l,limit:_||10,page:Y||1,total:i.length},rows:f}}catch(i){console.log("[getStoryViewersTable] normalize error:",i)}return{query:{...l,limit:_||10,page:Y||1,total:0},rows:[]}}catch(_){throw console.error("[getStoryViewersTable] Error:",_),_}}const mt={class:"flex justify-between items-center mb-4"},ft=r("h2",null,"قصه ها",-1),vt={class:"gap-2 flex justify-center"},ht=r("span",null,"بازدیدها",-1),_t=r("span",null,"حذف",-1),pt=r("span",null,"ویرایش",-1),gt=r("span",null,"مرتبط کردن کتاب",-1),bt={class:"space-y-4 relative"},yt={key:0,class:"absolute inset-0 bg-white/60 z-10 flex items-center justify-center"},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"},"کتاب مرتبط",-1),$t=r("div",{class:"mb-1 text-sm text-gray-600"},[ie(" زمان انتشار "),r("span",{class:"text-xs text-gray-500"},"(در صورت خالی گذاشتن این فیلد زمان حال ثبت می شود)")],-1),Dt={class:"flex gap-4"},St={class:"flex-1 flex justify-center gap-4"},Mt=r("div",{class:"mb-1 text-sm text-gray-600"},"آپلود تصویر کاور",-1),Tt={key:0},Ct=r("div",null,"آپلود کاور",-1),Ut={key:0,class:"mt-1"},Lt={class:"h-2 rounded bg-gray-200 overflow-hidden"},Ot={class:"text-xs text-gray-700 font-semibold text-center mt-1"},It=r("div",{class:"mb-1 text-sm text-gray-600"},"آپلود صوت (src)",-1),Yt={key:0},Nt=r("div",null,"آپلود صوت",-1),qt={key:0,class:"text-xs text-gray-500 mt-1 text-center"},zt={class:"h-2 rounded bg-gray-200 overflow-hidden"},Vt={class:"text-xs text-gray-700 font-semibold text-center mt-1"},At={class:"flex-1"},Ht=r("div",{class:"mb-1 text-sm text-gray-600"},[ie("زمان "),r("span",{class:"text-xs text-gray-500"},"(بعد از آپلود صوت قصه زمان آن به صورت خودکار وارد می شود)")],-1),Ft={class:"space-y-2"},Pt=r("div",{class:"mb-1 text-xs text-gray-500"},"دقیقه",-1),Rt=r("div",{class:"mb-1 text-xs text-gray-500"},"ثانیه",-1),Bt={class:"space-y-4"},jt=r("div",{class:"mb-1 text-sm text-gray-600"},"کتاب مرتبط",-1),Et={class:"flex justify-end"},Wt={key:0,class:"space-y-4"},Zt={class:"grid grid-cols-2 gap-4"},Jt={class:"bg-blue-50 p-4 rounded-lg"},Gt=r("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدید",-1),Xt={class:"text-2xl font-bold text-blue-600"},Kt={class:"bg-purple-50 p-4 rounded-lg"},Qt=r("div",{class:"text-sm text-gray-600 mb-1"},"تعداد بازدیدکننده",-1),es={class:"text-2xl font-bold text-purple-600"},ts=r("div",{class:"text-sm font-semibold text-gray-700 mb-2"},"لیست بازدیدکنندهها",-1),ss={key:0},as={key:1,class:"text-center py-8 text-gray-500"},is={key:1,class:"flex justify-center items-center py-8"},zs=Be({__name:"index",setup(l){Z.extend(st),Z.extend(it);const o=et,_={authorization:`Bearer ${be()||localStorage.getItem("tamin_token")||""}`},[y,Y]=pe(),O=q({columns:ot,api:ct,defaultPageLimit:20}),S=q(!1),d=q(!1),a=q(null),I=q([]),A=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]=pe(),k=q({columns:rt,api:t=>$e(t,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),J=q(!1);let se=!1;de(()=>x.value.time_show,t=>{if(se){se=!1;return}if(t)try{const s=Z(t);(!N.value||!s.isSame(N.value))&&(N.value=s)}catch{N.value=null}else N.value&&(N.value=null)},{immediate:!0});function Ce(t,s){t?N.value=t:N.value=null}function Ue(t){if(t){se=!0;const n=t.calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss");x.value.time_show=n,N.value=t}else se=!0,x.value.time_show=null,N.value=null;J.value=!1}function Le(){I.value=[],A.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 Oe(t){return t.type.startsWith("audio/")?t.size/1024/1024<61?!0:(H.error("حجم فایل باید کمتر از 60MB باشد"),!1):(H.error("فقط فایلهای صوتی مجاز است"),!1)}function Ie(t){const s=new Audio,p=URL.createObjectURL(t);s.addEventListener("loadedmetadata",()=>{const n=s.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,H.info(`مدت زمان فایل صوتی: ${T} دقیقه و ${P} ثانیه`)}URL.revokeObjectURL(p)}),s.addEventListener("error",()=>{URL.revokeObjectURL(p),console.warn("Could not determine audio duration from file")}),s.src=p}async function Ye(t){const{file:s,onSuccess:p,onError:n,onProgress:T}=t;Ie(s);const P=new FormData;P.append("file",s);const E=`${_e}/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 F=$;$!=null&&$.startsWith("http")&&(F=$.replace(/^https?:\/\/[^\/]+/,""));const G=ae(F);x.value.src=F,I.value=G?[{uid:`${Date.now()}`,name:"audio.mp3",status:"done",url:G,response:{path:F}}]:[],p==null||p(D,b),H.success("صوت با موفقیت آپلود شد!"),c()}catch(D){n==null||n(D,b),z(D)}else if(b.status===413){const D=new Error("حجم فایل خیلی بزرگ است. لطفاً فایل کوچکتری انتخاب کنید.");H.error("حجم فایل خیلی بزرگ است. لطفاً فایل کوچکتری انتخاب کنید."),n==null||n(D,b),z(D)}else{let D="خطا در آپلود فایل";try{const F=JSON.parse(b.responseText||"{}");F.message?D=F.message:F.error&&(D=F.error)}catch{}const $=new Error(D);H.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(t){return{width:`${Math.max(0,Math.min(100,t))}%`}}function Ne(t){return t.type.startsWith("image/")?t.size/1024/1024<5?!0:(H.error("حجم تصویر باید کمتر از 5MB باشد"),!1):(H.error("فقط فایلهای تصویری مجاز است"),!1)}async function qe(t){const{file:s,onSuccess:p,onError:n,onProgress:T}=t,P=new FormData;P.append("file",s);const E=`${_e}/upload/machartaa-img`;h.value=0,g.value++,await new Promise((c,z)=>{const b=new XMLHttpRequest;b.open("POST",E);const D=be()||localStorage.getItem("tamin_token")||"";b.setRequestHeader("Authorization",`Bearer ${D}`),b.upload.onprogress=$=>{if($.lengthComputable){const F=Math.round($.loaded/$.total*100);h.value=F,T==null||T({percent:F})}},b.onload=()=>{if(h.value=100,b.status>=200&&b.status<300)try{const $=JSON.parse(b.responseText||"{}"),F=$.full_src||$.url||$.src||$.path||$.data&&($.data.full_src||$.data.url||$.data.src||$.data.path)||"";let G=F;F!=null&&F.startsWith("http")&&(G=F.replace(/^https?:\/\/[^\/]+/,""));const ce=ae(G);x.value.cover=G,A.value=ce?[{uid:`${Date.now()}`,name:"cover.jpg",status:"done",url:ce,response:{path:G}}]:[],p==null||p($,b),H.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 ze(){var p,n,T,P,E,c;if(!((p=x.value.title)!=null&&p.trim()))return;if(g.value>0){H.warning("لطفاً تا پایان آپلود صبر کنید");return}let t=x.value.time_show;if(!t||t.trim()==="")t=Z().calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss");else try{Z(t).isValid()||(t=Z(t).locale("fa").calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss"))}catch{t=Z().calendar("gregory").locale("en").subtract(3,"hour").subtract(30,"minute").format("YYYY-MM-DD HH:mm:ss")}const s={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:t};try{d.value&&a.value?(await xe(a.value,s),H.success("قصه با موفقیت ویرایش شد")):(await nt(s),H.success("قصه با موفقیت افزوده شد")),re(),await Y()}catch(z){console.error("Error saving story:",z),H.error("خطا در ذخیره قصه: "+(z.message||"خطای ناشناخته"))}}function Ve(t){d.value=!0,a.value=t.id;let s=t.cover||null;s&&s.startsWith("http")&&(s=s.replace(/^https?:\/\/[^\/]+/,""));let p=t.src||null;p&&p.startsWith("http")&&(p=p.replace(/^https?:\/\/[^\/]+/,"")),x.value={title:t.title||"",sub_title:t.sub_title||"",cover:s,src:p,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?N.value=Z(t.time_show):N.value=null;const n=p?ae(p):null,T=s?ae(s):null;I.value=n?[{uid:"-1",name:"audio.mp3",status:"done",url:n,response:{path:p}}]:[],A.value=T?[{uid:"-2",name:"cover.jpg",status:"done",url:T,response:{path:s}}]:[],S.value=!0}function Ae(t){u.value=t.id,R.value={book_id:t.book_id||null},e.value=!0}function le(){e.value=!1,u.value=null,R.value={book_id:null}}async function He(){if(u.value)try{const{supabase:t}=await me(()=>import("./index-108817e3.js").then(E=>E.bO),["assets/index-108817e3.js","assets/index-6f54f748.css"]),{data:s,error:p}=await t.from("storys").select("*").eq("id",u.value).single();if(p||!s){H.error("قصه یافت نشد");return}let n=s.cover||null;n&&n.startsWith("http")&&(n=n.replace(/^https?:\/\/[^\/]+/,""));let T=s.src||null;T&&T.startsWith("http")&&(T=T.replace(/^https?:\/\/[^\/]+/,""));const P={title:s.title||"",sub_title:s.sub_title||"",cover:n,src:T,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:R.value.book_id||null};await xe(u.value,P),H.success("کتاب با موفقیت مرتبط شد"),le(),await Y()}catch(t){console.error("Error linking book:",t),H.error("خطا در مرتبط کردن کتاب: "+(t.message||"خطای ناشناخته"))}}je(async()=>{try{const{getBooks:t}=await me(()=>import("./books-65ded974.js"),["assets/books-65ded974.js","assets/index-108817e3.js","assets/index-6f54f748.css"]),s=await t();M.value=s||[]}catch(t){console.error("Error loading books:",t)}});async function Fe(t){const p=(t==null?void 0:t.show)===!1,n=!!p;ye.confirm({title:p?"نمایش دادن قصه":"مخفی کردن قصه",content:p?`آیا مطمئن هستید که میخواهید قصه "${t.title}" را نمایش دهید؟`:`آیا مطمئن هستید که میخواهید قصه "${t.title}" را مخفی کنید؟`,okText:p?"بله، نمایش بده":"بله، مخفی کن",cancelText:"انصراف",okType:"default",centered:!0,onOk:async()=>{try{await lt(t.id,n),H.success(p?"قصه با موفقیت نمایش داده شد":"قصه با موفقیت مخفی شد"),await Y()}catch(T){console.error("Error toggling show:",T),H.error("خطا در تغییر وضعیت قصه: "+(T.message||"خطای ناشناخته"))}}})}function Pe(t){ye.confirm({title:"حذف قصه",content:`آیا مطمئن هستید که میخواهید قصه "${t.title}" را حذف کنید؟`,okText:"بله، حذف کن",cancelText:"انصراف",okType:"danger",centered:!0,onOk:async()=>{await ut(t.id),await Y()}})}async function Re(t){w.value=t.id,L.value=!0,m.value=!0,f.value=null;try{const s=await dt(t.id);f.value=s,k.value.api=p=>$e(p,t.id)}catch(s){console.error("Error loading views:",s),H.error("خطا در بارگذاری اطلاعات بازدیدها: "+(s.message||"خطای ناشناخته"))}finally{m.value=!1}}de([L,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(n){console.warn("Could not reload viewers table:",n)}},200)}}},{immediate:!1});function ue(){L.value=!1,f.value=null,w.value=null}return(t,s)=>{const p=Ke,n=Ge,T=Je,P=Ze,E=We;return j(),W("div",null,[C(E,null,{default:V(()=>[r("div",mt,[ft,C(p,{type:"primary",onClick:Le},{default:V(()=>[ie("افزودن قصه")]),_:1})]),C(n,ve(O.value,{ref:"table",onRegister:B(y)}),{action:V(({record:c})=>[r("div",vt,[C(B(te),{class:"cursor-pointer"},{title:V(()=>[ht]),default:V(()=>[C(K,{icon:"vuesax-linear:monitor",color:"#8B5CF6",onClick:z=>Re(c)},null,8,["onClick"])]),_:2},1024),C(B(te),{class:"cursor-pointer"},{title:V(()=>[r("span",null,ee((c==null?void 0:c.show)===!1?"نمایش دادن":"مخفی کردن"),1)]),default:V(()=>[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=>Fe(c)},null,8,["icon","color","onClick"])]),_:2},1024),C(B(te),{class:"cursor-pointer"},{title:V(()=>[_t]),default:V(()=>[C(K,{icon:"vuesax-linear:trash",color:"#DC2626",onClick:z=>Pe(c)},null,8,["onClick"])]),_:2},1024),C(B(te),{class:"cursor-pointer"},{title:V(()=>[pt]),default:V(()=>[C(K,{icon:"vuesax-linear:edit",color:"#1D4ED8",onClick:z=>Ve(c)},null,8,["onClick"])]),_:2},1024),c!=null&&c.book_id?X("",!0):(j(),Ee(B(te),{key:0,class:"cursor-pointer"},{title:V(()=>[gt]),default:V(()=>[C(K,{icon:"vuesax-linear:book",color:"#217346",onClick:z=>Ae(c)},null,8,["onClick"])]),_:2},1024))])]),_:1},16,["onRegister"]),C(P,{visible:S.value,"onUpdate:visible":s[9]||(s[9]=c=>S.value=c),title:d.value?"ویرایش قصه":"افزودن قصه",onOk:ze,onCancel:re,width:"80%",confirmLoading:g.value>0},{default:V(()=>[r("div",bt,[g.value>0?(j(),W("div",yt,[C(B(we),{size:"large"})])):X("",!0),r("div",null,[wt,C(T,{value:x.value.title,"onUpdate:value":s[0]||(s[0]=c=>x.value.title=c),placeholder:"عنوان"},null,8,["value"])]),r("div",null,[kt,C(T,{value:x.value.sub_title,"onUpdate:value":s[1]||(s[1]=c=>x.value.sub_title=c),placeholder:"زیرعنوان"},null,8,["value"])]),r("div",null,[xt,C(ge,{value:x.value.book_id??void 0,"onUpdate:value":s[2]||(s[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,[$t,C(B(o),{value:N.value,"onUpdate:value":s[3]||(s[3]=c=>N.value=c),open:J.value,"onUpdate:open":s[4]||(s[4]=c=>J.value=c),locale:B(Xe),"show-time":{format:"HH:mm:ss"},format:"YYYY-MM-DD HH:mm:ss",placeholder:"انتخاب تاریخ و زمان انتشار",class:"w-full",onChange:Ce,onOk:Ue},null,8,["value","open","locale"])]),r("div",Dt,[r("div",St,[r("div",null,[Mt,C(B(ke),{"file-list":A.value,"onUpdate:fileList":s[5]||(s[5]=c=>A.value=c),"before-upload":Ne,"custom-request":qe,headers:_,accept:"image/*","max-count":1,"list-type":"picture-card"},{default:V(()=>[A.value.length<1?(j(),W("div",Tt,[C(K,{icon:"vuesax-linear:image",class:"text-2xl mb-2"}),Ct])):X("",!0)]),_:1},8,["file-list"]),h.value>0&&h.value<100?(j(),W("div",Ut,[r("div",Lt,[r("div",{class:"h-2 bg-blue-500 transition-all",style:he(ne(h.value))},null,4)]),r("div",Ot,ee(h.value)+"%",1)])):X("",!0)]),r("div",null,[It,C(B(ke),{"file-list":I.value,"onUpdate:fileList":s[6]||(s[6]=c=>I.value=c),"before-upload":Oe,"custom-request":Ye,headers:_,accept:"audio/*","max-count":1,"list-type":"picture-card"},{default:V(()=>[I.value.length<1?(j(),W("div",Yt,[C(K,{icon:"vuesax-linear:music",class:"text-2xl mb-2"}),Nt])):X("",!0)]),_:1},8,["file-list"]),i.value>0&&i.value<100?(j(),W("div",qt,[r("div",zt,[r("div",{class:"h-2 bg-blue-500 transition-all",style:he(ne(i.value))},null,4)]),r("div",Vt,ee(i.value)+"%",1)])):X("",!0)])]),r("div",At,[Ht,r("div",Ft,[r("div",null,[Pt,C(T,{value:x.value.time.minutes,"onUpdate:value":s[7]||(s[7]=c=>x.value.time.minutes=c),type:"number",placeholder:"0",disabled:!0},null,8,["value"])]),r("div",null,[Rt,C(T,{value:x.value.time.seconds,"onUpdate:value":s[8]||(s[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":s[11]||(s[11]=c=>e.value=c),title:"مرتبط کردن کتاب",onOk:He,onCancel:le,width:"500px"},{default:V(()=>[r("div",Bt,[r("div",null,[jt,C(ge,{value:R.value.book_id??void 0,"onUpdate:value":s[10]||(s[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":s[12]||(s[12]=c=>L.value=c),title:"اطلاعات بازدیدها",onCancel:ue,width:"800px",customFooter:!0,okText:""},{footer:V(()=>[r("div",Et,[C(p,{onClick:ue},{default:V(()=>[ie("بستن")]),_:1})])]),default:V(()=>[f.value?(j(),W("div",Wt,[r("div",Zt,[r("div",Jt,[Gt,r("div",Xt,ee(f.value.total_views),1)]),r("div",Kt,[Qt,r("div",es,ee(f.value.unique_viewers),1)])]),r("div",null,[ts,f.value&&f.value.total_views>0?(j(),W("div",ss,[C(n,ve(k.value,{onRegister:B(U)}),null,16,["onRegister"])])):(j(),W("div",as," هنوز بازدیدی ثبت نشده است "))])])):m.value?(j(),W("div",is,[C(B(we),{size:"large"})])):X("",!0)]),_:1},8,["visible"])]),_:1})])}}});export{zs as default};
|