2 lines
8.6 KiB
JavaScript
2 lines
8.6 KiB
JavaScript
import{_ as M}from"./BasicMainCard-4b9ba85b.js";import{u as g,_ as j}from"./useBaseTable-3c30fe12.js";import{t as v,a as b}from"./useDataTime-5a269444.js";import{G as p,d as q,g as F,h as H,E as J,O as G,D as Y,v as z,o as L,c as $,b as c,w as u,a as I,t as Q,k as X,H as h,j as x}from"./index-f8ee37b9.js";import{f as C,a as P,c as R,d as T,e as ee,b as E}from"./supabaseTableQuery-95762ff3.js";import{T as te,a as ae}from"./index-6e8a4b4f.js";import"./Grid-30a17a21.js";import"./index-ee1b3469.js";import"./Col-97627e24.js";import"./styleChecker-c1fc9f39.js";import"./isPlainObject-6382de01.js";import"./vnode-b0e810ae.js";import"./_plugin-vue_export-helper-775bc553.js";import"./button.vue_vue_type_style_index_0_lang-f6f5b6a0.js";import"./Icon-889d6eab.js";import"./updateLocale-d5a764a4.js";import"./isSymbol-cdcd460d.js";import"./index-bc659f42.js";import"./index-b8cc71e2.js";import"./omit-bdd3cea5.js";import"./useState-f5985d90.js";import"./index-f923b666.js";import"./toArray-53a55fc4.js";import"./FormItemContext-5821e8c8.js";import"./pickAttrs-69f29e9c.js";import"./lodash-7c51d08d.js";import"./BaseSwitch.vue_vue_type_script_setup_true_lang-2e892f80.js";import"./index-ef1f8a61.js";import"./DialogWrap-192ddaf7.js";import"./BasicModal.vue_vue_type_style_index_0_lang-661b0a06.js";import"./index-0e72b27c.js";import"./index-1ab617ae.js";import"./index-78e4e5e0.js";import"./Badge-47d7b0bb.js";import"./isNumeric-3f69e2aa.js";import"./index-89210322.js";import"./index-8bcedf66.js";import"./index-0441c4fc.js";import"./css-aae66f86.js";import"./index-bf59f845.js";import"./useRefs-bff35432.js";import"./_flatRest-6305d35d.js";const ie=[{title:"ردیف",dataIndex:"index",key:"index",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"رتبه",dataIndex:"rank",key:"rank",filterable:!1,width:80,align:"center"},{title:"نام کاربر",dataIndex:"display_name",key:"display_name",filterField:"display_name"},{title:"شماره همراه",dataIndex:"phone",key:"phone",filterField:"phone",width:130},{title:"امتیاز",dataIndex:"total_points",key:"total_points",filterField:"total_points",align:"center",width:100,customRender:e=>(e.record.total_points??0).toLocaleString("fa-IR")},{title:"آخرین بروزرسانی",dataIndex:"updated_at",key:"updated_at",type:"DateTime",filterField:"updated_at",width:150,customRender:e=>v(e.record.updated_at)}],ne=[{title:"ردیف",dataIndex:"index",key:"index",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"رتبه",dataIndex:"rank",key:"rank",filterable:!1,width:80,align:"center"},{title:"نام کاربر",dataIndex:"display_name",key:"display_name",filterField:"display_name"},{title:"شماره همراه",dataIndex:"phone",key:"phone",filterField:"phone",width:130},{title:"امتیاز هفته",dataIndex:"total_points",key:"total_points",filterField:"total_points",align:"center",width:110,customRender:e=>(e.record.total_points??0).toLocaleString("fa-IR")},{title:"آخرین بروزرسانی",dataIndex:"updated_at",key:"updated_at",type:"DateTime",filterField:"updated_at",width:150,customRender:e=>v(e.record.updated_at)}],oe=[{title:"ردیف",dataIndex:"index",key:"index",filterable:!1,width:70,align:"center",customRender:e=>e.record.index+1},{title:"بازه هفته",dataIndex:"week_period",key:"week_period",filterField:"week_start",width:180,customRender:e=>{const a=e.record;return`${D(a.week_start)} تا ${D(a.week_end)}`}},{title:"رتبه",dataIndex:"rank",key:"rank",filterField:"rank",align:"center",width:80},{title:"نام کاربر",dataIndex:"display_name",key:"display_name",filterField:"display_name"},{title:"امتیاز",dataIndex:"total_points",key:"total_points",filterField:"total_points",align:"center",width:100,customRender:e=>(e.record.total_points??0).toLocaleString("fa-IR")},{title:"زمان آرشیو",dataIndex:"created_at",key:"created_at",type:"DateTime",filterField:"created_at",width:150,customRender:e=>v(e.record.created_at)}];function D(e){return e?b(`${e}T00:00:00Z`):"—"}function re(e){var i;if(!e)return"نامشخص";if((i=e.name)!=null&&i.trim())return e.name.trim();const a=`${e.first_name||""} ${e.last_name||""}`.trim();return a||e.phone||"نامشخص"}function le(e){return Array.isArray(e.users)?e.users[0]:e.users}function W(e,a){const i=le(e);return{user_id:e.user_id,total_points:e.total_points,updated_at:e.updated_at,week_start:e.week_start,rank:a,display_name:re(i),phone:(i==null?void 0:i.phone)||""}}async function A(){const{data:e,error:a}=await p.rpc("get_daily_question_weekly_leaderboard",{p_page:1,p_limit:1});if(a)throw a;return e==null?void 0:e.week_start}const se=new Set(["total_points","updated_at"]),de=new Set(["total_points","updated_at","week_start"]),ce=new Set(["week_start","week_end","rank","total_points","display_name","created_at"]);function U(e,a,i){var n;if(!((n=a.filters)!=null&&n.length))return e;for(const t of a.filters)t.hidden||!t.field||t.field==="display_name"||t.field==="phone"||i.has(t.field)&&(e=E(e,t));return e}function pe(e,a,i){var n;if(!((n=a.filters)!=null&&n.length))return e;for(const t of a.filters)if(!(t.hidden||!t.field)){if(t.field==="display_name"&&["eq","has","like"].includes(t.op)){e=e.ilike("display_name",`%${String(t.value).trim()}%`);continue}i.has(t.field)&&(e=E(e,t))}return e}function B(e,a,i,n,t={}){const o=i.page||1,r=i.limit||20,l=(o-1)*r,s=l;return{rows:(e||[]).map((k,m)=>({...n(k,l+m+1),index:s+m})),total:a??0,query:{...i,page:o,limit:r,total:a??0},...t}}async function _e(e){const{limit:a=20,page:i=1,search:n}=e;let t=p.from("daily_question_user_points").select("user_id, total_points, updated_at, users(name, first_name, last_name, phone)",{count:"exact"}).gt("total_points",0);if(n!=null&&n.trim()){const s=await C(p,n);t=P(t,n,[],s)}t=U(t,e,se),t=R(t,e,"-total_points",["total_points","updated_at"]),t=T(t,i,a);const{data:o,error:r,count:l}=await t;if(r)throw r;return B(o,l,e,W)}async function ue(e){const a=await A(),{limit:i=20,page:n=1,search:t}=e;let o=p.from("daily_question_user_weekly_points").select("user_id, total_points, updated_at, week_start, users(name, first_name, last_name, phone)",{count:"exact"}).eq("week_start",a).gt("total_points",0);if(t!=null&&t.trim()){const _=await C(p,t);o=P(o,t,[],_)}o=U(o,e,de),o=R(o,e,"-total_points",["total_points","updated_at"]),o=T(o,n,i);const{data:r,error:l,count:s}=await o;if(l)throw l;return B(r,s,e,W,{week_start:a,week_end:O(a,6)})}async function me(e){const{limit:a=20,page:i=1,search:n}=e;let t=p.from("daily_question_weekly_top10").select("*",{count:"exact"});n!=null&&n.trim()&&(t=t.ilike("display_name",`%${n.trim()}%`)),t=pe(t,e,ce),t=R(t,e,"-week_start",["week_start","rank","total_points","created_at"]),t=T(t,i,a);const{data:o,error:r,count:l}=await t;if(r)throw r;return ee(o,l,e,s=>({...s,week_period:`${s.week_start}..${s.week_end}`}))}async function fe(){const e=await A();return{week_start:e,week_end:O(e,6)}}function O(e,a){const i=new Date(`${e}T12:00:00Z`);return i.setUTCDate(i.getUTCDate()+a),i.toISOString().slice(0,10)}const ke={class:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 mb-4"},ye=I("h2",null,"جدول امتیازات سوال روز",-1),we={key:0,class:"text-sm text-gray-600 bg-gray-50 border rounded-lg px-3 py-2"},ge=I("p",{class:"text-sm text-gray-500 mb-3"}," ۱۰ نفر برتر هر هفته پس از پایان هفته در این بخش ذخیره میشوند. ",-1),st=q({__name:"index",setup(e){const a=F("overall"),i=F(null),[n,t]=g(),[o,r]=g(),[l,s]=g(),_=H(()=>{if(!i.value)return"";const d=b(`${i.value.week_start}T00:00:00Z`),f=b(`${i.value.week_end}T00:00:00Z`);return`${d} تا ${f}`}),k={columns:ie,api:_e,defaultPageLimit:20},m={columns:ne,api:ue,defaultPageLimit:20},N={columns:oe,api:me,defaultPageLimit:20};J(a,async d=>{await G(),d==="overall"?t():d==="weekly"?(await S(),r()):d==="archive"&&s()});async function S(){try{i.value=await fe()}catch(d){Y.error((d==null?void 0:d.message)||"خطا در دریافت بازه هفته")}}return z(S),(d,f)=>{const y=j,w=te,V=ae,K=M;return L(),$("div",null,[c(K,null,{default:u(()=>[I("div",ke,[ye,a.value==="weekly"&&_.value?(L(),$("div",we," هفته جاری: "+Q(_.value),1)):X("",!0)]),c(V,{activeKey:a.value,"onUpdate:activeKey":f[0]||(f[0]=Z=>a.value=Z)},{default:u(()=>[c(w,{key:"overall",tab:"امتیازات کلی"},{default:u(()=>[c(y,h(k,{onRegister:x(n)}),null,16,["onRegister"])]),_:1}),c(w,{key:"weekly",tab:"امتیازات هفتگی"},{default:u(()=>[c(y,h(m,{onRegister:x(o)}),null,16,["onRegister"])]),_:1}),c(w,{key:"archive",tab:"بایگانی هفتگی"},{default:u(()=>[ge,c(y,h(N,{onRegister:x(l)}),null,16,["onRegister"])]),_:1})]),_:1},8,["activeKey"])]),_:1})])}}});export{st as default};
|