2 lines
18 KiB
JavaScript
2 lines
18 KiB
JavaScript
import{_ as N}from"./_plugin-vue_export-helper-130a5518.js";import{o as z,c as $,N as Y,L as U,G as b}from"./index-b0561d74.js";import{g as S,b as I,c as A,m as j,d as C,e as W}from"./useDataTime-a337f5c6.js";const x={},B={class:"bg-gradient"};function F(v,w){return z(),$("div",B,[Y(v.$slots,"default")])}const ee=N(x,[["render",F]]),te="/assets/users4-80585f51.svg",se="/assets/users3-3a96ddd8.svg",ae="/assets/users5-1dc3f500.svg",re="/assets/users2-8002992a.svg";function q(v=new Date){return new Date(C(v).getTime()-1)}function H(v,w){return new Date(I(v).getTime()+(w+1)*60*60*1e3-1)}const ne=async()=>await U.get("/admin/report"),oe=async(v=10,w="all")=>(await U.get("/admin/dashboard/summary",{params:{storyLimit:v,section:w}})).data,ie=async()=>(await U.get("/admin/dashboard/subscriptions-overview")).data,de=async(v={})=>(await U.get("/admin/dashboard/subscriptions-overview/chart",{params:{days:v.days??30,startDate:v.startDate,endDate:v.endDate}})).data,ce=async()=>(await U.get("/admin/dashboard/subscribers-overview")).data,ue=async(v={})=>(await U.get("/admin/dashboard/subscribers-overview/expiry-chart",{params:{days:v.days??30,startDate:v.startDate,endDate:v.endDate}})).data,le=async()=>(await U.get("/admin/dashboard/user-segments-overview")).data,we=async v=>{const{type:w,item_id:d,date:h,startDate:_,endDate:y,statType:g="cumulative_viewers"}=v,D=h?new Date(h):new Date;if(w==="hourly"){let u,c;if(_&&y?(u=_,c=y):(u=S(D),c=u),g==="cumulative_viewers"){const o=q(c);let i=b.from("user_views").select("user_id, viewed_at").eq("type","story").lte("viewed_at",o.toISOString()).not("user_id","is",null).order("viewed_at");d&&(i=i.eq("item_id",d));const{data:e,error:a}=await i;if(a)throw a;if(!e||e.length===0)return[];const l=I(u),t=[],s=new Date(l);for(;s<=o;)t.push({day:S(s),hour:A(s)}),s.setTime(s.getTime()+60*60*1e3);return t.map(({day:n,hour:f})=>{const m=H(n,f),p=new Set;return e.forEach(O=>{new Date(O.viewed_at)<=m&&p.add(O.user_id)}),{day:n,hour:f,views:p.size}})}else if(g==="total_views"){let o=b.from("user_views_hourly").select("*").eq("type","story").gte("day",u).lte("day",c).order("day").order("hour");d&&(o=o.eq("item_id",d));const{data:i,error:e}=await o;if(e)throw e;return i||[]}else{const o=I(u),i=q(c);let e=b.from("user_views").select("user_id, viewed_at").eq("type","story").gte("viewed_at",o.toISOString()).lte("viewed_at",i.toISOString()).not("user_id","is",null);d&&(e=e.eq("item_id",d));const{data:a,error:l}=await e;if(l)throw l;if(!a||a.length===0)return[];const t={};return a.forEach(s=>{const r=new Date(s.viewed_at),n=S(r),f=A(r),m=`${n}_${f}`,p=s.user_id;t[m]||(t[m]=new Set),t[m].add(p)}),Object.keys(t).map(s=>{const[r,n]=s.split("_");return{day:r,hour:Number(n),views:t[s].size}})}}else if(w==="daily"){let u,c;if(_&&y)u=_,c=y;else{const o=new Date(D);o.setDate(D.getDate()-29),u=S(o),c=S(D)}if(g==="cumulative_viewers"){const o=q(c);let i=b.from("user_views").select("user_id, viewed_at").eq("type","story").lte("viewed_at",o.toISOString()).not("user_id","is",null).order("viewed_at");d&&(i=i.eq("item_id",d));const{data:e,error:a}=await i;if(a)throw a;if(!e||e.length===0)return[];const l=[],t=new Date(u);for(;t<=o;)l.push(S(t)),t.setDate(t.getDate()+1);return l.map(r=>{const n=new Date(r);n.setHours(23,59,59,999);const f=new Set;return e.forEach(m=>{new Date(m.viewed_at)<=n&&f.add(m.user_id)}),{day:r,views:f.size}})}else if(g==="total_views"){let o=b.from("user_views_hourly").select("*").eq("type","story").gte("day",u).lte("day",c).order("day").order("hour");d&&(o=o.eq("item_id",d));const{data:i,error:e}=await o;if(e)throw e;return i||[]}else{const o=I(u),i=q(c);let e=b.from("user_views").select("user_id, viewed_at").eq("type","story").gte("viewed_at",o.toISOString()).lte("viewed_at",i.toISOString()).not("user_id","is",null);d&&(e=e.eq("item_id",d));const{data:a,error:l}=await e;if(l)throw l;if(!a||a.length===0)return[];const t={};return a.forEach(s=>{const r=new Date(s.viewed_at),n=S(r),f=s.user_id;t[n]||(t[n]=new Set),t[n].add(f)}),Object.keys(t).sort().map(s=>({day:s,views:t[s].size}))}}else if(w==="weekly"){let u,c;if(_&&y)u=_,c=y;else{const o=new Date(D);o.setDate(D.getDate()-84),u=S(o),c=S(D)}if(g==="cumulative_viewers"){const o=q(c);let i=b.from("user_views").select("user_id, viewed_at").eq("type","story").lte("viewed_at",o.toISOString()).not("user_id","is",null).order("viewed_at");d&&(i=i.eq("item_id",d));const{data:e,error:a}=await i;if(a)throw a;if(!e||e.length===0)return[];const l=[],t=new Date(u);for(;t<=new Date(c);){const r=t.getDay();let n=0;r===0?n=1:r!==6&&(n=6-r);const f=new Date(t);f.setDate(t.getDate()-n);const m=S(f);l.includes(m)||l.push(m),t.setDate(t.getDate()+1)}return l.sort().map(r=>{const n=new Date(r);n.setDate(n.getDate()+5),n.setHours(23,59,59,999);const f=new Set;return e.forEach(m=>{new Date(m.viewed_at)<=n&&f.add(m.user_id)}),{day:r,views:f.size}})}else if(g==="total_views"){let o=b.from("user_views_hourly").select("*").eq("type","story").gte("day",u).lte("day",c).order("day").order("hour");d&&(o=o.eq("item_id",d));const{data:i,error:e}=await o;if(e)throw e;if(!i||i.length===0)return[];const a={};return i.forEach(l=>{const t=new Date(l.day+"T00:00:00"),s=t.getDay();let r=0;s===0?r=1:s!==6&&(r=6-s);const n=new Date(t);n.setDate(t.getDate()-r);const f=S(n);a[f]=(a[f]||0)+Number(l.views||0)}),Object.keys(a).sort().map(l=>({day:l,views:a[l]}))}else{const o=I(u),i=q(c);let e=b.from("user_views").select("user_id, viewed_at").eq("type","story").gte("viewed_at",o.toISOString()).lte("viewed_at",i.toISOString()).not("user_id","is",null);d&&(e=e.eq("item_id",d));const{data:a,error:l}=await e;if(l)throw l;if(!a||a.length===0)return[];const t={};return a.forEach(s=>{const r=new Date(s.viewed_at),n=r.getDay();let f=0;n===0?f=1:n!==6&&(f=6-n);const m=new Date(r);m.setDate(r.getDate()-f);const p=S(m),O=s.user_id;t[p]||(t[p]=new Set),t[p].add(O)}),Object.keys(t).sort().map(s=>({day:s,views:t[s].size}))}}else if(w==="monthly"){let u,c;if(_&&y)u=_,c=y;else{const o=new Date(D);o.setMonth(D.getMonth()-12),u=S(o),c=S(D)}if(g==="cumulative_viewers"){const o=q(c);let i=b.from("user_views").select("user_id, viewed_at").eq("type","story").lte("viewed_at",o.toISOString()).not("user_id","is",null).order("viewed_at");d&&(i=i.eq("item_id",d));const{data:e,error:a}=await i;if(a)throw a;if(!e||e.length===0)return[];const l=[],t=new Date(u);for(;t<=new Date(c);){const r=j(t),n=`${r.jYear()}-${String(r.jMonth()+1).padStart(2,"0")}`;l.includes(n)||l.push(n),t.setMonth(t.getMonth()+1)}return l.sort().map(r=>{const[n,f]=r.split("-"),m=j().jYear(Number(n)).jMonth(Number(f)-1).endOf("jMonth").toDate();m.setHours(23,59,59,999);const p=new Set;return e.forEach(O=>{new Date(O.viewed_at)<=m&&p.add(O.user_id)}),{day:r,views:p.size}})}else if(g==="total_views"){let o=b.from("user_views_hourly").select("*").eq("type","story").gte("day",u).lte("day",c).order("day").order("hour");d&&(o=o.eq("item_id",d));const{data:i,error:e}=await o;if(e)throw e;if(!i||i.length===0)return[];const a={};return i.forEach(l=>{const t=new Date(l.day+"T00:00:00"),s=j(t),r=`${s.jYear()}-${String(s.jMonth()+1).padStart(2,"0")}`;a[r]=(a[r]||0)+Number(l.views||0)}),Object.keys(a).sort().map(l=>({day:l,views:a[l]}))}else{const o=I(u),i=q(c);let e=b.from("user_views").select("user_id, viewed_at").eq("type","story").gte("viewed_at",o.toISOString()).lte("viewed_at",i.toISOString()).not("user_id","is",null);d&&(e=e.eq("item_id",d));const{data:a,error:l}=await e;if(l)throw l;if(!a||a.length===0)return[];const t={};return a.forEach(s=>{const r=new Date(s.viewed_at),n=j(r),f=`${n.jYear()}-${String(n.jMonth()+1).padStart(2,"0")}`,m=s.user_id;t[f]||(t[f]=new Set),t[f].add(m)}),Object.keys(t).sort().map(s=>({day:s,views:t[s].size}))}}},fe=async v=>{const{type:w,date:d,startDate:h,endDate:_,statType:y="all"}=v,g=d?new Date(d):new Date;if(w==="hourly"){let D,u;if(h&&_)D=I(h),u=q(_);else{const c=d||S();D=I(c),u=q(c)}if(y==="registration"){const{data:c,error:o}=await b.from("users").select("id, created_at").gte("created_at",D.toISOString()).lte("created_at",u.toISOString());if(o)throw o;if(!c||c.length===0)return[];const i={};return c.forEach(e=>{const a=new Date(e.created_at),l=A(a),t=e.id;i[l]||(i[l]=new Set),i[l].add(t)}),Object.keys(i).map(e=>({hour:Number(e),users:i[Number(e)].size,totalUniqueUsers:0}))}else if(y==="active"){const{data:c,error:o}=await b.from("user_views").select("user_id, viewed_at").gte("viewed_at",D.toISOString()).lte("viewed_at",u.toISOString()).not("user_id","is",null);if(o)throw o;if(!c||c.length===0)return[];const i={};c.forEach(s=>{const r=s.user_id;i[r]=(i[r]||0)+1});const e=Object.keys(i).filter(s=>i[s]>4);if(e.length===0)return[];const a=new Set(e),l=c.filter(s=>a.has(String(s.user_id)));if(l.length===0)return[];const t={};return l.forEach(s=>{const r=new Date(s.viewed_at),n=A(r),f=s.user_id;t[n]||(t[n]=new Set),t[n].add(f)}),Object.keys(t).map(s=>({hour:Number(s),users:t[Number(s)].size,totalUniqueUsers:0}))}else{const c=q(u),{data:o,error:i}=await b.from("users").select("id, created_at").lte("created_at",c.toISOString()).order("created_at");if(i)throw i;const e=[],a=new Date(D);for(;a<=c;)e.push({day:S(a),hour:A(a)}),a.setTime(a.getTime()+60*60*1e3);return!o||o.length===0?e.map(({day:t,hour:s})=>({hour:s,users:0,totalUniqueUsers:0})):e.map(({day:t,hour:s})=>{const r=H(t,s),n=new Set;return o.forEach(f=>{new Date(f.created_at)<=r&&n.add(f.id)}),{hour:s,users:n.size,totalUniqueUsers:n.size}})}}else if(w==="daily"){let D,u;if(h&&_)D=new Date(h),D.setHours(0,0,0,0),u=new Date(_),u.setHours(23,59,59,999);else{const c=new Date(g);c.setDate(g.getDate()-29),c.setHours(0,0,0,0),u=new Date(g),u.setHours(23,59,59,999),D=c}if(y==="registration"){const{data:c,error:o}=await b.from("users").select("id, created_at").gte("created_at",D.toISOString()).lte("created_at",u.toISOString());if(o)throw o;if(!c||c.length===0)return[];const i={};return c.forEach(e=>{const a=new Date(e.created_at),l=S(a),t=e.id;i[l]||(i[l]=new Set),i[l].add(t)}),Object.keys(i).sort().map(e=>({day:e,users:i[e].size,totalUniqueUsers:0}))}else if(y==="active"){const{data:c,error:o}=await b.from("user_views").select("user_id, viewed_at").gte("viewed_at",D.toISOString()).lte("viewed_at",u.toISOString()).not("user_id","is",null);if(o)throw o;if(!c||c.length===0)return[];const i={};c.forEach(s=>{const r=s.user_id;i[r]=(i[r]||0)+1});const e=Object.keys(i).filter(s=>i[s]>4);if(e.length===0)return[];const a=new Set(e),l=c.filter(s=>a.has(String(s.user_id)));if(l.length===0)return[];const t={};return l.forEach(s=>{const r=new Date(s.viewed_at),n=S(r),f=s.user_id;t[n]||(t[n]=new Set),t[n].add(f)}),Object.keys(t).sort().map(s=>({day:s,users:t[s].size,totalUniqueUsers:0}))}else{const c=q(u),{data:o,error:i}=await b.from("users").select("id, created_at").lte("created_at",c.toISOString()).order("created_at");if(i)throw i;const e=[],a=new Date(D);for(;a<=c;)e.push(S(a)),a.setDate(a.getDate()+1);return!o||o.length===0?e.map(t=>({day:t,users:0,totalUniqueUsers:0})):e.map(t=>{const s=new Date(t);s.setHours(23,59,59,999);const r=new Set;return o.forEach(n=>{new Date(n.created_at)<=s&&r.add(n.id)}),{day:t,users:r.size,totalUniqueUsers:r.size}})}}else if(w==="weekly"){let D,u;if(h&&_)D=new Date(h),D.setHours(0,0,0,0),u=new Date(_),u.setHours(23,59,59,999);else{const e=new Date(g);e.setDate(g.getDate()-84),e.setHours(0,0,0,0),u=new Date(g),u.setHours(23,59,59,999),D=e}const c=q(u);let o,i;if(y==="registration"||y==="all"){const e=await b.from("users").select("id, created_at").lte("created_at",c.toISOString()).order("created_at");o=e.data||[],i=e.error}else if(y==="active"){const e=await b.from("user_views").select("user_id, viewed_at").lte("viewed_at",c.toISOString()).not("user_id","is",null).order("viewed_at");o=e.data||[],i=e.error}if(i)throw i;if(!o||o.length===0)return[];if(y==="all"){const e=[],a=new Date(D);for(;a<=u;){const t=a.getDay();let s=0;t===0?s=1:t!==6&&(s=6-t);const r=new Date(a);r.setDate(a.getDate()-s),r.setHours(0,0,0,0);const n=S(r);e.includes(n)||e.push(n),a.setDate(a.getDate()+7)}return e.sort().map(t=>{const s=new Date(t+"T00:00:00"),r=new Date(s);r.setDate(s.getDate()+5),r.setHours(23,59,59,999);const n=new Set;return o.forEach(f=>{new Date(f.created_at)<=r&&n.add(f.id)}),{day:t,users:n.size,totalUniqueUsers:n.size}})}else if(y==="registration"){const e=[],a=new Date(D);for(;a<=u;){const t=a.getDay();let s=0;t===0?s=1:t!==6&&(s=6-t);const r=new Date(a);r.setDate(a.getDate()-s),r.setHours(0,0,0,0);const n=S(r);e.includes(n)||e.push(n),a.setDate(a.getDate()+7)}return e.sort().map(t=>{const s=new Date(t+"T00:00:00"),r=new Date(s);r.setDate(s.getDate()+5),r.setHours(23,59,59,999);const n=new Set;return o.forEach(f=>{const m=new Date(f.created_at);m>=s&&m<=r&&n.add(f.id)}),{day:t,users:n.size,totalUniqueUsers:0}})}else if(y==="active"){const e=[],a=new Date(D);for(;a<=u;){const t=a.getDay();let s=0;t===0?s=1:t!==6&&(s=6-t);const r=new Date(a);r.setDate(a.getDate()-s),r.setHours(0,0,0,0);const n=S(r);e.includes(n)||e.push(n),a.setDate(a.getDate()+7)}return e.sort().map(t=>{const s=new Date(t+"T00:00:00"),r=new Date(s);r.setDate(s.getDate()+5),r.setHours(23,59,59,999);const n=o.filter(p=>{const O=new Date(p.viewed_at);return O>=s&&O<=r}),f={};n.forEach(p=>{const O=p.user_id;f[O]=(f[O]||0)+1});const m=Object.keys(f).filter(p=>f[p]>4);return{day:t,users:m.length,totalUniqueUsers:0}})}}else if(w==="monthly"){let D,u;if(h&&_)D=new Date(h),D.setHours(0,0,0,0),u=new Date(_),u.setHours(23,59,59,999);else{const e=new Date(g);e.setMonth(g.getMonth()-12),e.setHours(0,0,0,0),u=new Date(g),u.setHours(23,59,59,999),D=e}const c=q(u);let o,i;if(y==="registration"||y==="all"){const e=await b.from("users").select("id, created_at").lte("created_at",c.toISOString()).order("created_at");o=e.data||[],i=e.error}else if(y==="active"){const e=await b.from("user_views").select("user_id, viewed_at").lte("viewed_at",c.toISOString()).not("user_id","is",null).order("viewed_at");o=e.data||[],i=e.error}if(i)throw i;if(!o||o.length===0)return[];if(y==="all"){const e=[],a=new Date(D);for(;a<=u;){const t=j(a),s=`${t.jYear()}-${String(t.jMonth()+1).padStart(2,"0")}`;e.includes(s)||e.push(s),a.setMonth(a.getMonth()+1)}return e.sort().map(t=>{const[s,r]=t.split("-"),n=j().jYear(Number(s)).jMonth(Number(r)-1).endOf("jMonth").toDate();n.setHours(23,59,59,999);const f=new Set;return o.forEach(m=>{new Date(m.created_at)<=n&&f.add(m.id)}),{day:t,users:f.size,totalUniqueUsers:f.size}})}else if(y==="registration"){const e=[],a=new Date(D);for(;a<=u;){const t=j(a),s=`${t.jYear()}-${String(t.jMonth()+1).padStart(2,"0")}`;e.includes(s)||e.push(s),a.setMonth(a.getMonth()+1)}return e.sort().map(t=>{const[s,r]=t.split("-"),n=j().jYear(Number(s)).jMonth(Number(r)-1).startOf("jMonth").toDate();n.setHours(0,0,0,0);const f=j().jYear(Number(s)).jMonth(Number(r)-1).endOf("jMonth").toDate();f.setHours(23,59,59,999);const m=new Set;return o.forEach(p=>{const O=new Date(p.created_at);O>=n&&O<=f&&m.add(p.id)}),{day:t,users:m.size,totalUniqueUsers:0}})}else if(y==="active"){const e=[],a=new Date(D);for(;a<=u;){const t=j(a),s=`${t.jYear()}-${String(t.jMonth()+1).padStart(2,"0")}`;e.includes(s)||e.push(s),a.setMonth(a.getMonth()+1)}return e.sort().map(t=>{const[s,r]=t.split("-"),n=j().jYear(Number(s)).jMonth(Number(r)-1).startOf("jMonth").toDate();n.setHours(0,0,0,0);const f=j().jYear(Number(s)).jMonth(Number(r)-1).endOf("jMonth").toDate();f.setHours(23,59,59,999);const m=o.filter(E=>{const M=new Date(E.viewed_at);return M>=n&&M<=f}),p={};m.forEach(E=>{const M=E.user_id;p[M]=(p[M]||0)+1});const O=Object.keys(p).filter(E=>p[E]>4);return{day:t,users:O.length,totalUniqueUsers:0}})}}},V="music_macharta_audio",k="music_macharta_video";function R(v){const w={};return v.forEach(d=>{const h=Number(d.hour)||0;w[h]||(w[h]={audioViews:0,videoViews:0});const _=Number(d.views||0);d.type===V?w[h].audioViews+=_:d.type===k&&(w[h].videoViews+=_)}),Object.keys(w).map(d=>({hour:Number(d),audioViews:w[Number(d)].audioViews,videoViews:w[Number(d)].videoViews}))}function G(v){const w={};return v.forEach(d=>{const h=d.day||"";if(!h)return;w[h]||(w[h]={audioViews:0,videoViews:0});const _=Number(d.views||0);d.type===V?w[h].audioViews+=_:d.type===k&&(w[h].videoViews+=_)}),Object.keys(w).sort().map(d=>({day:d,audioViews:w[d].audioViews,videoViews:w[d].videoViews}))}function K(v){return S(W(v))}function L(v){const w={};return v.forEach(d=>{const h=new Date(`${d.day}T00:00:00`),_=K(h);w[_]||(w[_]={audioViews:0,videoViews:0});const y=Number(d.views||0);d.type===V?w[_].audioViews+=y:d.type===k&&(w[_].videoViews+=y)}),Object.keys(w).sort().map(d=>({day:d,audioViews:w[d].audioViews,videoViews:w[d].videoViews}))}function P(v){const w={};return v.forEach(d=>{const h=new Date(`${d.day}T00:00:00`),_=j(h),y=`${_.jYear()}-${String(_.jMonth()+1).padStart(2,"0")}`;w[y]||(w[y]={audioViews:0,videoViews:0});const g=Number(d.views||0);d.type===V?w[y].audioViews+=g:d.type===k&&(w[y].videoViews+=g)}),Object.keys(w).sort().map(d=>({day:d,audioViews:w[d].audioViews,videoViews:w[d].videoViews}))}async function J(v,w){const{data:d,error:h}=await b.from("user_views_hourly").select("type, day, hour, views").in("type",[V,k]).gte("day",v).lte("day",w).order("day").order("hour");if(h)throw h;return d||[]}async function T(v,w){const{data:d,error:h}=await b.from("user_views_hourly").select("type, day, views").in("type",[V,k]).gte("day",v).lte("day",w).order("day");if(h)throw h;return d||[]}const De=async v=>{const{type:w,date:d,startDate:h,endDate:_}=v,y=d?new Date(d):new Date;if(w==="hourly"){let g,D;h&&_?(g=h,D=_):(g=S(y),D=g);const u=await J(g,D);return R(u)}if(w==="daily"){let g,D;if(h&&_)g=h,D=_;else{const c=new Date(y);c.setDate(y.getDate()-29),g=S(c),D=S(y)}const u=await T(g,D);return G(u)}if(w==="weekly"){let g,D;if(h&&_)g=h,D=_;else{const c=new Date(y);c.setDate(y.getDate()-84),g=S(c),D=S(y)}const u=await T(g,D);return L(u)}if(w==="monthly"){let g,D;if(h&&_)g=h,D=_;else{const c=new Date(y);c.setMonth(y.getMonth()-11),g=S(c),D=S(y)}const u=await T(g,D);return P(u)}return[]},ye="/assets/story-1-1bf4c2bf.svg",he="/assets/story-2-1ee079e7.svg",_e="/assets/story-3-3cc2145b.svg",ve="/assets/story-4-d1c9c754.svg";export{ee as G,ae as a,se as b,te as c,_e as d,he as e,ve as f,oe as g,ne as h,fe as i,we as j,De as k,ie as l,de as m,ce as n,ue as o,le as p,ye as s,re as u};
|